当前位置:文档之家› LED电子钟制作

LED电子钟制作

LED电子钟制作
LED电子钟制作

LED数码管电子钟

功能特色

★声控功能(通过声音开启屏幕显示与延时关闭屏幕显示)------声控延时可调节范围:1秒~99秒

★红外遥控功能

------通过遥控器可以设置与控制设备

★亮度调节功能

------显示屏具有6档亮度调节

★照明灯

------LED照明灯,可以通过遥控开启与关闭

★贪睡响闹功能

------贪睡功能启动后,每隔5分钟闹声被重新开启,最多重新开启3次

★星期闹钟功能

------可以单独设置一周中每天的闹钟功能是否开启

★显示模式功能

------具有6种显示模式可选,如23:00~6:00之间把亮度切换到最暗或关闭显示

配置与功耗

●微控制器:STC89C52RC

●晶振频率:12MHZ

●电源电压:DC-12V

●功耗:

显示关闭:0.15W (LED数码管显示关闭,LED照明灯关闭,响闹BiBi声关闭)

正常显示:1.5W (LED数码管显示开启,且亮度调到最亮,LED照明灯关闭,

响闹BiBi声关闭)

最大功率:3W (LED数码管的所有段都点亮,且亮度调到最亮,LED照明灯开

启,响闹BiBi声开启)

LED照明灯功率:350mw

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

; LED数码管电子钟汇编程序

; (CPU 8052,使用12MHZ晶振)

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;申明8052增加的定时器2的特殊功能寄存器的地址

T2CON DATA 0C8H;定时器2控制寄存器

T H2 DATA 0CDH;定时器2高字节

T L2 DATA 0CCH;定时器2低字节

R CAP2H DATA 0CBH;定时器2捕获寄存器高字节

R CAP2L DATA 0CAH;定时器2捕获寄存器低字节

C PRL2 BIT 0C8H

C T2 BIT 0C9H

T R2 BIT 0CAH

E XEN2 BIT 0CBH

TCLK BIT 0CCH

RCLK BIT 0CDH

E XF2 BIT 0CEH

T F2 BIT 0CFH

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;申明遥控器的用户码与按键键值

I R_ADD_L EQU00000010B;设置红外遥控地址码的低8位

I R_ADD_H EQU10111101B;设置红外遥控地址码的高8位

I R_key_power EQU01000101B;遥控器开关机按键的键值

I R_key_mute EQU00001010B;遥控器静音按键的键值

I R_key_menu EQU00001011B;遥控器菜单按键的键值

I R_key_ok EQU00010101B;遥控器OK按键的键值

I R_key_up EQU00010010B;遥控器向上按键的键值

I R_key_down EQU00010011B;遥控器向下按键的键值

I R_key_left EQU00010001B ;遥控器向左按键的键值

I R_key_right EQU00010000B;遥控器向右按键的键值

I R_key_VOL_up EQU00011111B;遥控器音量加按键的键值

I R_key_VOL_down EQU00001110B;遥控器音量减按键的键值

I R_key_CH_up EQU00011000B;遥控器频道加按键的键值

I R_key_CH_down EQU00011010B;遥控器频道减按键的键值

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

mode DATA 03FH;工作模式寄存器

;*********************************************************************************************

;*********************************************************************************************

;计时用寄存器

t ime_ms DATA 040H;毫秒计数寄存器,一个单位表示1ms,由定时器2中断驱动,1ms中断一次t ime_10ms DATA 041H;10毫秒计数寄存器,一个单位表示10ms

t ime_250ms DATA 042H;250毫秒计数寄存器,一个单位表示250ms

t ime_500ms DATA 043H;500毫秒计数寄存器,一个单位表示500ms

sec DATA 044H;秒计数寄存器,一个单位表示1秒

minute DATA 045H;分计数寄存器,一个单位表示1分钟

hour DATA 046H;时计数寄存器,一个单位表示1小时

day DATA 047H;天计数寄存器,一个单位表示1天,用于存储星期几

m inute_L DATA 048H;分的个位寄存器

m inute_H DATA 049H;分的十位寄存器

h our_L DATA 04AH;时的个位寄存器

h our_H DATA 04BH;时的十位寄存器

页: 1

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

L ED_minute_L DATA 04CH;分的个位数的七段码寄存器

L ED_minute_H DATA 04DH;分的十位数的七段码寄存器

L ED_hour_L DATA 04EH;时的个位数的七段码寄存器

L ED_hour_H DATA 04FH;时的十位数的七段码寄存器

;*********************************************************************************************

;*********************************************************************************************

;闹钟用寄存器

m inute_alarm DATA 050H;闹钟的分钟寄存器

h our_alarm DATA 051H;闹钟的小时寄存器

m inute_alarm_L DATA 052H;闹钟的分钟的个位数寄存器

m inute_alarm_H DATA 053H;闹钟的分钟的十位数寄存器

h our_alarm_L DATA 054H;闹钟的小时的个位数寄存器

h our_alarm_H DATA 055H;闹钟的小时的十位数寄存器

L ED_minute_alarm_L DATA 056H;闹钟的分钟的个位数的七段码寄存器

L ED_minute_alarm_H DATA 057H;闹钟的分钟的十位数的七段码寄存器

L ED_hour_alarm_L DATA 058H;闹钟的小时的个位数的七段码寄存器

L ED_hour_alarm_H DATA 059H;闹钟的小时的十位数的七段码寄存器

S nooze_delay DATA 07EH;闹钟贪睡延时计数器

;*********************************************************************************************

;*********************************************************************************************

;声控延时用寄存器

A udio_time DATA 05AH;声控延时时间寄存器,一个单位表示1秒

A udio_time_L DATA 05BH;声控延时时间的个位数的寄存器

A udio_time_H DATA 05CH;声控延时时间的十位数的寄存器

;*********************************************************************************************

;*********************************************************************************************

;亮度用寄存器

L ED_bright DATA 05DH;保存LED亮度设置值的寄存器

L ED_bright_OUT DATA 05EH;LED亮度控制寄存器,直接控制LED显示亮度

L ED_bright_mode DATA 05FH;LED亮度模式寄存器

;*********************************************************************************************

;*********************************************************************************************

;LED扫描用寄存器

L ED_CS DATA 060H;LED扫描位线片选寄存器

L ED_OUT DATA 061H;LED扫描字线的七段码输出寄存器

L ED1_OUT DATA 062H ;LED1输出显示的七段码寄存器

L ED2_OUT DATA 063H ;LED2输出显示的七段码寄存器

L ED3_OUT DATA 064H ;LED3输出显示的七段码寄存器

L ED4_OUT DATA 065H ;LED4输出显示的七段码寄存器

;*********************************************************************************************

;*********************************************************************************************

;一周闹钟功能开关控制寄存器

W eek1_alarm DATA 071H;周一闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek2_alarm DATA 072H;周二闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek3_alarm DATA 073H;周三闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek4_alarm DATA 074H;周四闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek5_alarm DATA 075H;周五闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek6_alarm DATA 076H;周六闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek7_alarm DATA 077H;周七闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启;*********************************************************************************************

;*********************************************************************************************

;按键扫描用寄存器

k ey_t0 DATA02CH ;按键前一扫描时刻是否按下状态寄存器,按下相应位为0

k ey_t1 DATA02DH ;按键当前扫描时刻是否按下状态寄存器,按下相应位为0

l ong_K2 DATA02EH ;按键K2长按时间寄存器,一个单位表示10ms

k ey_down DATA02FH ;按键有效按下标志寄存器,有效按下相应标志位为1,可以位寻址;下面的Bit位是02FH字节中的位(即按键有效按下标志寄存器key_down中的位)

k0 BIT 78H;该按键对应着P1.0端口

页: 2

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

k1 BIT 79H;该按键对应着P1.1端口

k2 BIT 7AH;该按键对应着P1.2端口

k3 BIT 7BH;该按键对应着P1.3端口

k4 BIT 7CH;该按键对应着P1.4端口

k5 BIT 7DH;该按键对应着P1.5端口

k6 BIT 7EH;该按键对应着P1.6端口

k7 BIT 7FH;该按键对应着P1.7端口

;*********************************************************************************************

;*********************************************************************************************

;定义各种状态位和控制位

a larm_ON BIT 00H;闹钟功能开启控制位,要开启闹钟功能把该位置1

B iBi_ON BIT 01H;响闹控制位,把该位置1就开始响闹

L ED_Audio BIT 02H;声控功能开启控制位,要开启声控功能把该位置1

L ED_vision BIT 03H;LED是否显示控制位,要熄灭LED把该位清0

k ey_down_OK BIT 04H;按键有效按下标志位,任何按键按下该位被置1

k ey_down_10S BIT 05H;10秒内有按键按下标志位,如果10秒内无按键该位被清0

;*********************************************************************************************

;*********************************************************************************************

;红外遥控用寄存器

I R_lead BIT 06H ;红外引导码是否有效标志位,该位为1表示有效

I R_OK BIT 07H ;红外正确接收完成标志位,每正确接收完一次遥控时,该位就被置1

I R_IN_ADJ_time BIT 08H ;遥控器进入时间调整模式的第一个按键正确标志位

I R_pulse_time DATA 07AH;红外脉冲时间宽度寄存器(即红外信号两个下降沿之间的时间间隔)

I R_code DATA 07BH;红外接收到的编码寄存器,存储接收到的8bit编码(地址或者数据码)I R_bit_number DATA 07CH;接收了多少个红外bit的计数寄存器

I R_data DATA 07DH;红外数据码寄存器,即遥控按键的键值寄存器

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

ORG 0000H

JMP 0030H;跳转到主程序

ORG 0003H;外部中断0向量地址

JMP E X0_ISR

ORG 001BH;定时器1中断向量地址

JMP T1_ISR

ORG 002BH;定时器2中断向量地址

JMP T2_ISR

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

