数字钟的单片机课程设计 内核AT80C51,能显示 时 分 秒,用led数码管显示,自动清零,具有校验功能。急!

数字钟的单片机课程设计 内核AT80C51,能显示 时 分 秒,用led数码管显示,自动清零,具有校验功能。急!,第1张

ORG 0000H

LJMP MAIN

ORG 0003H ;外部中断0的入口地址

LJMP L3

ORG 000BH

LJMP SHI

ORG 0013H ;外部中断1的入口地址

LJMP FEN

ORG 001BH

LJMP L1 ;先把堆栈设为5FH开始

MAIN: MOV SP,#5FH ;用定时器0的方式2来记数,定时器1的方式1来定时

MOV TMOD,#16H ;把T0的高八位和低八位分别都赋值为255

MOV TH0,#255

MOV TL0,#255 ;把T1的高八位赋值为3CH

MOV TH1,#3CH ;把低八位赋值为B0H

MOV TL1,#0B0H

MOV R4,#00H

MOV R5,#00H

MOV R6,#00H

SETB EA ;把中断允许总开关打开

CLR EX0 ;禁止外部中断0中断

CLR EX1 ;禁止外部中断1中断

SETB IT0 ;设外部中断0的触发方式为边沿触发方式

SETB IT1 ;设外部中断1的触发方式为边沿触发方式

CLR ET0 ;禁止T1中断

SETB TR0 ;启动定时计数器0工作

SETB TR1 ;启动定时计数器1工作

SETB ET1

MOV R7,#20

LOOP:

MOV A,R4

MOV B,#10

DIV AB

MOV DPTR,#0300H

MOVC A,@A+DPTR ; 查表指令

MOV P0,A

MOV P1,#01H

LCALL DELAY ;调用延时子程序

MOV P0,#0FFH

MOV A,B

MOVC A,@A+DPTR

MOV P1,#02H

MOV P0,A

LCALL DELAY

MOV P0,#0FFH

MOV P2,#0FFH

JNB P20,INN0

MOV P1,#04H

MOV P0,#0F6H

LCALL DELAY

MOV P0,#0FFH

MOV A,R5

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,#08H

MOV P0,A

MOV P1,#08H

LCALL DELAY

MOV P0,#0FFH

MOV P2,#0FFH

JNB P20,INN0

MOV A,B

MOVC A,@A+DPTR

MOV P1,#10H

MOV P0,A

LCALL DELAY

MOV P0,#0FFH

MOV P1,#20H

MOV P0,#0F6H

LCALL DELAY

MOV P0,#0FFH

MOV P2,#0FFH

JNB P20,INN0

MOV A,R6

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,#40H

MOV P0,A

LCALL DELAY

MOV P0,#0FFH

MOV A,B

MOVC A,@A+DPTR

MOV P1,#80H

MOV P0,A

LCALL DELAY

MOV P0,#0FFH

MOV P2,#0FFH

JNB P20,INN0

LJMP LOOP

INN0: CPL ET0

CPL ET1

CPL EX0

CPL EX1

LJMP LOOP

ORG 0100H

L1: PUSH A

MOV TH1,#3CH

MOV TL1,#0B0H

DJNZ R7,LP

MOV R7,#20

INC R4

MOV A,R4

CJNE A,#60,LP

MOV R4,#00H

INC R5

MOV A,R5

CJNE A,#60,LP

MOV R5,#00H

INC R6

MOV A,R6

CJNE A,#12,LP

MOV R6,#00H

LP: POP A

RETI ;中断返回

DELAY: MOV R3,#10

L2: MOV R2,#100

DJNZ R2,$

DJNZ R3,L2 ;延时子程序返回

RET

ORG 0200H

L3: CLR EA

INC R4

MOV A,R4

CJNE A,#60,MIA

MOV R4,#00H

MIA: SETB EA

RETI

FEN: CLR EA

INC R5

MOV A,R5

CJNE A,#60,FE

MOV R5,#00H

FE: SETB EA

RETI

SHI: CLR EA

INC R6

MOV A,R6

CJNE A,#24,SH

MOV R6,#00H

SH: SETB EA

RETI

ORG 0300H

TAB: DB 0C0H,0F9H,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H ;共阳的

END

#include<reg51h>

#include<intrinsh>

#define uchar unsigned char;

uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //0到f

uchar number,dat,time;

void t0isr() interrupt 1

{

    TH0=(65536-5000)/256;

    TL0=(65536-5000)%256;

    number++;

    if(number>1)number=0;

    switch(number)

    {

    case 0:P2=0x02;P0=distab[dat/10];

        break;

    case 1:P2=0x01;P0=distab[dat%10];

        break;

    default:break;

    }

}

void t1isr() interrupt 3

{

    TH1=(65536-50000)/256;

    TL1=(65536-50000)%256;

    time++;

    if(time%2)P1=_crol_(P1,1);

    if(time%4)dat++;

    dat%=100;

}

main()

{

        TMOD=0x11;

        TH0=(65536-5000)/256;

        TL0=(65536-5000)%256;

        TH1=(65536-50000)/256;

        TL1=(65536-50000)%256;

        time=0;

        dat=0;

        TR1=1;

        ET1=1;

        TR0=1;

        ET0=1;

        EA=1;

        P1=0xfe;

        while(1);

}

道闸遥控器的重新匹配步骤:

步骤一、 拷贝前先清零 *** 作:同时按住道闸遥控器上面的两个按键,直到道闸遥控器上的LED灯闪烁然后熄灭,这时候才可以松开双手,否则我们的清码工作是无效的。

步骤二、 测试空码:同样的同时按下道闸遥控器2个按键,如果道闸遥控器上面的LED灯亮一下后熄灭,表示空码,然后我们就可以按任意键进行下一步 *** 作了。

步骤三、 正确放置:将拷贝与被拷贝的道闸遥控器并排放置在桌面,越近越好,最好不要头对头,以免影响道闸遥控器的性能!

步骤四、 拷贝:用右手按下道闸遥控器上的关锁键不松手,见到LED灯点亮下后熄灭,示意已进入拷贝状态,用左手快速按下被拷贝道闸遥控器的关锁按键,见LED灯快闪则拷贝成功,多个按键拷贝方法相同。

步骤五、 恢复:同时按下道闸遥控器上的两个键,见LED灯点亮下再熄灭,不松手直到LED灯闪烁为止。恢复只是要清零后 *** 作才有效。

以上就是关于数字钟的单片机课程设计 内核AT80C51,能显示 时 分 秒,用led数码管显示,自动清零,具有校验功能。急!全部的内容,包括:数字钟的单片机课程设计 内核AT80C51,能显示 时 分 秒,用led数码管显示,自动清零,具有校验功能。急!、51单片机 利用定时器1控制LED灯每隔100ms亮一个,并且数码管上的数每隔200ms加1,加到100后清零、道闸门摇控清零怎么开等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10213905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存