单片机秒表设计程序实验结果(秒表的单片机程序设计)
今天给各位分享单片机秒表设计程序实验结果的知识,其中也会对秒表的单片机程序设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
用51单片机做秒表设计
遇到懒学生了,这个不就是一个定时器加显示吗,有什么难的,自己翻翻微机原理书就可以做 了,也就四五十行汇编语言就行了,用C就更加简单,具体的方法:用定时器定时0.2ms,定时到了就给固定的一个变量加1,然后判断这个变量是不是到了500,到了就清零然后把秒的变量加1,就是1s了,(分和时也是如此,秒为60,秒清零,分加1);主程序就只管显示和按键,按键随便用中断还是查询,我建议你查询,因为程序简单,显示程序就是查个表,自己把数码显示的断码表编好就可以了,把秒的数值查表对应显示,完了就查询按键,按键累加,值为0是没按,1是按1次,2是按2次,3是按3次,同时清零,很简单的
6位数码管的MCS51单片机秒表设计实验
HD7279A.
ORG0000H
lJMPWAIT0
ORG001BH
LJMPBRT
ORG0030H
WAIT0:LCALLDISP
MOVC,P1.4
JCWAIT0
LCALLREAD
MOVA,28H
CJNEA,#01H,WAIT0
MIAOBIAO:MOV79H,#00H;1键开始
MOV7AH,#00H;2键停止
MOV7BH,#00H;再按3键清零
MOV7CH,#00H;再按1键重新开始
MOV7DH,#00H
MOV7EH,#00H
MOVTMOD,#10H
MOVTH1,#0D8H
MOV1,#0F0H
MOVIE,#88H
SETBPT1;中断优先级
SETBTR1;开启定时器T1
;*********************************************************************************************
MAIN:ACALLDISP
MOVC,P1.4
JCMAIN;等按键,按2停止
ACALLREAD
MOVA,28H
CJNEA,#02H,MAIN
CLRTR1
WAIT1:LCALLDISP
MOVC,P1.4
JCWAIT1;按3键清零
LCALLREAD
MOVA,28H
CLR28H
CJNEA,#03H,WAIT1
MOV79H,#00H
MOV7AH,#00H
MOV7BH,#00H
MOV7CH,#00H
MOV7DH,#00H
MOV7EH,#00H
WAIT2:LCALLDISP
MOVC,P1.4;第三次按1键重新开始
JCWAIT2
LCALLREAD
MOVA,28H
CLR28H
CJNEA,#01H,EXIT
LJMPMIAOBIAO
EXIT:LJMPWAIT0
;EXIT:POPPSW
;POPACC
;RET
DISP:MOVR0,#79H
MOVR1,#0C8H
MOVR2,#06H
DISP_LOOP:MOV29H,R1
ACALLSEND
MOV29H,@R0
ACALLSEND
INCR1
INCR0
DJNZR2,DISP_LOOP
RET
SEND:CLRP1.7
MOVR3,#08H
lCALLLONG
SEND_LOOP:MOVC,29H.7
MOVP1.6,C
SETBP1.5
ACALLSHORT
CLRP1.5
ACALLSHORT
MOVA,29H
RLA
MOV29H,A
DJNZR3,SEND_LOOP
CLRP1.6
RET
LONG:MOVR5,#28H
LLP:DJNZR5,LLP
SHORT:MOVR6,#08H
SLP:DJNZR6,SLP
RET
BRT:MOVTL1,#0F0H
MOVTH1,#0D8H
PUSHPSW
PUSHACC
INC79H
MOVA,79H
CJNEA,#0AH,FH
MOV79H,#00H
INC7AH
MOVA,7AH
CJNEA,#0AH,FH
MOV7AH,#00H
INC7BH
MOVA,7BH
CJNEA,#0AH,FH
MOV7BH,#00H
INC7CH
MOVA,7CH
CJNEA,#06H,FH
MOV7CH,#00H
INC7DH
MOVA,7DH
CJNEA,#0AH,FH
MOV7DH,#00H
INC7EH
MOVA,7EH
CJNEA,#06H,FH
MOV7EH,#00H
FH:POPACC
POPPSW
RETI
READ:MOV29H,#15H
ACALLSEND
LCALLRESE
RET
RESE:MOV71H,#8;=8
SETBP1.6;P1.2(DATA)
CALLLONG;
RECEIVE_LOOP:SETBP1.5;CLK
CALLSHORT;
MOVA,28H;
RLA
MOV28H,A
MOVC,P1.6;
MOV28H.0,C
CLRP1.5;CLK
CALLSHORT
DJNZ71H,RECEIVE_LOOP;8
CLRP1.6;DAT
RET
单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。
单片机秒表课程设计,急求!!!!
原理图如下,
程序如下:
;=================================================
;寄存器分配定义
;=================================================
LED_BUF EQU 50H ;显示数据首址
COUNTER_INT EQU 3BH ;中断计数器
SECOND EQU 3DH ;秒单元
;=================================================
;常数定义
;=================================================
CN_COUNT_INT EQU 100 ;10ms * 100 = 1S
SET_MODEL EQU 0FFH ;完全译码模式
SET_BRIGHT EQU 04H ;占空比为15/32;显示亮度;
SET_LIMIT EQU 01H ;2位显示方式;
SET_NORMAL EQU 01H ;测试模式
SET_START EQU 01H ;进入启动工作方式?
;=================================================
;管脚分配定义
;=================================================
m7219_DIN BIT P3.0
m7219_LOAD BIT P3.1
m7219_CLK BIT P3.2
KEYSTART BIT P1.0
KEYRESET BIT P1.1
;============================================
;模拟主程序
;===========================================
org 0000h
ajmp main
ORG 000BH
LJMP Timer0Interrupt
org 0030h
main:
mov sp,#70h
lcall Init_M7219
lcall InitTimer0
; MOV SECOND,#95H ;TEST
Loop:
CALL disp
key_reset:
SETB KEYRESET
JB KEYRESET,key_start
; DELAY
NOP
NOP
NOP
JB KEYRESET,key_start
JNB KEYRESET,$
CLR TR0
MOV A,#0
MOV SECOND,A
MOV led_buf,A
MOV LED_BUF+1,A
JMP key_SCAN_END
key_start:
SETB KEYSTART
JB KEYSTART,key_SCAN_END
; DELAY
NOP
NOP
NOP
JB KEYSTART,key_SCAN_END
JNB KEYSTART,$
SETB TR0
key_SCAN_END:
JMP loop
;===========================================
InitTimer0:;10ms一次中断
MOV TMOD,#01H
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB EA
SETB ET0
RET
;===========================================
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0D8H
MOV TL0,#0F0H
;========================
INC COUNTER_INT
MOV A,COUNTER_INT ;10ms 计数值加1
CJNE A,#CN_COUNT_INT,Timer0Interrupt_EXIT
MOV COUNTER_INT,#0
MOV A,SECOND
CJNE A,#99H,Timer0Int_sec
CLR TR0;关闭计时
JMP Timer0Interrupt_EXIT
Timer0Int_sec:
ADD A,#01 ;秒加1
DA A
MOV SECOND,A
SWAP A
ANL A,#0fH
MOV led_buf,A
MOV A,SECOND
ANL A,#0FH
MOV LED_BUF+1,A
;========================
Timer0Interrupt_EXIT:
POP ACC
POP DPL
POP DPH
RETI
;====================================================
; function:Init_M7219 ;初始化max719
; input: ------------
; output: ----------
; usage: a,b
;====================================================
Init_M7219: ;初始化Max7219
MOV a,#0bh ;设置扫描界限
MOV b,#set_limit ;设置位数
lcall w_7219
MOV a,#09h ;设置译码模式
MOV b,#set_model ;00h非译码模式;ffh为BCD译码模式
lcall w_7219
MOV a,#0ah ;设置亮度
MOV b,#set_bright ;15/32亮度
lcall w_7219
MOV a,#0fh ;设置工作方式
MOV b,#set_normal ;正常工作方式
lcall w_7219
MOV a,#0ch ;进入启动工作方式
MOV b,#set_start
lcall w_7219
RET
;===================================================
; function:disp ;显示子程序
; input: r0
; output: -----------
; usage: r0,r3,r4,a,b
;===================================================
disp:
MOV r0,#led_buf
MOV r4,#01h
MOV r3,#set_limit
INC r3
disp1:
MOV a,@r0
MOV b,a
MOV a,r4
lcall w_7219
INC r0
INC r4
djnz r3,disp1
RET
;===================================================
; function:w_7219 ;显示驱动程序;
; input: a ;传送7219的地址
; b ;传送7219的数据
; output:-------------
; usage: a,r2
;====================================================
w_7219:
CLR M7219_clk
CLR M7219_din
CLR M7219_load ;置load=0
lcall sd_7219 ;传送7219的地址
MOV a,b
lcall sd_7219 ;传送数据
setb M7219_load ;数据装载
CLR M7219_din
RET
;=================================================
; function:sd_7219 ;向7219传送数据或地址子程序
; input: a
; output: max7219
; usage: a, r2
;==================================================
sd_7219: ;向7219送地址或数据
MOV r2,#08h
c_sd:
CLR C
CLR M7219_clk
RLC a
MOV M7219_din,c ;准备数据
NOP
setb M7219_clk ;上升沿将数据传入
NOP
NOP
CLR M7219_clk
djnz r2,c_sd
RET
END
单片机秒表设计程序实验结果的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于秒表的单片机程序设计、单片机秒表设计程序实验结果的信息别忘了在本站进行查找喔。