欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 单片机秒表课程设计心得体会

单片机秒表课程设计心得体会

时间:2016-02-01 05:32

单片机秒表设计课程设计的程序设计

单片机的要求有吗。

任务是什么。

单片机课程设计秒表

只有一个用微机原理设计出来的,没有按照你的要求。

1. 可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1\\\/100秒)、闹钟(小时、分、秒)。

2. 在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整。

3. 在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整。

4. 在秒表显示模式,可通过I键切换(启动\\\/暂停)计时,当暂停计时时可通过A键复位。

5. 在闹钟显示模式,可通过A键依次使On\\\/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On\\\/Off标志或加1调整。

6. 调整和秒表操作不影响日期和时间的准确性。

7. 可通过Q键结束程序。

STACK SEGMENT STACK DW 200 DUP (?) STACK ENDS DATA SEGMENT WHOUR DB 0 ;秒表的时、分、秒、毫秒 WMIN DB 0 WSEC DB 0 WMSEC DB 0 OLD1CH DD 0 SIGNAL DB 0 COUNT DW 0 ;--------------------------------------------------------------------------------------------------------------- CHOUR DB 0 ;闹钟的时、分、秒 CMIN DB 0 CSEC DB 0 ;----------------------------------------------------------------------------------------------------------------- SPACE DB 2000 DUP (' ') PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ') DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ') DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ') ;---------------------------------------------------------------------------------------------------------------- DBUFFER DB 8 DUP (':'),12 DUP (' ') DBUFFER1 DB 20 DUP (' ') DBUFFER2 DB 11 DUP (':'),15 DUP (' ') STR DB 0DH,0AH, ' INPUT ''M'' TO NEXT-STATE, INPUT ''Q'' TO EXIT: $',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;------------------------------------------------------------------- PUSHA MACRO PUSH DS PUSH AX PUSH BX PUSH CX PUSH DX ENDM POPA MACRO POP DX POP CX POP BX POP AX POP DS ENDM ;图形化界面设计 START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,0003H ;设置显示方式为40*25彩色文本方式 INT 10H LEA DX,STR ;显示提示信息 MOV AH,9 INT 21H MOV BP,OFFSET SPACE MOV DX,0B00H MOV CX,1000 MOV BX,0000H MOV AX,1300H INT 10H ;显示字符串,定义显示方式 ;--------------------------------------------------------------- ;主程序 LP1: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,'M' ;AL='M'

JNE LP5 CALL DATE ;显示系统日期 LP2: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,'M' ;AL='M'

JNE LP5 CALL TIME ;显示系统时间 LP3: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,'M' ;AL='M'

JNE LP4 CALL STOPWATCH ;显示秒表 LP4: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,'M' ;AL='M'

JNE LP5 CALL RING LP5: CMP AL,'Q' ;AL='Q'

