单片机课程设计报告单片机数字时钟课程设计报告概要.docx
《单片机课程设计报告单片机数字时钟课程设计报告概要.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告单片机数字时钟课程设计报告概要.docx(26页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告单片机数字时钟课程设计报告概要
惠州学院课程设计报告
单片机数字时钟课程设计报告
姓名:
班别:
学号:
设计任务:
1、 能够实现时间的精确显示,以数字的形式显示时间的时、分、秒。
2、 时间以24小时为进制,能够通过相应按键来调节时钟时间。
3、 能够实现按键启动与停止功能。
4、 能够实现秒表功能。
摘要
此电子钟采用c8951芯片,同时使用8位8段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求。
该电子钟有四个按键,进行相应的操作就可实现时间调整、年月查看与复位功能 。
整个过程就是先设计和焊接好硬件电路,再通过汇编语言编写应用程序来实现我们需要的功能,这期间,进行的软件仿真和调试是本设计的重点和难点。
关键词:
电子时钟、c8951芯片、程序设计、仿真调试
1.系统的功能分析与设计方案
1.1系统的主要功能
1.2数码管显示工作原理
1.3电路硬件设计
1.4各电路工作原理
1.5设计原理框图
1.6主芯片工作原理图
.1.7材料清单
1.8电路原理图及实物图
2. 软件设计
2.1完整源程序
2.2系统安装与调试
2.3硬件电路的安装
2.4软件调试
2.5课程设计总结
3.参考文献
4.致谢
1.系统的功能分析与设计方案
1.1系统的主要功能
利用89c51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和复位控制等。
此外还要实现对时间的调整功能,89c51的P1.0、P1.1、RST外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P1.1按键时,对显示的数码管进行加一的功能,达到调整时间的目的;当按下RST按键时,实现对电子时钟进行复位的功能。
系统的设计方案
整个系统采用应用广泛的AT89S52作为时钟控制芯片,利用单片机内部的定时器\计数器来实现的,它的处理过程如下:
首先设定单片机内部的一个定时器\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。
然后通过数码管把它们的内容在相应位置显示出来即可。
数码管显示可以采用静态显示方法或动态显示方法。
静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一般用6个或8个数码管。
由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式。
动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。
译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。
在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。
在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。
另外,为了使用方便,设计了简单的按键,可以通过按键实现时间调整和复位。
1.2数码管显示工作原理
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
数码管显示方法可分为静态显示和动态显示两种。
静态显示:
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
动态显示:
所谓动态显示,就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用动态显示。
1.3 电路硬件设计
1.31 设计原理框图
此设计原理框图如图1所示,此电路包括以下六个部分:
单片机,按键,指示灯,复位电路,晶振及显示电路。
设计原理框图
电路设计分为复位电路、指示灯电路、按键电路、时钟电路及数码管连接电路,总电路工作原理图如下图所示
89c51芯片
该系列单片机是采用高性能的静态80C51设计由先进CMOS工艺制造并带有非易失性Flash程序存储器
全部支持12时钟和6时钟操作
P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM32条I/O口线3个16位
定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART
以及片内振荡器和时钟电路
此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至0可实现两个由软件选择的节电模式
空闲模式和掉电模式空闲模式冻结CPU但RAM定时器串口和中断系统仍然工作
掉电模式保存RAM的内容
但是冻结振荡器导致所有其它的片内功能停止工作
由于设计是静态的
时钟可停止而不会丢失用户数据
运行可从时钟停止处恢复
4个中断优先级 y6个中断源 4个8位I/O口
全双工增强型UART ―帧数据错误检测 ―自动地址识别
3个16位定时/计数器T0T1
标准80C51
和增加的T2
捕获和比较
可编程时钟输出 异步端口复位
低EMI (禁止ALE以及6时钟模式) 掉电模式可通过外部中断唤醒
其引脚图如下所示
材料清单
8051芯片1个
瓷介电容2个
极性电容1个
芯片底座1个
4位7段数码管2个
10K欧电阻1个
电池盒1个
电池2个
独立按键5个
自锁开关1个
排阻1个
12M晶振1个
2软件设计
2.1 软件设计流程
电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,
(1)主程序
主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。
主程序执行流程如图
2)定时器/计数器T0中断程序
定时器/计数器T0用于时间计时。
选择方式1,重复定时,定时时间设为20ms,定时时间到则中断,在中断程序中用一个计数器对20ms计数,计50次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把它们的值放到存储单元的指定位置。
定时器/计数器T0中断程序流程图如图
SETBIT0
SETBTR0
SETBPT0
MAIN:
CLRP3.7
JNBP1.7,LOOP
LCALLDISPLAY
LCALLKEY
SETBEX0
LJMPMAIN
LOOP:
MOVS6,#09H
ZN:
MOVS7,#0FFH
SETZH:
CLRP3.2
SETBP3.2
LCALLKEY
DJNZS7,SETZH
DJNZS6,ZN
LJMPMAIN
SHOW:
PUSHACC
PUSHPSW
LCALLDISPLAY1
POPPSW
POPACC
RETI
ZDN:
PUSHACC
PUSHPSW
INCR7
CJNER7,#200,ZD
MOVR7,#00H
INCS0
MOVA,S0
CJNEA,#20,ZD
MOVS0,#00H
INCR0
CJNER0,#60,ZD
MOVR0,#00H
INCR1
CJNER1,#60,ZD
完整源程序:
S0EQU31H
S1EQU32H
S2EQU33H
S3EQU34H
S4EQU35H
S5EQU36H
S6EQU37H
S7EQU38H
S8EQU39H
S9EQU40H
S10EQU41H
ORG0000H
AJMPSTART
ORG000BH
AJMPZDN
ORG0003H
LJMPSHOW
ORG0045H
START:
MOVR0,#57
MOVR1,#59
MOVR2,#12
MOVR3,#20
MOVR4,#11
MOVR5,#15
MOVR6,#20
MOVR7,#00H
MOVS0,#00H
MOVS1,#00H
MOVS2,#00H
MOVS3,#00H
MOVS4,#00H
MOVS5,#00H
MOVS6,#00H
MOVS7,#00H
MOVS8,#00H
MOVS9,#00H
MOVS10,#00H
MOVTMOD,#02H
MOVTH0,#06H
MOVTL0,#06H
MOVIE,#83H
L1:
MOVA,R5
MOVB,#4
DIVAB
MOVA,B
CJNEA,#0,PINGNIAN
L2:
CJNER3,#30,L3
MOVR3,#01H
INCR4
PINGNIAN:
CJNER3,#29,L3
MOVR3,#01H
INCR4
L3:
RET
DISPLAY:
MOVDPTR,#TAB
CJNER0,#0,BB
CJNER1,#0,BB
SETBP3.7
LCALLDELAY10MS
CLRP3.7
BB:
MOVA,R0
MOVB,#10
DIVAB
MOVS9,A
MOVS10,B
MOVA,B
MOVCA,@A+DPTR
MOVP0,A
CLRP2.7
LCALLDELAY
SETBP2.7
MOVA,S9
MOVCA,@A+DPTR
MOVP0,A
CLRP2.6
LCALLDELAY
SETBP2.6
MOVA,#10
MOVCA,@A+DPTR
MOVP0,A
MOVR1,#00H
INCR2
CJNER2,#24,ZD
MOVR2,#00H
INCR3
CJNER4,#2,LOOP31
LCALLJUDGE_Y
LCALLZD
LOOP31:
CJNER4,#4,V1
AJMPSMALL
V1:
CJNER4,#6,V2
AJMPSMALL
V2:
CJNER4,#9,V3
AJMPSMALL
V3:
CJNER4,#11,MAX
SMALL:
CJNER3,#31,ZD
MOVR3,#01H
INCR4
MAX:
CJN