单片机原理与接口设计数字钟伟福实现.

上传人:我** 文档编号:114440298 上传时间:2019-11-11 格式:DOC 页数:64 大小:123.50KB
返回 下载 相关 举报
单片机原理与接口设计数字钟伟福实现._第1页
第1页 / 共64页
单片机原理与接口设计数字钟伟福实现._第2页
第2页 / 共64页
单片机原理与接口设计数字钟伟福实现._第3页
第3页 / 共64页
单片机原理与接口设计数字钟伟福实现._第4页
第4页 / 共64页
单片机原理与接口设计数字钟伟福实现._第5页
第5页 / 共64页
点击查看更多>>
资源描述

《单片机原理与接口设计数字钟伟福实现.》由会员分享,可在线阅读,更多相关《单片机原理与接口设计数字钟伟福实现.(64页珍藏版)》请在金锄头文库上搜索。

1、题目:数字时钟的设计与实现一功能要求: 1用单片机和6位LED数码管显示时、分、秒,实现从00时00分00秒-23时59分59秒循环运行。 2用按键实现时、分、秒的调整。 3整点提醒:0、1、223和短蜂鸣。 4省电功能:关闭显示。 5定时设定提醒:时间到时发出五次蜂鸣声 6秒表功能:显示XX分XX秒XX 按“复位” 键:显示00分00秒00; 按“启动” 键:从00分00秒00开始计时 按“停止” 键:显示实际计时XX分XX秒XX。二硬件设计要求: 1用伟福6000实验装置上8255的A囗作显示段码锁存器 ,B囗作位码锁存器,利用发的实验器材6位LED数码管显示时、分、秒。 2利用伟福600

2、0实验装置上8255的B囗的6根位码输出线和8255C囗中的PC0作按键的输入囗线,实现最多6个按键的识别,作为实现上述功能要求的硬件保证。 3伟福6000实验装置上提供给该课题的硬件是:AT89C51单片机(包括P1囗、P3囗)、8位可编程並行I/O囗8255(包括A囗、B囗、C囗)、地址译码电路、蜂码器及直流电源。 4本次设计提供给各组的器材有:(1)印刷电路板一块(2)7406集成电路3片(3)LED数码管6个(4)1K排阻2个,4.7K电阻一个。(5)40芯IC插座2个、14芯IC插座3个 (6)按键6个(7)焊锡、导线若干。三软件设计(仅供参考): 1主程序流桯图 2显示子程序的设计

3、:(1)釆用十进制BCD(2)显示缓冲区的分配(3)要显示的数据送显示缓冲区(4)把显示的数据置换出段码(5)送段码和位码,进行显示(6)延时3定时中断服务子程序的设计(1)利用定时器T0定时10毫秒,累计到1秒时秒计数加1,累计到60秒时分计数加1,累计到60分时时计数加1,累计到24小时从头开始。(2)注意保护现场和恢复现场(3)注意设置毫秒、秒、分、时的存放单元四、软件仿真仿真部分由Protues实现。Protues可以嵌入单片机的二进制代码,便于程序调试。本次仿真的电路图如下所示:其中,按键为输入电路,为行列式设计,行线接入8255芯片的PC0口,列线分别对应接入8255芯片的PB0P

4、B3口,与数码管的位选线共享端口。数码管为输出电路。本次实验一共要使用6个数码管,以动态显示方式轮番输出字符,6个数码管的段码线相互并联后接入8255芯片的PA端口,a、b、c、d、e、f、g端口分别连接PA0PA6端口,在8255芯片引脚和段码线之间分别一一串联7406芯片、并联一个排阻以提供激励,使数码管发亮。位选线则以数码管的接地线组成,从时十位、时个位、分十位、分个位、秒十位、秒个位分别接入8255芯片的PB0PB5端口,其中PB0PB3这四个端口分别并联上四个按键。同理,每个引脚和8255芯片之间都一一串联上7406芯片和并联上排阻。位选线负责选取某一时间片要显示哪一个数码管,显示间

5、隔由源程序决定。五、焊接本次实验由于没有提供8051芯片、8255芯片。上述芯片均由伟福实验箱提供,焊接的时候需要在万用板上面预留PA、PB接线口。另外,万用板上面同时需要预留电源的正负极、PC0口接线,共计17个接线口。由于万用板的大小的限制及芯片引脚定义的影响,实际上的电路图不会和仿真软件的电路图完全一致,不过大体上还是一样的。还有,本次焊接实际上需要比较多的电线,尤其是数码管部分,由于相邻引脚非常贴近,在焊接的时候要非常留心,谨防相邻两点短路。在焊接完成后,由于背板上面线路众多,需要用胶纸固定整理,防止导线脱落。焊接完成后, 万用板上面已经有相应的接线,于是进行硬件实现部分。六、硬件实现

6、本次硬件实现部分由伟福Lab6000实验箱提供8051芯片和8255芯片,分别连接万用板相应的接线。由伟福的Wave6000软件向实验箱上面的8051芯片烧入时钟的程序。另外,电源的正负极也是由Lab6000提供。电路板中有6个按键,不过实际上使用的有4个,就是离PA、PB连接端口较远的4个起作用,离PA、PB连接端口较近的两个没有定义。从远离端口的按键开始依次编号K1、K2、K3、K4,每个按键都有如下功能:1)当先按K1的时候,系统就进入调节时间状态,数码管上就显示时钟。K2、K3、K4的功能依次为选择调整的单元(时、分、秒),单元数值加1,退出调整状态,单元数值减1;2)当先按K2的时候