ORG 0030H

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;七段码值表初始化(LED七段码的A管脚对应着存储器的D7位,G管脚对应着D1位,DP管脚对应着D0位)

MOV 030H,#0FCH ;#03FH ;把数字0的七段码值存放到RAM地址空间中

MOV 031H,#060H ;#006H ;把数字1的七段码值存放到RAM地址空间中

MOV 032H,#0DAH ;#05BH ;把数字2的七段码值存放到RAM地址空间中

MOV 033H,#0F2H ;#04FH ;把数字3的七段码值存放到RAM地址空间中

MOV 034H,#066H ;#066H ;把数字4的七段码值存放到RAM地址空间中

MOV 035H,#0B6H ;#06DH ;把数字5的七段码值存放到RAM地址空间中

MOV 036H,#0BEH ;#07DH ;把数字6的七段码值存放到RAM地址空间中

MOV 037H,#0E0H ;#007H ;把数字7的七段码值存放到RAM地址空间中

MOV 038H,#0FEH ;#07FH ;把数字8的七段码值存放到RAM地址空间中

MOV 039H,#0F6H ;#06FH ;把数字9的七段码值存放到RAM地址空间中

MOV 03AH,#000H ;该七段码值不点亮任何段

;*********************************************************************************************

;*********************************************************************************************

页: 3

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

;开机时初始化各种寄存器

MOV mode , #0;把工作模式初始化为模式0

MOV sec , #00;秒针初始化

MOV minute , #00;分针初始化

MOV hour , #12;时针初始化

MOV day , #1;天初始化,初始化为星期一

MOV m inute_alarm , #00;闹钟分针初始化

MOV h our_alarm , #08;闹钟时针初始化

MOV A udio_time , #30;声控延时时间初始化,单位为秒

MOV L ED_bright , #4;LED亮度初始化,0为最暗,5为最亮

MOV k ey_t0 , #0FFH ;按键前一扫描时刻初始化为没有按下

MOV k ey_t1 , #0FFH ;按键当前扫描时刻初始化为没有按下

MOV l ong_K2 , #0 ;按键K2按下时间初始化为0

MOV k ey_down , #000H ;初始化为无按键有效按下

MOV W eek1_alarm , #0FFH ;初始化开启周一闹钟功能

MOV W eek2_alarm , #0FFH ;初始化开启周二闹钟功能

MOV W eek3_alarm , #0FFH ;初始化开启周三闹钟功能

MOV W eek4_alarm , #0FFH ;初始化开启周四闹钟功能

MOV W eek5_alarm , #0FFH ;初始化开启周五闹钟功能

MOV W eek6_alarm , #000H ;初始化关闭周六闹钟功能

MOV W eek7_alarm , #000H;初始化关闭周日闹钟功能

MOV R2,#1;R2用于设置星期闹钟功能开与关的时候,指示正在设置的天为星期几

MOV R3,#10;R3用于在非模式0的情况下,10秒无按键操作自动进入模式0时的延时计数

MOV R4,#100;R4用于声控功能延时计数

MOV R5,#10;R5用于声控功能延时计数

MOV R6,#30;R6用于声控功能延时计数

MOV R7,#50;R7用于产生BiBi声音时用于调制声音时的延时计数

;*********************************************************************************************

;*********************************************************************************************

;开机时初始化各种状态位和控制位

SETB a larm_ON;初始化开启闹钟功能

CLR B iBi_ON;初始化关闭BiBi声

SETB L ED_Audio;初始化开启声控功能

SETB L ED_vision;初始化开启LED显示

;*********************************************************************************************

;*********************************************************************************************

;定时器2初始化

MOV R CAP2L, #Low(-1000);设置定时器2的重载值为-1000,即每1000个脉冲定时器2就溢出一次(1ms溢出一次)MOV R CAP2H, #High(-1000)

MOV T2CON, #00000100B;设置定时器2工作在自动重装载模式,并开启定时器2

;定时器0和定时器1初始化

MOV TMOD ,#00010001B;设置定时器0为16位模式,定时器1为16位模式

;中断初始化并设置中断优先级

SETB I T0;设置外部中断0为下降沿中断模式

MOV IE , #10101001B;开中断(定时器1,2与外部中断0)

MOV IP , #00001001B;设置定时器1和外部中断0为最高优先级的中断

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;主循环程序

;1、在模式0的情况下,按下相应的按键将进入相应的工作模式

;2、在其他模式情况下,将调用相应模式的子程序,用于调整该模式下的参数设置

;3、当接收到正确的红外按键时,将调用红外按键处理程序

L OOP:

页: 4

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

JNB I R_OK,m ode0_CS;如果没有遥控按键操作就跳转到mode0_CS

CALL IR

m ode0_CS:

MOV A,mode

CJNE A,#0,m ode1_CS

m ode0_mode3:

JNB K3,m ode0_mode6;如果当前为模式0,且按键K3有效,则进入模式3,模式3为闹钟设置模式

MOV mode,#3

CLR K3

JMP LOOP

m ode0_mode6:

JNB K4,m ode0_mode8 ;如果当前为模式0,且按键K4有效,则进入模式6,模式6为声控设置模式

MOV mode,#6

CLR K4

JMP LOOP

m ode0_mode8:

JNB K5,m ode0_mode9;如果当前为模式0,且按键K5有效,则进入模式8,模式8为LED亮度设置模式MOV mode,#8

CLR K5

JMP LOOP

m ode0_mode9:

JNB K7,m ode0_mode10;如果当前为模式0,且按键K7有效,则进入模式9,模式9为LED亮度模式设置模式MOV mode,#9

CLR K7

JMP LOOP

m ode0_mode10:

JNB K6,LOOP ;如果当前为模式0,且按键K6有效,则进入模式10,模式10为星期调整模式MOV mode,#10

CLR K6

JMP LOOP

m ode1_CS:

CJNE A,#1,m ode2_CS;如果mode值为1,则调用mode1子程序,mode1为时针调整子程序

CALL m ode1

JMP LOOP

m ode2_CS:

CJNE A,#2,m ode3_CS;如果mode值为2,则调用mode2子程序,mode2为分针调整子程序

CALL m ode2

JMP LOOP

m ode3_CS:

CJNE A,#3,m ode4_CS;如果mode值为3,则调用mode3子程序,mode3为打开或者关闭闹钟功能子程序CALL m ode3

JMP LOOP

m ode4_CS:

CJNE A,#4,m ode5_CS;如果mode值为4,则调用mode4子程序,mode4为闹钟时针调整子程序

CALL m ode4

JMP LOOP

m ode5_CS:

CJNE A,#5,m ode6_CS;如果mode值为5,则调用mode5子程序,mode5为闹钟分针调整子程序

CALL m ode5

JMP LOOP

页: 5

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

m ode6_CS:

CJNE A,#6,m ode7_CS;如果mode值为6,则调用mode6子程序,mode6为打开或者关闭声控功能子程序

CALL m ode6

JMP LOOP

m ode7_CS:

CJNE A,#7,m ode8_CS;如果mode值为7,则调用mode7子程序,mode7为声控延时时间调整子程序

CALL m ode7

JMP LOOP

m ode8_CS:

CJNE A,#8,m ode9_CS;如果mode值为8,则调用mode8子程序,mode8为LED亮度调整子程序

CALL m ode8

JMP LOOP

m ode9_CS:

CJNE A,#9,m ode10_CS;如果mode值为9,则调用mode9子程序,mode9为LED亮度模式调整子程序

CALL m ode9

JMP LOOP

m ode10_CS:

CJNE A,#10,m ode11_CS ;如果mode值为10,则调用mode10子程序,mode10为星期调整子程序

CALL m ode10

JMP LOOP

m ode11_CS:

CJNE A,#11,L OOP_over;如果mode值为11,则调用mode11子程序,mode11为星期的闹钟功能开关子程序

CALL m ode11

L OOP_over:

JMP LOOP

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;外部中断0中断服务程序(红外遥控接收程序)

E X0_ISR:

PUSH ACC;进入中断服务程序时,把累加器A压入堆栈,保护现场。

PUSH PSW;把PSW压入堆栈,保护现场(该中断用到了进位标志C)

MOV I R_pulse_time,T H0;把定时器0的TH0值保存到红外脉冲时间宽度寄存器中,每一个单位表示256微秒MOV T L0,#0;把定时器0清0,让定时器0从0开始重新计时

MOV T H0,#0

SETB T R0

JB I R_lead ,I R_decode;如果红外引导码标志有效,则进入红外遥控的地址码与数据码解码

I R_lead_YorN:;判断是否是脉冲宽度为13.5毫秒的红外引导码

MOV A, I R_pulse_time

CJNE A,#31H,$+3;当脉冲宽度小于12.544毫秒表示不是引导码,退出解码程序

JC E X0_ISR_over

CJNE A,#38H,$+3;当脉冲宽度大于14.336毫秒表示不是引导码,退出解码程序

JNC E X0_ISR_over

SETB I R_lead;当脉冲宽度在12.544-14.336毫秒之间时,为红外引导码,把红外引导码标志位置1 CLR I R_OK;红外引导码正确后,接下来接收红外数据,清除红外接收完成标志位

JMP E X0_ISR_over

I R_decode:;红外遥控地址码和数据码解码(判断是否是脉冲宽度为1.12ms或2.25ms的有效宽度)MOV A, I R_pulse_time

I R_decode_0:;判断是否是脉冲宽度为1.12ms的有效宽度(编码0的脉冲宽度)

CJNE A,#3,$+3;当脉冲宽度小于0.768ms表示不是有效的宽度,结束本次解码,把IR_lead清0

页: 6

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

JC I R_pulse_error

CJNE A,#6,$+3;当脉冲宽度大于1.536ms表示不是编码0,继续检测是否为编码1的脉冲宽度

JNC I R_decode_1

CLR C;当脉冲宽度在0.768-1.536毫秒之间时,为编码0,并把该编码存入进位标志C中JMP I R_OUT

