带万年历的LCD显示多功能数字钟
程序清单:
; SMC1602接口程序(MCS51模拟口线方式)
;***************************************************************************
;连线图: *LCM---8031* *LCM---8031* *LCM------------8031*
; *DB0---P0.0* *DB4---P0.4* *RS-------------P2.0*
; *DB1---P0.1* *DB5---P0.5* *RW-------------P2.1*
; *DB2---P0.2* *DB6---P0.6* *E--------------P2.2*
; *DB3---P0.3* *DB7---P0.7* *VLCD接10K可调电阻到GND*
;注:8051的晶振频率为11.0592MHz R0设置数据存放 S8为设置键 S7为加键 S4为确认键
;**************************************************************************
;P0口液晶显示
; P2.4位选键P2.3加一键P2.2返回键及报时功能键闹钟设置P2.0控制显示键
;寄存器 clr rs0 setb rs1 R0 R4 R5在按键中用到 延时中用到 SETB RS0 SETB RS1的R0 R1 R2
;SETB RS0 CLR RS1显示中用到 CLR RS0 CLR RS1 在闹钟调整子程序中用到R1
;*********************************************************************
;
;报时功能P2.6 和闹钟功能P2.5 闹钟调整时间功能已经可以设置 显示的切换方式变了 再关闭的情况下一切正常运行
;*****************************
RSPIN BIT P1.2
RWPIN BIT P1.1
EPIN BIT P1.0
WEIXUAN BIT P2.4 ;位选键设置键
JIAJIAN BIT P2.3 ;加一键
JIANJIAN BIT P2.2 ;减一键
FANHUI BIT P2.1 ;返回键
NZKG BIT P2.0 ;闹钟设置键
SECONTL EQU 30H ;秒
SECONTH EQU 31H ;秒
MAOHAOL EQU 32H ;:
MINIUTL EQU 33H ;分
MINIUTH EQU 34H ;分
MAOHAOH EQU 35H ;:
HOURL EQU 36H ;时
HOURH EQU 37H ;时
;*****************************日期部分***************************
DAYL EQU 40H ;日个
DAYH EQU 41H ;日十
HENL EQU 42H ;-
MONTHL EQU 43H ;yue
MONTHH EQU 44H ;yue
HENH EQU 45H ;-
YEARO EQU 46H ;年
YEART EQU 47H
YEARS EQU 48H
YEARF EQU 49H
TEMP EQU 50H ;用做存储单元显示子程序(DISPLAY)里用到
BIJIAO EQU 51H ;加一子程序(JIAYI)中用到
ZDRQO EQU 55H ;中断加一程序中用到
ZDRQT EQU 56H ;中断加一程序中用到
ZDRQS EQU 57H ;中断加一程序中用到
ZDRQF EQU 58H ;中断加一程序中用到
DIZHI EQU 59H ;键盘(JIANPAN)子程序里用到
NZBZ BIT 60H ;定时标志位在(闹钟开关部分)
;38H到3FH没用到
BSCSBZ BIT 39H ;报时次数转换标志 (BSCS)里用到
BSCSCC EQU 3AH ;报时次数存储 (BSCS)里用到
ZDBSBZ BIT 3BH ;整点报时标志 (SSBS)里用到
ZMBSBZ BIT 3CH ;整秒闪烁标志 (SSBS)里用到
BSKGBZ BIT 3DH ;报时开启标志 (BSKG)里用到
XKQHBZ BIT 3EH ;显示开启关闭标志 (XIANKONG)里用到
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP ZD
ORG 0030H
MAIN: MOV SP,#60H ;给堆栈指针赋初值
MOV 30H,#05H ;秒
MOV 31H,#05H ;秒
MOV 32H,#3AH ;:
MOV 33H,#09H ;分
MOV 34H,#05H ;分
MOV 35H,#3AH ;:
MOV 36H,#03H ;时
MOV 37H,#01H ;时
;*****************************日期部分***************************
MOV 40H,#09H ;日个
MOV 41H,#02H ;日十
MOV 42H,#2DH ;-
MOV 43H,#09H ;yue
MOV 44H,#00H ;yue
MOV 45H,#2DH ;-
MOV 46H,#09H ;年
MOV 47H,#09H
MOV 48H,#09H
MOV 49H,#02H
CLR P2.5 ;闹钟
CLR P2.6 ;整点报时
MOV 03H,#00H ;闹钟分个位
MOV 04H,#00H ;闹钟分十位
MOV 06H,#04H ;闹钟时个位
MOV 07H,#01H ;闹钟时十位
;CLR P1.5
;CLR P1.4
MOV B,#20
MOV TMOD,#01H ;定时器工作方式1
MOV TH0,#4CH
MOV TL0,#08H
SETB ET0 ;允许T0中断
SETB EA ;总中断开放
LCALL LCDRESET ;初始化LCD
LCALL DISPSTART ;调用显示初始状态
SETB TR0 ;开启定时器
CLR NZBZ ;闹钟开启关闭标志
CLR BSKGBZ ;报时开启关闭标志
CLR XKQHBZ ;显示开启关闭标志
LOOP: LCALL JIANPAN ;按键子程序
LCALL DISPLAY ;显示子程序
LCALL NZBF ;NAOZHONG BUFENG
LCALL NZBJ ;NAOZHONG BIJIAO
LCALL BSKG ;BAOSHIKAIGUAN
LCALL BSCS ;BAOSHICISHU
LCALL SSBS ;闪烁报时
SJMP LOOP
;==============================中断加一程序===================================
ZD: PUSH ACC
MOV TH0,#4CH
MOV TL0,#08H
DJNZ B,ZDEND
MOV B,#20
INC SECONTL
SETB ZMBSBZ
MOV A,SECONTL
CJNE A,#0AH,ZDEND
MOV SECONTL,#00H
INC SECONTH
MOV A,SECONTH
CJNE A,#06H,ZDEND
MOV SECONTH,#00H
INC MINIUTL
MOV A,MINIUTL
CJNE A,#0AH,ZDEND
MOV MINIUTL,#00H
INC MINIUTH
MOV A,MINIUTH
CJNE A,#06H,ZDEND
MOV MINIUTH,#00H
INC HOURL
SETB BSCSBZ
SETB ZDBSBZ
MOV A,HOURL ;24小时的判断
CJNE A,#04H,ZDF
MOV A,HOURH
CJNE A,#02H,ZDEND
MOV HOURL,#00H
MOV HOURH,#00H
LCALL ZDRQ
SJMP ZDEND
ZDF: CJNE A,#0AH,ZDEND
MOV HOURL,#00H
INC HOURH
ZDEND: POP ACC
RETI
;日期部分
ZDRQ: PUSH ACC
INC DAYL
;判断天数28,30,31部分
MOV A,MONTHH ;用于判断月份时为31天30天28天
CJNE A,#01H,LL
MOV 55H,#0AH ;存放月份的十位转化为个位是0AH
MOV A,MONTHL
ADD A,55H ;月分高低相加用于查表
SJMP LL3
LL: MOV A,MONTHL
ADD A,MONTHH
LL3: MOV 56H,A ;存放相加后的月份数据
MOV DPTR,#TAB5
MOVC A,@A+DPTR ;查十位和天数的十位比较
MOV 57H,A
MOV A,56H
MOV DPTR,#TAB6 ;查个位和天数的个位比较
MOVC A,@A+DPTR
MOV 58H,A
MOV A,DAYH
CJNE A,57H,LL2
MOV A,DAYL
CJNE A,58H,LL2
MOV DAYH,#00H
MOV DAYL,#01H
SJMP LL4
LL2: MOV A,DAYL
CJNE A,#0AH,ZDRQEND
MOV DAYL,#00H
INC DAYH
MOV A,DAYH ;比较天数是否要进位
CJNE A,57H,ZDRQEND
MOV A,DAYL
CJNE A,58H,ZDRQEND
MOV DAYH,#00H
MOV DAYL,#01H
;月份和年份
LL4: INC MONTHL
MOV A,MONTHL
CJNE A,#03H,ZDRQ1 ;用于判断月份时为12月时进位
MOV A,MONTHH
CJNE A,#01H,ZDRQ1
MOV MONTHL,#01H ;天数符合要求
MOV MONTHH,#00H
SJMP ZDRQ2
ZDRQ1: CJNE A,#0AH,ZDRQEND
MOV MONTHL,#00H
INC MONTHH
SJMP ZDRQEND
ZDRQ2: INC YEARO ;年的加一
MOV A,YEARO
CJNE A,#0AH,ZDRQEND
MOV YEARO,#00H
INC YEART ;年的进位
MOV A,YEART
CJNE A,#0AH,ZDRQEND
MOV YEART,#00H
INC YEARS
MOV A,YEARS
CJNE A,#0AH,ZDRQEND
MOV YEARS,#00H
INC YEARF
MOV A,YEARF
CJNE A,#0AH,ZDRQEND
MOV YEARF,#00H
ZDRQEND:
POP ACC
RET
;液晶初始化
;========================初始化程序=======================================
LCDRESET: ;初始化程序
LCALL DELAY5MS ;延时15MS
LCALL DELAY5MS
LCALL DELAY5MS
MOV A,#38H ;显示模式设置(不检测忙信号)
LCALL LCDWCN ;共三次
LCALL DELAY5MS
MOV A,#38H
LCALL LCDWCN
LCALL DELAY5MS
MOV A,#38H
LCALL LCDWCN
MOV A,#38H ;显示模式设置(以后均检测忙信号)
LCALL LCDWC
MOV A,#08H ;显示关闭
LCALL LCDWC
MOV A,#01H ;显示清屏
LCALL LCDWC
MOV A,#06H ;显示光标移动设置
LCALL LCDWC
MOV A,#0CH ;显示开及光标设置
LCALL LCDWC
RET
;==============================写指令===================================
LCDWC: ;送控制字子程序(检测忙信号)
LCALL WAITIDLE
;******写指令*******;送控制字子程序(不检测忙信号)
LCDWCN: CLR RSPIN ;RS=0 RW=0 E=高脉冲
CLR RWPIN
MOV P0,A
SETB EPIN ;(
NOP ;给高电平脉冲
CLR EPIN ;)
RET
;==========================写数据=======================================
LCDWD: ;写字符子程序
LCALL WAITIDLE
SETB RSPIN ;RS=1 RW=0 E=高脉冲
CLR RWPIN
MOV P0,A
SETB EPIN
NOP
CLR EPIN
RET
;===============================等待控制器空闲==================================
WAITIDLE:
PUSH ACC ;正常读写操作之前必须检测LCD控制器状态
MOV P0,#0FFH
lcall DELAY5MS ;4566666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
CLR RSPIN ;RS=0 RW=1 E=高电平
SETB RWPIN
SETB EPIN
lcall DELAY5MS ;465555546465464654648791313848946113134849845461313579641613131354649498
WTD_PA: NOP ;DB7: 0 LCD控制器空闲
JB P0.7,WTD_PA ; 1 LCD控制器忙
CLR EPIN
POP ACC
RET
;***********************初始状态子程序*******************************
DISPSTART: ;显示初始状态子程序
PUSH ACC
MOV A,#80H
LCALL LCDWC
MOV DPTR,#TAB ;显示字符
DISP1: CLR A
MOVC A,@A+DPTR
JZ DISP2
LCALL LCDWD
INC DPTR
SJMP DISP1
DISP2: MOV A,#0C0H
LCALL LCDWC
MOV DPTR,#TAB1
DISP3: CLR A
MOVC A,@A+DPTR
JZ DISP_END
LCALL LCDWD
INC DPTR
SJMP DISP3
DISP_END:
POP ACC
RET
;==========================显示子程序=======================================
DISPLAY:PUSH PSW
PUSH ACC
SETB RS0
CLR RS1
MOV A,#85H
LCALL LCDWC
MOV R1,#38H ;第一行显示数据存储单元的启始地址
MOV TEMP,#30H ;第一行显示数据存储单元的结束地址
MOV R6,#2
PLAY: DEC R1
CJNE R1,#32H,PLY ;判断是否为冒号位
MOV A,MAOHAOL ;是者送冒号的ACSI码
SJMP PLAY1
PLY: CJNE R1,#35H,PLY1
MOV A,MAOHAOH
SJMP PLAY1
PLY1: CJNE R1,#42H,PLY2 ;判断是否为横杠的位置
MOV A,HENL ;是者送横杠的ACSI码
SJMP PLAY1
PLY2: CJNE R1,#45H,PLY3
MOV A,HENH
SJMP PLAY1
PLY3: MOV A,@R1 ;用查表法送要显示的数据
MOV DPTR,#TAB2
MOVC A,@A+DPTR
PLAY1: LCALL LCDWD
MOV A,R1
CJNE A,TEMP,PLAY ;判断第一行是否显示好了
MOV A,#0C5H
LCALL LCDWC
MOV R1,#4AH ;第二行显示数据存储单元的启始地址
MOV TEMP,#40H ;第二行的结束地址
DJNZ R6,PLAY ;R6为0时两行显示结束
POP ACC
POP PSW
RET
;************************按键子程序************************
JIANPAN:clr rs0 ;键盘子程序
setb rs1 ;键盘子程序
JB WEIXUAN,JIAN_ZEND ;设置键的判断
LCALL DELAY5MS
JB WEIXUAN,JIAN_ZEND
PUSH ACC
JNB WEIXUAN,$
;MOV A,#0FH ;开启光标闪烁设置
;LCALL LCDWCN
fah: JNB NZBZ,JPNZSJ ;为“1”闹钟 为“0”时钟
LCALL JPXS
MOV R4,#86H ;闹钟设定时间R4存放显示位地址
MOV R5,#2 ;闹钟设定时间第一行第二行•••••位置改变次数
MOV DIZHI,#8CH ;闹钟设定时间第一行结束地址
MOV R0,#06H
SJMP GIVED
JPNZSJ: CLR TR0
MOV R4,#86H ;R4存放显示位地址
MOV R5,#2 ;第一行第二行•••••位置改变次数
MOV DIZHI,#8DH ;第一行结束地址
MOV R0,#36H
GIVED: MOV A,#0FH ;开启光标闪烁设置555555555555555555555555555555555555555555555
LCALL LCDWCN
MOV A,R4
LCALL LCDWC
UPONE: JB FANHUI,UPtwo ;返回键的判断
LCALL DELAY5MS
JB FANHUI,UPtwo
JNB FANHUI,$
SJMP GOBACK
JIAN_ZEND:SJMP JIAN_END ;中继跳转6666666666666666666666666666666666666666666666666666666666666666
UPtwo: JB JIAJIAN,IAM ;加一键的判断
LCALL DELAY5MS
JB JIAJIAN,IAM
JNB JIAJIAN,$
LCALL JIAYI ;调用按键加一子程序
;MOV A,#0FH ;开启光标闪烁设置555555555555555555555555555555555555555555555
;LCALL LCDWCN
IAM: JB JIANJIAN,IAM22 ;减一键的判断
LCALL DELAY5MS
JB JIANJIAN,IAM22
JNB JIANJIAN,$
LCALL JIANYI ;调用按键减一子程序
AJMP GIVED
IAM22: JB WEIXUAN,UPONE ;位选键的判断
LCALL DELAY5MS
JB WEIXUAN,UPONE
JNB WEIXUAN,$
DEC R0
INC R4
LCALL JIAN ;调用位选比较程序
CJNE r4,#88H,JJ11
DEC R0
INC R4
SJMP JJ22
JJ11: CJNE r4,#8BH,JJ22
DEC R0
INC R4
JJ22: MOV A,R4
CJNE A,DIZHI,GIVED
JB NZBZ,fah ;为“1”闹钟 为“0”时钟
MOV R4,#0C5H
MOV DIZHI,#0CFH
MOV R0,#49H
DJNZ R5,GIVED
LJMP fah
GOBACK: MOV A,#0CH ;关闭光标闪烁设置
LCALL LCDWCN
POP ACC
JIAN_END:
SETB TR0
RET
;1111111111111111111111111111111111111111111111111111111111111111111111111111
;11111111111111111111111111111111111111111111111111111111111111111111111111
JPXS: MOV A,#85H
LCALL LCDWC
MOV R1,#08H ;第一行显示数据存储单元的启始地址
JPXS_LL:DEC R1
CJNE R1,#05H,JPXS_LP
MOV A,#3AH
SJMP JPXS_LY
JPXS_LP:MOV A,@R1 ;用查表法送要显示的数据
MOV DPTR,#TAB2
MOVC A,@A+DPTR
JPXS_LY:LCALL LCDWD
CJNE R1,#03H,JPXS_LL
RET
;111111111111111111111111111111111111111111111111111111111111111111111
;111111111111111111111111111111111111111111111111111111111111111111111
;************************位选比较控制程序************************
; 在调整时间时这几位是符号冒号和横杠的数据
;在这几位时跳过到下一位
JIAN: CJNE R4,#87H,JIAN5
DEC R0
INC R4
SJMP JIANEND
JIAN5: CJNE R4,#8AH,JIAN1
DEC R0
INC R4
SJMP JIANEND
JIAN1: CJNE R4,#0C9H,JIAN2
DEC R0
INC R4
SJMP JIANEND
JIAN2: CJNE R4,#0CCH,JIANEND
DEC R0
INC R4
JIANEND:RET
;************************按键加一子程序********************
JIAYI: INC @R0
CJNE @R0,#0AH,JIAYI_END
MOV @R0,#0
CJNE R4,#86H,JIAYI55
SJMP JIAYI33
JIAYI55:CJNE r4,#89H,JIAYI11
SJMP JIAYI33
JIAYI11:CJNE r4,#8CH,JIAYI22
SJMP JIAYI33
JIAYI22:CJNE R0,#30H,JIAYI_END
JIAYI33:INC R0
INC @R0
CJNE @R0,#06H,JIAYI44
MOV @R0,#0
JIAYI44:DEC R0
JIAYI_END:MOV A,#0CH ;开启光标闪烁设置
LCALL LCDWCN
JNB NZBZ,JIAYI88 ;为“1”闹钟 为“0”时钟
LCALL JPXS
SJMP JIAYI99
JIAYI88:LCALL DISPLAY ;显示子程序
JIAYI99: RET
;%%%%%%%%%%%%%%%%%%减一%%%%%%%%%%%%%%%%%%%%%%%%
JIANYI: DEC @R0
CJNE @R0,#00H,JIANYI_END
MOV @R0,#9
CJNE R4,#86H,JIANYI55
SJMP JIANYI33
JIANYI55:CJNE r4,#89H,JIANYI11
SJMP JIANYI33
JIANYI11:CJNE r4,#8CH,JIANYI22
SJMP JIANYI33
JIANYI22:CJNE R0,#30H,JIANYI_END
JIANYI33:INC R0
DEC @R0
CJNE @R0,#0FFH,JIANYI44
MOV @R0,#5
JIANYI44:DEC R0
JIANYI_END:MOV A,#0CH ;开启光标闪烁设置
LCALL LCDWCN
JNB NZBZ,JIANYI88 ;为“1”闹钟 为“0”时钟
LCALL JPXS
SJMP JIANYI99
JIANYI88: LCALL DISPLAY ;显示子程序
JIANYI99: RET
;******************************闹钟开关部分************************
NZBF: JB NZKG,NZBF_END
LCALL DELAY5MS
JB NZKG,NZBF_END
JNB NZKG,$
CPL NZBZ
JB NZBZ,NZBF_LL
MOV A,#01H ;显示清屏
LCALL LCDWC
CLR P2.5
LCALL DISPSTART ;调用显示初始状态
LCALL DISPLAY ;调用显示初始状态
JB BSKGBZ,NZBF_LP ; |
SJMP NZBF_END ; |
NZBF_LP:MOV A,#8FH ;报时标志显示位置 ; |
LCALL LCDWC ; |保护报时标志在清屏是不被误清
MOV A,#25H ;显示报时标志 ; |
LCALL LCDWD ; |
SJMP NZBF_END ; |
NZBF_LL:MOV A,#8EH ;闹钟标志显示位置
LCALL LCDWC
MOV A,#26H ;显示闹钟标志
LCALL LCDWD
NZBF_END:RET
;******************************闹钟比较部分************************
NZBJ: JB NZBZ,NZBJ_LL
SJMP NZBJ_END
NZBJ_LL:MOV A,07H
CJNE A,37H,NZBJ_END
MOV A,06H
CJNE A,36H,NZBJ_END
MOV A,04H
CJNE A,34H,NZBJ_END
MOV A,03H
CJNE A,33H,NZBJ_END
SETB P2.5
NZBJ_END:RET
;***************报时开关********************
BSKG: JB FANHUI,BSKG_END
LCALL DELAY5MS
JB FANHUI,BSKG_END
JNB FANHUI,$
CPL BSKGBZ
JB BSKGBZ,BSKG_LL
MOV A,#01H ;显示清屏
LCALL LCDWC
CLR P2.6
LCALL DISPSTART ;调用显示初始状态
LCALL DISPLAY ;调用显示
JB NZBZ,BSKG_LP ; |
SJMP BSKG_END ; |
BSKG_LP:MOV A,#8EH ; |
LCALL LCDWC ; |保护闹钟标志在清屏是不被误清
MOV A,#26H ; |
LCALL LCDWD ; |
SJMP BSKG_END ; |
BSKG_LL:MOV A,#8FH ;报时标志显示位置
LCALL LCDWC
MOV A,#25H ;显示报时标志
LCALL LCDWD
BSKG_END:RET
;*********************报时次数********************
BSCS: JNB BSKGBZ,BSCS_END
JNB BSCSBZ,BSCS_END
MOV A,37H
CJNE A,#01H,BSCS_LL
MOV A,#0AH
SJMP BSCS_LP
BSCS_LL:CJNE A,#02H,BSCS_LP
MOV A,#14H
BSCS_LP:ADD A,36H
RL A
MOV BSCSCC,A
CLR BSCSBZ
BSCS_END: RET
;**********************闪烁报时********************************
SSBS: JNB BSKGBZ,SSBS_END
JNB ZDBSBZ,SSBS_END
JNB ZMBSBZ,SSBS_END
CPL P2.6
CPL P2.7
CLR ZMBSBZ
DJNZ BSCSCC,SSBS_END
CLR ZDBSBZ
CLR P2.6
SSBS_END:RET
;************************延时子程序(5MS)************************
DELAY5MS:
PUSH PSW
SETB RS0
SETB RS1
MOV R1,#25 ;延时子程序(5MS)
DL5_PA: MOV R2,#100
DJNZ R2,$
DJNZ R1,DL5_PA
POP PSW
RET
TAB: DB "TIME:",00h
TAB1: DB "DATE:",00h
TAB2: DB "01234567891"
TAB3: DB 0AH,06H,00H,0AH,06H,00H,0AH,03H ;用于比较调整时间时的比较
TAB4: DB 0AH,04H,00H,0AH,02H,00H,0AH,0AH,0AH,0AH;用于调整日期时的比较
TAB5: DB 00H,03H,02H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H;用于天数十位比较
TAB6: DB 00H,02H,09H,02H,01H,02H,01H,02H,02H,01H,02H,01H,02H;用于天数个位比较
END
基于单片机的数字时钟设计方案
数字钟〔★〕这里用了两种编写方法(即汇编语言与C语言)(1. 开机时,显示12:00:00的时间开始计时;(2. P0.0\/AD0控制“秒”的调整,每按一次加1秒;(3. P0.1\/AD1控制“分”的调整,每按一次加1分;(4. P0.2\/AD2控制“时”的调整,每按一次加1个小时;2. 电路...
单片机数字钟如何设置两个起闹时间并同时开启闹钟功能
1、首先在单片机数字钟待机界面依次打开手机应用程序。2、其次点击时钟进入闹铃设置页面。3、最后选择右侧+创建新闹铃级可以设置两个闹钟。
急求基于单片机AT89C51的多功能数字电子钟的汇编程序,高手进!~_百度知...
用89C51控制3个HC595,前两个595接8段数码显示管,显示“0”~“9”每秒跳动一次.第3个HC595接8个LED灯,每隔1秒闪烁1次.include<at89x52.h> include<intrins.h> define uchar unsigned char define uint unsigned int uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90...
用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设...
其实不用定时中断也能实现功能:include<reg51.h> 主函数 unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};定义0-9数组 unsigned int tmp;定义变量 void delay(unsigned int xms)定义延时函数 {unsigned int j,i;for(i=0;i<xms;i++)for(j=0;j<100...
单片机数字钟,开机时显示12:00:00
1、编写代码:使用所选单片机的编程语言(如C、C++、Python等),编写程序代码来实现数字钟功能。可以使用定时器来计时,并在开机时将显示设置为12:00:00。2、显示控制:连接合适的显示设备(如7段LED显示器、LCD显示屏等),通过控制单片机的输出端口,将正确的数字显示在显示器上。3、初始化设置:...
基于单片机51系列及DS1302时钟芯片数字电子钟的制作。求电路总原理图...
这是1602电路,和时钟电路。元件基本差不多。电路如图 include <intrins.h> define uchar unsigned char define uint unsigned int sbit ds1302_RST =P2^0;sbit ds1302_IO =P2^1;sbit ds1302_SCLK=P2^2;sbit ACC0=ACC^0;sbit ACC7=ACC^7;sbit A1=P3^0;sbit A2=P3^1;sbit A3=P3^2;...
基于单片机的数字时钟设计开题报告
sbit A1=P2^0;sbit A2=P2^1;sbit A3=P2^2;sbit A4=P2^3;sbit beep=P1^4;unsigned char Shiwan;unsigned char Wanwei;unsigned char Qianwei;unsigned char Baiwei;unsigned char Shiwei;\/\/定义十位 unsigned char Gewei,Naoling1,Naoling2,Naoling3,Naoling4; \/\/定义个位 static ...
我正在写一篇基于AT89C52单片机的数字时钟设计。下面是我的论文后面的...
具体是多少时间需要综合考虑,比如你要处理定时闹钟,每1秒钟处理一次即可,如果要处理按键,这个时间可以提高到100ms,这样按键时不会有明显的迟顿。综合考虑会一般取最短的一个延时,控制主循环的延时就可以。以我的经验,你的系统只需要开一个比较短的定时中断进行显示扫描,并在定时中断处理过程中顺便...
请问一个基于MSP430单片机的数字时钟用的3.2768MHZ的晶振,为什么用3.2768...
应该是32.768KHz吧?它正常运行时可以使用内部DCO产生1M至16M的频率,也可以外接6M、12M的晶振(这个频率常用在8051上,因为它内部有6分频,所以算出来的主频是整数)。但作为数字时钟时适合32.768K,有点包括:1、这个频率的晶体广泛用于电子钟上,货源稳定,价格低,质量可靠 2、这个频率相对于1M以上...
菜鸟一个,用单片机做了个数字钟,带语音播报,问题:语音播报的时候,时 ...
别用while(xx==1);在那傻等。可以使用中断或者扫描法检测一段语音是否放完。发送指令很快,卡进程的是等语音放完这段时间,而语音芯片这段时间内并不需要单片机干涉。放完后自然会给出一个状态的,这也是每个语音芯片都有一个状态端,可能是INH,BUSY等,但是肯定会有的。