基于单片机AT89C52数字时钟设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xxxxxxxx
大学
课
课课
课
程
程程
程
设
设设
设
计
计计
计
任
任任
任
务
务务
务
书
书书
书
题目
题目题目
题目
数字时钟
数字时钟数字时钟
数字时钟
专业
专业专业
专业、
、、
、班级
班级班级
班级
自动化
自动化自动化
自动化07
0707
07-
--
-2
2 2
2 学号
学号学号
学号
01
01 01
01 姓名
姓名姓名
姓名
xxx
xxx xxx
xxx
主要内容
主要内容主要内容
主要内容、
、、
、基本要求
基本要求基本要求
基本要求、
、、
、主要参考资料等
主要参考资料等主要参考资料等
主要参考资料等:
::
:
主要内容
主要内容主要内容
主要内容:
::
:
功能要求:24小时制时间显示。可随时使用键盘可调整时间,设置数据应能
保存。整点报时,响1S,停1S,前四声为低音,最后一响结束时正好为整点。
硬件要求:LED或LCD显示器、按键4个(计时、调时、+、-)、蜂鸣器等。
上述内容为基本要求,可按照自己的理解增加功能使之更完善。
基本要求
基本要求基本要求
基本要求:
::
:
明确课程设计任务,复习与查阅有关资料。
按要求对设计进行简要说明,总体设计方案,设计电路,使用计算机绘图,画
出详细的电路接线图,列出元器件清单。电路图要求工整、清楚、正确,并标
明管脚。
软件编程必须有流程图,程序必须加注释,各程序段的开始要注明该段功能和
作用。
写出体会和总结。
要求使用B5打印稿或16开纸手写,不少于5000字。格式遵照学校规定。
主要参考资料
主要参考资料主要参考资料
主要参考资料:
::
:
“单片机与控制技术” 杨宁主编,北京航空航天大学出版社。
“单片机应用程序设计技术” (修订版) 周航慈主编,北京航空航天大学出版
社。
“电子技术应用”、“电子设计应用”、“单片机与嵌入式系统应用”等期刊
(单片机和元器件资料)
(元器件资料)
(电子产品世界) 完
完完
完
成
成成
成
期
期期
期
限
限限
限:
::
:
2011
20112011
2011年
年年
年1
11
1月
月月
月21
2121
21日
日日
日
指导教师签名
指导教师签名指导教师签名
指导教师签名:
::
:
课程负责人签名
课程负责人签名课程负责人签名
课程负责人签名:
::
:
2011
20112011
2011年
年年
年
1
1 1
1 月
月月
月
21
21 21
21 日
日日
日
目
目目
目 录
录录
录
摘 要 .............................................................................................................................. 1
1. 数字时钟的构成 ......................................................................................................... 2
1.1 数字时钟的构成................................................................................................ 2
1.2 设计方案论证.................................................................................................... 2
1.2.1 主控制部分方案选择 ............................................................................. 2
1.2.2 显示部分方案选择 ................................................................................. 3
2. 主要硬件介绍 ............................................................................................................. 3
2.1 AT89C52 ............................................................................................................. 3
2.1.1 引脚结构及各端口介绍 ......................................................................... 4
2.1.2 复位与时钟电路 ..................................................................................... 6
2.2 74HC244 ............................................................................................................. 7
3. 硬件电路设计 ............................................................................................................. 8
3.1设计框图与说明................................................................................................. 8
3.2 数码管显示驱动................................................................................................ 8
3.3 按键操作说明.................................................................................................. 10
4. 系统程序的设计 ....................................................................................................... 10
4.1 主程序 ............................................................................................................. 10
4.2 显示子程序 ..................................................................................................... 10
4.3 定时器T0中断服务程序 ...............................................................................
11
4.4 定时器T1中断服务程序 .............................................................................. 12
4.5 调时功能程序.................................................................................................. 13
4.6 秒表计时功能程序 .......................................................................................... 13
4.7 闹钟时间设定功能程序 .................................................................................. 14
4.8 性能分析 ......................................................................................................... 14
5. 总 结 ....................................................................................................................... 14
附录Ⅰ 电路原理图 .................................................................................................... 16
附录Ⅱ 元器件清单 .................................................................................................... 17
附录Ⅲ 单片机C源程序 ............................................................................................ 18
参考资料 ........................................................................................................................ 22
- 1 - 摘
摘摘
摘 要
要要
要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到
人们的重视和关注,应用很广、发展很快。而52单片机是各单片机中最
为典型和最有代表性的一种,AT89C52单片机是一种带8K字节闪存可
编程可擦除只读存储器的低电压、高性能CMOS8位微处理器。本设计
是基于MCS51系列单片机中AT89C52所设计的一种高精度、智能化的
数字时钟,可以实现键盘按键与数字动态显示并可以用音乐倒数的数字
时钟/计时器。本设计基于单片机技术原理,以单片机芯片AT89C52作为
核心控制器,由单片机控制数码管的显示,修改设置时间采用操作方便
的按键开关,整点报时系统使用有源蜂鸣器,通过硬件电路制作以及软
件程序的编制,设计制作一个简单的数字时钟/计时器,包括以下功能:
时、分、秒24小时制输出显示、可随时使用按键实现时、分调整设置、
具有秒表计时功能、能整点报时、定时闹铃等。
- 2 - 1.
数字时钟的构成
数字时钟的构成数字时钟的构成
数字时钟的构成 1.1 数字时钟的构成
数字时钟的构成数字时钟的构成
数字时钟的构成 数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路,由
于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时
电路,同时标准的1MHz时间信号必须做到准确稳定,通常使用石英晶
体振荡器电路构成数字时钟
。
(1)晶体振荡器电路
晶体振荡器电路给数字时钟提供一个频率稳定准确的12MHz的方
波信号,可保证数字时钟的走时准确及稳定,不管是指针式的电子钟还
是数字显示的电子钟都使用了晶体振荡器电路。
(2)时间计数器电路
时间计数器电路由秒个位和秒十位计数器,分个位和分十位计数器
构成。秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器。 1.2
设计方案论证
设计方案论证设计方案论证
设计方案论证 1.2.1 主控制部分方案选择
主控制部分方案选择主控制部分方案选择
主控制部分方案选择 采用AT89C52单片机芯片为核心控制器,实现时、分、秒同步显示,
这种单片机具有足够的空余硬件资源,可以实现其他的功能扩展。为了
使用的方便性,还可以通过设置按键来更改时间和计时。这正是利用了
AT89C52单片机的多管脚功能性,4个8位并行I/O口,定时计数端口,
中断端口,这使得操作起来更加方便,通过软件可以随时的调整和更改,
使得更加精确。
- 3 - 1.2.2
显示部分方案选择
显示部分方案选择显示部分方案选择
显示部分方案选择 可以通过数码管来显示时钟的时、分、秒,使用数码管的优点是直
观清楚,适合用在光线较暗的地方,且成本较低,使用方便。为了实现
LED显示器的数字显示,可以采用静态显示法和动态显示法,由于静态
显示法需要数据锁存器等硬件,接口就相对复杂一些,又考虑到时钟显
示只有6位,且系统没有其他复杂的处理任务,所以采用动态扫描法实
现LED的显示。动态显示的特点是将所有位数码管的段选线并联在一
起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用
发光二极管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同
时都在显示。动态显示节省了I/O口。 2.
主要硬件介绍
主要硬件介绍主要硬件介绍
主要硬件介绍 2.1 AT89C52 AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在
系统可编程Flash存储器,使用Atmel公司高密度非易失性存储器技术制
造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储
器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU
和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供
高灵活、超有效的解决方案。
AT89C52具有以下标准功能:8K字节闪存,256字节RAM,32位
I/O接口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,1
个6向量二级中断结构,全双工串
口,片内晶振及时钟电路。另外,
AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空
- 4 - 闲模式下,
CPU停止工作,允许RAM、定时器/计数器、串口、中断继
续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一
切工作停止,直到下一个中断或硬件复位为止。 2.1.1
引脚结构及各端口介绍
引脚结构及各端口介绍引脚结构及各端口介绍
引脚结构及各端口介绍 VCC:电源
GND:地 P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
RST/VPD
9
RXD/P3.0
10
TXD/P3.1
11
INT0/P3.2
12
INT1/P3.3
13
T0/P3.4
14
T1/P3.5
15
WR/P3.6
16
RD/P3.7
17
XTAL2
18
XTAL1
19
GND
20
VCC
40
P0.0
39
P0.1
38
P0.2
37
P0.3
36
P0.4
35
P0.5
34
P0.6
33
P0.7
32
EA/VPP
31
ALE/PROG
30
PSEN
29
P2.7
28
P2.6
27
P2.5
26
P2.4
25
P2.3
24
P2.2
23
P2.1
22
P2.0
21
AT89S52 图
1 AT89C52引脚结构图 P0口:P0口是一个8位漏极开路的双向I/O口,作为输出口,每位
能驱动8个TTL逻辑电平,对P0端口写“1”时,引脚用做高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复
用。在这种模式下,P0口具有内部上拉电阻。在Flash编程时,P0口也
用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要
外部上拉电阻。
- 5 - P1
口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出
缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把
端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低
的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作为定时器/计数器2的外部计数输入
(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。在Flash编程
和校验时,P1口接收低8位地址字节。
P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出
缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把
端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低
的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储
器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,
P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出
P2锁存器的内容。在Flash编程校验时,P2口也接收高8位地址字节和
一些控制信号。
P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出
缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把
端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低
的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52
特殊功能使用。在Flash编程和校验时,P3口也能接收一些控制信号。
RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将
使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为
0000H—FFFFH),EA 端必须保持低电平(接 地)。需注意的是:如果
- 6 - 加密位
LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平
(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编
程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是
使用12V 编程电压Vpp。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。 2.1.2
复位与时钟电路
复位与时钟电路复位与时钟电路
复位与时钟电路 复位是单片机的初始化操作,只要给RESET引脚加上两个机器周期
以上的高电平信号,就可使AT89C52单片机复位。复位的主要功能是把
程序计数器(PC)初始化为0000H,使单片机从0000H单元开始执行程
序,同时复位操作还对一些寄存器有影响。AT89C52的复位是由外部的
复位电路来实现的,复位电路分为上电复位和按键复位两种方式。其电
路如图2所示。 10uF
+5V
10K
NET1 图
2 复位电路 单片机的时钟频率直接影响单片机的速度,时钟电路的质量也直接
影响单片机系统的稳定性。常见的时钟电路有两种方式,一种是内部时
钟方式,另一种是外部时钟方式。本设计选用内部时钟方式,AT89C52
内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器
的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石
英晶体振荡器和微调电容,就构成一个稳定的自激振荡器,AT89C52时
钟电路如图3所示。电路中电容取值通常为30Pf,由于单片机要进行串
- 7 - 行通信,为了获得准确的波特率,选择
12MHz的晶振。 30PF
30PF
12MHz
GND 图
3 时钟电路 2.2 74HC244 74HC244为八同相三态缓冲器/线驱动器。其功能为:如果输入的数
据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型
芯片为74HC244,由该芯片可构成三态数据缓冲器。74HC244芯片的引
脚排列如图4所示。 1A1
2
1A2
4
1A3
6
1A4
8
2A1
11
2A2
13
2A3
15
2A4
17
1Y1
18
1Y2
16
1Y3
14
1Y4
12
2Y1
9
2Y2
7
2Y3
5
2Y4
3
1G
1
2G
1974HC244 图
4 74HC244芯片的引脚排列 芯片使用说明:74HC244芯片内部共有两个四位三态缓冲器,使用
时可分别以1G和2G作为它们的选通工作信号。当1/OE和2/OE都为低
电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,
输出呈高阻态。
- 8 - 3.
硬件电路设计
硬件电路设计硬件电路设计
硬件电路设计 3.1设计框图与说明
设计框图与说明设计框图与说明
设计框图与说明 此设计的硬件部分主要由主控制器单片机,显示电路,按键电路,
蜂鸣器等构成。该电路采用AT89C52单片机最小化应用设计,采用共阳
7段LED数码管显示器;P0口输出断码数据;P2.0~P2.5口作列扫描输
出;P1.0、P1.1、P1.2和P1.3口接4个按钮开关,用于调时及功能选择;
P1.7端口接5V的小蜂鸣器,用于按键发音及定时提醒、整点报时提醒
等;为了提供共阳数码管的列扫描驱动电压,用三极管9012作电源驱动
输出;采用12MHz晶振,可提高秒计时的精确性。数字时钟/计时器电
路系统的总体设计框图如图5所示。
图
5 硬件系统的总体设计框图 3.2 数码管显示驱动
数码管显示驱动数码管显示驱动
数码管显示驱动 本设计为了简化电路,降低成本,节省系统资源,将6位数码管并
联在一起,由一片74HC244控制。由于所有的LED的段选码皆由一个
74HC244并行输出口控制,因此,在每一瞬间,每位数码管会显示相同
的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在一瞬按键电路
蜂鸣器
6位LED显示器
列驱动
AT89C52
P0
单片机
控制器
P2
- 9 - 间只使用一位显示字符。在此瞬间,
74HC244并行输出口输出相应字符
段选码,而位选则控制I/O口在该显示送人选通电平,以保证该位显示
相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC244
具有锁存功能,而且串行输入段选码需要一定时间,因此不需要延时,
即可形成视觉暂留效果。
数码管点亮条件:段选和位选。图6为位选电路,PNP型三极管的
集电极接数码管的公共端,当P2口对应的引脚输出低电平时三极管导
通,对应的数码管显示数据。这样,在同一时间,多位LED中只有选通
的那1位显示出字符,而其他5位则是熄灭的,同样,在下一时刻,只
让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,
在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示相
应的字符,而其他各位则是熄灭的,如此循环,就可以使各位
显示出将
要显示的字符。虽然这些字符是在不同时刻显示的,而在同一时刻,只
有一个显示,其他各位熄灭,但由于LED的余辉和人眼的视觉暂留作用,
只要每位显示间隔足够短,则可以造成多位同时点亮的假象,达到同时
显示的效果。 +5V
4.7K4.7K4.7K4.7K4.7K4.7KNET6
NET7
NET8
NET9
NET10
NET11
NET12
NET13
NET14
NET15
NET16
NET17
图6 数码管位选电路
- 10 - 3.3
按键操作说明
按键操作说明按键操作说明
按键操作说明 (1)长按P1.0键进入分调整状态:分单元闪烁,,按P1.0键加1,
按P1.1键减1。再长按P1.0键进入时调整,时单元闪烁,加减调整同调
分,再长按退出调整。
(2)按下P1.1键进入秒表计时状态:按P1.2键秒表清0,再按P1.2
键秒表启动,再按P1.2键暂停,再按P1.2键又清0,如此循环。按P1.1
键退出秒表计时回到时钟显示。
(3)按P1.3键进入设定闹钟状态:显示式样为00:00:—,可进行分
设定,按P1.2键,分加1,按P1.0键,分减1;再按P1.3键为时调整,
显示式样为00:00:—,按P1.2键,时加1,按P1.0键,时减1;按P1.1
键闹钟有效,显示式样变为00:00:—0;再按P1.1键闹钟无效,显示式样
又变为00:00:—;按P1.3键调闹钟结束。
(4)在闹钟时可按下P1.3键停闹,不按则闹铃1分〈钟〉后自行
中止。 4.
系统程序的设计
系统程序的设计系统程序的设计
系统程序的设计 4.1 主程序
主程序主程序
主程序 本设计中计时采用定时器T0中断完成,秒表使用定时器T1中断完
成。主程序循环调用显示子程序和查键子程序,当端口有按键按下时,
转入相应功能程序。其主程序执行流程如图7所示。 4.2
显示子程序
显示子程序显示子程序
显示子程序 时间显示子程序每次显示6个连续内存单元的十进制BCD码数据,
首地址在调用显示子程序时先指定。
- 11 - 内存中
50H~55H为闹钟定时单元,60H-5H为秒表计时单元,
70H-75H为时钟显示单元。由于采用7段共阳LED数码管动态扫描实现
数据显示,所以显示十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口
输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
为了显示小数点及“-”、“A”等特殊字符,在显示时间和计时时应采用不
同的显示子程序。
图
7 主程序流程图 4.3 定时器
定时器定时器
定时器T0中断服务程序
中断服务程序中断服务程序
中断服务程序 定时器T0用于时间计时。定时溢出中断周期设为50ms,中断进入
后先进行定时中断初值校正,当中断累计20次(即50ms*20=1s)时,
初始化
进入功能程序
按时间鸣叫次数
调用显示子程序
开始
键按下
整点到
Y
Y
N
N
- 12 - 对秒计数单元进行加
1操作。时钟计数单元地址分别在70H-71H(秒)、
76H-77H(分)、78H-79H(时)中,最大计时值为23时59分59秒。7AH
单元内存放“熄灭符”数据(#0AH),用于时间调整时的闪烁功能。在计
数单元中,采用十进制BCD码计数,满十进位。T0中断计时程序流程
图如图8所示
图
8 T0中断计时程序流程图 4.4 定时器
定时器定时器
定时器T1中断服务程序
中断服务程序中断服务程序
中断服务程序 T1中断程序用于指示时间调整单元数字的闪亮或秒表计数,在时间
调整状态下,每过0.3s左右,将对应调整单元的显示数据换成“熄灭符”
数据(#0AH)。这样,在调整时间时,对应调整单元的显示数据会间隔
闪亮。在作秒表计时时,每10ms中断1次,计数单元加1,每100次为
1s。秒表计数单元地址在60H-61H(10ms)、62H-63H(秒)、64H-65H
(分)中,最大计数值为99分59.99秒。T1中断服务程序流程图如图9
所示。 Y
保护现场
定时初值校正
加1s处理
恢复现场,中断返回
T0中断
1s到?
N
- 13 - 图
9 T1中断服务程序流程图 4.5 调时功能程序
调时功能程序调时功能程序
调时功能程序 调时功能程序的设计方法是:按下P1.0口按键,若按下时间小于1s,
则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操
作,此时计时器停止走动。当再按下P1.0口按键时,若按下时间小于0.5s,
则时间加1分〈钟〉;若按下时间大于0.5s,则进入〈小〉时调整状态。
按下P1.1按键时,可进行减1调整。在〈小〉时调整状态下,当按键按
下时间大于0.5s时,退出时间调整状态,时钟从0s开始计时。 4.6
秒表计时功能程序
秒表计时功能程序秒表计时功能程序
秒表计时功能程序 在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表计时显示
功能的转换,秒表中断计时程序启动,显示首地址改为60H,LED将显
示秒表计时单元60H~65H中的数据。按下P1.2口的按键,可实现秒表
清0、秒表启动、秒表暂停功能;当再按下P1.1口按键时,关闭T1秒表秒表
时钟调时闪烁
保护现场
加10ms处理
闪烁处理
恢复现场,中断返回
T1中断
秒表/闪烁
- 14 - 中断计时,显示首地址又改为
70H,恢复正常时间的显示功能。 4.7 闹钟时间设定功能程序
闹钟时间设定功能程序闹钟时间设定功能程序
闹钟时间设定功能程序 在正常时钟状态下,若按下P1.3口按键,则进入设定闹钟调分状态,
显示首地址改为50
H。LED将显示50H~55H中的闹钟设定时间,显示式
样为00:00:—,其中高二位代表时,低二位代表分,在定时闹钟时精确
到分。按P1.2键,分加1;按P1.0键,分减1。若再按P1.3键,则进入
闹钟时调整状态,显示式样为00:00:—,按P1.2键,时加1;按P1.0键,
时减1。按P1.1键,闹钟设定有效,显示式样变为00:00:—0;再按P1.1
键,闹钟无效,显示式样又变为00:00:—。再按P1.3键,调整闹钟时间
结束,恢复正常显示时间。 4.8
性能分析
性能分析性能分析
性能分析 按照设计程序分析,LED显示器动态扫描的频率约为167Hz,通过
在Proteus软件上的仿真观察没有感觉到明显的闪烁。由于计时中断程序
加了中断延时误差处理,所以实际计时精度较高,可满足多种场合的应
用需要。 5.
总
总总
总 结
结结
结 这次数字时钟的课程设计,从开始的方案选择到原理图的设计制作,
程序的编写、仿真,在我们三个组员的共同努力以及老师和同学的帮助
下,总算有了一定成果。虽然在设计中也出现了这样那样的错误,但我
们通过查阅相关资料,同学之间的相互探讨,及使用相关软件的仿真,
使得错误逐个得到修正。
针对这次课程设计,可以说为我们做毕业设计起到铺垫的作用。虽
- 15 - 然之前也有过好几次相关的课程设计了,但感觉这一次要较为系统,课
题的要求也相对多一些,同时老师要求更严格。课程设计就是理论与实
践的结合,不仅丰富课本的理论知识,同时也是学以致用,让我们平时
所学的知识得到了一次施展,加深了我对单片机知识在实际运用的理解,
明白了理论知识在电子技术中的重要性。其中使我更进一步掌握51单片
机、74HC244等芯片及设计中所用到的相关电子元器件的知识,特别是
一些元器件的应用常识、元器件的特性等,也让我对Protel、Proteus、
Keilc这些软件的操作使用更加熟练,这在理论学习中是无法体会到的。
更重要的是自己在实际中思考问题、解决问题的能力得到了一定的锻炼,
提高了我的动手实践能力,加深了知识点的学习。同时这次课程设计有
答辩环节,这也是毕业答辩的一次演练从而使我们更加了解答辩流程,
答辩方法等。
在此,谢谢李老师在设计中的指导与帮助,以及帮助我设计的同学。
- 16 - 附录
附录附录
附录Ⅰ
ⅠⅠ
Ⅰ 电路原理图
电路原理图电路原理图
电路原理图 EA/VP
31
X1
19
X2
18
RESET
9
RD
17
WR
16
INT0
12
INT1
13
T0
14
T1
15
P10/T
1
P11/T
2
P12
3
P13
4
P14
5
P15
6
P16
7
P17
8
P00
39
P01
38
P02
37
P03
36
P04
35
P05
34
P06
33
P07
32
P20
21
P21
22
P22
23
P23
24
P24
25
P25
26
P26
27
P27
28
PSEN
29
ALE/P
30
TXD
11
RXD
10
VCC
40
GND
20
AT89C52
0.51K*8
30PF
30PF
10uF
0.01uF
12MHz
+5V
10K
NET1
NET1
NET2
NET3
NET4
NET5
+5V
NET2
NET3
NET4
NET5
+5V
BUZZER
+
47uF
+5V
+5V
1A1
2
1A2
4
1A3
6
1A4
8
2A1
11
2A2
13
2A3
15
2A4
17
1Y1
18
1Y2
16
1Y3
14
1Y4
12
2Y1
9
2Y2
7
2Y3
5
2Y4
3
1G
1
2G
1974HC244
a
bf
c
g
d
e
VCC1
2
3
4
5
6
7a
b
c
d
e
f
g8dp
dp
9时时时a
bf
c
g
d
e
VCC1
2
3
4
5
6
7
a
b
c
d
e
f
g8
dp
dp
9时十时a
bf
c
g
d
e
VCC
1
2
3
4
5
6
7a
b
c
d
e
f
g
8dp
dp
9分时时a
bf
c
g
d
e
VCC1
2
3
4
5
6
7a
b
c
d
e
f
g8dp
dp
9分十时a
bf
c
g
d
e
VCC
1
2
3
4
5
6
7a
b
c
d
e
f
g
8dp
dp
9秒时时a
bf
c
g
d
e
VCC
1
2
3
4
5
6
7
a
b
c
d
e
f
g
8dp
dp
9秒十时NET6
NET7
NET8
NET9
NET10
NET11
+5V
4.7K4.7K4.7K4.7K4.7K4.7KNET6
NET7
NET8
NET9
NET10
NET11
NET12
NET13
NET14
NET15
NET16
NET17
NET12
NET13
NET14
NET15
NET16
NET1710K*4
- 17 - 附录
附录附录
附录Ⅱ
ⅡⅡ
Ⅱ 元
元元
元器件清单
器件清单器件清单
器件清单 元器件名称 封装形式 型号 数量
51单片机
MCS51-40 AT89C52 1
8同相缓冲/驱动器
74HC244 1
共阳数码管
DIGITAL
共阳极
6
电阻
AXIAL-1.0 10K 5
电阻
AXIAL-1.0 4.7K 6
电阻
AXIAL-1.0 0.51K 8
极性电容
RB.5/1.0 47uF 1
电容
RAD-0.4 10uF 1
电容
RAD-0.4 30pF 2
电容
RAD-0.4 0.01uF 1
晶振
XTAL 12MHz 1
蜂鸣器
BEEP BEEP 1
三极管
PNP 9012 7
按键
SW4B SW4 5
- 18 - 附录
附录附录
附录Ⅲ
ⅢⅢ
Ⅲ 单片机
单片机单片机
单片机C源程序
源程序源程序
源程序 /******************************************************/
// 采用6位LED动态扫描时钟演示程序
// 使用Keil C51
/******************************************************/
/*使用AT89C52单片机,12MHz晶振,P0口输出段码,P2口作列扫描,
用共阳LED数码管显示*/
//key0为调时位选用,key1为加1键,key2为减1键
#include “reg51.h”
#define char unsigned char
char code dis_7[11]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
0xF8,0x80,0x90,0xff};/*共阳LED数码管表“0”,“1”,“2”,“3”, “4”,“5”,
“6”,“7”,“8”,“9”,“不亮”*/
char code scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列扫描
控制字
char data timedata[6]={0x0
0, 0x00, 0x00, 0x00, 0x00, 0x00};//计时单元数
据初值
char data dis[8]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00};//显示单
元数据
char data con1s=0x00,con04s=0x00,con=0x00;//秒定时用
sbit key0=p1^0;
sbit key1=p1^1;
sbit key2=p1^2;
/********************1ms延时函数********************/
delay1ms(int t)
{
int i,j;
for(i=0;i
}
/********************键扫描子函数********************/
keyscan()
{
EA=0;
if(key0==0)
{
delay1ms(10);
while(key0==0);
- 19 - if(dis[con]==0)
{dis[7]=dis[con]; dis[con]=dis[6]; dis[6]= dis[7];}
con++;TR0=0;ET0=0;TR1=1;ET1=1;
if(con>=6)
{con=0; TR1=0;ET1=0; TR0=1;ET0=1;}
}
if(con!=0)
{
if(key1==0)
{
delay1ms(10);
while(key1==0);
timedata[con]++;
if(timedata[con]>=10)
{timedata[con]=0;}
dis[con]=timedata[con];dis[6]=0x0a;
}
}
//
if(con!=0)
{
if(key2==0)
{
delay1ms(10);
while(key2==0);
if(timedata[con]==0)
{timedata[con]=0x09;}
else {timedata[con]--;}
dis[con]=timedata[con];dis[6]=0x0a;
}
}
EA=1;
}
/********************显示函数********************/
scan()
{
char k;
for(k=0;k<6;k++)
{
P0=dis_[dis[k]];P2=scan_con[k];delay1ms(1);P2=0xff;
- 20 - }
}
/********************初始化函数********************/
clearmen()
{
int i;
for(i=0;ik<10;i++)
{
dis[i]=timedata[i];
}
TH0=0x3C;TL0=0xB0; //50ms定时初值(T0计时用)
TH1=0x3C;TL1=0xB0; //50ms定时初值(T1计时用)
TMOD=0x11;ET0=1;ET1=1;TR1=0;TR0=1;EA=1;
}
/********************主函数********************/
main()
{
clearmen();
while(1)
{
scan();
keyscan();
}
}
/********************1s中断处理函数********************/
viod time_intt0(viod) interrupt 1
{
ET0=0;TR0=0;TH0=0x3C;TL0=0xB0;TR0=1;
con1s++;
if(con1s==20)
{
con1s=0x00;
timedata[0]++;
if(timedata[0]>=10)
{
timedata[0]=0; timedata[1]++;
if(timedata[1]>=6)
{
timedata[1]=0; timedata[2]++;
if(timedata[2]>=10)
- 21 - {
timedata[2]=0; timedata[3]++;
if(timedata[3]>=6)
{
timedata[3]=0; timedata[4]++;
{
timedata[4]=0; timedata[5]++;
}
if(timedata[5]==2)
{
if(timedata[4]==4)
{
timedata[4]=0; timedata[5]=0;
}
}
}
}
}
}
dis[0]= timedata[0];dis[1]= timedata[1];dis[2]= timedata[2];
dis[3]= timedata[3];dis[4]= timedata[4];dis[5]= timedata[5];
}
ET0=1;
}
/*******************0.4秒闪烁中断函数*******************/
void time_intt1(void) interrupt 3
{
EA=0;TR1=0;TH1=0x3C;TL1=0xB0;TR1=1;
con04s++;
if(con04s==8)
{
con04s=0x00;
dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];
}
EA=1;
}
- 22 - 参考资料
参考资料参考资料
参考资料
【1】 张俊谟.单片机中高级教程—原理与应用(第2版).北京:北京
航空航天大学出版社,2006.
【2】 楼然苗,李光飞.单片机课程设计指导. 北京:北京航空航天大学
出版社,2007.
【3】 求是科技.单片机典型模块设计实例导航.人民邮电出版社,2004.
【4】 杨宁.单片机与控制技术.北京航空航天大学出版社.
【5】 周航慈.单片机应用程序设计技术”(修订版).北京航空航天大学
出版社.
【6】 “电子技术应用”、“电子设计应用”、“单片机与嵌入式系统应用”
等期刊.
【7】 (单片机和元器件资料)
【8】 (元器件资料)
【9】 (电子产品世界)