I R_decode_1:;判断是否是脉冲宽度为2.25ms的有效宽度(编码1的脉冲宽度)

CJNE A,#7,$+3;当脉冲宽度小于1.792毫秒表示不是有效的宽度,结束本次解码,把IR_lead清0

JC I R_pulse_error

CJNE A,#10,$+3;当脉冲宽度大于2.560毫秒表示不是有效的宽度,结束本次解码,把IR_lead清0 JNC I R_pulse_error

SETB C;当脉冲宽度在1.792-2.560毫秒之间时,为编码1,并把该编码存入进位标志C中

I R_OUT:

MOV A,I R_code

RRC A;把接收到的红外bit压入IR_code的最高位,即把接收到的bit向右移入IR_code MOV I R_code,A

INC I R_bit_number;每接收1个bit,就把接收了多少个红外bit的计数寄存器IR_bit_number加1

MOV A,I R_bit_number

CJNE A,#8, I R_ADD_code_H;当计数寄存器IR_bit_number为8时表示接收完了地址码的低8位

I R_ADD_code_L:;判断接收到的地址码的低8位是否与设置的地址低8位相同

MOV A ,I R_code

CJNE A,# I R_ADD_L,I R_pulse_error;当收到的地址码的低8位与设置的地址低8位不同,结束本次解码,把IR_lead清0 JMP E X0_ISR_over

I R_ADD_code_H:;判断接收到的地址码的高8位是否与设置的地址高8位相同

CJNE A,#16, I R_data_code;当IR_bit_number为16时,表示接收完了地址码的高8位

MOV A, I R_code

CJNE A,# I R_ADD_H,I R_pulse_error;当收到的地址码的高8位与设置的地址高8位不相同,结束本次解码,把IR_lead清0 JMP E X0_ISR_over

I R_data_code:;当接收完第24位数据后,把17bit到24bit的数据码存入遥控按键的键值寄存器CJNE A,#24, I R_data_not_code

MOV I R_data,I R_code

JMP E X0_ISR_over

I R_data_not_code:;当接收完第32位数据后,判断最后2Byte是否相反,相反则表示遥控接收正确CJNE A,#32, E X0_ISR_over

MOV A,I R_code

CPL A

CJNE A,I R_data,I R_pulse_error

SETB I R_OK;遥控接收正确后,就把红外正确接收完成标志位置1,表示接收到正确遥控

SETB k ey_down_OK;遥控接收正确后,就把按键有效按下标志位置位,表示有按键按下

I R_pulse_error:;当正确接收完成或者在接收过程中出错时,初始化迎接下一次接收

CLR I R_lead;当正确接收完成或者在接收过程中出错时,将红外引导码标志位清0

MOV I R_bit_number,#0;当正确接收完成或者在接收过程中出错时,将IR_bit_number计数器清0

E X0_ISR_over:

POP PSW;在中断返回时恢复PSW中的内容,现场恢复。

POP ACC

RETI

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

页: 7

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

;定时器1中断服务程序

;定时器1用于实现PWM调光,实现LED的亮度调节

T1_ISR:

PUSH ACC;进入中断服务程序时,把累加器A压入堆栈,保护现场。

PUSH B;把临时寄存器B压入堆栈,保护现场。

MOV P2,#0FFH;关闭LED显示,关闭字线

MOV P0,#000H;关闭LED显示,关闭位线

CLR T R1;关闭定时器1

POP B;在中断返回时恢复B中的内容,现场恢复。

POP ACC;在中断返回时恢复累加器A中的内容,现场恢复。

RETI

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;定时器2中断服务程序(1ms中断一次)

T2_ISR:

PUSH ACC;进入中断服务程序时,把累加器A压入堆栈,保护现场。

PUSH B;把临时寄存器B压入堆栈,保护现场。

PUSH 00H;把寄存器R0压入堆栈,保护现场。

PUSH 01H;把寄存器R1压入堆栈,保护现场。

CLR T F2;软件清除定时器2的中断标志

CALL time;调用time时间实时计时子程序,实现时间的实时计时功能

CALL L ED_Display_CS;调用LED_Display_CS子程序,实现在不同的mode下,显示相应模式下的界面MOV P2,#0FFH;在调用LED扫描前,关闭上次扫描的显示(关闭字线)

MOV P0,#000H;在调用LED扫描前,关闭上次扫描的显示(关闭位线)

JNB L ED_vision ,L ED_vision_OFF;根据显示控制位LED_vision,确定LED屏幕是否要显示,LED_vision为1就显示CALL L ED_scan;调用LED_scan扫描子程序,把字符显示到LED上

CALL bright ;调用亮度控制子程序,根据亮度设置值,设置计数器1的溢出时间,实现PWM调光L ED_vision_OFF:

CALL A udio_LED_vision;调用Audio_LED_vision控制子程序,实现声控功能

CALL k ey_scan;调用key_scan键盘扫描子程序,实现键盘按键扫描功能

CALL BiBi;调用BiBi声产生子程序,实现响闹

CALL b right_mode;调用bright_mode子程序,实现不同的亮度模式

POP 01H;在中断返回时恢复R1中的内容,现场恢复。

POP 00H;在中断返回时恢复R0中的内容,现场恢复。

POP B;在中断返回时恢复B中的内容,现场恢复。

POP ACC;在中断返回时恢复累加器A中的内容,现场恢复。

RETI

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;时间实时计时子程序(每调用一次,加1mS)

;外部接口变量如下:

;time_250ms 用于控制在时间或者闹钟调整模式下,时针或者分针被选中时闪耀的时间基准

;time_500ms 用于控制"LED上的冒号"是否显示的时间基准

;sec: 秒的二进制码输出

;minute: 分的二进制码输出

;hour: 时的二进制码输出

t ime:

INC t ime_ms;time_ms自加一

MOV A,t ime_ms

页: 8

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

CJNE A,#10,t ime_over;每10ms产生一次进位,且time_ms清0

MOV t ime_ms,#0

CALL m ode0_long_key;每10ms调用一次mode0_long_key模式0下的按键长按处理程序,

;如果在模式0下,且长按时间到规定值,则进入时间调整模式

INC t ime_10ms;time_10ms自加一

MOV A,t ime_10ms

CJNE A,#25,t ime_over;每250ms产生一次进位,且time_10ms清0

MOV t ime_10ms,#0

INC t ime_250ms;time_250ms自加一

MOV A,t ime_250ms

CJNE A,#2,t ime_over;每500ms产生一次进位,且time_250ms清0

MOV t ime_250ms,#0

INC t ime_500ms ;time_500ms自加一

MOV A,t ime_500ms

CJNE A,#2,C ALL_time_OUT;每1s产生一次进位,且time_500ms清0

MOV t ime_500ms ,#0

CALL A uto_mode0;每秒调用一次Auto_mode0子程序,该子程序的功能是如果现在不是在模式0下,

;且10秒无按键操作将自动从其他模式自动切换到模式0

INC sec;秒自加一

MOV A,sec

CJNE A,#60,C ALL_time_OUT;每60秒产生一次进位

MOV sec,#0

INC minute;分自加一

MOV A ,minute

CJNE A,#60,C ALL_alarm ;每60分钟产生一次进位

MOV minute,#0

MOV t ime_10ms,#-8;时间修正,每个小时修正一次(为了补偿晶振的误差而进行的软件时间修正)

;修正值为负数表示把时间变慢,修正值为正数表示把时间变快

;-8表示每个小时把时间变慢80ms,相当于每天把时间变慢1.92秒

INC hour;时自加一

MOV A,hour

CJNE A,#24,C ALL_alarm ;每24小时产生一次进位

MOV hour,#0

INC day;天自加一

MOV A,day

CJNE A,#8,C ALL_alarm ;每7天产生一次进位

MOV day,#1

C ALL_alarm:;每分钟调用一次alarm响闹判断子程序,它比较当前时间是否和闹钟时间相等,CALL alarm;如果当前时间和闹钟时间相等,则开启闹声

C ALL_time_OUT:;每0.5秒调用一次time_OUT实时时间的七段码转换子程序,把实时时间的时针和分针CALL t ime_OUT;分别转换为4个七段码,供实时时间的显示用

t ime_over:

RET

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

页: 9

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

;********************************************************************************************* ;实时时间的七段码转换子程序,把二进制码转换为十进制和七段码(每0.5秒被调用一次)

;外部接口变量如下:

;LED_minute_L: 该变量输出的是分的个位数的七段码

;LED_minute_H: 该变量输出的是分的十位数的七段码

;LED_hour_L: 该变量输出的是时的个位数的七段码

;LED_hour_H: 该变量输出的是时的十位数的七段码

t ime_OUT:

MOV A,minute;计算分的十进制数的个位和十位数

MOV B,#10

DIV AB

MOV m inute_L,B;把分针的个位数存入minute_L寄存器中

MOV m inute_H,A;把分针的十位数存入minute_H寄存器中

MOV A,hour;计算时的十进制数的个位和十位数

MOV B,#10

DIV AB

MOV h our_L,B;把时针的个位数存入hour_L寄存器中

MOV h our_H,A;把时针的十位数存入hour_H寄存器中

MOV A,m inute_L;把分的十进制数的个位转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED_minute_L,@R0;把分的个位数的七段码存入LED_minute_L中

MOV A,m inute_H;把分的十进制数的十位转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED_minute_H,@R0;把分的十位数的七段码存入LED_minute_H中

MOV A,h our_L;把时的十进制数的个位转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED_hour_L,@R0;把时的个位数的七段码存入LED_hour_L中

MOV A,h our_H;把时的十进制数的十位转换为七段码

JZ h our_H_OFF ;判断时的十位是否为0,为0则该位不显示

ADD A,#030H

MOV R0,A

MOV L ED_hour_H,@R0;把时的十位数的七段码存入LED_hour_H中

JMP t ime_OUT_over

h our_H_OFF:

