设计简易的电子时钟。要求:最小的定时周期为1秒,显示可以使用LCD或LED,实现分秒的指示,求设计过程。

设计简易的电子时钟。要求:最小的定时周期为1秒,显示可以使用LCD或LED,实现分秒的指示,求设计过程。,第1张

经典方案:单片机+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语言程序,我现在程序已经写好了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存