JNE LP1 MOV AH,4CH ;返回DOS状态 INT 21H ;--------------------------------------------------------------- ;显示日期子程序 DATE PROC NEAR DISPLAY: MOV AH,2AH ;取日期CX:DH:DL=年:月:日 AL=星期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL CALL BCDASC1 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,DL CALL BCDASC1 MOV BP,OFFSET DBUFFER1 MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H ;设置光标位置 MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018H REPEA:MOV CX,0FFFFH ;延时 REPEAT:LOOP REPEAT DEC BX JNZ REPEA MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H JE DISPLAY JMP LP2 MOV AX,4C00H INT 21H RET DATE ENDP ;------------------------------------------------------ ;显示时间子程序 TIME PROC NEAR DISPLAY1: MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;取时间CH:CL=时:分 DH:DL=秒:1\\\/100秒 INT 21H MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII码字符 INC SI MOV AL,CL CALL BCDASC INC SI MOV AL,DH CALL BCDASC MOV BP,OFFSET DBUFFER MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018H RE: MOV CX,0FFFFH REA: LOOP REA DEC BX JNZ RE MOV AH,01H INT 16H JE DISPLAY1 JMP LP3 MOV AX,4C00H INT 21H RET TIME ENDP ;------------------------------------------------------ ;显示秒表子程序 STOPWATCH PROC NEAR DISPLAY2: PUSHA MOV SI,0 MOV BX,100 DIV BL ;CALL WATCH DISP3: MOV AX,DATA MOV DS,AX MOV AL,WHOUR CALL BCDASC2 ;将时间数值转换成ASCII码字符 INC SI MOV AL,WMIN CALL BCDASC2 INC SI MOV AL,WSEC CALL BCDASC2 MOV AL,WMSEC INC SI CALL BCDASC2 MOV BP,OFFSET DBUFFER2 MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018H RE2: MOV CX,0FFFFH REA2: LOOP REA2 DEC BX JNZ RE2 MOV AH,01H INT 16H JE DISPLAY2 POPA JMP LP4 MOV AX,4C00H INT 21H RET STOPWATCH ENDP ;---------------------------------------------------------------- ;显示闹钟子程序 RING PROC NEAR DISPLAY3: PUSHA MOV SI,0 MOV BX,100 DIV BL ;MOV AH,CH ;取时间CH:CL=时:分 DH:DL=秒:1\\\/100秒 ;INT 21H MOV AX,DATA MOV DS,AX MOV AL,CHOUR CALL BCDASC ;将时间数值转换成ASCII码字符 INC SI MOV AL,CMIN CALL BCDASC INC SI MOV AL,CSEC CALL BCDASC MOV BP,OFFSET DBUFFER MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018H RE3: MOV CX,0FFFFH REA3: LOOP REA3 DEC BX JNZ RE3 MOV AH,01H INT 16H JE DISPLAY3 POPA JMP START MOV AX,4C00H INT 21H RET RING ENDP ;---------------------------------------------------------------- ;时间数值转换成ASCII码字符子程序 BCDASC PROC NEAR PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV DBUFFER[SI],AL INC SI ADD AH,'0' MOV DBUFFER[SI],AH INC SI POP BX RET BCDASC ENDP ;----------------------------------------------------------------- ;日期数值转换成ASCII码字符子程序 BCDASC1 PROC NEAR PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV DBUFFER1[SI],AL INC SI ADD AH,'0' MOV DBUFFER1[SI],AH INC SI POP BX RET BCDASC1 ENDP ;------------------------------------------------------------------ ;秒表时间数值转换成ASCII码字符子程序 BCDASC2 PROC NEAR PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV DBUFFER2[SI],AL INC SI ADD AH,'0' MOV DBUFFER2[SI],AH INC SI POP BX RET BCDASC2 ENDP ;--------------------------------------------------------------------- CODE ENDS END START 1.显示年,月、日,时、分、秒 2年月日与时分秒可以分开显示。

最好是像网上那个有按M切换,或者是T是时间,M是日历 data segmentdb 00\\\/00\\\/00 00:00:00,'$'data ends codesg segmentassume cs:codesg,ds:datastart:mov ax,datamov ds,axmov cx,6mov bx,0mov ah,0mov al,9s:push cxpush axout 70h,alin al,71hmov ah,almov cl,4shr ah,cland al,00001111badd ah,30hadd al,30hmov byte ptr ds:[bx],ahmov byte ptr ds:[bx 1],alpop axcmp al,4jna s1jmp short s2s1:dec als2:cmp al,7jne oksub al,2ok:dec aladd bx,3pop cxloop smov dx,0mov ah,9int 21h mov ax,4c00hint 21hcodesg ends end start

急求单片机课程设计电子秒表

秒表的设计程序用89C51,外接晶振,复位电路,二个数码管,二个按键,做一个电子秒表,具体要求为用按键起停电子表,可用按键设计倒计时时间(如10S,20S,60S),并启动倒计时功能。

能用按键选择以上两功能之一。

