经典方案:单片机+DS1302时钟芯片+LCD1602液晶模块
单片机可以用51单片机,AT89S52即可,怎么设计,百度一下“DS1302 LCD1602”,keil C程序+Proteus仿真电路基本上都有下载。
学生毕业设计开题报告书
课题名称 基于单片机的电子时钟设计
姓名 xx
学号 xx
班级 信息xx班
专业 电子信息工程
院系 信息工程学院
指导教师 xxx
一、选题依据
1 课题的目的
社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子时钟发展并且投入市场得到广泛应用。
2 课题意义
二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。电子时钟的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子时钟的开发是国家之所需,社会之所需,人民之所需。 3 课题研究的背景 随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子时钟采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用STC89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
二、基本内容及解决的主要问题
1 本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:
(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。
(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。
(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。
(4)根据硬件电路图,在开发板上完成器件的焊接。
(5)根据设计的硬件电路,编写控制STC89C52芯片的单片机程序。
(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。
(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户 *** 作等因素。
2 设计报告内容要求:
(1)目的。
(2)设计指标。
(3)画出设计的原理框图,并要求说明该框图的工作过程及每个模块的功能。
(4)元器件清单。
(5)设计制作的进程考虑时钟及控制信号关系、测试、验证的顺序写出工作进程。
(6)画出各功能模块的电路图,加上原理说明(如2、5进制到10进制转换,10进制到6进制转换的原理,个位到十位的进位信号选择和变换等)。
(7)画出总布局接线图(集成块按实际布局位置画,计数器到译码器的数据线、译码器到数码管的数据线简化画法但集成块的引脚须按实际位置画,并注明名称。)
(8)描述设计制作的数字钟的运行结果和 *** 作。
(9)总结:设计过程中遇到的问题及解决办法,课程设计过程体会,对课程设计内容、方式、要求等各方面的建议。
3技术路线
1)收集、查阅相关技术资料,消化吸收,融会贯通,形成多种方案,设想、并分析选择出较合理的方案。
2)对方案进行分析对比作出选择,选择的进行设计。
3)用proteus绘出工作原理图,设计出程序流程图。
4)运用软件工程设计理论及而向对象软件设计方法进行需求分析和详细设计。采用标准化程度高、程序可移植好的语言,以使所开发的软件将来能够移植到不同的硬件环境下运行。
5)用统一标准的格式书写原程序清单,改进程序的可读性。
4 实验仪器、工具:
1)5V电源(或实验箱)4个人合用1个。
2)四连面包板1块。
3)示波器2个(每班)
4)万用表5个(每班)。
5)镊子1把。
6)剪刀1把。
5 实验器件:
1)网络线2米/人。
2)共阴八段数码管6个。
3)CD4511集成块6块。
4)CD4060集成块1块。
5)74HC390集成块3块。
6)74HC51集成块1块。
7)74HC00集成块4块。
8)74HC30集成块1块。
9)10MΩ电阻5个。
10)500Ω电阻14个。
11)30p电容2个。
12)32768k时钟晶体1个。
13)蜂鸣器10个(每班)。
三、设计步骤与进度安排
(一)、功能模、设计指标:
1显示时、分、秒。
2可以24小时制或12小时制。
3具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。校时时钟源可以手动输入或借用电路中的时钟。
4具有正点报时功能,正点前10秒开始,蜂鸣器1秒响1秒停地响5次。
5为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。
(二)、设计要求:
1画出总体设计框图,以说明数字钟由哪些相对独立的块组成,标出各个模块之间互相联系,时钟信号传输路径、方向和频率变化。并以文字对原理作辅助说明。
2设计各个功能模块的电路图,加上原理说明。
3选择合适的元器件,在面包上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在充分电路正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
4在验证各个功能模块基础上,对整个电路的元器件和布线,进行合理布局,进行整个数字钟电路的接线调试。 制作要求: 自行装配、接线和调试,并能检查和发现问题,根据原理、现象和测量的数据分析问题所在,加以解决。学生要解决的问题包括元器件和面包板故障引起的问题。
(三)、设计报告内容要求:
1目的。
2设计指标。
3画出设计的原理框图,并要求说明该框图的工作过程及每个模块的功能。
4元器件清单。
5设计制作的进程,考虑时钟及控制信号的关系、测试、验证的顺序,写出自己的工作进程。
6画出各功能模块的电路图,加上原理说明(如2、5进制到10进制转换,10进制到6进制转换的原理,个位到十位的进位信号选择和变换等)。
7画出总布局接线图(集成块按实际布局位置画,关键的连接单独画出,计数器到译码器的数据线、译码器到数码管的数据线可以简化画法,但集成块的引脚须按实际位置画,并注明名称。)
8描述设计制作的数字钟的运行结果和 *** 作。
9总结。 设计过程中遇到的问题及解决办法,课程设计过程体会,对课程设计内容、方式、要求等各方面的建议。
四、方法、措施
1本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:
(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。
(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。
(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。
(4)根据硬件电路图,在开发板上完成器件的焊接。
(5)根据设计的硬件电路,编写控制STC89C52芯片的单片机程序。
(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。
(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户 *** 作等因素。
2方案的论证与选择
方案一:采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形显示多样清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费且价格也相对较高,所以也不用此种作为显示。
方案三:采用LCD液晶显示屏 如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器价格较高且驱动电电路复杂,使用起来有一定的难度。综上所述,LED数码管比较方便,但用液晶能更好的显示数据时间,所以扩展功能将数码管换做液晶。
3设计经验总结:
(1)要求学生根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。
(2)容易出现故障为接触不良。
a) 集成块引脚方向预先弯好对准面包板的金属孔,再小心插入。
b)导线的剥线长度与面包板的厚度相适应(比板的厚度稍短)。
c)导线的线部分不要露在板的上面,以防短路。
d)导线要插入金属孔中央。
(3)按照原理图接线时首先确保可靠的电源和接地。
(4)注意芯片的控制引脚必须正确接好。
(5)检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。
(6)注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。
(7)为了便于测试,可将2Hz信号直接输入到各级计数器。
(8)接校时电路时可接模拟信号输入(如1Hz和2Hz)测试输出信号的切换正确后,再将秒进位和分进位信号接到校时电路,再接校时电路输出到分计数器和时计数器。
(9)从较时电路接入信号时,必须将原进位信号拔掉。
4选题研究的主要内容:
(1)系统设计主要包括显示部分和数字时钟模块设计、显示接口芯片的选择、串口通讯芯片的选择、电源模块的选择。
(2)系统软件设计
(3) 系统调试和实验结果的测试
五、设计成果
在整个设计过程中,硬件方面主要设计了STC89C52单片机的最小系统、DS1302接口电路、DS18B20接口电路、闹钟及LCD显示;软件方面借助各个渠道的资料,主要设计了阳历数据读取程序、阳历转阴历程序、温度采集程序、闹铃程序以及LCD显示程序;系统的调试主要是通过一块STC89C52开发板,再借助于Keil、STC以及少许自己搭建的外围电路实现的;再此过程中,分步调试时显示出了阳历的日期及时间,还有实时温度,集中调试时没有达到预
期效果。此万年历具有读显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
六、主要参考文献[3]
[1]苏平单片机的原理与接口技术[M]北京:电子工业出版社,2006:1-113
[2]左金生电子与模拟电子技术[M]北京:电子工业出版社,2004:105-131
[3]马忠梅,籍顺心单片机的C语言应用程序设计[M]北京航空航天大学出版社, 2001年
[4]楼然苗单片机课程设计指导[M] 北京:北京航空航天大学出版社,20077
[5]朱思荣51单片机实现公历与农历、星期的转换[Z]当当电子网
[6]李广弟 单片机原理及应用[M] 北京航空航天大学出版社,2004年 [7]王越明电子时钟的设计[J]黑龙江科技信息,2004年
备注:
[1] 课题类型:产品设计类、工艺设计类、方案设计类等。
[2] 课题来源:教学科研、生产实际、社会实际、模拟等。
[3] 期刊文献:编号 作者题名[J]刊名,年,卷(期):起止页码 图书文献:编号 著者书名[M]出版地:出版社,出版年:起止页码
1、闹钟设置界面。
2、存储响闹时间。
3、时间中断,设置读取时间的flag
4、主程序中判断flag设置,读取时钟。
5、比较当前时钟在响闹时间范围内,输出闹铃(如果是蜂鸣器,给他一个输出频率的信号)。
一、电子闹钟怎么设置
电子闹钟是一种电子时钟,利用秒脉冲做信号源构成数字钟,显示秒、分、时,并具备闹钟功能。电子闹钟调时间的方法根据不同的电子钟有不同的方法,大致有以下三种:
方法一
1、先按一下“调整”按钮,数字开始闪动。
2、想调哪一个数就多按几次,按到的这个数就会闪动。
3、再用“上调”、或者“下调”来调整。
4、在正常的显示下,按一下“闹钟”按钮,会在“开”和“关”之间转换。
5、按一下“喇叭”按钮,会在“开”和“关”的功能切换。
6、最后按复位。
方法二
1、左上角按键:LIGH,右上角按键:START,左下角按键:MOD,右下角按键:RESET。
2、按一次MODE进入秒,这个时候也就需要再按一次START开始计时,再按START停止计时。
3、按二次MODE进入闹钟调,按RESET更改选项,按START调整时间。
4、按三次MODE进入时间日期星期调整;按ST/SP调整——按一次RESET,按START调整——按二次RESET,按START调整小时——按三次RESET,按START调整日——按四次RESET,按START调整月——按五次RESET,按START调整星期。
方法三
1、先按一下“设置”键进入时间设置状态。
2、此时年份“闪烁”,可按“上调”或“流水(下调)”键修改年份。
3、修改好后按“设置”键将闪烁位移到公历“月”,按“上调”或“流水(下调)”键修改月份。
4、同样的方法可对日、时、分、秒进行设置。
二、数字电子钟有什么特点
1、优点
与传统的机械钟先比,电子钟性能更优异。电子钟的优点是,由于电子钟采用数字集成电路的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,电子钟用于定时自动报警、按时自动打铃、时间程序自动控制、定时广播及自动控制等各个领域。
2、缺点
因为电子钟毕竟是电子产品,电子产品都有辐射,不过电子钟危害极低,几乎对人体构不成什么危害,不像手机的辐射那么大。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;20h1半点标示位
;20H2闹钟设置中标示,为了显示区别用
;20H3闹钟设置时间CHECK到,使能标志位
;20H5开/关闹钟设置中标示;
;20H6闹钟1开关标志位
;20H7闹钟2开关标志位
;psw5用来做显示开关标志位
;21,22,23,24这里设置第一个闹钟的时间
;25,26,27,28这里设置第二个闹钟的时间
;29H
;P0口输出数码管段码,
;P2口 输出位选信号
;
;70H存放P10--3按钮值,
;71H--78H存放当前系统定时时间;
;78H 77H 76H 75H 74H 73H 72H 71H
; 星期 小时 分钟 秒钟
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ts equ 24h ;这里设置`24小时周期制
trr equ #0bbh ;这个是温度,晶振等的时间补偿值,
org 0000h ;定时太慢此值调大,定时太快调小;
jmp main
;org 0bh ;定时器0中断入口矢量
;jmp bz
org 1bh ;定时器1中断入口矢量
jmp t1int
org 0100h ;主程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;主程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main:clr p30; ;关继电器
mov sp,#30h
mov r3,#20
mov tmod,#10h
;mov tl0,#06h ;定时器1,方式1,定时 50 MS;
;mov th0,#06h
mov tl1,#0b0h
mov th1,#3ch
mov ie,#88h ;开定时器1中断
;mov 65h,#5
; mov 66h,#100
;mov 64h,#4
;clr psw5
clr p30
setb pt1 ;设置T1为高优先级中断
;setb tr1
clr tr1 ;开启T1中断
acall send ;71h--78h 清零;
acall send1 ;20h--29h 清零;
dd: acall daa ;进行十进制调整71H-79H
;acall compare ;第一闹钟
;acall compare1 ;第二闹钟 设置值
;acall sound
acall disp ;数码管显示,78H--71H分别对应着8个数码管显示
acall key_scanf ;按钮控制
acall time_adj ;时间调整
acall lasttime ;调用上一次的设置值为当前定时值
;acall alarm1_set ;设置定时开/关闹钟
ajmp dd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;调用上次值为设置时间
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lasttime:push acc
mov a,70h
jnb acc2,return1
clr p30; 紧急暂停按钮,按下后暂停,并把上次设定值恢复
clr tr1
mov 73h,21h
mov 74h,22h
wait7:acall disp
acall key_scanf
mov a,70h
jnb acc0,wait7
mov 71h,#0
mov 72h,#0
mov 79h,#0
mov tl1,trr
mov th1,#3ch
mov r3,#20
setb tr1
setb p30
return1:pop acc
ret
daa: push acc ;对当前系统时间进行十进制调整
mov 71h,79h
mov r1,#71h
cjne @r1,#10,s2
mov 71h,#0h
mov 79h,#0
inc 72h
mov r1,#72h
cjne @r1,#6,s2
mov 72h,#0h
dec 73h
mov r1,#73h
cjne @r1,#255,s2
dec 74h
mov 73h,#9
s1: pop acc
ret
s2: mov r1,#73h
cjne @r1,#0,s1
mov r1,#74h
cjne @r1,#0,s1
clr p30
clr tr1
sjmp s1
h_half: ;半点CHECK
mov r1,#73h
mov a,74h
swap a
xchd a,@r1
cjne a,#29h,o25 ;CHECK 当前时间是否为29分钟
xchd a,@r1
mov r1,#71h
mov a,72h
swap a
xchd a,@r1
cjne a,#59h,o25 ;CHECK 当前时间为59秒
setb tr0 ;启动T0
setb 20h1 ;enable 半点flag bit
o25: xchd a,@r1
ret
compare: ;闹钟1设置时间与当前时间比较
push acc
jnb 20h6,nequ ;闹钟1开/关标志位
mov a,73h
cjne a,21h,nequ ;分低位
mov a,74h
cjne a,22h,nequ ;分高位
mov a,75h
cjne a,23h,nequ ;小时低位
mov a,76h
cjne a,24h,nequ ;小时高位
setb 20h3 ;到闹钟设置时间,使能闹钟报警标志位
nequ:pop acc
ret
compare1: ;闹钟2设置时间与当前时间比较
push acc
jnb 20h7,nequ33 ;闹钟2开/关标志位
mov a,73h
cjne a,25h,nequ33
mov a,74h
cjne a,26h,nequ33
mov a,75h
cjne a,27h,nequ33
mov a,76h
cjne a,28h,nequ33
setb 20h3 ;到闹钟设置时间,使能闹钟报警标志位
nequ33:
pop acc
ret
sound:
acall h_half ;check 是否半点
jb 20h1,s23 ;半点则返回
jb 20h0,s23
mov r1,#73h
mov a,74h
swap a
xchd a,@r1
cjne a,#59h,s25
xchd a,@r1
mov r1,#71h
mov a,72h
swap a
xchd a,@r1
s20: cjne a,#56h,s21
ajmp s26
s21: cjne a,#58h,s22
ajmp s26
s22: cjne a,#59h,s25
setb tr0
ajmp s26
s25: xchd a,@r1
s23: ret
s26: jb 20h0,s25
setb tr0
xchd a,@r1
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T0中断服务程序,报时铃音信号输出
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bz: djnz 64h,rrr
jb 20h3,alarmsign;闹钟到点报时有效
jb 20h1,next ;半点报时
mov 64h,#4 ;05KHZ
ajmp justh
alarmsign:
mov 64h,#1; 2KHZ信号
justh:
djnz 66h,ccc
mov 66h,#100
djnz 65h,ccc ;产生1000次中断后关中断
mov 65h,#5 ;响05秒
setb 20h0
clr tr0
reti
next:mov 64h,#2 ;1KHZ信号,半点报时音
ccc: jb 20h3,cc
cpl p14 ;半点报时输出声音信号
rrr: reti
cc: cpl p14 ;闹钟报时输出声音信号
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T1中断服务程序,定时器主时钟;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
t1int:
clr ea
mov tl1,trr
mov th1,#3ch
djnz r3,sd ;2050MS=1S
mov r3,#20
;cpl p14
inc 79h
clr 20h0
clr 20h1 ;半点报时标志清零
jb 20h3,sdd ;闹钟CHECK有效与否
clr tr0 ;关T0
sd: setb ea
reti
sdd: setb tr0 ;开T0,即开闹铃声音
setb ea
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;显示子函数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dispnum1:; 显示
ajmp disp_num
disp:
push acc
;jb 20h5,dispnum1;开/关闹钟设置中界面
;jb 20h2,alarmcheck;闹钟设置时间中界面
jb psw5,closedisp
mov r2,#01h;位选通信号输出到P2口
mov r5,#2; 显示的位数循环控制
mov r0,#73h;分别取出内存76H-71H
cjne r3,#10,dot1;在小时和分之间闪烁DOT point
dot1:jnc dsp1
orl 73h,#10h
;dot1:cjne r3,#11,dsp1
;anl 73h,#0efh
dsp1:mov a,r2
;cpl a
mov p2,a
mov a,@r0
dsp2:mov dptr,#bcd
movc a,@a+dptr
mov p0,a
acall delay
mov a,r2
rl a
mov r2,a
inc r0
djnz r5,dsp1
anl 73h,#0efh
pop acc
ret
closedisp:; 关显示
acall delay
mov p0,#0ffh
mov p2,#0
pop acc
ret
;;;;;;;;;;;;;;;;;闹钟的定时设置显示
alarmcheck:
mov r2,#01h
mov r5,#2 ;两位显示22-21H对应定时设置值
mov r0,#21h
dsp21:
mov a,r2
;cpl a
mov p2,a
mov a,@r0
mov dptr,#bcd
movc a,@a+dptr
mov p0,a
acall delay
mov a,r2
rl a
mov r2,a
inc r0
djnz r5,dsp21
pop acc
ret
bcd:; 共阳接法数码管段码表
db 0c0h,0f9h,0a4h,0b0h
db 99h,92h,82h,0f8h
db 80h,90h,88h,83h
db 0c6h,0a1h,86h,8eh; 不带小数点七段
db 40h,79h,24h,30h,19h
db 12h,02h,78h,00h,10h
db 0ffh,0bfh,7fh,3fh; 带小数点七段
delay:mov r6,#4h
tm: mov r4,#0h
ee: djnz r4,ee; 延时2048US=2MS
djnz r6,tm
ret
send:mov r7,#9; 初始化设置
mov r0,#71h
mov a,#0h
ss: mov @r0,a
inc r0
djnz r7,ss
mov 78h,#1h
mov 77h,#01ah
;mov 71h,#1
;mov 72h,#2
;mov 73h,#3
;mov 74h,#4
ret
send1:; 初始化
mov r7,#10
mov r0,#20h
mov a,#0
ss1: mov @r0,a
inc r0
djnz r7,ss1
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;开/关闹钟界面显示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
disp_num:
mov p2,#0f7h
mov a,29h ;当前要 *** 作的闹钟号码
mov dptr,#bcd
movc a,@a+dptr
mov p0,a
acall delay
pop acc
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
key_scanf:; 按钮处理
push acc
mov 70h,#0
orl p1,#0fh
mov a,p1
cpl a
anl a,#07h
jz nokey1
acall daa
acall disp
mov a,p1
cpl a
anl a,#07h
jz nokey1
mov 70h,a
key_wait:; 等按钮放下
acall daa
acall disp
mov a,p1
cpl a
anl a,#07h
jnz key_wait
mov a,70h
jnb acc1,nokey1
cpl psw5
nokey1:; 无按钮
pop acc
ret
a_on_off:
jnb 29h0,iii
cpl 20h6
iii: jnb 29h1,out_2
cpl 20h7
out_2:
ajmp alarmnum
alarmnum:
setb 20h5
acall daa
acall disp
acall key_scanf
clr 20h5
mov a,70h
jb acc0,a_on_off
jb acc1,alar_adj_1
jb acc2,a_num_inc
acall numb
ajmp alarmnum
alarm1_set:
push acc
mov a,70h
jb acc1,alarmnum
alarm1_out:
clr 20h2
pop acc
ret
a_num_inc:
inc 29h
mov a,29h
anl a,#0fh
cjne a,#3,alarmnum
anl 29h,#0
ajmp alarmnum
alar_adj_1:
setb 20h2
acall daa
orl 21h,#10h
acall disp
anl 21h,#0fh
acall key_scanf
mov a,70h
jb acc1,hadj_1
jb acc2,minc_1
ajmp alar_adj_1
madj_2:
acall daa
orl 25h,#10h
acall disp
anl 25h,#0fh
acall key_scanf
mov a,70h
jb acc1,hadj_2
jb acc2,minc_2
ajmp madj_2
hadj_1:
acall daa
orl 23h,#10h
acall disp
anl 23h,#0fh
acall key_scanf
mov a,70h
jb acc1,madj_2
jb acc2,hinc_1
ajmp hadj_1
hadj_2:acall daa
orl 27h,#10h
acall disp
anl 27h,#0fh
acall key_scanf
mov a,70h
jb acc1,alarm1_out
jb acc2,hinc_2
ajmp hadj_2
minc_1:
inc 21h
mov r1,#21h
cjne @r1,#10,alar_adj_1
mov 21h,#0
inc 22h
mov r1,#22h
cjne @r1,#6,alar_adj_1
mov 22h,#0h
ajmp alar_adj_1
minc_2:
inc 25h
mov r1,#25h
cjne @r1,#10,madj_2
mov 25h,#0
inc 26h
mov r1,#26h
cjne @r1,#6,madj_2
mov 26h,#0
ajmp madj_2
hinc_1:
inc 23h
mov r1,#23h
cjne @r1,#10,ss14
mov 23h,#0
inc 24h
ss14:
mov a,24h
swap a
xchd a,@r1
cjne a,#ts,ss15
mov 23h,#0
mov 24h,#0
ajmp hadj_1
ss15:xchd a,@r1
ajmp hadj_1
hinc_2:
inc 27h
mov r1,#27h
cjne @r1,#10,sss14
mov 27h,#0
inc 28h
sss14:
mov a,28h
swap a
xchd a, @r1
cjne a,#ts,sss15
mov 27h,#0
mov 28h,#0
ajmp hadj_2
sss15:
xchd a,@r1
ajmp hadj_2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;时间调整程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
time_adj:;
clr psw5
push acc
mov a,70h
jb acc0,l1;P10调时功能键,每按一次切换一位
ajmp nokeyout
adj_out:
mov 21h,73h
mov 22h,74h
setb p30 ;闭合继电器
setb tr1
nokeyout:
pop acc
ret
QQ: anl 73h,#0fh
anl 74h,#0fh
;anl 78h,#0fh
ret
l1: clr tr1;acall dab; 分钟调整
orl 73h,#10h;点亮分右下角的小数点,当前调整位置
acall disp
acall QQ
acall key_scanf
clr psw5
mov a,70h
jb acc0,h_adj;切换到小时调整
jb acc1,m_inc;P12加1按钮
ajmp l1
h_adj:; 小时调整
;acall dab
orl 74h,#10h
acall disp
acall QQ
acall key_scanf
clr psw5
mov a,70h
jb acc0,out_adj;切换到星期调整
jb acc1,h_inc;小时加1
ajmp h_adj
w_adj:
acall daa
orl 78h,#10h
acall disp
acall QQ
acall key_scanf
clr psw5
mov a,70h
jb acc0,out_adj
jb acc2,w_inc
ajmp w_adj
out_adj:
ajmp adj_out
m_inc:;;;;;;;;;;;;;;; 调整分时,对定时复位,初始化
clr tr1
mov 71h,#0
mov 72h,#0
mov 79h,#0
mov tl1,trr
mov th1,#3ch
mov r3,#20
inc 73h
mov r1,#73h
cjne @r1,#10,s12
mov 73h,#0
inc 74h
mov r1,#74h
cjne @r1,#10,s12
mov 74h,#0
s12: ajmp l1
;;;;;;;;;;;;;;;;;;;;;;调整小时位
h_inc:
inc 74h
mov r1,#74h
cjne @r1,#10,s14
mov 74h,#0
;inc 76h
s14: ajmp h_adj
;mov a,76h
;swap a
;xchd a,@r1
;cjne a,#ts,s15;;;12进制,24进制设置值决定
;mov 75h,#0
;mov 76h,#0
;ajmp h_adj
;s15: ;xchd a,@r1
;ajmp h_adj
;;;;;;;;;;;;;;;;;;;;;;;调整星期位
w_inc:
inc 78h
mov r1,#78h
cjne @r1,#8,s16
mov 78h,#1h
s16: ajmp w_adj
;;;;;;;;;;;;;;;;;;;;;;;当前闹钟开/关情况报告位
numb:clr 29h4
jnb 29h0,iii1
jnb 20h6,iii1
setb 29h4
iii1:jnb 29h1,out_21
jnb 20h7,out_21
setb 29h4
out_21:
jnb 20h6,out_12
jnb 20h7,out_13
mov 77h,#1dh
ajmp out_22
out_12:
jnb 20h7,out_14
mov 77h,#1bh
ajmp out_22
out_13:
mov 77h,#1ch
ajmp out_22
out_14:
mov 77h,#1ah
out_22:
ret
end
首先这是一块标准的VGA接口的LCD显示器,你必须有符合VGA标准的驱动信号驱动它!
看你列出的配件当中,没有产生这个信号的装置哦!
一般的单片机驱动的方块形液晶屏的驱动线路和这个差别可不是一点半点哦!
方法:
1、左上按键:LIGH,右上按键:START,左下按键:MOD,右下按键:RESET。调表时,从初始界面开始,显示时间。按一次MODE进入秒表。按一次ST/SP开始计时,再按ST/SP停止计时。
2、从初始界面开始,显示时间。LIGHT:灯光。同按时按ST/SP和RESET是闹钟开关,闹钟响后按RESET关闭闹钟,若按ST/SP暂时停止闹钟,五分钟后会在响。
3、按一次MODE进入秒,按一次START开始计时,再按START停止计时。
4、按二次MODE进入闹钟调,按RESET更改选项,按START调整时间。按下左键两秒钟,当时钟数闪烁时,按下右键,调整闹钟(时间),然后按右键,分钟闪烁,按右键,调整闹钟(分钟),完成后,按数字按钮左键秒秒闪烁,按右键进入小数闪烁,然后按右键,调整(分钟)。
5、调整完成后即可。
优缺点:
应用
目 前,在国内,电子钟因LCD数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对LCD屏进行设置。同时,因为LCD的显示耗电量很省,所以能够保持持续的工作效果。
夜间在睡觉的时候,床头如果放个带投影功能的电子钟,可以不用起床,直接让时间显示在天花板上,非常直观与有效。
现 在生产的大部分汽车中,车内前方仪表盘旁边一般也都自带电子钟功能,采取蓝色背景光板成像效果,非常清晰。
优点
与传统的机械钟相比,电子钟具有更突出的优点。由于电子钟采用数字集成电路的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,电子钟用于定时自动报警、按时自动打铃、时间程序自动控制、定时广播及自动控制等各个领域。
缺点
因为电子钟毕竟是电子产品,电子产品都有辐射,不过电子钟危害极低,对人体够不成任何危害,不象手机的辐射那么大。
以上内容参考 百度百科-电子钟
lm016l没有卖的,跟1602一样,proteus仿真时用它来代替1602,告诉你如果你是作业,连写这么简单程序的耐心都没有,你还不如不去交作业,电路图放了,程序只给一部分,供参考,头文件自己去写
#include<reg52h>
#include"lcd1602h"
#include"ds1302h"
uchar readaddress[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};
uchar readvalue[21];
uchar readdate[7];
void delay()
{
uchar i,j;
for(i=5;i>0;i--)
for(j=115;j>0;j--);
}
void init()
{
EN=0;
writecom(0x38);
writecom(0x0c);
writecom(0x06);
writecom(0x01);
writecom(0x80+0x01); // 2014-02-22-06
writedate('2');
delay();
writedate('0');
delay();
writecom(0x80+0x05);
delay();
writedate('-');
delay();
writecom(0x80+0x08);
delay();
writedate('-');
delay();
writecom(0x80+0x0b);
delay();
writedate('-');
delay();
writecom(0x80+0x40+0x06);
delay();//" 00:00:00
writedate(':');
delay();
writecom(0x80+0x40+0x09);
delay();
writedate(':');
}
void read()
{
uchar i;
for(i=0;i<7;i++)
{
readdate[i]=ds1302read(readaddress[i]);//读取数据
}
}
void nyrz(uchar add,uchar date)//年月日周
{
uchar shi,ge;//任一数据的2位
shi=date/16;
ge=date%16;
writecom(0x80+add);
delay();
writedate(0x30+shi);
delay();
writedate(0x30+ge);
}
void sfm(uchar add,uchar date)//时分秒" 00:00:00"
{
uchar shi,ge;//任一数据的2位
shi=date/16;
ge=date%16;
writecom(0x80+0x40+add);
delay();
writedate(0x30+shi);
delay();
writedate(0x30+ge);
}
void main()
{
init();
set();//数据写入ds1302中
while(1)
{
read();
nyrz(3,readdate[0]);
nyrz(6,readdate[2]);
nyrz(9,readdate[3]);
nyrz(12,readdate[1]);
sfm(4,readdate[4]);
sfm(7,readdate[5]);
sfm(10,readdate[6]);
}
}
以上就是关于设计简易的电子时钟。要求:最小的定时周期为1秒,显示可以使用LCD或LED,实现分秒的指示,求设计过程。全部的内容,包括:设计简易的电子时钟。要求:最小的定时周期为1秒,显示可以使用LCD或LED,实现分秒的指示,求设计过程。、电子时钟开题报告、基于msp430f149+ds1302+lcd1602的可调数字钟(带闹铃)的C语言程序,我现在程序已经写好了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)