MOV L ED_hour_H,#000H;时的十位为0,则该位的七段码为全暗

t ime_OUT_over:

RET

;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;闹钟时间的七段码转换子程序,把二进制码转换为十进制和七段码

;外部接口变量如下:

;LED_minute_alarm_L: 该变量输出的是闹钟分的个位数的七段码

;LED_minute_alarm_H: 该变量输出的是闹钟分的十位数的七段码

;LED_hour_alarm_L: 该变量输出的是闹钟时的个位数的七段码

;LED_hour_alarm_H: 该变量输出的是闹钟时的十位数的七段码

a larm_time_OUT:

MOV A,m inute_alarm;计算闹钟分的十进制数的个位和十位数

MOV B,#10

DIV AB

MOV m inute_alarm_L,B;把闹钟分的个位数存入minute_alarm_L寄存器中

页: 10

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

MOV m inute_alarm_H,A;把闹钟分的十位数存入minute_alarm_H寄存器中

MOV A,h our_alarm;计算闹钟时的十进制数的个位和十位数

MOV B,#10

DIV AB

MOV h our_alarm_L,B;把闹钟时的个位数存入hour_alarm_L寄存器中

MOV h our_alarm_H,A;把闹钟时的十位数存入hour_alarm_H寄存器中

MOV A,m inute_alarm_L;把闹钟分的十进制数的个位转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED_minute_alarm_L,@R0;把闹钟分的个位数的七段码存入LED_minute_alarm_L中

MOV A,m inute_alarm_H;把闹钟分的十进制数的十位转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED_minute_alarm_H,@R0;把闹钟分的十位数的七段码存入LED_minute_alarm_H中

MOV A,h our_alarm_L;把闹钟时的十进制数的个位转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED_hour_alarm_L,@R0;把闹钟时的个位数的七段码存入LED_hour_alarm_L中

MOV A,h our_alarm_H

JZ h our_alarm_H_OFF ;判断闹钟时的十位是否为0,为0则不显示

ADD A,#030H;把闹钟时的十进制数的十位转换为七段码

MOV R0,A

MOV L ED_hour_alarm_H,@R0;把闹钟时的十位数的七段码存入LED_hour_alarm_H中

JMP a larm_time_OUT_over

h our_alarm_H_OFF:

MOV L ED_hour_alarm_H,#000H;闹钟时的十位是0,就不显示

a larm_time_OUT_over:

RET

;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;LED扫描子程序,每1ms调用一次(每调用一次扫描一个位线,循环扫描)

;外部接口变量如下:

;LED1_OUT:改变该变量,就改变LED1的输出显示(七段码)

;LED2_OUT:改变该变量,就改变LED2的输出显示(七段码)

;LED3_OUT:改变该变量,就改变LED3的输出显示(七段码)

;LED4_OUT:改变该变量,就改变LED4的输出显示(七段码)

L ED_scan:

MOV P2,#0FFH;关闭上次扫描的显示,避免干扰(关闭字线)

MOV P0,#000H;关闭上次扫描的显示,避免干扰(关闭位线)

INC L ED_CS;位线加一,实现扫描功能

MOV A,L ED_CS

L ED_CS_1:CJNE A,#1,L ED_CS_2

MOV P0,#001H;扫描LED1,并把LED1_OUT中的七段码输出到字线,让LED1显示出来 MOV L ED_OUT , L ED1_OUT

JMP P2_OUT

L ED_CS_2:CJNE A,#2,L ED_CS_3

MOV P0,#002H;扫描LED2,并把LED2_OUT中的七段码输出到字线,让LED2显示出来 MOV L ED_OUT , L ED2_OUT

JMP P2_OUT

页: 11

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

L ED_CS_3:CJNE A,#3,L ED_CS_4

MOV P0,#004H;扫描LED3,并把LED3_OUT中的七段码输出到字线,让LED3显示出来

MOV L ED_OUT , L ED3_OUT

JMP P2_OUT

L ED_CS_4:

MOV P0,#008H;扫描LED4,并把LED4_OUT中的七段码输出到字线,让LED4显示出来

MOV L ED_OUT , L ED4_OUT

MOV L ED_CS,#0

P2_OUT:

MOV A,L ED_OUT

CPL A

MOV P2,A;把七段码输出到P2端口驱动LED

RET

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;LED显示界面选择子程序,实现在不同的mode下,显示相应模式下的界面(每1ms调用一次)

L ED_Display_CS:

MOV A,mode

m ode0_Display:;模式0显示界面,该界面显示实时时间的时和分

CJNE A,#0,m ode1_Display

MOV A,t ime_500ms ;每隔500ms交替点亮和熄灭"LED钟上的冒号"

JNZ m ode0_Display_ON

ORL L ED_minute_H,#00000001B;点亮"LED显示屏上的冒号"

ORL L ED_hour_L,#00000001B

MOV A,S nooze_delay

JZ m ode0_Display_ON;当贪睡延时计数器Snooze_delay不为0即在贪睡时间内,则时针前面的小点闪耀MOV A,t ime_250ms

JZ m ode0_Display_ON

ORL L ED_hour_H,#00000001B;点亮时针"LED前面的小点"

m ode0_Display_ON:

MOV L ED4_OUT, L ED_minute_L;输出实时时间的七段码到LED显示屏上

MOV L ED3_OUT, L ED_minute_H

MOV L ED2_OUT, L ED_hour_L

MOV L ED1_OUT, L ED_hour_H

JMP L ED_Display_CS_over

m ode1_Display:;模式1显示界面,该界面为时针调整界面,显示闪耀的时针和一直亮的分针CJNE A,#1,m ode2_Display

MOV A,t ime_250ms ;每隔250ms交替点亮和熄灭时针

JZ m ode1_Display_ON

MOV L ED_hour_L,#00000000B;熄灭时针

MOV L ED_hour_H,#00000000B

m ode1_Display_ON:

ORL L ED_minute_H,#00000001B;点亮"LED显示屏上的冒号"

ORL L ED_hour_L,#00000001B

MOV L ED4_OUT, L ED_minute_L;输出时针调整界面下的七段码到LED显示屏上

MOV L ED3_OUT, L ED_minute_H

MOV L ED2_OUT, L ED_hour_L

MOV L ED1_OUT, L ED_hour_H

JMP L ED_Display_CS_over

m ode2_Display:;模式2显示界面,该界面为分针调整界面,显示闪耀的分针和一直亮的时针CJNE A,#2,m ode3_Display

MOV A,t ime_250ms ;每隔250ms交替点亮和熄灭分针

页: 12

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

JZ m ode2_Display_ON

MOV L ED_minute_L,#00000000B;熄灭分针

MOV L ED_minute_H,#00000000B

m ode2_Display_ON:

ORL L ED_minute_H,#00000001B;点亮"LED显示屏上的冒号"

ORL L ED_hour_L,#00000001B

MOV L ED4_OUT, L ED_minute_L;输出分针调整界面下的七段码到LED显示屏上

MOV L ED3_OUT, L ED_minute_H

MOV L ED2_OUT, L ED_hour_L

MOV L ED1_OUT, L ED_hour_H

JMP L ED_Display_CS_over

m ode3_Display:;模式3显示界面,该界面为打开或者关闭闹钟功能的界面,显示字符"ON"或"OFF" CJNE A,#3,m ode4_Display

JNB a larm_ON,m ode3_Display_2;闹钟功能开启控制位alarm_ON为1则显示字符"ON"

MOV L ED1_OUT,#000H ;LED1不显示

MOV L ED2_OUT,#000H ;LED2不显示

MOV L ED3_OUT,#11111100B;LED3显示字符 "O"

MOV L ED4_OUT,#11101100B ;LED4显示字符 "n"

JMP L ED_Display_CS_over

m ode3_Display_2:;闹钟功能开启控制位alarm_ON为0则显示字符"OFF"

MOV L ED1_OUT,#000H ;LED1不显示

MOV L ED2_OUT,#11111100B;LED2显示字符 "O"

MOV L ED3_OUT,#10001110B;LED3显示字符 "F"

MOV L ED4_OUT,#10001110B ;LED4显示字符 "F"

JMP L ED_Display_CS_over

m ode4_Display:;模式4界面,该界面为闹钟时针调整界面,显示闪耀的闹钟时针和一直亮的分针CJNE A,#4,m ode5_Display

MOV A,t ime_250ms ;每隔250ms交替点亮和熄灭闹钟的时针

JZ m ode4_Display_ON

MOV L ED_hour_alarm_L,#00000000B ;熄灭闹钟的时针

MOV L ED_hour_alarm_H,#00000000B

m ode4_Display_ON:

ORL L ED_minute_alarm_H,#00000001B;点亮"LED显示屏上的冒号"

ORL L ED_hour_alarm_L,#00000001B

MOV L ED4_OUT, L ED_minute_alarm_L ;输出闹钟时间的七段码到LED显示屏上

MOV L ED3_OUT, L ED_minute_alarm_H

MOV L ED2_OUT, L ED_hour_alarm_L

MOV L ED1_OUT, L ED_hour_alarm_H

JMP L ED_Display_CS_over

m ode5_Display:;模式5界面,该界面为闹钟分针调整界面,显示闪耀的闹钟分针和一直亮的时针CJNE A,#5,m ode6_Display

MOV A,t ime_250ms ;每隔250ms交替点亮和熄灭闹钟的分针

JZ m ode5_Display_ON

MOV L ED_minute_alarm_L,#00000000B;熄灭闹钟的分针

MOV L ED_minute_alarm_H,#00000000B

m ode5_Display_ON:

ORL L ED_minute_alarm_H,#00000001B;点亮"LED显示屏上的冒号"

ORL L ED_hour_alarm_L,#00000001B

MOV L ED4_OUT, L ED_minute_alarm_L ;输出闹钟时间的七段码到LED显示屏上

MOV L ED3_OUT, L ED_minute_alarm_H

MOV L ED2_OUT, L ED_hour_alarm_L

