用51单片机设计一个秒表。主要要求: 1.用单片机的定时/计数器实现一个

供稿:hz-xin.com     日期:2025-01-13
51单片机秒表设计本设计要求利用单片机的定时器,设计一个秒表计数器,6位显示(液晶及LED显示均可)

我觉得你不会,你还好嚣张的,直接就列出来,你要干嘛,你这像是请求别人回答问题吗,还不给分,你意思一下也可以啊,幸亏我做过,我程序摆在这,你修改下咯,希望对你有用


;=====================================================
;=====程序名称:中断方式0到255一秒加计数==============
;=====硬件说明:利用P2口接片选,P1口送数据============
;=====软件说明:采用定时器0,软启动,定时功能工作方式1
;============= 定时时间为50MS,加数时间为一秒========
;=====程序编辑时间:2010-12-05-11-15==================
;=====程序编辑人:X--MAN==============================
;=====所用芯片:STC89C52==============================
;=====所用晶振:12MHz=================================
;=====版本:V1.0======================================
;=====当前进度:已完成================================
;=====程序完成时间:2010-12-13-11-20==================
;=====================================================
;=====分配单元地址====================================
COUNT1 EQU 31H ;计数寄存器
;=====程序起始地址====================================
ORG 0000H ;程序起始地址
JMP RESET
ORG 000BH ;定时器0
AJMP T0_SER ;中断服务程序
ORG 0030H ;执行程序的起始地址
;========================================================
;=============复位程序===================================
RESET:
MOV 30H,#00H
MOV 31H,#00H
MOV TMOD,#01H
MOV DPTR,#65536-50000 ;定时器赋初值;这是一种蛮好的赋初值的方法
MOV TH0,DPH
MOV TL0,DPL
SETB ET0 ;开分中段
SETB EA ;开总中断
SETB TR0 ;启动T0
;============主程序======================================
MAIN:
MOV DPTR,#TAB ;查表头
MOV A,30H ;赋值
MOV B,#100 ;百位处理
DIV AB
MOVC A,@A+DPTR ;查表地址
MOV P1,A ;送数据
CLR P2.0 ;片选
SETB P2.1
SETB P2.2
CALL DELAY ;延时
MOV P1,#00H ;清屏

MOV A,B ;十位处理
MOV B,#10
DIV AB
MOV DPTR,#TAB ;查表头
MOVC A,@A+DPTR
MOV P1,A ;送数据
SETB P2.0 ;片选
CLR P2.1
SETB P2.2
CALL DELAY ;延时
MOV P1,#00H ;清屏

MOV A,B ;各位处理
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
SETB P2.0
SETB P2.1
CLR P2.2
CALL DELAY
MOV P1,#00H
JMP MAIN
;=============中断服务程序======================
T0_SER:
MOV DPTR,#65536-50000 ;重新赋值
MOV TH0,DPH
MOV TL0,DPL
PUSH PSW ;现场保护
PUSH ACC
INC COUNT1 ;计数是否够一秒
MOV A,COUNT1
CJNE A,#20,T0_RETI
MOV COUNT1,#00H
INC 30H ;每隔一秒加1
T0_RETI:
POP PSW ;出栈保护
POP ACC
RETI ;中断返回
;==============延时程序=========================
DELAY:
MOV R7,#0FFH
D1:
MOV R6,#0FH
DJNZ R6,$
DJNZ R7,D1
RET
;==============表===============================
TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;==============结束=============================
END

将单片机的两个定时器设置成:一个定时器模式,一个计数器模式,在定时时间之内检查计数器的脉冲个数就可以计算出频率大小了。

KEYVAL EQU 30H
DAT  EQU 33H
SCANLED EQU 39H
CLK  EQU 77H
SEC  EQU 78H
SEC1 EQU 79H
SEC2 EQU 7AH
DOT  BIT 00H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXTINT0
ORG 000BH
LJMP T0ISR ;50ms定时
ORG 001BH
LJMP T1ISR ;扫描显示
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0ECH
MOV TL1,#078H
MOV KEYVAL,#2
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV CLK,#0
SETB IT0
SETB EX0
CLR TR0
CLR ET0
MOV R2,#0
SETB TR1
SETB ET1
SETB EA
LOOP:
MOV A,KEYVAL
LOOP1:
JNZ LOOP2 ;启动
SETB TR0
SETB ET0
SJMP LOOP
LOOP2:
DEC A
JNZ LOOP3 ;暂停
CLR TR0
CLR ET0
SJMP LOOP
LOOP3:
DEC A
JNZ LOOP ;清零
MOV 36H,#0
MOV 35H,#0
MOV 34H,#0
MOV 33H,#0
SJMP LOOP
EXTINT0:
PUSH ACC
INC KEYVAL
MOV A,KEYVAL
CJNE A,#3,EXT00
EXT00:
JC EXT01
MOV KEYVAL,#0
EXT01:
POP ACC
RETI
T0ISR:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC CLK
MOV A,CLK
CJNE A,#2,T0ISRE
MOV CLK,#0
INC 36H
MOV A,36H
CJNE A,#10,T0ISRE
MOV 36H,#0
INC 35H
MOV A,35H
CJNE A,#10,T0ISRE
MOV 35H,#0
INC 34H
MOV A,34H
CJNE A,#6,T0ISRE
MOV 34H,#0
INC 33H
MOV A,33H
CJNE A,#10,T0ISRE
MOV 33H,#0
T0ISRE:
POP ACC
RETI
T1ISR:
PUSH ACC
CLR TR1
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
MOV DPTR,#LEDTAB
T100:
MOV R0,#DAT
MOV A,SCANLED
ADD A,R0
MOV R0,A
MOV A,SCANLED
JNZ T101
MOV P2,#01H
SETB DOT
SJMP T1DIS
T101:
DEC A
JNZ T102
MOV P2,#02H
CLR DOT
SJMP T1DIS
T102:
DEC A
JNZ T103
MOV P2,#04H
SETB DOT
SJMP T1DIS
T103:
MOV P2,#08H
CLR DOT
T1DIS:
MOV A,@R0
MOVC A,@A+DPTR
JNB DOT,T1DIS1
ORL A,#01H
T1DIS1:
CPL A
MOV P0,A
INC SCANLED
MOV A,SCANLED
CJNE A,#4,T1END
MOV SCANLED,#0
T1END:
POP ACC
RETI
LEDTAB: DB 0FCH ;"0" 00H
DB 60H ;"1" 01H
DB 0DAH ;"2" 02H
DB 0F2H ;"3" 03H
DB 66H ;"4" 04H
DB 0B6H ;"5" 05H
DB 0BEH ;"6" 06H
DB 0E0H ;"7" 07H
DB 0FEH ;"8" 08H
DB 0F6H ;"9" 09H
DB 0EEH ;"A" 0AH
DB 3EH ;"B" 0BH
DB 9CH ;"C" 0CH
DB 7AH ;"D" 0DH
DB 9EH ;"E" 0EH
DB 8EH ;"F" 0FH
DB 00H ;" " 10H
END



