173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机课程设计电子手表

htxw 2023-03-06 资讯中心 24 ℃

msp430超低功耗单片机 设计一个单片机简易电子表

别想着人家免费拱手送给你,至少给出点诚意嘛……比如RMB10000元,毕竟现在物价很贵啊!

51单片机设计简易秒表

你学习板的图呢?我怎么知道用哪些IO口!怎么知道你数码管用什么驱动啊!不然怎么写

如何用单片机汇编语言设计一个秒表

设计一个秒表,需要考虑以下因素:

1、因为视觉暂留的因素,一般而言到0.1秒的精度就可以了。

2、需要有按键控制启动、停止、清零这些功能。

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单片机 的秒表/时钟计时器设计摘要

本设计以AT89S51单片机为核心芯片,与型号为1602的液晶显示器构成数字电子时钟电路。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4K Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案.液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

单片机电子表程序

汇编如下:

S_SET BIT P3.4 ;秒增加1按钮位

M_SET BIT P3.5 ;分增加1按钮位

H_SET BIT P3.7 ;小时增加1按钮位

SECOND EQU 30H ;秒计数值变量 

MINUTE EQU 31H ;分计数值变量

HOUR EQU 32H ;小时计数值变量

TCNT EQU 34H ; 1秒定时计数器

ORG 00H ;起始地址

JMP START

ORG 0BH ;Timer0中断向量地址

JMP INT_T0

START:

MOV DPTR,#TABLE ;装七段数码管段码数据表TABLE

MOV HOUR,#0 ;计数值全部清0

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

MOV TMOD,#01H ;Timer 0作定时器,模式1

MOV TH0,#(65536-50000)/256 ;定时50毫秒

MOV TL0,#(65536-50000)MOD 256

MOV IE,#82H ;中断使能

SETB TR0 ;启动Timer 0

;以下是判断秒、分、小时增加1按钮是否被按下

A1:

CALL DISPLAY

JNB S_SET,S1 ;判断秒按钮

JNB M_SET,S2 ;判断分按钮

JNB H_SET,S3 ;判断小时按钮

JMP A1 ;循环检测

S1:

CALL DELAY ;去抖动

JB S_SET,A1

INC SECOND ;秒位计数值加1

MOV A,SECOND ;A=SECOND

CJNE A,#60,J0 ;判断是否到60秒

MOV SECOND,#0 ;如果到了就清0秒位计数值

JMP K1 ;跳到K1段

S2:

CALL DELAY

JB M_SET,A1

K1:

INC MINUTE ;分位计数值加1

MOV A,MINUTE ;A=MINUTE

CJNE A,#60,J1 ;判断是否到60分

MOV MINUTE,#0 ;如果到了就清0分位计数值

JMP K2

S3:

CALL DELAY

JB H_SET,A1

K2:

INC HOUR ;小时计数值加1

MOV A,HOUR ;A=HOUR

CJNE A,#24,J2 ;判断是否到24小时

MOV HOUR,#0 ;如果到了就清0秒、分、小时位计数值

MOV MINUTE,#0

MOV SECOND,#0

JMP A1

;以下程序等待秒、分、小时按钮放开

J0:

JB S_SET,A1

CALL DISPLAY

JMP J0

J1:

JB M_SET,A1

CALL DISPLAY

JMP J1

J2:

JB H_SET,A1

CALL DISPLAY

JMP J2

;Timer0中断服务子程序, 进行秒、分、小时的计时

INT_T0:

MOV TH0,#(65536-50000)/256 ;装计数初始值

MOV TL0,#(65536-50000)MOD 256

INC TCNT ;1秒计数器增加1

MOV A,TCNT ;A=TCNT

CJNE A,#20,RETUNE ;计时1秒

INC SECOND ;秒计数器增加1

MOV TCNT,#0 ;清零TCNT

MOV A,SECOND ;A=SECOND

CJNE A,#60,RETUNE ;计时60秒

INC MINUTE ;分计数器增加1

MOV SECOND,#0 ;清零秒

MOV A,MINUTE ;A=MINUTE

CJNE A,#60,RETUNE ;计时60分

INC HOUR ;小时计数器增加1

MOV MINUTE,#0 ;清零分

MOV A,HOUR ;A=HOUR

CJNE A,#24,RETUNE ;计时24小时 

MOV HOUR,#0 ;秒、分、小时计数值清0

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

RETUNE:

RETI ; 中断服务子程序结束

;以下为七段数码管显示的子程序

DISPLAY:

MOV A,SECOND ;A=SECOND,显示秒

MOV B,#10 ;B=10

DIV AB ;A除以B

MOV P2,#00100000B ;使能秒的十位

MOVC A,@A+DPTR ;七段数码管段码数据装入A

MOV P0,A ;从P0口输出

CALL DELAY

ORL P2,#0FFH ;熄灭七段数码管

MOV A,B ;A=B

MOV P2,#00000000B ;使能秒的个位

MOVC A,@A+DPTR ;七段数码管段码数据装入A

MOV P0,A ;从P0口输出

CALL DELAY

ORL P2,#0FFH ;熄灭七段数码管

MOV A,MINUTE ;A=MINUTE,显示分

MOV B,#10 ;B=10

DIV AB ;A除以B

MOV P2,#01100000B ;使能分的十位

MOVC A,@A+DPTR ;七段数码管段码数据装入A

MOV P0,A ;从P0口输出

CALL DELAY

ORL P2,#0FFH ;熄灭七段数码管

MOV A,B ;A=B

MOV P2,#01000000B ;使能分的个位

MOVC A,@A+DPTR ;七段数码管段码数据装入A

MOV P0,A ;从P0口输出

CALL DELAY

ORL P2,#0FFH ;熄灭七段数码管

MOV A,HOUR ;A=HOUR,显示小时

MOV B,#10 ;B=10

DIV AB ;A除以B

MOV P2,#10100000B ;使能小时的十位

MOVC A,@A+DPTR ;七段数码管段码数据装入A

MOV P0,A ;从P0口输出

CALL DELAY

ORL P2,#0FFH ;熄灭七段数码管

MOV A,B ;A=B

MOV P2,#10000000B ;使能小时的个位

MOVC A,@A+DPTR ;七段数码管段码数据装入A

MOV P0,A ;从P0口输出

CALL DELAY

ORL P2,#0FFH ;熄灭七段数码管

RET

TABLE: ;七段数码管显示码表

DB 40H,79H,24H,30H,19H

DB 12H,02H,78H,00H,10H

DELAY: ;延时子程序

MOV R6,#2

D1:

MOV R7,#250

DJNZ R7,$

DJNZ R6,D1

RET

END

单片机课程设计电子手表的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:单片机课程设计电子手表

<