MOV L ED1_OUT, L ED_hour_alarm_H

JMP L ED_Display_CS_over

页: 13

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

m ode6_Display:;模式6界面,该界面为打开或者关闭声控功能的界面,显示字符"S-ON"或者"S-OF" CJNE A,#6,m ode7_Display

JNB L ED_Audio,m ode6_Display_2 ;声控功能开启控制位LED_Audio为1则显示字符"S-ON"

MOV L ED1_OUT,#10110110B ;LED1显示字符 "S"

MOV L ED2_OUT,#00000010B ;LED2显示字符 "-"

MOV L ED3_OUT,#11111100B;LED3显示字符 "O"

MOV L ED4_OUT,#11101100B ;LED4显示字符 "n"

JMP L ED_Display_CS_over

m ode6_Display_2:;声控功能开启控制位LED_Audio为0则显示字符"S-OF"

MOV L ED1_OUT,#10110110B ;LED1显示字符 "S"

MOV L ED2_OUT,#00000010B ;LED2显示字符 "-"

MOV L ED3_OUT,#11111100B;LED3显示字符 "O"

MOV L ED4_OUT,#10001110B ;LED4显示字符 "F"

JMP L ED_Display_CS_over

m ode7_Display:;模式7显示界面,该界面为声控延时时间调整界面,显示声控延时时间值

CJNE A,#7,m ode8_Display

MOV L ED1_OUT,#10110110B ;LED1显示字符 "S"

MOV L ED2_OUT,#00000010B ;LED2显示字符 "-"

MOV A,A udio_time;计算声控延时时间Audio_time的十位数和个位数

MOV B,#10

DIV AB

MOV A udio_time_L,B;把声控延时时间的个位数存入Audio_time_L寄存器中

MOV A udio_time_H,A;把声控延时时间的十位数存入Audio_time_H寄存器中

MOV A,A udio_time_L;把声控延时时间的十进制数的个位数转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED4_OUT,@R0;LED4显示声控延时时间的个位数

MOV A,A udio_time_H;把声控延时时间的十进制数的十位数转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED3_OUT,@R0;LED3显示声控延时时间的十位数

JMP L ED_Display_CS_over

m ode8_Display:;模式8显示界面,该界面为LED亮度调整界面,显示亮度值

CJNE A,#8,m ode9_Display

MOV L ED1_OUT,#00011100B ;LED1显示字符 "L"

MOV L ED2_OUT,#00000010B ;LED2显示字符 "-"

MOV L ED3_OUT,#0FCH ;LED3显示数字 "0"

MOV A,L ED_bright;把亮度设置值LED_bright转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED4_OUT,@R0;LED4显示亮度设置值

JMP L ED_Display_CS_over

m ode9_Display:;模式9显示界面,该界面为LED亮度模式调整界面,显示LED亮度模式

CJNE A,#9,m ode10_Display

MOV L ED1_OUT,#11001110B ;LED1显示字符 "P"

MOV L ED2_OUT,#00000010B ;LED2显示字符 "-"

MOV L ED3_OUT,#0FCH ;LED3显示数字 "0"

MOV A,L ED_bright_mode;把LED_bright_mode亮度模式转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED4_OUT,@R0;LED4显示LED的亮度模式值

JMP L ED_Display_CS_over

页: 14

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

m ode10_Display:;模式10显示界面,该界面为星期几调整与显示界面,显示星期几

CJNE A,#10,m ode11_Display

MOV L ED1_OUT,#000H ;LED1不显示

MOV L ED2_OUT,#000H ;LED2不显示

MOV L ED3_OUT,#000H ;LED3不显示

MOV A,day;把星期几day转换为七段码

ADD A,#030H

MOV R0,A

MOV L ED4_OUT,@R0;LED4显示星期几

JMP L ED_Display_CS_over

m ode11_Display:;模式11显示界面,该界面为星期的闹钟功能开关调整界面

CJNE A,#11,L ED_Display_CS_over

MOV A,R2;R2为当前正在调整的闹钟功能的星期几

ADD A,#030H

MOV R0,A

MOV L ED1_OUT,@R0 ;LED1显示正在进行闹钟功能开关调整的星期几

MOV L ED2_OUT,#00000010B ;LED2显示字符 "-"

MOV A,R2;R2为当前正在调整的闹钟功能的星期几

ADD A,#70H

MOV R1,A

MOV A,@R1;累加器A中的值表示星期R2的闹钟功能是否开启,000H为关闭,OFFH为开启

JZ a larm_Display_OFF

;星期R2的闹钟功能为开时显示"on"

MOV L ED3_OUT,#11111100B;LED3显示字符 "O"

MOV L ED4_OUT,#11101100B ;LED4显示字符 "n"

JMP L ED_Display_CS_over

a larm_Display_OFF:;星期R2的闹钟功能为关时显示"OF"

MOV L ED3_OUT,#11111100B;LED3显示字符 "O"

MOV L ED4_OUT,#10001110B ;LED4显示字符 "F"

L ED_Display_CS_over:

RET

;*********************************************************************************************

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;*********************************************************************************************

;按键扫描子程序(每1ms调用一次)

;按键有效被定义成按键下降沿有效,而不是低电平有效

;根据相邻两次扫描按键的状态,判断按键是下降沿还是上升沿,从而对key_down的相应位写1或者写0

k ey_scan:

MOV k ey_t1,P1;把P1端口的当前状态锁存到key_t1,每扫描一次按键,锁存一次按键状态,避免直接使用P1端口MOV A,k ey_t1;下降沿时,置位按键有效按下标志位

CPL A;key_down= key_down OR [key_t0 AND NOT(key_t1)]

ANL A, k ey_t0

ORL k ey_down ,A

MOV A,k ey_t1;上升沿时,清除按键有效按下标志位

CPL A;key_down= key_down AND [key_t0 OR NOT(key_t1)]

ORL A, k ey_t0

ANL k ey_down ,A

MOV k ey_t0,k ey_t1 ;把当前按键状态,作为下次扫描的前一状态

MOV A,k ey_down;如果有按键有效按下,置位有按键按下标志位(该标志位可以用于判断有无按键操作)

JZ k ey_scan_over

SETB k ey_down_OK

页: 15

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM

k ey_scan_over:

RET

;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;模式0模式下的按键长按处理程序(每10ms调用一次)

m ode0_long_key:

MOV A,mode;如果不是在模式0下,不检测按键是否为长按

JNZ m ode0_long_key_over

JNB K2 ,l ong_K2_over;如果K2没有被按下,则把长按时间long_K2清0

INC l ong_K2;长按时间加10ms

MOV A, l ong_K2

CJNE A,#150, m ode0_long_key_over;当长按时间到了1.5秒,就进入模式1,时间调整模式

MOV mode ,#1

CLR K2 ;使用完按键后,清除按键

l ong_K2_over:

MOV l ong_K2,#0

m ode0_long_key_over:

RET

;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;实时时间的时针调整子程序(主程序调用)

m ode1:

JNB K2,h our_up;如果按键K2有效,则进入模式2,实时时间的分针调整模式

MOV mode,#2

CLR k2;使用完按键后,清除按键

JMP m ode1_over

h our_up:

JNB K0,h our_down;如果按键K0有效,则时针加一

CLR K0

INC hour;时针加一

MOV A,hour

CJNE A,#24,h our_down

MOV hour,#000H

h our_down:

JNB K1,m ode1_over;如果按键K1有效,则时针减一

CLR K1

DEC hour;时针减一

MOV A,hour

CJNE A,#0FFH, m ode1_over

MOV hour,#23

m ode1_over:

CALL t ime_OUT;调用实时时间的七段码转换子程序,把时针和分针转化为七段码供LED显示RET

;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;实时时间的分针调整子程序(主程序调用)

m ode2:

JNB K2,m inute_up;如果按键K2有效,则进入模式0,实时时间显示模式

MOV mode,#0

CLR k2

MOV t ime_ms, #0 ;从模式2进入模式0时,表示时间调整完成,各级时间从0开始计时

MOV t ime_10ms, #0

MOV t ime_250ms, #0

MOV t ime_500ms, #0

MOV sec,#0;从模式2进入模式0时,把秒清0,使调整后的实时时间从整分开始计时

页: 16

LED电子钟制作

LED数码管电子钟 功能特色 ★声控功能(通过声音开启屏幕显示与延时关闭屏幕显示)------声控延时可调节范围:1秒~99秒 ★红外遥控功能 ------通过遥控器可以设置与控制设备 ★亮度调节功能 ------显示屏具有6档亮度调节 ★照明灯 ------LED照明灯,可以通过遥控开启与关闭 ★贪睡响闹功能 ------贪睡功能启动后,每隔5分钟闹声被重新开启,最多重新开启3次 ★星期闹钟功能 ------可以单独设置一周中每天的闹钟功能是否开启 ★显示模式功能 ------具有6种显示模式可选,如23:00~6:00之间把亮度切换到最暗或关闭显示 配置与功耗 ●微控制器:STC89C52RC ●晶振频率:12MHZ ●电源电压:DC-12V ●功耗: 显示关闭:0.15W (LED数码管显示关闭,LED照明灯关闭,响闹BiBi声关闭) 正常显示:1.5W (LED数码管显示开启,且亮度调到最亮,LED照明灯关闭, 响闹BiBi声关闭) 最大功率:3W (LED数码管的所有段都点亮,且亮度调到最亮,LED照明灯开 启,响闹BiBi声开启) LED照明灯功率:350mw