51单片机秒表设计,高手请进
基于89C51单片机的电子秒表设计,需要借助外部晶振和复位电路,搭配两个数码管与两个按键。系统通过按键控制秒表的启动和停止,以及设定倒计时时间(例如10秒、20秒或60秒),启动倒计时功能。用户可以通过按键选择这两种功能之一。程序代码主要分为两部分,分别对应秒表计时和倒计时功能。秒表计时部分,当按下...

利用51单片机设计一个秒表 (一定要按要求做到0.01秒)
wait_key(); TR0 = 1; TH0 = TL0 = 6;wait_key(); TR0 = 0;wait_key(); m[0] = m[1] = m[2] = m[3] = 0;} } void time0() interrupt 1 { counet++;counet %= 40;if(!counet) { m[0]++; m[0] %= 10;if(!m[0]) { m[1]++; m[1] %= 10;if...

51单片机 秒表设计
D1=0;y=0;} }

用51单片机设计一个秒表。主要要求: 1.用单片机的定时\/计数器实现一...
KEYVAL EQU 30HDAT EQU 33HSCANLED EQU 39HCLK EQU 77HSEC EQU 78HSEC1 EQU 79HSEC2 EQU 7AHDOT BIT 00HORG 0000HLJMP MAINORG 0003HLJMP EXTINT0ORG 000BHLJMP T0ISR ;50ms定时ORG 001BHLJMP T1ISR ;扫描显示ORG 0030HMAIN:MOV SP,#5FHMOV TMOD,#11HMOV TH0,#03CHMOV TL0,...

【51单片机】基于STC89C52RC的电子秒表
此次设计的电子秒表为99.99秒表,精度为0.01秒(10毫秒),定时器0每0.01秒进入一次中断,执行计数操作并重新赋值计数器。根据外部12MHz晶振计算中断时间公式,得到中断时间约为4毫秒,即X=55536,转换为16进制为(D8F0)_H,将D8赋值给高八位TH0,将F0赋值给低八位TL0。设计过程中遇到的问题及解决...

利用51单片机,6个数码管设计一秒表。要求:刚开始时间为12点(120000...
bit KEY=1;sbit wela=P0^1;sbit dula=P0^0;char ge,shi,time0,led;void play_h(uchar t_h);void play_m(uchar t_m);void play_s(uchar t_s);void display_();void delay(uint );void inti();\/\/void display(uchar t_h,uchar t_m,uchar t_s);void main(){ inti();t_h=...

求高手为下面的仿真图设计一个51单片机实现秒表的程序,要求:2位数码...
EA=1;ET0=1;} void T0INT() interrupt 1 \/\/定时器T0中断 方式1 { uchar time;TH0=0x3c;TL0=0xb0;time++;if(time==20) \/\/20X50ms=1s { time=0;ge++;} } void main(){ t0intinit( );while(1){ while(!KS){delay(10);if(KS)TR0=1;} while(!KP){ delay(10);if...

基于C51单片机的秒表设计。要求:1.用2位数码管显示秒数。 2. 有启动...
1.1 秒表的概述 4 1.2 本设计任务 4 1.3 系统主要功能 4 第二章电路工作原理分析 5 2.1 系统的硬件构成及功能 5 2.2硬件连接方式 5 第三章: 芯片介绍 6 3.1 MCS- 51介绍 6 3.4 LED数码管显示 9 3.4.1 LED数码管介绍 9 3.4.2 LED数码管编码方式 10 3.4.3 LED...

用51单片机设计一个秒表,计时范围从00:00-59:59.
4];void dischg(){disdat[3]=sec%10;disdat[2]=sec\/10;disdat[1]=min%10;disdat[0]=min\/10;}void ext0() interrupt 0{key++;key%=3;}void t0isr() interrupt 1\/\/秒计时{TH0=0x3c;TL0=0xb0;time++;if(time==20){time=0;sec++;if(sec>59){sec=0;min++;if(min>59)...

课程设计数字秒表设计 求高手解答。
设计要求1.设计一个数字秒表,要求从00:00秒开始计时,最大计时时间为99:99秒。并且具有启动、暂停和清零(复位)等功能。2.画出硬件连接电路图,说明各个控制信号的... 设计要求 1.设计一个数字秒表,要求从00:00秒开始计时,最大计时时间为99:99秒。并且具有启动、暂停和清零(复位)等功能。 2....