数字电子钟的设计的Proteus软件实现及软硬件仿真.doc
- 文档编号:251289
- 上传时间:2022-10-07
- 格式:DOC
- 页数:18
- 大小:233KB
数字电子钟的设计的Proteus软件实现及软硬件仿真.doc
《数字电子钟的设计的Proteus软件实现及软硬件仿真.doc》由会员分享,可在线阅读,更多相关《数字电子钟的设计的Proteus软件实现及软硬件仿真.doc(18页珍藏版)》请在冰豆网上搜索。
《微机应用系统设计》课程设计
一、设计课题
数字电子钟的设计
二、设计要求
(一)实现基本数字电子钟的设计,要求能够显示时和分;
(二)通过按键有设置闹钟功能;
(三)有整点报时功能;
(四)通过按键设置能够进行分校时;
(五)用proteus画出原理图,说明各个控制信号的作用;
(六)画出程序流程图,编写程序,采用Proteus软件实现软硬件仿真。
三、设计目的
通过数字电子钟这一课程设计的锻炼,理解单片机系统的组成,及以单片机为主的系统设计方法,掌握单片机最小系统、键盘模块、LED数码管显示系统及各种扩展电路的应用,加深对微控制器系列课程的理解。
四、小组分工
五、材料清单
QTYPART-REFSVALUECODE
---------------------
Resistors
---------
5R1-R54k7W4K7
1R61k
1R7200
Capacitors
----------
1C11uF
2C2,C333pF
IntegratedCircuits
-------------------
1U1AT89C51
1U274LS245
Transistors
-----------
1Q1NPN
Miscellaneous
-------------
4ADD,CONFIRM,MODE,
MOVE
1LS1SPEAKER
1RP1RESPACK-8
1X1CRYSTAL
硬件组成单片机复位电路、按键电路、蜂鸣器驱动电路和显示模块电路四大模块。
六、模块功能说明
(一)按键模块:
通过keyscan()函数扫描按键,识别外设P3端口要完成的按键功能。
本次设计因为按键较少并且需要独立控制所以采用了4个独立按键,分别是mode(P3==0XFF)、add(P3==0XFD)、move(P3==0XFB)和confirm(P3==0XF7)。
当按mode键一次为调时,两次为调闹。
通过由add()函数和confirm()函数同时完成,在不同的模式下,完成时间的更改和确定。
硬件方面,本次设计用AT89C51单片机内部定时/计数器T0作为电子表时钟参考;
(二)显示模块:
由函数show()、show1()、show2()、show3()和show4()分别完成正常时间显示、调试模式显示、闹钟设定模式显示、调整位标记显示和闹钟开闭显示程序。
硬件采用共阳方式,外加5V稳压电源供电,通过8个数码管,采用一片74LS245芯片来驱动位码,用P2口进行位选扫描;
(三)响铃模块:
由beep()函数完成,用于闹钟和整点报时的响铃。
硬件是通过NPN三极管放大后驱动蜂鸣器工作,单片机I/O接三极管基极。
整点报时时由zhengdian()函数beep()函数完成,功能是能够在每个整点报时,每次响铃默认10s。
闹钟由alarm_judge()判断函数和beep()函数完成,常规响铃1分钟;
(四)复位模块:
由独立按键RES来完成复位,此功能为AT89C51单片机完成。
七、参数计算
(一)定时器T0
1.方式控制寄存器TMOD
T1
T0
D7
D6
D5
D4
D3
D2
D1
D0
GATE
C/
M1
M0
GATE
C/
M1
M0
TMOD用以设定通用定时/计数器T0和T1工作方式。
GATE位为门控位,GATE=1时,T0、T1分别受INT0、INT1引脚输入电平控制,常用于测量对应正脉冲的宽度;C/用于选择定时、计数功能。
本次设计选择T0做定时器用,工作在方式1,故TMOD=0X01;
2.控制寄存器TCON
T1
T0
D7
D6
D5
D4
D3
D2
D1
D0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TR0用于开/关定时器T0,TF0为T0溢出标志位。
3.中断允许控制寄存器IE
D7
D6
D5
D4
D3
D2
D1
D0
EA
/
/
ES
ET1
EX1
ET0
EX0
EA为总中断允许位,ET0为T0中断允许位。
(二)定时器T0初值计算
初值计算公式:
(1)
X—定时器初值
n—定时器位数(方式0:
13位;方式1:
16位;方式2:
8位)
fosc—单片机主频(本次设计取12MHz)
T—机器周期时间
为了获得1s的时钟周期,需要先获得50ms的时钟周期,每20次中断一次,就能完成时间为1s的获得。
选择计时器T0工作在方式1下,fosc=12MHz,T=50ms,带入公式
(1),解得初值X=3CB0H,所以TH0=0X3C,TL0=0XB0。
八、电路及软件流程
(一)系统框图总览
(二)单片机复位电路
(三)按键电路
(四)蜂鸣器驱动电路
(五)显示模块电路
(六)主函数流程图
主函数流程图
(二)定时器T0中断服务程序流程图
定时器T0中断服务程序流程图
(三)闹钟响应程序流程图
闹钟响应程序流程图
(四)键盘扫描程序流程图
键盘扫描程序流程图
九、调试界面
(一)调试校时功能时时,按下mode按钮,通过move按钮调整位置,更改分钟,再按下confirm键确认,将时间调至00-01-00,调试结果时间从00-01-00开始继续计时:
(二)调试闹钟功能时,按mode按钮两下,通过move按钮调整位置,更改分钟,再按下confirm键确认,将时间调至00-06-00,调试结果:
时间不变,继续计时,在00-06-00前几秒开始时闹钟响起,时长1分钟:
(三)调试整点报时功能,调时定于00-59-00,开始等待,默认00-59-50时扬声器开始鸣叫,时延10s后停止:
十、心得体会
附源代码:
//****************头文件及宏定义*******************************
#include
#defineucharunsignedchar
#defineuintunsignedint
//****************软件延时程序*********************************
voiddelay(uintii)
{while(--ii);}
//****************定义数码管驱动码******************************
ucharduan[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,
0XBF,0XFF,0X7F};//段选,0123456789-灭.
ucharwei[]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};//位选,共阳,从右至左
//****************定义变量**************************************
uchart=0,sec=0,min=0,hour=0; //正常走时时间变量
ucharsec1=0,min1=0,hour1=0;//时间设定值变量
ucharsec2=0,min2=0,hour2=0;//闹钟设定值变量
ucharalarm_en=0;//闹钟开关变量
ucharalarm_flag=0;//闹钟定时到达标志变量
ucharclock_flag=0; //整点报时到达标志变量
ucharp3=0,moshi=0,mov=0;//P3口查询,模式值,调整位
//显示缓冲区,依次为正常、调时、闹钟设定、调整位带点标记
uchartemp[8],temp1[8],temp2[8],temp3[8];
//****************函数声明*************************************
voidinitialize(void);//初始化
voidshow(void);//正常走时显示
voidshow1(void);//时间设定显示
voidshow2(void);//闹钟设定显示
voidshow3(void);//调整位标记
voidshow4(void);//闹钟开关标记
voidkeyscan(void);//键盘扫描
voidadd(void);//调时调闹钟加数程序
voidconfirm(void);//调时确认,闹钟开关
voidalarm_judge(void);//闹钟定时到达判定
voidzhengdian(void); //整点报时判定程序
voidbeep(void);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电子钟 设计 Proteus 软件 实现 软硬件 仿真