7、,系统不作出任何反应,等待用户按K1、K3、K4;3)当先按K3的时候,系统就进入省电模式,数码管熄灭,然后按K1、K2、K3、K4任意一键即可点亮数码管并还原到上次的显示状态;4)当先按K4的时候,系统就进入秒表状态,数码管上面就显示秒表。K1、K2、K3、K4的功能依次为切换至时钟、显示暂停变化(内部继续计时)或者数码管继续变化、复位清零、暂停计时。七、程序所有程序如下所示ORG 0000HAJMPMAINORG 000BH ;T0的中断入口AJMPIT0PMAIN : MOV SP,#70H ;设置堆栈MOV 36H,#00H ; 秒MOV 37H,#00H ; 分MOV 38H,#00

8、H ; 时MOV 43H,#99H ;给闹钟一个初值MOV A,#89H;工作方式MOV DPTR,#0FF7FH ;MOVXDPTR,A ;工作方式MOV TMOD,#01H ;设T0为方式1 初始状态MOV 39H,#100 ;装入中断次数SETBET0 ;允许T0申请中断SETBEA;总中断允许MOV TH0,#0D8H ;给T0装入计数初值MOV TL0,#0F0H ;START: SETBTR0 ;启动T0MOV 3AH,#36H ;给数据处理一个初值LCALL DATAT ;数据处理LCALL DISPLAY ;显示MOV A,38H ;判断闹钟的时CJNEA,43H,KEYI;不

9、相等就跳MOV A,37H ;判断闹钟的分CJNEA,42H,KEYI;MOV A,36H ;判断闹钟的秒CJNEA,41H,KEYI;CLR P1.0 ;启动蜂鸣KEYI: LCALL KS1 ;判断有没键按下 判断键按下?JZ LK1 ;有按下,是抖动?LJMPSTART ;回主程序LK1:LCALL DIR ;停一下 防抖动LCALL DIR ;LCALL KS1 ;再检查有没键按下JZ LK2 ;有按下则扫描并处理LJMPSTART ;回主程序LK2:ACALL LK;扫描键 扫描MOV 40H,#00H ;按键次数LK3:LCALL KS1 ;是否松手松手检测JZ LK3 ;MOV

10、A,3DH ;扫描得来的键位JB Acc.0,CHTIMEI ;从左到右数键1 调时 主 菜单JB Acc.1,CLOCKI ;闹钟JB Acc.2,SAVEI ;省电JB Acc.3,WATCHI ;秒表LJMPSTART ;CHTIMEI:LJMPCHTIME;调时 入口地址CLOCKI :LJMPCLOCK ;闹钟 入口地址SAVEI :LJMPSAVE ;省电 入口地址WATCHI :LJMPWATCH ;秒表 入口地址CHTIME: CLR TR0 ;暂停时钟时钟调时-功能MOV 3AH,#36H ;给数据处理一个初值LCALL DATAT ;数据处理LCALL DISPLAY ;显

11、示LCALL KS1 ;判断有没键按下 判断键按下?JZ LK4 ;有按下,是抖动?LJMPCHTIME;返回调时LK4:LCALL DIR ;停一下 调时防抖动LCALL DIR ;LCALL KS1 ;再检查有没键按下JZ LK6 ;有按下则扫描并处理LJMPCHTIME;返回调时LK6:LCALL LK;扫描键LK5:LCALL KS1 ;是否松手JZ LK5 ;MOV A,3DH ;扫描得来的键位JB Acc.0,XUANW ;从左到右数键1 选位 调时菜单JB Acc.1,ADDBCD ;加1JB Acc.2,OUT ;退出JB Acc.3,SUBCD ;减1LJMPCHTIME;返

12、回调时XUANW: MOV A,#36H;选位的初值 调时选位INC 40H ;累加偏移量ADD A,40H ;CJNEA,#39H,CHTIME ;判断是否选位过度OUT:LJMPSTART ;回主程序调时退出ADDBCD: MOV A,#36H;操行位初值 调时加1ADD A,40H ;求出操作位MOV R0,A ;INC R0 ;+1LJMPCHTIME;返回调时SUBCD: MOV A,#36H;操行位初值 调时减1ADD A,40H ;求出操作位MOV R0,A ;DEC R0 ;-1LJMPCHTIME;返回调时CLOCK: MOV 41H,#00H ;闹钟初值闹钟-功能MOV 42H,#00H ;MOV 43H,#00H ;CLOCK1: MOV 3AH,#41H ;给数据处理一个初值LCALL DATAT ;数据处理LCALL DISPLAY ;显示LCALL KS1 ;判断有没键按下 判断键按下?JZ LK14 ;有按下,是抖动?LJMPCLOCK1;返回闹钟LK14: LCALL DIR ;停一下 闹钟防抖动LCALL DIR ;LCALL KS1 ;再检查有没键按下JZ LK16 ;有按下则扫描并处理LJMPCLOCK1;返回闹钟LK16: LCALL LK;扫描键

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号