单片机电子钟课程设计汇编中南大学518255Word文档下载推荐.docx
- 文档编号:21747747
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:333.87KB
单片机电子钟课程设计汇编中南大学518255Word文档下载推荐.docx
《单片机电子钟课程设计汇编中南大学518255Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机电子钟课程设计汇编中南大学518255Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
修改模块:
扫描到键2按下则根据STATUS标志的内容修改相应的时分秒(STATUS=3时加1,STATUS=2分加1,STATUS=1秒加1,其它值不动作)
2、标志设置及RAM地址分配
序号
名称
注释
1
DISM0~DISM5
显示缓冲区,用于显示程序中存放要显示的段码,占六个单元。
2
HH
小时时间存放单元,占一个单元,初始值赋0
3
MM
分时间存放单元,占一个单元,初始值赋0
4
SS
秒时间存放单元,占一个单元,初始值赋0
5
HSEC
小于0.5秒计数延时单元,占一个单元,用于时间调整时,闪烁指示状态用。
定时器定时为50ms,该单元初始值赋10
6
SEC
小于1秒计数延时单元,占一个单元,用于时钟计时用,定时器定时为50ms,该单元初始值赋20
7
FLAG
标志存储器单元,占一个单元,单元中的每一位可用作标志,该单元必须定位在单片机片内20~2FH中(在这些单元中的每一位可按位寻址访问)。
8
STATUS
时钟调整时的状态指针,在时钟调整状态下有效。
为“3”时指示“时”调整,为“2”时指示“分”调整,为“1”时指示“秒”调整。
标志名称
FLAG.1
每隔0.5秒将此标志反相一次。
在时钟调整状态下,用此标志控制数码管进行闪烁指示当前正在调整的是哪一个时钟单元。
STAUS
按下时钟调整键后,此标志置“1”,进入时钟调整状态,先进行“时”调整((STATUS)=3),再按下时钟调整键,进行“分”调整((STATUS)=2),再按下时钟调整键,进行“秒”调整((STATUS)=1),再按下时钟调整键,则此标志置“0”,退出时钟调整状态。
按键按下后,此标志置“1”,键松开,此标志置“0”
3、相关计算
1)定时器初值:
使用定时器0定时50ms,工作在方式0,初值为65535-5000=15535=3CAFH,故TH0=3CH、TL0=0AFH,在中断服务程序里通过减1判断20次实现定时1秒(SEC),判断10次实现定时0.5秒(HSEC)
2)七段数码管段码:
1
2
3
4
5
6
7
8
9
灭
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
7FH
6FH
00H
3)地址分配
高八位对应关系如下表
P2
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
A1
A0
G2B
G2A
G
C
B
A
Control
A口地址为0900HB口地址为4900H控制口地址为C900H
三、流程图
1、模块1---按键扫描模块
2、模块2--定时器中断模快
3、模块3--转换段码模块
4、模块4--段码位码送入8255
5、模块5--修改模块
四、硬件电路设计
1、AT89C51
2、74LS138
当G2B_、G2_A为低电平,G1为高电平时芯片正常工作,根据输入ABC端口的电平由真值表可以查得输出值。
74LS138真值表
G1
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
X
3、8255
8255是可编程的并行输入/输出接口芯片,通用性强且使用灵活。
8255按功能可分为三个部分,即:
总线接口电路,I/O口电路和控制逻辑电路。
1.I/O口电路:
8255共有三个八位口,其中A口和B口是单纯的数据口,供数据I/O口使用。
2.总线接口电路:
它用于实现8255和单片机芯片的信号连接。
(1)CS——片选信号。
(2)RD——读信号。
(3)WR——写信号。
(4)A0、A1——端口选择信号。
8255共有四个可寻址的端口,用二位编码可以实现。
3.控制逻辑电路:
它是控制寄存器,用于存放各口的工作方式控制字。
本课程设计是利用8255可编程并行口芯片,实现数据的输入、输出。
可编程通用接口芯片8255A有三个八位的并行的I/O口,它有三种工作方式。
本实验采用的方式为0:
PA口输出段码,PB口输出位码。
故控制字为10000000H。
工作方式0是一种基本的输入输出方式。
在这种方式下,三个端口都可以由程序设置为输入或输出,其基本功能可概括如下:
A、可具有两个八位端口(A、B)和两个4位端口(C口的上半部分和下半部)。
B、数据输出时可锁存,输入时没有锁存功能。
4、7段数码管(共阴极)
故有如下对应关系
5、按键
实验台提供了8个按钮的小键盘,可接到单片机的并行口,如果有键按下,则相应输出为低,否则输出为高。
本次电子钟设计使用了P1.7和P1.6口分别控制按键1和按键2.
6、电路原理图
五、程序源代码
CLOCK-MAIN.ASM
FLAGEQU21H
HHEQU30H
MMEQU31H
SSEQU32H
STATUSEQU33H
HSECEQU34H
SECEQU35H
DISM0EQU40H
DISM1EQU41H
DISM6EQU42H;
段码为00H使得时分秒间隔显示更好看
DISM2EQU43H
DISM7EQU45H
DISM3EQU44H
DISM4EQU46H
DISM5EQU47H
DISM8EQU48H
K1EQUP1.7
K2EQUP1.6
ORG0000H
AJMPMAIN
ORG000BH
LJMPINT_0
MAIN:
MOVSP,#50H
MOVDPTR,#0C900H
MOVA,#80H
MOVX@DPTR,A;
写入控制字
MOVSEC,#20;
SETTIME=50MS*20
MOVHSEC,#10;
SETTME=50MS*10
MOVTMOD,#11H
MOVTH0,#3CH
MOVTL0,#0AFH
SETBEA
SETBET0
SETBTR0
KEYTEST:
MOVSTATUS,#4
CLRFLAG.1
TEST10:
LCALLDISBUF
LCALLDISP
JNBK2,TEST20;
键2按下则跳出循环
JBK1,TEST10;
键1不按下则循环并显示
TEST11:
JNBK1,TEST11;
键1不松开则循环并显示
DECSTATUS
SETBFLAG.1
START:
MOVR0,STATUS
CJNER0,#0,TEST10;
每按键1一次STATUS+1,按4次跳出循环
SJMPKEYTEST
TEST20:
键2不松开则循环并显示
LCALLMODIFY
SJMPTEST10;
键2按下一次则修改一次并跳出循环去进入按键1和2的测试循环
MODIFY:
MOVA,STATUS
CLRCY
SUBBA,#3
JZMODFH
SUBBA,#2
JZMODFM
SUBBA,#1
JZMODFS;
判断STATUS为3时修改时为2时修改分为1时修改秒
SJMPRET_0
MODFH:
MOVA,HH
ADDA,#1
DAA
MOVHH,A
CJNEA,#24H,NEXTH
MOVHH,#0
NEXTH:
AJMPRET_0
MODFM:
MOVA,MM
MOVMM,A
CJNEA,#60H,NEXTM
MOVMM,#0
NEXTM:
MODFS:
MOVA,SS
MOVSS,A
CJNEA,#60H,NEXTS
MOVSS,#0
NEXTS:
RET_0:
RET
INT_0:
JNBFLAG.1,TIME
MOVA,HSEC
DECA
MOVHSEC,A
JNZRET_A
CPLFLAG.0
MOVHSEC,#10
SJMPRET_A
TIME:
MOVA,SEC
MOVSEC,A
MOVSEC,#20
RET_A:
MOVTL0,#0AFH
RETI
DISBUF:
JNBFLAG.0,LAB0;
标志为0清除相应的时分秒
SJMPLAB1
LAB0:
LJMPNORMAL
LAB1:
JZFLICH;
判断status
JZFLICM
JZFLICS
SJMPNORMAL
FLICH:
MOVDISM0,#00H
MOVDISM1,#00H
SJMPNORMALM
FLICM:
MOVDISM2,#00H
MOVDISM3,#00H
ANLA,#0F0H
SWAPA
MOVDPTR,#DISTAB
MOVCA,@A+DPTR
MOVDISM0,A
ANLA,#0FH
MOVDISM1,A
MOVDISM4,#00H
MOVDISM5,#00H
MOVDISM4,A
MOVDISM5,A
SJMPRET_3
FLICS:
MOVDISM2,A
MOVDISM3,A
NORMAL:
MOVDISM1,A;
HH>
>
DISM0DISM1
NORMALM:
MOVDISM3,A;
MM>
DISM2DISM3
NORMALS:
MOVDISM5,A;
SS>
DISM4DISM5
RET_3:
DISTAB:
DB3FH,06H,5BH,4FH
DB66H,6DH,7DH,07H
DB7FH,6FH,3FH,3FH
DISP:
CJNEA,#60H,NEXT0;
判断是否到60
NEXT0:
CJNEA,#60H,NEXT1
MOVHH,A
NEXT1:
CJNEA,#24H,NEXT2
NEXT2:
MOVR0,#DISM0
MOVDISM8,#7FH
MOVR1,#8
DISP0:
MOVDPTR,#0900H
MOVA,@R0
A口送段码
MOVDPTR,#4900H
MOVA,DISM8
B口送位码
RRA
MOVDISM8,A
MOVR2,#3
DEL:
MOVR3,#250
DJNZR3,$
DJNZR2,DEL;
延时
INCR0
DJNZR1,DISP0
END
六、操作说明
运行后电子钟从00:
00:
00开始计时
用键1控制作时钟调整状态输入:
按下一次进入时钟调整状态下的“时”调整,再按下一次进入“分”调整,再按下一次进入“秒”调整,再按下一次退出时钟调整状态。
处于调整状态时相应的调整部分闪烁显示。
用键2调整时钟:
在时钟调整状态下有效,按下一次闪烁的部分加1。
七、设计总结
1、本设计的优缺点
●优点:
满足方案一所有要求。
按键测试部分精彩。
模块化设计思路清晰,易于编程调试。
●缺点:
1.本来坚持不重复自己原则(DRY),但是由于8051汇编指令缺少相等则转移、不带进位的减法等指令,使得其做多路判断不便。
做判断调试未果,只好在模块3转换段码模块中使用了几处重复代码。
2.在写报告时发现源代码中的修改模块也做了到60H判断,实际上这是没有必要的,因为在转换段码模块已经做了判断。
2、心得体会
此次课程设计有了老师的设计指南起点高了很多,思路也更清晰。
通过此次电子钟的设计,我掌握了如何运用设置标志来模块化优化设计,如何充分利用μvisionIDE工具里的设置断点、单步运行(F11)、运行(F5)、查看/修改RAM、查看端口、定时器等来调试程序,了解了proteus电路图绘制与仿真,在程序设计和程序调试方面收获很大,通过十道思考题,提升了举一反三的能力。
当程序写完后认为理论上是对的一运行却无法正常工作时无比懊恼,只能说服自己静下心耐心分模块一步一步调试,调试的过程中很明显地感受到到标志设置与模块化带来的优越性,这使得通过调试反馈修改让电子钟从不显示到显示一位到显示八位到按键一正常工作再到按键二正常工作完成设计,当自己编写的程序运行良好性能不错时无比喜悦,也是一小成就。
此次课程设计还让我明白了算法设计与注重调试方法的重要性,在算法思路上多思考会带来代码编写的效率提升,充分利用调试的各种工具可以大大缩短调试程序的时间。
八、参考文献
[1]万福君.单片微机原理系统设计与应用.中国科学技术大学出版社.2005
[2]李继灿.新编微型计算机原理及应用.清华大学出版社.2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子钟 课程设计 汇编 中南 大学 518255