视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
微机原理电子秒表课程设计
2025-09-28 06:26:09 责编:小OO
文档
电子秒表设计报告

设计要求:

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

实现原理:

利用12M晶振的一个机器周期为1微秒,通过循环产生1秒时间延迟,扫描单片机中所存放的时间的值(可正记时,也可倒计时),并通过输出显示在数码管上。

电路图:

p0.0—p0.7对应了两个接数码管的A,B,C,D,E,F,G和小数点位,p2.6接显示个位数的数码管的3、8引角,p2.7则接十位数的。p3.6、p3.7分别接按键。

流程框图:

程序代码:

a_bit equ 20h ;数码管个位数存放内存位置

b_bit equ 21h ;数码管十位数存放内存位置

temp  equ 22h ;计数器数值存放内存位置

;开机初始化

      MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入

      MOV P0,#0FFH;使显示时间数码管熄灭

;等待按键输入

;根据按键的输入判断执行什么功能

;按键1按下则执行功能1

START:JB P3.6,$;循环判断开始按钮K1是否按下?

      ACALL DELAY10;延时10毫秒触点消抖

      JB P3.6,START1;如果是干扰就返回

      JNB P3.6,$;等待按键松开

      ljmp gn1      

;

按键2按下则执行功能2

start1: jb p3.7,$;循环判断开始按钮K2是否按下?  

        ACALL DELAY10;延时10毫秒触点消抖

        JB P3.7,START;如果是干扰就返回

        jnb p3.7,$

        ljmp gn2

;数码管显示秒表时间的程序

gn1:    ;先初始化

        MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入

        MOV P0,#0FFH;使显示时间数码管熄灭

        mov a,#0

        mov temp,a  

goon1:  MOV R2,#2

js1:     MOV R3,#250

TIME1:  mov a,temp ;将temp中的十六进制数转换成10进制 

        mov b,#10 ;10进制/10=10进制

        div ab

        mov b_bit,a ;十位在a

        mov a_bit,b ;个位在b

        mov dptr,#numtab ;指定查表启始地址

        mov r0,#4 

dpl1:   mov r1,#250 ;

dplop1:  mov a,a_bit ;取个位数

        MOVC A,@A+DPTR ;查个位数的7段代码

        mov p0,a ;送出个位的7段代码

         mov p0,a ;送出个位的7段代码

        clr p2.7 ;开个位显示

        ACALL   DELY1;显示1毫秒

        setb p2.7;关闭个位显示,防止鬼影

        mov a,b_bit ;取十位数

        MOVC A,@A+DPTR ;查十位数的7段代码

        mov p0,a ;送出十位的7段代码

        clr p2.6 ;开十位显示

        ACALL DELY1;显示1毫秒

        setb p2.6;关闭十位显示,防止鬼影

        ;插入一段判断定时过程中是否有按键输入的程序段

C1:     JB P3.6,B1

        ACALL DELAY10;延时10毫秒消抖

        JB P3.6,C1

        JNB P3.6,$;等待按键松开

        

zt1:    MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入

        jb p3.6,$;循环判断开始按钮K1是否按下?

        ACALL DELAY10;延时10毫秒触点消抖

        JB P3.6,zt1;如果是干扰就返回

        JNB P3.6,$;等待按键松开

              

B1:     JB P3.7,loop1

ACALL DELAY10;延时10毫秒消抖

JB P3.7,B1

JNB P3.7,$;等待按键松开

AJMP OVER

loop1:   djnz r3,TIME1 ;2毫秒循环执行250次,时间约0.5秒

djnz r2,js1       ;循环执行2次,时间为1 秒钟

inc TEMP;满一秒钟对时间加1

MOV A,TEMP

clr c

subb a,#60

JNZ goon1;判断TEMP的数值是否为60?不为60循环 

acall over

ret

gn2:     mov a,#14h ; 设定倒计时的时间20S

         mov temp,a

;数码管显示倒计时时间的程序

  ;初始化

        MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入

        MOV P0,#14H;使显示时间为设定的倒计时时间

goon2:  MOV R2,#2

js2:      MOV R3,#250

TIME2:   mov a,temp ;将temp中的十六进制数转换成10进制 

         mov b,#10 ;10进制/10=10进制

         div ab

         mov b_bit,a ;十位在a

         mov a_bit,b ;个位在b

        mov dptr,#numtab ;指定查表启始地址

        mov r0,#4 

dpl2:   mov r1,#250 ;

dplop2:  mov a,a_bit ;取个位数

        MOVC A,@A+DPTR ;查个位数的7段代码

        mov p0,a ;送出个位的7段代码

         mov p0,a ;送出个位的7段代码

        clr p2.7 ;开个位显示

        ACALL   DELY1;显示1毫秒

        setb p2.7;关闭个位显示,防止鬼影

        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,B2

        ACALL DELAY10;延时10毫秒消抖

        JB P3.6,C2

        JNB 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,loop2

ACALL DELAY10;延时10毫秒消抖

JB P3.7,B1

JNB P3.7,$;等待按键松开

AJMP OVER

loop2:   djnz r3,TIME2 ;2毫秒循环执行250次,时间约0.5秒

djnz r2,js2      ;循环执行2次,时间为1 秒钟

dec TEMP;满一秒钟对时间加1

MOV A,TEMP

JNZ goon2;判断TEMP的数值是否为0?不为0循环 

acall over

ret

        

;结束定时

OVER:  AJMP START;退到开机初始化状态

;1毫秒延时子程序

DELY1:  MOV R4,#2

D1:MOV R5,#248

DJNZ R5,$

DJNZ R4,D1

RET

;10毫秒延时子程序

DELAY10: MOV R4,#20

D2:MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

RET

;实验板上的两位一体的数码管0~9各数字的显示代码

numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H

end下载本文

显示全文
专题