单片机原理及系统课程设计
专 业:电气工程及其自动化 班 级: 电气091 姓 名: 学 号: 指导教师:
评语: 平时(40) 修改(30) 报告(30) 总成绩
2012 年 7月1日
单片机原理及系统课程设计报告
1 引言
基于单片机课程的学习,在本次课程设计中利用单片机实现时钟的显示,利用键盘和门电路控制时间的调整,在设计上采用硬件计数与软件计数相结合的方式,并且定时器T0采用了中断方式。
2 系统方案及原理
本次课程设计是用80C51单片机CPU及接口电路设计一个数字时钟,其核心部件是80C51,时钟的显示采用6个共阴极LED显示灯,四个开关方便的对秒、分、时分别调整,保证功能完善,工作可靠。硬件方面:独立式键盘可以消除时间误差的和方便时间的调整;显示电路采用LED动态显示方式,共阴极端由P2口线控制,分为段选线和位选线,利用人的视觉停留达到显示的效果,段选线控制字符选择,位选线控制显示位的亮或暗,从而简化串行口线的连接。软件方面:四个键盘输入与门74LS21,其输出用作中断信号,当四个键盘有一个键按下后就会向CPU申请中断,这样就可以提高CPU工作效率,达到调整时间的快速性与准确性;定时采用片内定时器定时,提高了电子时钟的准确度。显示电路可以采用点阵液晶显示模块(LED)。一上电,数码管显示的起始时间为0时0分0秒,也就是数码管显示000000,然后每过一秒,秒位加一,到9后10秒位加一,秒位回0.10秒位显示5,秒位显示9后一秒,分钟加一,秒位回0。以此类推,时钟显示的最大值位23小时59分钟59秒。
3 硬件设计 3.1 硬件原理图
根据要求,设计一个时钟。能够显示时间格式为 时.分.秒,并且设置键盘,根据按键任意调整时间。利用8051内部定时器0与软件结合来实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。显示部分用共阴极的LED显示等显示。硬件原理图如图一所示。四个开关方便的对秒、分、时分别调整,保证功能完善,工作可靠,定时采用片内定时器定时,提高了电子时钟的准确度。根据题目要求设计的总体框图,如图1所示。
- 1 -
单片机原理及系统课程设计报告
图1 硬件原理图
3.2Proteus仿真图
根据硬件原理电路,用在Keil生成hex的可执行文件,仿真结果如图2所示。
图2 Proteus仿真结果
- 2 -
单片机原理及系统课程设计报告
4 软件设计
4.1序包括以下几个部分:
(1)主程序:主程序主要完成系统的初始化,以及对数码显示管和键盘子程序的调用。主程序流程图如图3所示。
开始启动定时器按键检测显示及时及调整
图3 主程序流程图
(2)键盘扫描子程序:返回键值键盘扫描子程序流程图如图4所示。
开始初始化地址参数输入列扫描信号列扫描信号移位读入行信号Y按照行列计算键值该列有键输入?N查表得建码6列扫描完YN等待键盘释放返回
图4 键盘扫描子程序流程图
- 3 -
单片机原理及系统课程设计报告
(3)处理子程序:确定按键的位置,并进行处理。
(4)显示子程序:将显示缓冲区的数据送到LED显示器显示。时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。显示子程序流程图如图5所示。
开始初始化显示参数关所有显示位取显示数据数据位溢出输入缓冲脉冲N8段码完成?Y输入位选通信号延时位选通信号移位指向下一个显示数据N6位完成?Y返回
图5 显示子程序流程图
- 4 -
单片机原理及系统课程设计报告
5 总结
历时一周的单片机课程设计结束了,此次课程设计中,我所做的是要用8051单片机及其他部件完成一个电子时钟。可以实现电子钟的走时和校对;电子钟上电时开始走,通过6个LED显示时、分、秒;通过按键可以进行时间的调整。在完成设计的过程中,我遇到了一些问题,在用Keil uVision3调试程序时,软件提示说“代码”超过2k。这个问题困扰了我半天的时间。后来我直接编译、编译连接、全部重建、停止编译和对工程进行设置,生成了名为 cs.hex文件。之后在Proteus中画图仿真。通过这次单片机课程设计,我不仅将上学期所学的单片机知识应用到设计中,同时更进一步学习了80C51。了解了74HC373驱动芯片、4LS21等芯片。更加熟悉了Keil和Proteus的使用。至于用Visio画流程图,这很简单,以前的课程设计过程中一直是不可缺少的,所以比较熟悉。每次课程设计都会遇到一些问题,随着问题的解决自己又学到了更多的知识。
- 5 -
单片机原理及系统课程设计报告
6 参考文献
[1] 李华.单片机原理及应用[M].北京:兰州大学出版,2001.
[2] 于殿泓,单片机原理实验教程[M].西安:西安电子科技大学出版社,2007. [3] 蔡明文,冯先成.单片机课程设计[M].武汉:华中科技大学出版社,2007.
- 6 -
单片机原理及系统课程设计报告
附 录
源程序代码:
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 MOV TH0,#3CH 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 SETB TR0 MAIN: LCALL DIS LJMP MAIN ; 显示子程序
;秒显示个位内存单元 ;秒显示十位内存单元 ;分显示个位内存单元 ;分显示十位内存单元 ;时显示个位内存单元 ;时显示十位内存单元 ;定时器T0,工作方式1, ;定时50MS ;指针指向显示单元 ;选中秒个位
;时位键盘判断时用 ;秒十位判断时用 ;分十位判断时用 ;开中断 ;开T0中断 ;记时开始 - 7 -
单片机原理及系统课程设计报告
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 ; 显示小数点
CJNE R0,#32H,GO111 ORL A,#80H GO111: CJNE R0,#34H,MIN ORL A,#80H
MIN: MOVX @DPTR,A LCALL DELAY LCALL DELAY LCALL DELAY
INC R0 MOV A,R5 JNB ACC.5,LH RL A MOV R5,A
AJMP ENR LH: MOV R0,#30H MOV R5,#0FEH ENR: RET ; 定时中断 TT0:
MOV TH0,#3CH MOV TL0,#0B0H
DJNZ R1,FANHUI MOV R1,#20
INC 30H DJNZ R4,FANHUI MOV R4,#10
;段码选择p2.6 ;小数点选择(R0)=/=32H转移 ;送出去显示 ;1MS延时 ;修改指针指向下一显示单元 ;也可写为XCH A,R5 ;判断显示完否? ;也可写为XCH R5,A ;返回循环显示 ;重心定义显示指针
;重设位码,形成循环ACC.0-ACC.3 ;判断1秒到否?未到跳转 ;秒个位加一
;判断10秒到否?未到跳转 - 8 -
单片机原理及系统课程设计报告
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 PUSH B PUSH ACC JB P1.0,ST2 LCALL DELAY111 JNB P1.0,$ LCALL DELAY111 DJNZ R3,GO MOV R3,#6 GO: INC 31H
;时位判断时用 ;键盘1判断时用- 9 -
单片机原理及系统课程设计报告
MOV A,31H CJNE A,#6,$+3 JNB P1.0,$ JC ST2 MOV 31H,#00H MOV A,31H
ST2: JB P1.1,ST3 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 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 LCALL DELAY111
;键盘2判断时用 ;键盘3判断时用 ;键盘4判断时用 - 10 -
单片机原理及系统课程设计报告
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
- 11 -
因篇幅问题不能全部显示,请点此查看更多更全内容