D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM ; LED数码管电子钟汇编程序 ; (CPU 8052,使用12MHZ晶振) ;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;申明8052增加的定时器2的特殊功能寄存器的地址 T2CON DATA 0C8H;定时器2控制寄存器 T H2 DATA 0CDH;定时器2高字节 T L2 DATA 0CCH;定时器2低字节 R CAP2H DATA 0CBH;定时器2捕获寄存器高字节 R CAP2L DATA 0CAH;定时器2捕获寄存器低字节 C PRL2 BIT 0C8H C T2 BIT 0C9H T R2 BIT 0CAH E XEN2 BIT 0CBH TCLK BIT 0CCH RCLK BIT 0CDH E XF2 BIT 0CEH T F2 BIT 0CFH ;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* ;申明遥控器的用户码与按键键值 I R_ADD_L EQU00000010B;设置红外遥控地址码的低8位 I R_ADD_H EQU10111101B;设置红外遥控地址码的高8位 I R_key_power EQU01000101B;遥控器开关机按键的键值 I R_key_mute EQU00001010B;遥控器静音按键的键值 I R_key_menu EQU00001011B;遥控器菜单按键的键值 I R_key_ok EQU00010101B;遥控器OK按键的键值 I R_key_up EQU00010010B;遥控器向上按键的键值 I R_key_down EQU00010011B;遥控器向下按键的键值 I R_key_left EQU00010001B ;遥控器向左按键的键值 I R_key_right EQU00010000B;遥控器向右按键的键值 I R_key_VOL_up EQU00011111B;遥控器音量加按键的键值 I R_key_VOL_down EQU00001110B;遥控器音量减按键的键值 I R_key_CH_up EQU00011000B;遥控器频道加按键的键值 I R_key_CH_down EQU00011010B;遥控器频道减按键的键值 ;********************************************************************************************* ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;********************************************************************************************* mode DATA 03FH;工作模式寄存器 ;********************************************************************************************* ;********************************************************************************************* ;计时用寄存器 t ime_ms DATA 040H;毫秒计数寄存器,一个单位表示1ms,由定时器2中断驱动,1ms中断一次t ime_10ms DATA 041H;10毫秒计数寄存器,一个单位表示10ms t ime_250ms DATA 042H;250毫秒计数寄存器,一个单位表示250ms t ime_500ms DATA 043H;500毫秒计数寄存器,一个单位表示500ms sec DATA 044H;秒计数寄存器,一个单位表示1秒 minute DATA 045H;分计数寄存器,一个单位表示1分钟 hour DATA 046H;时计数寄存器,一个单位表示1小时 day DATA 047H;天计数寄存器,一个单位表示1天,用于存储星期几 m inute_L DATA 048H;分的个位寄存器 m inute_H DATA 049H;分的十位寄存器 h our_L DATA 04AH;时的个位寄存器 h our_H DATA 04BH;时的十位寄存器 页: 1

单片机电子时钟的设计

单片机电子时钟的设计 ----------- 基于单片机的电子时钟 专业:运算机科学与技术 班级:专升本1班 小组成员:张琴张娜赵慧佩 学号:23 24 25

基于单片机的电子时钟设计 摘要 20世纪末,电子技术获得了飞速的进展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的进展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时刻观念,能够说是时刻和金钱划上了等号。关于那些对时刻把握专门严格和准确的人或事来说,时刻的不准确会带来专门大的苦恼,因此以数码管为显示器的时钟比指针式的时钟表现出了专门大的优势。数码管显示的时刻简单明了而且读 数快、时刻准确显示到秒。而机械式的依靠于晶体震荡器,可能会导致误差。 数字钟是采纳数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳固度远远超过老式机械钟。在这次设计中,我们采纳LED数码管显示时、分、秒,以24 小时计时方式,依照数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时刻的其本功能,还能够实现对时刻的调整。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受宽敞消费的喜爱,因此得到了广泛的使用。 .

目录 第一章绪论 1.1 数字电子钟的背景 (4) 1.2 数字电子钟的意义 (4) 1.3 数字电子钟的应用 (4) 第二章整体设计方案 2.1 单片机的选择 (5) 2.2 单片机的差不多结构 (7) 第三章数字钟的硬件设计 3.1 最小系统设计 (11) 3.2 LED显示电路 (14) 第四章数字钟的软件设计 4.1 系统软件设计流程图 (16) 4.2 数字电子钟的原理图 (19) 第五章系统仿真 5.1 PROTUES软件介绍 (20) 5.2 电子钟系统PROTUES仿真 (21) 第六章调试与功能说明 6.1 硬盘调试 (22) 6.2 系统性能测试与功能说明 (22) 6.3 系统时钟误差分析 (22) 6.4 软件调试问题及解决 (22) 附件:主程序 (23)

电子时钟制作步骤

电子时钟制作步骤: 1、导入一张“钟表”外观到库中 2、新建1 个“图形元件”(取名表盘),将“钟表”拖入舞台,如图: 3、依次单独建3个“影片剪辑”(取名分别是时针、分针、秒针),用矩形工具画3个长方 形针,如右上图: 4、返回主场景,将图层1命名表盘,将表盘元件拖入舞台 5、增加1个图层,命名表针,先拖入时针元件,并设置动作,编程语句为 onClipEvent(enterFrame){setProperty(this,_rotation,_root.hours);} 然后拖入分针针元件,并设置动作,编程语句为onClipEvent(enterFrame){setProperty(this,_rotation,_root.minutes);} 最后拖入秒针针元件,并设置动作,编程语句为onClipEvent(enterFrame){setProperty(this,_rotation,_root.seconds);} 6、增加1个图层,命名为动作,设置第1针动作,编程语言为: time=new Date(); hours=time.getHours(); minutes=time.getMinutes(); seconds=time.getSeconds(); if(hours>12){ hours=hours-12;} if(hours<1){ hours=12;} hours=hours*30+int(minutes/2); minutes=minutes*6+int(seconds/10); seconds=seconds*6; 7、在第2帧出选插入空白关键帧,设置动作语句编程如下:gotoAndPlay(1); 8、将表盘和表针两图层插入帧,最后测试影片效果即可完成

多功能6位电子钟说明书

多功能6位电子钟说明书 一、原理说明: 1、显示原理: 显示部分主要器件为2位共阳红色数码管,驱动采用PNP型三极管驱动,各端口配有限流电阻,驱动方式为扫描,占用P1.0~P1.6端口。冒号部分采用4个Φ3.0的红色发光,驱动方式为独立端口驱动,占用P1.7端口。 2、键盘原理: 按键S1~S3采用复用的方式与显示部分的P3.5、P3.4、P3.2口复用。其工作方式为,在相应端口输出高电平时读取按键的状态并由单片机支除抖动并赋予相应的键值。 3、迅响电路及输入、输出电路原理: 迅响电路由有源蜂鸣器和PNP型三极管组成。其工作原理是当PNP型三极管导通后有源蜂鸣器立即发出定频声响。驱动方式为独立端口驱动,占用P3.7端口。 输出电路是与迅响电路复合作用的,其电路结构为有源蜂鸣器,4.7K定值电阻R16,排针J3并联。当有源蜂鸣器无迅响时J3输出低电平,当有源蜂鸣器发出声响时J3输出高电平,J3可接入数字电路等各种需要。驱动方式为迅响复合输出,不占端口。 输入电路是与迅响电路复合作用的,其电路结构是在迅响电路的PNP型三极管的基极电路中接入排针J2。引脚排针可改变单片机I/O口的电平状态,从而达到输入的目的。驱动方式为复合端口驱动,占用P3.7端口。 4、单片机系统: 本产品采用AT89C2051为核心器件(AT89C2051烧写程序必须借助专用编程器,我们提供的单片机已经写入程序),并配合所有的必须的电路,只具有上电复位的功能,无手动复位功能。 二、使用说明: 1、功能按键说明: S1为功能选择按键,S2为功能扩展按键,S3为数值加一按键。 2、功能及操作说明:操作时,连续短时间(小于1秒)按动S1,即可在以上的6个功能中连

用LCD设计的可调式电子钟

单片机应用 课程设计说明书 用1602LCD设计的可调式电子钟专业自动化 学生姓名 班级自动化142 学号 14100 指导教师蒋 完成日期 20年1 月23 日

目录 1 概述.......................................................................................... 错误!未指定书签。 2 课题研究背景与意义...................................................................... 错误!未指定书签。 2.1 课题研究背景....................................................................... 错误!未指定书签。 2.2 课题研究意义....................................................................... 错误!未指定书签。 3 系统方案设计与主要设计工作 ..................................................... 错误!未指定书签。 3.1 设计任务............................................................................... 错误!未指定书签。 3.2 功能要求说明....................................................................... 错误!未指定书签。4设计课题总体方案........................................................................... 错误!未指定书签。 4.1硬件设计方案........................................................................ 错误!未指定书签。 4.2系统软件设计........................................................................ 错误!未指定书签。 5. 软件仿真及实物设计调试 ........................................................... 错误!未指定书签。 5.1PROTUES仿真软件介绍 ......................................................... 错误!未指定书签。 5.2仿真运行结果说明 ............................................................... 错误!未指定书签。 5.3实物设计结果与调试 ........................................................... 错误!未指定书签。6课程设计实验总结........................................................................... 错误!未指定书签。参考文献.............................................................................................. 错误!未指定书签。附录.............................................................................................. 错误!未指定书签。 附录1:程序清单........................................................................ 错误!未指定书签。 附录2:系统电路原理图 ........................................................... 错误!未指定书签。 附录3:元器件清单.................................................................... 错误!未指定书签。

单片机原理课程设计基于AT89C52的电子时钟设计说明

单片机原理课程设计 题目: 基于AT89C52的电子时钟设计 姓名: 学院: 专业: 班级: 学号: 指导教师: 年月日 农业大学教务处制

