1、九江职业技术学院电气工程系九江职业技术学院电气工程系情境二 AT89S51单片机显示接口设计 任务任务2.3 2.3 秒表的设计与制作秒表的设计与制作九江职业技术学院电气工程系九江职业技术学院电气工程系教学目标教学目标知识目标:知识目标:1.掌握掌握1s延时程序设计。延时程序设计。2.掌握数码管显示程序设计。掌握数码管显示程序设计。技能目标:技能目标:1.制作秒表硬件电路。制作秒表硬件电路。2.掌握显示程序的调试方法。掌握显示程序的调试方法。九江职业技术学院电气工程系九江职业技术学院电气工程系工作任务工作任务 利用单片机和利用单片机和2位位LED数码管制作一个秒表,其任数码管制作一个秒表,其任
2、务要求如下:务要求如下:1.显示时间为显示时间为0099s,每秒自动加,每秒自动加1,计满显示,计满显示“FF”;2.设计一个设计一个“开始开始”按钮按钮S1和一个和一个“停止停止”按钮按钮S2,按,按“开始开始”键,显示秒数从键,显示秒数从00开始;按开始;按“停止停止”键,保持键,保持实时时间,停止计时。实时时间,停止计时。九江职业技术学院电气工程系九江职业技术学院电气工程系秒表设计与制作 工作任务工作任务硬件制作硬件制作软件设计软件设计系统调试系统调试九江职业技术学院电气工程系九江职业技术学院电气工程系秒表的硬件电路设计九江职业技术学院电气工程系九江职业技术学院电气工程系秒表的软件设计
3、秒表设计思路秒表设计思路n1s定时功能,实现基准时间;n秒计数器,实现每隔1s加1的操作;n显示字型码转换,实现数值与显示字型之间的转换;n显示输出,实现秒计数值的显示输出。九江职业技术学院电气工程系九江职业技术学院电气工程系流程图九江职业技术学院电气工程系九江职业技术学院电气工程系秒表中的加秒表中的加1及及BCD码转换子程序码转换子程序NBCD:CLR A CLR C MOV A,N ADD A,#1 DA A MOV N,A ANL A,#0FH MOV BCD1,A MOV A,N SWAP A ANL A,#0FH MOV BCD2,A RET 功能:实现秒加功能:实现秒加1功能,并将
4、秒数转换成非压缩功能,并将秒数转换成非压缩BCD码。码。九江职业技术学院电气工程系九江职业技术学院电气工程系汇编参考程序-主程序ORG0000HLJMPMAINORG0030HNEQU 5FH;秒计数器;秒计数器BCD1EQU 5EH;BCD码个位数码个位数BCD2EQU 5DH;BCD码十位数码十位数CRTN1 EQU 5CH;个位显示码;个位显示码CRTN2 EQU 5BH;十位显示码;十位显示码MAIN:MOV SP,#60HMOVN,#00H;秒计数器清零;秒计数器清零MOVP0,#0C0H;显示器输入;显示器输入“0”MOVP2,#0C0H DELAY:MOVR7,#04H ;1s延
5、时延时DL1:MOVR6,#250DL2:MOVR5,#250DL3:NOPNOPDJNZR5,DL3JNBP3.2,MAIN3;每;每1ms检测是否停止计时检测是否停止计时DJNZ R6,DL2DJNZR7,DL1MOVA,NCJNEA,#99H,MAIN1 ;判断是否超出显示最大值;判断是否超出显示最大值SJMPMAIN2 MAIN1:ACALL NBCDACALLTBFLINACALLDISPLAYLJMPDELAY MAIN2:MOVBCD1,#0FH;显示;显示“FF”MOVBCD2,#0FHACALLTBFLIN MAIN3:ACALL DISPLAYSJMPMAIN3九江职业技术
6、学院电气工程系九江职业技术学院电气工程系参考程序-子程序NBCD:CLRA;BCD码转换子程序码转换子程序CLRCMOVA,NADDA,#1DAAMOVN,AANLA,#0FHMOVBCD1,AMOVA,NSWAPAANLA,#0FHMOVBCD2,ARET TBFLIN:MOVA,BCD1;查显示码;查显示码MOVDPTR,#DOTMOVCA,A+DPTRMOVCRTN1,AMOVA,BCD2MOVCA,A+DPTRMOVCRTN2,ARETDOT:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 80H,90H,40H,79H,24H,30H,86H,8E
7、HDISPLAY:MOVP2,CRTN1;输出显示子程序;输出显示子程序MOVP0,CRTN2RETEND九江职业技术学院电气工程系九江职业技术学院电气工程系#includesbit KeyDown=P32;bit flag;/是否停止标志是否停止标志unsigned char code dis_tab10=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/共共阳极码表阳极码表unsigned char i,Second_Counts;/1ms延时函数延时函数void delay_nms(unsigned int i)/使
8、用使用12M时的延时循环次数时的延时循环次数略略/主程序主程序int main(void)P0=0 xFF;P2=0 xFF;Second_Counts=0;i=0;flag=1;/停止按键未按下停止按键未按下C51参考程序九江职业技术学院电气工程系九江职业技术学院电气工程系while(1)delay_nms(10);i+;if(i=100)Second_Counts+;i=0;if(Second_Counts=100)Second_Counts=0;/计满计满100s,清零计清零计数单元数单元P0=dis_tabSecond_Counts/10;/分离秒计数值十位并显示分离秒计数值十位并显示P2=dis_tabSecond_Counts%10;/分离秒计数值个位并显示分离秒计数值个位并显示if(!KeyDown)/停止按键按下停止按键按下,标志清零标志清零,停机等待停机等待P0=dis_tabSecond_Counts/10;P2=dis_tabSecond_Counts%10;flag=0;while(!flag);C51参考程序(续)九江职业技术学院电气工程系九江职业技术学院电气工程系秒表程序仿真九江职业技术学院电气工程系九江职业技术学院电气工程系