资源描述
课程设计(论文)
题 目 名 称 数字电子时钟
课 程 名 称 单片机原理及应用
学 生 姓 名
学 号
系 、专 业 电气工程系 电气自动化
指 导
2009年06 月29 日
邵阳学院课程设计(论文)任务书
年级专业
电气自动化
学生姓名
学 号
题目名称
数字电子时钟
设计时间
09年6月8日—7月1日
课程名称
单片原理及其接口技术
课程编号
121200105
设计地点
数字控制与PLC实验室
一、 课程设计(论文)目的
通过课程设计,使学生巩固和加深对单片机基本知识的理解,学生查询资料、方案设计、方案比较,以及单元电路设计计算环节,进一步提高学生综合运用所学知识的能力,提高分析理解解决实际问题的能力。锻炼分析、解决电子电路问题的实际本领,通过此综合训练,为以后毕业设计打下基础。
二、 已知技术参数和条件
1 .89c51单片机
2 .LED数码显示管
3 74LS373芯片
4 74LS21芯片
任务和要求
(1) 设计一个基于单片机的电子时钟,并且能够实现分秒的现实和调节。
(2) 设计出硬件电路
(3) 设计出软件编程方法,并写出源代码
(4) 用proteus进行仿真
(5) 用汇编用汇编语言编实现程序设计
(6) 利用查表,中断等方式实现目的
。
邵阳学院课程设计(论文)评阅表
学生姓名 学 号 074
系 电气工程系 专业班级
题目名称 数字电子时钟 课程名称 单片机原理及应用
一、学生自我总结
通过这次单片机课程设计,我能够很好地应用单片机理论知识,将其应用于实践,并且这是一次小组的合作,从中更好培养了小组合作的默契。
通过课程设计,让我加深了对单片机课程的理解,而且也巩固了数字电路有关知识的理解,特别是关于芯片的连线,以及proteus反真软件的使用,我觉得这是一次宝贵的经验。
学生签名: 2009年 06 月29日
二、指导教师评定
评分项目
综合成绩
权 重
单项成绩
指导教师评语:
指导教师(签名): 年 月 日
注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;
2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。
摘要
单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
基于单片机课程的学习,本小组成员利用单片机实现时钟的显示,利用键盘和门电路控制时间的调整,充分利用单片机的资源和空间,较大限度的实现了功能,设计时主要应用了一个基于AT89C51单片机的电子时钟。并在数码管上显示相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、准确,节省了硬件资源。
关键词:AT89C51单片机 、 键盘控制 、 Proteus仿真
目录
摘要
1 方案选取…………………………………………………...5
1.1 总体方案介绍……………………………………………………6..
1.2 多功能电子表计时方案………………………………………6
.
1.3 多功能电子表键盘显示方案………………………………….6
.
2 电路设计……………………………………………….….7
2.1 键盘的设计………………………………………………..…..7
2.2门电路的设计…………………………………………….…….7
2.3显示电路………………………………………………………..8
3 软件设计……………………………………………….…10
3.1 程序流程图…………………………………………………....10
3.2 汇编源程序……………………………………………………11
4 系统仿真…………………………………………………….…17
.
5 结束语…………………………………………………………..18
参考文献………………………………………………….….18
附录……………………………………………………………19
1 方案选取
1.1 总体方案介绍
本次设计电子钟系统功能简单,用单片机的最小系统就能得以实现。而单片机的最小系统设计中实际上最重要的就是对键盘/显示器接口电路的设计,由于系统功能不同所以要求就不同,接口设计也就不同。对一个键盘/显示器接口设计应从整个系统出发,综合考虑软、硬件特点。下面是本人在设计前对各种设计方案的考虑:
1.2 多功能电子表计时方案
方案一:采用实时时钟芯片
实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。由于功能完善,精度高,软件程序设计相对简单,且计时不占用CPU时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。
方案二: 软件控制。
利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时及秒表计时。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术MCS-51汇编语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现计时。而由于ATMEL公司的AT89S51单片机是低功耗的具有4KB在线可编程Flash存储器的单片机。它与通用80C51系列单片机的指令系和引脚兼容。片内的Flash可允许在线重新编程,也可使用通用非易失性存储器编程。它将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大,而且也较容易购买,故本设计中所选的单片机为AT89S51单片机。
1.2 多功能电子表键盘显示方案
方案一: 8279扩展。
该方案方框图如图1.2.1所示,8279是一种可编程的键盘/显示接口专用芯片,它含有键盘输入和显示输出两种功能,键扫描程序和动态显示程序全由8279硬件自动完成,此种方案能以比较简单的硬件
电路和较少的软件开销实现单片机与键盘、LED显示器的接口。
方案二: 8155扩展,LED动态显示。
该方案方框图如图1.2.2所示,8155是一块可编程的接口芯片,与单片机的接口非常简单,它的键盘、显示共用一个接口电路,可节省I/O口。但动态扫描方式需占用CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
方案三: 串口扩展,LED静态显示。
该方案方框图如图1.2.3所示,独立式键盘配置灵活,软件结构简单,按键较多时不宜采用。静态显示占用口资源少,采用串口传输实现静态显示, LED数码管与单片机之间通过6个移位寄存器相连,显示亮度有保证,但此方案的硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。
方案四: 独立式按键,LED动态显示。
该方案方框图如图1.2.4所示,独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,因本系统用到的按键比较少,采用独立式键盘不会浪费I/O口线,所以本系统采用独立式键盘。动态显示的亮度虽然不如静态显示,但其硬件电路较简单,可节省硬件成本,虽然动态扫描需占用CPU较多的时间,但本系统中的单片机没有很多实时测控任务,因此,本系统采用此种方案。
2 电路设计
2.1 键盘的设计
考虑到时间误差的存在以及调整时间的方便性,采用独立式键盘。
提高CPU的工作效率,采用中断工作方式
四个键盘接于P1口,用74ls21与门接于外部中断0,实现了调整时间的快速性,当四个键盘有中断发生,首先判断四个键哪个按下,向CPU发一个中断请求信号,然后调用相应的中断程序。参考电路如下:
键盘的工作过程可分为两步:第一步是CPU首先检测键盘上是否有按键被按下,第二步是识别哪一个减按下。检查键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。
查询工作方式(例如用8155扩展I/O组成的行列式键盘):
键盘上有无键按下是有列线送出全扫描字,然后读入行线状态来识别的。其方法是PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中,如果有键按下,总会有一根行线拉置低电平,从而使行输入状态不全为“1”。键盘中哪一个键按下是有列线逐列置低电平后,检查行输入状态,称为逐列扫描。方法是:从PC口读入行线状态,如果全为“1”,则所按下之键不在此列,如果不全为“1”,则在此列,并且是与“0”电平行线相交的交点上的那个键。
2.2 门电路的设计
为了达到调整时间的快速性与准确性,采用中断方式,四个键盘采用与门芯片74LS21。当四个键盘有一个按下后就会向CPU申请中断。
2.3 显示电路设计
显示采用led动态显示方式,共阴极端由P2口线控制,分为段选线和位选线,利用人的视觉停留达到显示的效果,段选线控制字符选择,位选线控制显示位的亮或暗。从段选线I/O口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,为选通不显示字符(保持熄灭)。这样,对各位显示就是一个循环过程。从计算机工作来看,在一个瞬间只有一位显示字符,而其他位都是熄灭的。但由于人的视觉停留,这种动态变化是察觉不到的。从效果上看,各位显示器能连续而稳定地显示不同的字符。
3 软件设计
3.1 程序流程图
开始
有键按下否?
调用延时子程序
调用延时子程序
有键按下否?否?
判断闭合键,键码入栈保护
闭合键释放否?
键码 A
返回
3.2 汇编源程序
ORG 0000H
AJMP START
ORG 0003H
LJMP ST1
ORG 000BH
AJMP TT0
ORG 0030H
START: MOV 30H,#00H ;秒个位内存单元
MOV 31H,#00H ;秒十位内存单元
MOV 32H,#00H ;分个位内存单元
MOV 33H,#00H ;分十位内存单元
MOV 34H,#00H ;时个位内存单元
MOV 35H,#00H ;时十位内存单元
MOV TMOD,#01H ;定时器T0,工作方式1,
MOV TH0,#3CH ;定时50MS
MOV TL0,#0B0H ;
MOV R0,#30H ;指针指向显示单元
MOV R5,#0FEH ;选中秒个位
MOV R1,#20 ;
MOV 36H,#00H ;时位键盘判断时用
MOV R3,#6 ;秒十位判断时用
MOV R2, #6 ;分十位判断时用
MOV R4,#10 ;
MOV 40H,#10
MOV IE, #81H ;
SETB EA ;开中断
SETB ET0 ;开T0中断
SETB TR0 ;记时开始
MAIN: LCALL DIS
LJMP MAIN
;#################显示子程序###################
DIS: MOV A,R5 ;先位码
MOV DPTR,#7FFFH ;位码选择p2.7
MOVX @DPTR,A
MOV A,@R0 ;再段码
MOV DPTR,#TAB ;表地址
MOVC A,@A+DPTR ;查表
MOV DPTR,#0BFFFH ;段码选择p2.6
;###############显示小数点###################
CJNE R0,#32H,GO111 ;小数点选择(R0)=/=32H转移
ORL A,#80H
GO111: CJNE R0,#34H,MIN
ORL A,#80H
MIN: MOVX @DPTR,A ;送出去显示
LCALL DELAY ;1MS延时
LCALL DELAY
LCALL DELAY
INC R0 ;修改指针指向下一显示单元
MOV A,R5 ;也可写为XCH A,R5
JNB ACC.5,LH ;判断显示完否?
RL A ;也可写为XCH R5,A
MOV R5,A
AJMP ENR ;返回循环显示
LH: MOV R0,#30H ;重心定义显示指针
MOV R5,#0FEH ;重设位码,形成循环ACC.0-ACC.3
ENR: RET
;###############定时中断###########################
TT0:
MOV TH0,#3CH ;
MOV TL0,#0B0H ;
DJNZ R1,FANHUI ;判断1秒到否?未到跳转
MOV R1,#20 ;
INC 30H ;秒个位加一
DJNZ R4,FANHUI ;判断10秒到否?未到跳转
MOV R4,#10 ;
MOV 30H,#00H ;
INC 31H ;
DJNZ R3,FANHUI ;
MOV R3,#6 ;
MOV 31H,#00H ;
INC 32H
DJNZ 40H,FANHUI ;
MOV 40H,#10
MOV 32H,#00H
INC 33H
DJNZ R2,FANHUI
MOV R2,#6
MOV 33H,#00H
INC 36H ;时位判断时用
MOV A,36H
CJNE A,#24,JUMP
MOV 36H,#00H
JUMP: MOV A,36H
MOV B,#10
DIV AB
MOV 34H,B
MOV 35H,A
FANHUI: RETI
;*********键盘处理程序***********
ST1: CLR EX0 ;键盘1判断时用
PUSH B
PUSH ACC
JB P1.0,ST2
LCALL DELAY111
JNB P1.0,$
LCALL DELAY111
DJNZ R3,GO
MOV R3,#6
GO: INC 31H
MOV A,31H
CJNE A,#6,$+3
JNB P1.0,$
JC ST2
MOV 31H,#00H
MOV A,31H
ST2: JB P1.1,ST3 ;键盘2判断时用
LCALL DELAY111
JNB P1.1,$
LCALL DELAY111
DJNZ 40H,GO1
MOV 40H,#10
GO1: INC 32H
MOV A,32H
CJNE A,#10,$+3
JNB P1.1,$
JC ST3
MOV 32H,#00H
MOV A,32H
ST3: JB P1.2,ST4 ;键盘3判断时用
LCALL DELAY111
JNB P1.2,$
LCALL DELAY111
DJNZ R2,GO2
MOV R2,#6
GO2: INC 33H
MOV A,33H
CJNE A,#6,$+3
JNB P1.2,$
JC ST4
MOV 33H,#00H
MOV A,33H
ST4: JB P1.3,ST6 ;键盘4判断时用
LCALL DELAY111
JNB P1.3,$
LCALL DELAY111
INC 36H
MOV A,36H
CJNE A,#24,JUMP1
MOV 36H,#00H
JUMP1: MOV A,36H
MOV B,#10
DIV AB
MOV 34H,B
MOV 35H,A
ST6: POP ACC ;键盘中断返回
POP B
SETB EX0
RETI
;##########延时1MS子程序###########
DELAY: MOV R7,#02H
DE1: MOV R6,#0FEH
DE2: DJNZ R6,DE2
DJNZ R7,DE1
RET
;########键盘延时消抖程序#########
DELAY111:MOV 50H,#2 ;键盘消抖程序
DE1111: MOV 51H,#255
DJNZ 51H,$
DJNZ 50H,DE1111
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END
4 系统仿真
5 结束语
我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。
参考文献
1. 参考文献
⑴李建忠编著,《单片机原理及应用》西安电子科技大学出版社,2008。
⑵胡汉才编著,《单片机原理及其接口技术》清华大学出版社,2004。
⑶贾金铃等编著,《微型计算原理及应用》重庆大学出版社,2006。
⑷吴清秀,周荷琴编著,《微型计算机原理与接口技术》中国科学技术
大学出版社,2004。
⑸吴向军、罗源明等编著《汇编语言程序设计》高等教育出版社,2001。
2 附录
(AT89C51)
(74LS373)
(74LS21)
展开阅读全文