ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN:
MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#03CH;12M晶振时定时初值
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
MOV R0,#20
DISP:
MOV A,26H
MOV B,#10
DIV AB
MOV 20H,B ;余数(百分秒位数)
MOV 21H,A ;商(十分秒位数)
MOV A,27H
MOV B,#10
DIV AB
MOV 22H,B ;余数(秒个位数)
MOV 23H,A ;商(秒十位数)
MOV A,28H
MOV B,#10
DIV AB
MOV 24H,B ;余数(分个位数)
MOV 25H,A ;商(分十位数)
MOV A,20H ;秒
ACALL SEG7
MOV P1,A
CLR P2.0
ACALL DLY
SETB P2.0
MOV A,21H ;十秒
ACALL SEG7
MOV P1,A
CLR P2.1
ACALL DLY
SETB P2.1
MOV P1,#40H ;"-"
CLR P2.2
ACALL DLY
SETB P2.2
MOV A,22H ;分
ACALL SEG7
MOV P1,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,23H ;十分
ACALL SEG7
MOV P1,A
CLR P2.4
ACALL DLY
SETB P2.4
MOV P1,#40H ;"-"
CLR P2.5
ACALL DLY
SETB P2.5
MOV A,24H ;时
ACALL SEG7
MOV P1,A
CLR P2.6
ACALL DLY
SETB P2.6
MOV A,25H ;十时
ACALL SEG7
MOV P1,A
CLR P2.7
ACALL DLY
SETB P2.7
AJMP DISP
T0INT:
MOV TH0,#03CH
MOV TL0,#0B0H
DJNZ R0,T0INTR
MOV R0,#20
INC 26H ;
MOV A,26H
CJNE A,#60,T0INTR ;未1S,跳出中断。
MOV 26H,#0
INC 27H ;秒+1
CPL 7FH
MOV A,27H
CJNE A,#60,T0INTR
MOV 27H,#0
INC 28H
MOV A,28H
CJNE A,#60,T0INTR
MOV 28H,#0
T0INTR:
RETI
DLY:
MOV R7,#2
D1:
MOV R6,#40
DJNZ R6,$
DJNZ R7,D1
RET
SEG7:
INC A
MOVC A,@A+PC
RET
DB 03FH ;0 共阴
DB 006H ;1
DB 05BH ;2
DB 04FH ;3
DB 066H ;4
DB 06DH ;5
DB 07DH ;6
DB 007H ;7
DB 07FH ;8
DB 06FH ;9
END
51单片机驱动八位数码管电子钟
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};\/\/八位位选码表 \/\/0 1 2 34 5 6 7 uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};\/\/段选码表 \/\/ 0, 1,2, 3, 4 , 5,6,7 ,8,9 uchar flag=0; \/\/ sbit...
基于51单片机简易时钟闹钟八位数码管显示Proteus仿真
本设计旨在实现一个基于51单片机的多功能数字时钟闹钟,其主要功能包括显示时、分、秒,并能设置时间和闹钟。该设计采用单片机内部定时器实现计时功能,通过八位数码管显示当前时间。用户可以对时、分、秒进行独立设置,设置时数码管将闪烁。此外,闹钟功能可让用户设置特定时间,当时间到达,蜂鸣器将每秒鸣响...
51单片机设计数码管显示时钟的程序怎么写
include<reg51.h>#define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9unsigned char sec=0,min=0,hour=12,scanled;unsigned char key,flashbit,mode,time; unsigned char disdat[8];sbit led=P1^0;void delay(unsigne...
用c语言循环语句怎么写一个51单片机的时钟啊,用8个数码管显示时间。
delay(50);dischg();delay(80);break;
51单片机显示八位数码管的C语言程序
2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。3、接着,我们加上一条循环语句。4、最后,我们把先前定义的延时语句delayms写好。5、最后,点击这里进行编译,生成一个hex文件。6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以点亮动态数码管了。
求一个用汇编语言编写一个8051单片机的时钟程序(急急急啊)
DIS_DIGIT: DS 1 SEC: DS 1 DIS_INDEX: DS 1 HOUR: DS 1 MIN: DS 1 SEC100: DS 1 DIS_BUF: DS 8 BUF_HOUR_H EQU DIS_BUF ; 小时十位 BUF_HOUR_L EQU DIS_BUF+1 ; 小时个位 BUF_MIN_H EQU DIS_BUF+3 ; 分十位 BUF_MIN_L ...
51单片机时钟程序设计
朋友以下是本人历时一个月殚精竭虑自主开发的一个8位51单片机时钟程序,望吾之兄弟姐妹习之,此程序乃采用一键控制,通过感知按下键持续时间的长短来进行调整时间,闹铃,6只共阳数码管输出显示,此外还包括整点铃声功能,在看程序之前我先交代一下运行该程序的硬件要求:12M晶振,P0端口驱动显示,P2.0...
51单片机控制8个数码管并显示1-8
数码管段选连接到单片机P0口,位选连接到P2口 ORG 0000h MAIN:CALL DISPLAY AJMP MAIN DISPLAY:MOV R0,#0 MOV R1,#0x01 MOV DPTR,#TAB LOOP:INC R0 MOV A,R0 MOVC A,@A+DPTR MOV P0,#0 ;消隐 MOV P0,A ;送段码 CALL DELAY MOV A,R1 ;送位码 RL A ;移位 MOV P2,A MOV ...
基于51单片机利用八个数码管花样显示如下
其实很简单,你把1--8对应的共阴极或共阳极的编码寻在一个数组里(C语言)或者表里(汇编语言查表法),在P0口和P2口接上8个7段数码管,P2口做位选,P0口做段选,每次从表中查询你要显示的数据的编码写到P0口,再把你要在哪一个数码管上显示写到P2口(比如位选为低电平有效,向P2口写入0xFE...
在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按 ...
你首先要确定你的电路。选择什么单片机和数码管,8个按键最简单8个IO口控制。一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\\r\\n\\r\\n1、初始值为0:上电复位后,单片机驱动数码管...