三、程序代码:A_BIT EQU 20H ;数码管个位数存放内存位置B_BIT EQU 21H ;数码管十位数存放内存位置TEMP EQU 22H ;计数器数值存放内存位置;开机初始化MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入MOV P0,#0FFH;使显示时间数码管熄灭CLR F0CLR F1MOV DPTR,#NUMTAB ;指定查表启始地址;等待按键输入;根据按键的输入判断执行什么功能;按键1按下则执行功能1MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入MOV P0,#0FFH;使显示时间数码管熄灭START:JB P3.6,START1;循环判断开始按钮K1是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.6,START;如果是干扰就返回JNB P3.6,$;等待按键松开LJMP GN1;按键2按下则执行功能2START1: JB P3.7,START;循环判断开始按钮K2是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.7,START1;如果是干扰就返回JNB P3.7,$LJMP GN2;数码管显示秒表时间的程序GN1: ;先初始化S1:MOV A,#0MOV TEMP,AGOON1: MOV R2,#2JS1: MOV R3,#250TIME1: MOV A,TEMP ;将TEMP中的十六进制数转换成10进制MOV B,#10 ;10进制\\\/10=10进制DIV ABMOV B_BIT,A ;十位在AMOV A_BIT,B ;个位在BLCALL DPLOP1;插入一段判断定时过程中是否有按键输入的程序段C1: JB P3.6,B1ACALL DELAY10;延时10毫秒消抖JB P3.6,C1JNB P3.6,$;等待按键松开CPL F0ZT1: ; MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.6,ZT1;如果是干扰就返回JNB P3.6,$;等待按键松开LCALL DPLOP1B1: JB P3.7,LOOP1ACALL DELAY10;延时10毫秒消抖JB P3.7,B1JNB P3.7,$;等待按键松开AJMP OVERLOOP1: DJNZ R3,TIME1 ;2毫秒循环执行250次,时间约0.5秒DJNZ R2,JS1 ;循环执行2次,时间为1 秒钟INC TEMP;满一秒钟对时间加1MOV A,TEMPCLR CSUBB A,#60JNZ GOON1;判断TEMP的数值是否为60?不为60循环ACALL OVERRETGN2: MOV A,#14H ; 设定倒计时的时间20SMOV TEMP,A;数码管显示倒计时时间的程序;初始化MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入MOV P0,#14H;使显示时间为设定的倒计时时间GOON2: MOV R2,#2JS2: MOV R3,#250TIME2: MOV A,TEMP ;将TEMP中的十六进制数转换成10进制MOV B,#10 ;10进制\\\/10=10进制DIV ABMOV B_BIT,A ;十位在AMOV A_BIT,B ;个位在BMOV DPTR,#NUMTAB ;指定查表启始地址DPLOP2: MOV A,A_BIT ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码MOV P0,A ;送出个位的7段代码CLR P2.5 ;开个位显示ACALL DELY1;显示1毫秒SETB P2.5;关闭个位显示,防止鬼影MOV A,B_BIT ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码MOV P0,A ;送出十位的7段代码CLR P2.6 ;开十位显示ACALL DELY1;显示1毫秒SETB P2.6;关闭十位显示,防止鬼影;插入一段判断定时过程中是否有按键输入的程序段C2: JB P3.6,B2ACALL DELAY10;延时10毫秒消抖JB P3.6,C2JNB P3.6,$;等待按键松开ZT2: MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10;延时10毫秒触点消抖JB P3.6,ZT2;如果是干扰就返回JNB P3.6,$;等待按键松开B2: JB P3.7,LOOP2ACALL DELAY10;延时10毫秒消抖JB P3.7,B1JNB P3.7,$;等待按键松开AJMP OVERLOOP2: DJNZ R3,TIME2 ;2毫秒循环执行250次,时间约0.5秒DJNZ R2,JS2 ;循环执行2次,时间为1 秒钟DEC TEMP;满一秒钟对时间减1MOV A,TEMPJNZ GOON2;判断TEMP的数值是否为0?不为0循环ACALL OVERRET;结束定时OVER: AJMP START;退到开机初始化状态;1毫秒延时子程序DELY1: MOV R4,#2D1:MOV R5,#248DJNZ R5,$DJNZ R4,D1RET;10毫秒延时子程序DELAY10: MOV R4,#20D2:MOV R5,#248DJNZ R5,$DJNZ R4,D2RET;实验板上的两位一体的数码管0~9各数字的显示代码NUMTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10HDPLOP1: MOV A,A_BIT ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码MOV P0,A ;送出个位的7段代码CLR P2.5 ;开个位显示ACALL DELY1;显示1毫秒SETB P2.5;关闭个位显示,防止鬼影MOV A,B_BIT ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码MOV P0,A ;送出十位的7段代码CLR P2.6 ;开十位显示ACALL DELY1;显示1毫秒SETB P2.6;关闭十位显示,防止鬼影RETEND

急求

单片机99秒表课程设计,回答的好追加

首先明白有几个模块:1、51最小系统 2、定时器10ms中断一次 3、数码管显示(建两个数组,一个不带小数的,一个带小数的)3、按键扫描就这几个模块,心里有个数,具体自己写吧核心部分是定时器部分,我写一个:\\\/\\\/Timer0 void Timer0_Init(void){ EA=1; TMOD=0x01; ET0=1; TH0=(65535-10000)\\\/256; TL0=(65535-10000) %256; \\\/\\\/赋初值,10ms中断一次,即0.01秒 TR0=1; } void Timer0(void) interrupt 1{ TH0=(65535-10000)\\\/256; TL0=(65535-10000) %256; t++;}\\\/\\\/主函数可以计t的值,10ms t自增1。

1秒t是多少,会算吧。

这些程序网上也可以找找,比较简单。

希望对你有点帮助

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片