aortiu 目录 摘要 (2) 关键词 (2) 引言 (2) 1设计要求与方案论证 (2) 1.1设计要求 (2) 1.2系统方案选择方案和论证 (2) 1.2.1单片机芯片的选择方案和论证 (2) 1.2.2 显示模块选择方案和论证 (3) 1.2.3 时钟芯片的选择方案和论证 (3) 2.系统的硬件设计与实现 (3) 2.1电路设计框图 (3) 2.2系统硬件概述 (3) 2.3主要单元电路的设计 (4) 2.3.1 单片机主控制模块的设计 (4) 2.3.2时钟电路模块的设计 (4) 2.3.3 键盘模块设计 (5) 2.3.4蜂鸣器模块的设计 (5) 2.3.5显示模块的设计 (5) 3.系统的软件设计 (6) 3.1程序流程框图 (6) 3.2程序的设计 (7) 4.系统调试 (7) 4.1软件调试 (7) 4.2硬件调试 (8) 4.3 实验箱调试结果 (8) 5.总结心得体会 (9) 附录一:系统程序 (9)

基于AT89C52的电子时钟设计 指导教师:吕成绪胡飞 摘要:单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。AT89C52就是51系列中的一个比较成熟的型号。本设计是一个多功能的实时时钟,带秒表、整点报时、闹铃、调整时间等功能。可按键直接设置闹铃时间。由AT89C51单片机、DS1302、LCD1602等模块组成。现代社会,时间就是金钱,时钟是每个人的必备品。本设计实现了所需功能,给大家带来方便,整体性好、人性化强、可靠性高,实现了时钟的多功能应用。 关键词:电子时钟;DS1302;LCD1602; 引言: 随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子时钟采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该设计以AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 综上所述,此电子时钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 1.设计要求与方案 1.1 设计要求: (1)启动时显示制作的年、月、日、制作者的学号等信息。 (2)24小时计时功能(精确到秒) (3)整点报时功能。 (4)秒表功能 (5)省电功能模式(未设计) 1.2 系统基本方案选择 1.2.1单片机芯片的选择方案和论证 方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。 方案二: 采用AT89S52,片ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51

简易电子钟的设计

简易电子钟的设计 摘要 近年来随着计算机在社会领域的渗透和大规模集成电路地发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,一次特别适合于与控制有关的系统,越来越广泛地应用于各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及正对具体应用对象特点的软件结合,以作完善。本次做的电子时钟是以89C51为核心,结合相关的元器件(LED数码显示器、锁存/译码/驱动器等),再配以相应的软件,达到制作简易数字钟的目的,其硬件部分难点在于元器件的选择、布局及焊接。 关键词单片机 89C51 软件硬件 LED数码显示器锁存/译码/驱动器

Abstract With the computer in the social sphere in recent years, the penetration and development of large scale integrated circuits, microcontroller applications are continually deepening, because of its powerful function, small size, low power consumption, cheap, reliable, easy to use and so on , one particularly suited to and control of the system, more and more widely used in various fields, often microcontroller as a core component to use, in accordance with the specific hardware architecture, and is the object of the characteristics of the specific application software combine to make perfect. The electronic clock is done 89C51 core, combined with the components (LED digital display, latch / decoder / driver, etc.), which together with the corresponding software, to create simple digital clock purposes, the hardware The difficulty is the choice of components, layout, and welding. Keywords microcontroller 89C51 hardware software LED digital display latch / decoder / driver

数字电子钟设计说明..

数字电子钟课程设计 一、设计任务与要求 (1)设计一个能显示时、分、秒的数字电子钟,显示时间从00: 00: 00到23: 59: 59; (2)设计的电路包括产生时钟信号,时、分、秒的计时电路和显示电路(3)电 路能实现校正 (5)整点报时 二、单元电路设计与参数计算 1. 振荡器 石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整。它还具有压电效应,在晶体某一方向加一电场,则在与此垂直的方向产生机械振动,有 了机械振动,就会在相应的垂直面上产生电场,从而机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限止时,才达到最后稳定。这用压电谐振的频率即为晶体振荡器的固有频率。 2. 分频器 由于振荡器产生的频率很高,要得到秒脉冲需要分频,本实验采用一片74LS90 和两片74LS160实现,得到需要的秒脉冲信号。

3. 计数器 秒脉冲信号经过计数器,分别得到“秒”个位、十位、“分”个位、十位以及 “时”个位、十位的计时。“秒” “分”计数器为六十进制,小时为二十四进制。 (1)六十进制计数 由分频器来的秒脉冲信号,首先送到“秒”计数器进行累加计数,秒计数器应完 成一分钟之内秒数目的累加,并达到 60秒时产生一个进位信号。本作品选用一 片74LS161和一片74LS160采取同步置数的方式组成六十进制的计数器。 (2)二十四进制计数 “24翻1”小时计数器按照“ 00— 01—02,, 22—23— 00—01”规律计数。与生 活中计数规律相同。二十四进制计数同样选用74LS161和74LS160计数芯片。但 清零方式采用的是异步清零方式。 MMgM 加 EHagij Z 1 进位信号 脉冲

(完整word版)基于单片机电子时钟的制作

毕业综合实训概述 实训目的: 对单片机电子时钟的制作及设计原理的掌握,利用本次实训对所学的理论课程进行实际论证,更好的掌握理论知识。能够更好的运用在实践当中。 实训时间: 2015年9月21日-2015年11月8日 实训要求: 1.独立完成实物的制作及理解设计原理; 2.分析及制作程序流程图; 3. 绘制电路图; 4.了解个元器件在电路中的作用。

目录 1 引言 (1) 1.1选题背景 (1) 1.2设计原理 (1) 1.3单片机简介 (2) 1.4单片机的发展历史 (2) 1.5单片机的应用领域及发展趋势 (2) 2 方案议论 (5) 2.1 设计要求 (5) 2.2 系统描述 (5) 2.3 设计方案 (5) 2.3.1 集成电路 (5) 2.3.2 单片机的最小系统 (6) 2.3.3结论 (7) 3 硬件设计 (8) 3.1硬件结构 (8) 3.2中心控制模块 (8) 3.3电源模块 (11) 3.4控制电路 (12) 3.5复位电路 (12) 4软件设计 (15) 4.1电子时钟的设计原理 (15) 4.2 软件设计流程 (15) 5 总结 (17) 致谢 (18) 参考文献 (18) 附录电子时钟程序 (19)

1 引言 1.1选题背景 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM 已经发展出了32位的主频超过300M的高端单片机,直到现在基于8051的单片机还在广泛的使用。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作! 利用单片机实现电子时钟有很多优点,例如外部电路简单,控制方便等,因而备受广大单片机爱好者的喜爱。通过电子时钟的制作方案,掌握C语言的编程方法。并熟练的运用89S52单片机定时器准确的实现时间的递进,按下按键可以设置时间,最重要的是自己还可以通过程序设计输入自己需要的定点时间。 1.2设计原理 通过单片机对时间准确的控制,实现时间的递进。 定时器:时钟周期T是时序中最小的时间单位,具体计算的方法是1/时钟源频率,我们KST-52单片机开发板上用的晶振是11.0592M,那么我们对于这个单

电子闹钟说明书

本电子闹钟的设计是以单片机技术为核心,采用了小规模集成度的单片机制作的功能相对完善的电子闹钟。硬件设计应用了成熟的数字钟电路的基本设计方法,并详细介绍了系统的工作原理。硬件电路中除了使用AT89C51外,另外还有晶振、电阻、电容、发光二极管、开关、喇叭等元件。在硬件电路的基础上,软件设计按照系统设计功能的要求,运用所学的汇编语言,实现的功能包括‘时时-分分-秒秒’显示,设定和修改定时时间的小时和分钟、校正时钟时间的小时、分钟和秒、定时时间到能发出一分钟的报警声。 一芯片介绍 AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,外形及引脚排列如图1-1所示。 图1-1 AT89C51引脚图 74LS573 的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,

Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。外形及引脚排列如图1-2所示。 图1-2 74LS573引脚图

电子时钟课设说明书

1.引言 在新的世纪,工业向着高集成,高自动化发展,各类电器、电子设备的运用就尤为重要。作为其中的重要技术之一的电子技术,就是当今我们,尤其是我们工科类学生必须掌握的一项基本技能之一。作为一名合格的工程技术人员,就必须学好并能很好的将其运用到我们生产实际中。由此看来,在具备了一定的电子技术理论基础后,运用所学,结合实际,解决一些现实中的生活和工程问题,是我们大学生必须实践的。 从以上出发,结合课程安排,此次课程设计选择了我们较为广泛应用的数字电子钟课程设计题目。数字钟采用数字电路实现对时,分,秒数字显示的计时装置,它具有显示日、时、分、秒的功能,本设计采用时序电路制成的数码管显示的数字钟。它具有走时准确、稳定性能好和使用方便等的特点。具有快速校准时、分、秒的功能。广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,运运超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

2.数字时钟概述 数字钟是一个简单的时序组合逻辑电路,数字钟包括振荡器、分频器、计数器、译码器、显示器等几个部分组成,这些都是数字电路中常用的电路。它主要是用来完成时分秒的计数功能。一般来说,一个数字钟要有振荡器来产生脉冲,分频器来完成标准秒脉冲的生成,计数器的计数功能,译码器的译码和显示器的显示功能,其逻辑原理图如图2.1如下: 图2.1逻辑原理图 该系统的工作原理是:振荡器产生的稳定的高频脉冲信号,作为数字钟的时间表基准,它将时标信号送到分频器,再经过分频器输出标准秒脉冲,即将时标信号分成每秒一次的方波信号。秒信号送入计数器进行计数,秒计数计满60后向分 计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照二十四进制规律计数,日计时器计满清零从新开始,计数器的输出经译码器送显示器。所有的计时结果由7位数码管显示。计时出现误差时可以用校时电路进行校日、时、校分、校秒。

数字电子钟设计

目录 一、设计实验条件 (2) 二、设计任务及要求 (2) 1.设计任务 (2) 2.要求 (2) 三、设计报告内容 (2) 1.前言 (2) 2.总体方案设计 (3) 1)系统总体结构 (3) 2)芯片及其余部分选择 (3) 3.硬件电路设计 (4) 1)AT89S52单片机最小系统 (4) 2)显示电路与AT89S52单片机接口电路设计 (5) 4.软件设计 (5) 1)主程序框图 (5) 2)显示程序框图 (6) 5.调试与测试结果 (6) 1)实时显示 (6) 2)修改显示内容 (7) 3)闹钟功能 (8) 6.心得体会 (8) 四、附录 (9) 1)程序 (9) 2)系统电路图 (20)

