内容正文:
任务三 制作电子秒表
单片机技术及应用
同步精品课堂
高等教育出版社第 4 版
1
数码管动态显示模块电路原理图的绘制和焊接
电子秒表程序的编写,包括定时器的使用和时分秒的计时逻辑
电子秒表的仿真调试和程序下载
能够绘制电子秒表程序流程图并进行编程
理解数码管动态显示的原理和实现方法
准确编写定时器中断服务函数,确保计时的准确性
电子秒表的仿真调试和程序下载
在日常生活中,电子秒表是一种非常实用的计时工具。今天我们将学习如何制作一个用 6 位数码管显示时分秒,每秒变化一次的电子秒表。
通过这个项目,我们将进一步掌握数码管显示和定时器的应用。
任务三 制作电子秒表
工具及材料准备:
工作准备:
制作一个电子秒表,用6位数码管显示时分秒,每秒变化一次
任务需求
软件:Protel DXP 2004、Proteus 7.4、Keil uVision2、EasyPRO Programmer、流程图绘制软件。
硬件:计算机 1 台、编程器 1 台、最小系统电路板 1 块、杜邦线 2 条、电池盒 1 个。
穿好工作服,戴好防静电手环,穿绝缘胶鞋。
清洁工作台面,清理工作区域,工具、仪器仪表摆放整齐有序。
任务三 制作电子秒表 - 任务实施
① 启动 Protel DXP 2004,新建一个电路原理图文件,其文件名为 “数码管动态显示模块电路原理图”。
绘制数码管动态显示模块电路原理图(启动与新建文件)
任务三 制作电子秒表 - 任务实施
② 从元件库 “Miscellaneous Connectors.IntLib” 中查找 “Header 8” 和 “Header 2”(2 个 I/O 口插座和 1 个电源插座),拖入工作窗口。
③ 从元件库 “Miscellaneous Devices.IntLib” 中查找 “RES2”(6 个电阻),拖入工作窗口。
④ 从元件库 “TI Interface 8 - Bit Line Transceiver.IntLib” 中查找 74LS245,在 “TI Logic Gate 1.IntLib” 中查找 7406 (2 个数字集成芯片),拖入工作窗口。
⑤ 在元件库中自制一个 4 位一体的数码管,加载该元件库,将 4 位一体的数码管拖入工作窗口。
绘制数码管动态显示模块电路原理图(查找与拖入元件)
任务三 制作电子秒表 - 任务实施
⑥ 绘制如图所示的电路,修改标号和标称值。
⑦ 保存该文件。
绘制数码管动态显示模块电路原理图(绘制与保存电路)
任务三 制作电子秒表 - 任务实施
① 根据数码管动态显示模块电路元件清单,选取元件,用万用表检测元件的好坏。
焊接电路(元件选取与检测)
名称 标号 规格 数量
金属膜电阻 R1~R6 10kΩ 6
4 位一体数码管 DS1、DS2 共阴极 2
电源插座 P2 2 针 1
I/O 口插座 P1、P3 8 针 2
DIPIC 插座 DIP20 1
三态同相双向总线收发器 (74LS245) U1 DIP20 1
反相缓冲器 (7406) U2 DIP14 1
任务三 制作电子秒表 - 任务实施
② 绘制元件布局图,在万能电路板上按布局图依次进行元件的排列、插装。
③ 按工艺要求焊接元件,背面用直径为 0.5~1mm 的导线连接,直到所有的元件连接并焊完为止。焊接顺序为 IC 插座 → 数码管 →I/O 口插座 → 电阻 → 电源插座 → 连接导线。
焊接电路(元件布局与焊接)
任务三 制作电子秒表 - 任务实施
根据电路原理图 (如图所示) 用杜邦线搭接电路,数码管动态显示模块的 I/O 口与最小系统板的 P0 和 P2 口相连,连接电源和地端,安装电池盒。
根据原理图搭接电路
任务三 制作电子秒表 - 任务实施
① 启动流程图绘图软件 Diagram Designer,新建一个文件,文件名为 “电子秒表主函数.DDD”,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
③ 在框图中输入文本。
④ 用指向线连接框图符号。
⑤ 保存文件。
绘制程序流程图(主函数)
任务三 制作电子秒表 - 任务实施
下图所示分别为电子秒表显示函数和定时器 0 中断服务函数流程图。
绘制程序流程图(显示函数与中断服务函数)
任务三 制作电子秒表 - 任务实施
① 启动 Keil uVision2,新建一个工程文件 “电子秒表.uV2”。
② 新建一个 C51 源程序文件 “电子秒表.C”,将该文件加载到该工程中。
编程(新建工程与源文件)
任务三 制作电子秒表 - 任务实施
编程(全局变量与函数声明)
#define uint unsigned int
uint t_50ms = 0;
uchar hour = 0;
uchar min = 0;
uchar sec = 0;
uchar buf[6] = {0, 0, 0, 0, 0, 0}; // secl sec0min1 min0 hourl hour0
uchar code SEG[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // dp gfedcba共阴
uchar code POS[6] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20};
/*----------------------------函数声明-------------------*/
void disp(void);
void disp_min(void);
void disp_sec(void);
void disp_hour(void);
任务三 制作电子秒表 - 任务实施
编程(延时函数与定时器初始化函数)
/*----------- 延时k ms函数-----------------------*/
void delay(uint k) {
uint i, j;
for (i = 0; i < k; i++) {
for (j = 0; j < 125; j++) {
;
}
}}
/*----------------- 定时器0初始化函数------*/
void init_timer0(void) {
TMOD = 0x01;
TL0 = -(50000 % 256); // 50ms/1μs = 50000
TH0 = -(50000 / 256);
TR0 = 1;
ET0 = 1;}
任务三 制作电子秒表 - 任务实施
编程(延时函数与定时器初始化函数)
/* 定时器0中断服务函数-----------------------*/
void int_timer0() interrupt 1 using 0 {
TL0 = -(50000 % 256); // 50ms/1μs = 50000
TH0 = -(50000 / 256);
t_50ms++;
if (t_50ms >= 20) {
t_50ms = 0;
sec++;
if (sec >= 60) {
sec = 0;
min++;
if (min >= 60) {
min = 0;
hour++;
if (hour >= 24) {
hour = 0;
}
}
}
}}
/* 显示函数----------------- */void disp(void) {
uchar i, j;
for (i = 0; i <= 5; i++) {
P2 = POS[i];
j = buf[i];
P0 = SEG[j];
delay(10);
}}
任务三 制作电子秒表 - 任务实施
编程(主函数与编译)
/* 主函数 -------------- */void main(void) {
init_timer0();
EA = 1;
while (1) {
buf[0] = sec % 10; // 秒的个位
buf[1] = sec / 10; // 秒的十位
buf[2] = min % 10; // 分的个位
buf[3] = min / 10; // 分的十位
buf[4] = hour % 10; // 小时的个位
buf[5] = hour / 10; // 小时的十位
disp(); // 显示函数
}}
③ 编译,生成 HEX 文件 “电子秒表.HEX”。
任务三 制作电子秒表 - 任务实施
仿真调试程序
启动仿真软件Proteus 7.4,新建一个仿真文件(可调节照明时间的智能照明控制器.DSN)。
根据电路原理图绘制仿真电路图(省略复位和时钟电路),添加电源(VCC) 和地端,修改元件标号和标称值。
随堂检测1
制作电子秒表时,绘制数码管动态显示模块电路原理图需要用到哪些元件库?
答案:需要用到 “Miscellaneous Connectors.IntLib”“Miscellaneous Devices.IntLib”“TI Interface 8 - Bit Line Transceiver.IntLib”“TI Logic Gate 1.IntLib” 等元件库。
在电子秒表程序中,定时器 0 的定时时间是多少?
答案:定时器 0 的定时时间是 50ms。
随堂检测2
焊接数码管动态显示模块电路时,焊接顺序是什么?
答案:焊接顺序为 IC 插座 → 数码管 →I/O 口插座 → 电阻 → 电源插座 → 连接导线。
在电子秒表程序中,当秒数达到 60 时,会发生什么?
答案:当秒数达到 60 时,秒数会清零,分钟数加 1;当分钟数达到 60 时,分钟数清零,小时数加 1;当小时数达到 24 时,小时数清零。
1
分组讨论,讨论如何优化电子秒表的显示效果,如增加闪烁、亮度调节等功能。分析在电子秒表程序中,如何添加暂停和复位功能。
1. 绘制数码管动态显示模块电路原理图
任务三 制作电子秒表
2. 焊接电路
主函数
显示函数与中断服务函数
启动与新建文件
查找与拖入元件
绘制与保存电路
3. 根据原理图搭接电路
4. 绘制程序流程图
5. 编程
新建工程与源文件
全局变量与函数声明
延时函数与定时器初始化函数
定时器中断服务函数与显示函数
主函数与编译
感谢观看
24
$$