一、设计实验条件 微机原理与接口实验室 二、设计任务及要求 1.设计任务 采用AT89S52单片机及显示电路完成小时、分钟、秒的实时显示; 2.要求 (1)总体方案设计 (2)硬件电路设计 (3)软件设计 (4)调试与测试结果 (5)程序清单和系统原理图 三、设计报告内容 1.前言 随着单片机技术的不断发展,单片机软硬件水平的不断提高,单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将产生非常重要的作用。 现在我们可以随意看到电子钟,电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合需要数字电子钟,所以其极具有推广价值。

新电子时钟说明书

电子表说明书 作者:上海师范大学信息与机电工程学院09专升本一班张少帅 版本: 5.0 单片机:AT89C52 功能: 1. 显示/设置时间,日期,闹钟,秒表计时 2. 采用终端进行时间,日期,闹钟,秒表的相关操作。 按键:共有 4 个按键,分别是Mode,Set,+ ,-,其在不同情况下,对应不同的操作,具体关系如下: 1.MODE键有2个功能: 1)在设置模式下,其用于移动光标 2)在非设置模式下,其用于切换显示模式,显示模式有4种,分别是日期模式,时间模式,秒表模式,闹钟模式 注:在TIMER模式下并处于启动状态下,不能切换到其它显示模式 2. SET键有3个功能: 1)在日期模式,时间模式,秒表模式下,用于设置相应的数值 2)在秒表模式,用于启动/停止秒表 3)在闹钟响起的情况下,用于关闭闹钟 3. +键有3个功能: 1)在设置模式下,用于增加相应光标位置的值(如果按键长按,数值将快速增加) 2)在秒表模式下,复位运行中的秒表 3)开启终端,与终端进行通信 4.SUB键有3个功能: 1)在设置模式下,减少相应光标位置的值(如果长时间按键,数值将快速减少) 2)在秒表模式下,复位停止的秒表 3)终端开启的情况下,关闭终端,断开与终端的通信 设置模式下,不同参数代表的意义: 1. 在时间设置模式下,分4段数据分别代表24和12小时制,小时、分钟、秒 2. 在日期设置模式下,分3段数据分别代表年、月、日 3. 在闹钟设置模式下,分5段数据分别代表音乐编号、音乐开启/关闭、小时、分钟、秒

终端模式: 当按了+键后,进入终端模式 Help 显示帮助信息 Version 显示版本号 Time 显示当前的时间 Date 显示当前的日期 Timer 处理相关的秒表操作 Mode 切换不同的模式 Set 用于设置时间,日期,闹钟Alarm 用于对闹钟的状态 Exit 断开终端通信 Version:

电子钟说明书(福州智兴科技有限公司)

ZXTL-13A电子台历说明书 一、功能简介 1、公(农)历月、日、温度、时(24小时制)、分、星期显示,公历和农历的日期会自动轮换显示(有指示灯指示); 2、50年万年历查询; 3、日期时间记忆功能,停电时显示关闭但仍继续走时,来电时不需重新设置日期时间; 4、整点报时功能(22:00~6:00不报); 5、三组闹钟功能,且响铃时报时; 6、六组生日提醒功能; 7、即时报时功能; 8、自动测试温度,温度范围:-9~50℃; 9、亮度自动调整,22:00~7:00亮度降低一半。 二、操作说明 1、按键名称:设置键、移动键、修改键、定闹键、报时键(轻触型电子薄膜按键)。 2、日期时间设置: ①、在正常日期时间显示状态下,按设置键进入日期时间设置状态,小时和分钟位同时显示年且闪烁; ②、此时按修改键修改年(若不要修改闪烁位内容,则不压修改键,下同),修改好后按移动键月闪烁,按修改键修改月,修改好后按移动键日闪烁,按修改键修改日,在设置过程中,星期和农历月日将自动跟随公历年月日而变化; ③、再按移动键,则年不显示了,小时位闪烁,按修改键修改小时,按移动键,分钟位闪烁,按修改键修改分钟; ④、按设置键回到正常日期时间显示状态。 3、整点报时设置: 在正常日期时间显示状态下,按修改键,则可以打开/关闭整点报时功能(整点报时指示灯亮/灭)。 4、定闹时间设置: ①、在正常日期时间显示状态下,按定闹键进入定闹时间查询,定闹(闹钟)指示灯亮,在温度位显示“A1”,表示当前您看到的是第一组定闹信息,在小时、分钟位显示“―∶――”表示该组定闹时间无效,显示具体时间表示该组定闹时间有效,按修改键可以切换有效或无效; ②、若要修改定闹时间则按设置键进入定闹时间设置,小时位闪烁,按修改键修改小时,按移动键分钟位闪烁,按修改键修改分钟; ③、按定闹键进入第二组定闹时间查询,其设置与第一组相同,用同样方法可完成第三组的查询、设置。查询、设置三组定闹时间后再按定闹键则退出定闹时间设置,进入生日提醒查询。若三组定闹时间没有一组有效,则定闹(闹钟)指示灯熄灭。 5、生日提醒设置: ①、在第三组定闹时间查询、设置完成后,按定闹键进入第一组生日提醒查询,在温度位显示“b1”,在月日位显示有效日期或无效日期“――”,若公历指示灯亮则表示以公历日期为准,若农历指示灯亮则表示以农历日期为准,按移动键切换公历/农历,按修改键打开/关闭该组生日提醒; ②、若要修改生日提醒则按设置键进入生日提醒设置,月位闪烁,按修改键修改月,按移动键日位闪烁,按修改键修改日; ③、按定闹键进入第二组生日提醒查询,其设置与第一组相同,用同样方法可完成第三组至第六组的查询、设置。当第六组生日提醒查询、设置完成后,按定闹键返回正常日期时间显示状态。 三、响铃方式 ①、接通电源,会有钟声、现在时刻几点几分和一首音乐; ②、整点报时:当整点报时打开时,报时指示灯亮,每天的7:00~21:00整点时,会有钟声、现在时刻几点整和一首音乐; ③、即时报时:在正常时间状态下,按报时键,报现在时刻几点几分; ④、定闹响铃:每天到定闹时间响铃,响铃内容是:咚咚咚,现在时刻几点几分,……持续一分钟; ⑤、生日提醒响铃:生日这天7:00~21:00每个小时的第8分钟,会放一首祝你生日快乐的音乐。 四、其它说明 ①、在任何设置状态下,若超过30秒无操作,自动返回正常日期时间显示状态; ②、在任何设置状态下,按报时键除报时外,返回正常日期时间显示状态; ③、在响铃状态下,只要有键按下立即停止响铃且进入相应按键状态。

数字电子钟PCB制作

数字电子钟PCB制作 07电子信息工程(2)班 070306212 李武成 一.设计目的 Protel是20世纪90年代澳大利亚Protel Techmology公司研发的电子CAD软件,Protel 99SE将电路原理图编辑、电路仿真测试、PLD设计和PCB设计等功能融合在一起。由于其强大的功能和方便的操作,深受广大用户的欢迎,在中国小企业、公司应有极为普遍。 Protel 99是一个全面集成的电路设计软件,它具备强大便捷的编辑功能,为电子电路原理图和印制电路板的设计提供了良好的操作环境。本次课程设计通过了解熟悉Protel 99软件界面,进行数字电子钟电路原理图的设计、创建原理图元件、电路板的设计规划和网络表的载入、印刷电路板(PCB)的编辑、创建元件封装、报表生成和电路板输出。 二.画原理图 1.启动原理图设计系统 进入Protel 99 SE,创建一个数据库,执行菜单File/New命令,从框中选择原理图服务器(Schematic Document)图标,双击该图标,建立原理图设计文档。双击文档图标,进入原理图设计服务器界面。 2.设置图纸和环境 在进行原理图设计之前设置图纸的大小、方向及标题栏类型等。在Document Options 对话框中进行,执行菜单命令Design/Options即可。单击箭头按钮选择preference选项,打开原理图环境参数设置对话框,点击Schematic按钮进行设置。 3.放置元件 在原理图图纸上放置元件之前,需要先添加元件库,选中Browse Sch标签页,然后单击Add/Remove按钮,弹出Change Library File List,在Design Explorer99/Library/Sch 文件夹中选择元件库名称,单击添加和OK按钮。放置元件时选中所需的元件库,然后在元件列表框中选择相应的元件,单击Place放置元件。按空格键可使元件旋转,双击元件打开Part对话框,可以编辑元件属性。 4.原理图布线 执行菜单命令Place/Wire,光标变成十字形,在布线起点单击确定导线的起点,移动光标到终点的位置再单击确定导线终点,右击即可退出布线状态。 5.原理图的输出,下面是相关设计的原理图

AT89C51单片机电子时钟设计说明

AT89C51单片机电子时钟设计

目录 1 电子时钟 (4) 1.1 电子时钟简介 (4) 1.2 电子时钟的基本特点 (4) 1.3 电子时钟的原理 (4) 2 单片机识的相关知识 (4) 2.1单片机简介 (4) 2.2 单片机的特点 (5) 2.3 AT89C51单片机介绍 (5) 3 设计方案的选择 (7) 3.1计时方案 (7) 3.2 显示方案 (7) 3.3 数码管显示工作原理 (8) 3.4 键盘电路设计 (9) 3.5 主控模块AT89C51 (9) 4 系统软件设计 (9) 附录 (12)

摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机;电子时钟;AT89C51

1 电子时钟 1.1 电子时钟简介 本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 1.3 电子时钟的原理 该电子时钟由AT89C51,键盘,八段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。 2 单片机识的相关知识 2.1单片机简介 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、存、部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

相关主题
文本预览
相关文档 最新文档