可调电子时钟设计

合集下载

vhdl数字电子钟的设计与实现

vhdl数字电子钟的设计与实现

基于VHDL数字电子钟的设计与实现摘要:本课程设计完成了数字电子钟的设计,数字电子钟是一种用数字显示秒、分、时的计时装置,由于数字集成电路技术的发展和采用了先进的石英技术,它使数字钟具有走时准确、性能稳定、携带方便等优点。

数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活带来极大的方便。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路的能力。

关键词:电子钟;门电路及单次按键;琴键开关目录第一章引言----------------------------------------------------------------11.1 课题的背景、目的------------------------------------------11.2 课程设计的内容------------------------------------------1 第二章EDA与VHDL简介--------------------------------------------------22.1 EDA的介绍---------------------------------------------22.2 VHDL的介绍--------------------------------------------32.2.1 VHDL的用途与优点-----------------------------------------------------------------32.2.2 VHDL的主要特点----------------------------------------------------------------------2.2.3 用VHDL语言开发的流程------------------------------------------------------------ 第三章数字电子钟的设计方案------------------------------------------63.1秒脉冲发生器--------------------------------------------73.2可调时钟模块--------------------------------------------83.3校正电路------------------------------------------------83.4闹铃功能------------------------------------------------103.5日历系统------------------------------------------------11 第四章结束语---------------------------------------------------------------134.1致谢----------------------------------------------------144.2参考文献------------------------------------------------151引言随着科学技术的不断发展,人们对时间计量的精度要求越来越高。

(完整)STM32开题报告

(完整)STM32开题报告

基于STM32的时间可调的数字时钟设计一、设计题目:基于STM32时间可调的数字时钟设计二、设计目的:1.时钟是人类进步的标识,时钟,自从它发明的那天起,就成为人类的朋友,但随着科技的飞速发展,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

目前,单片机正朝着高性能和多品种方向发展的趋势进一步向CMOS化、低能耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。

2.融会贯通教材各章的内容,通过知识的综合运用,加深对基本接口芯片的工作原理及与CPU互连的认识,以进一步掌握常见接口的用法。

3.学习设计和调试嵌入式系统开发的基本步骤和方法,培养科学研究的独立工作能力,取得工程设计和调试的实践和经验。

三、硬件设计:1、MCU:STM32处理器意法半导体 (STMicroelectronics) 集团于1987年6月成立,是由意大利的SGS 微电子公司和法国Thomson 半导体公司合并而成。

1998年5月,SGS-THOMSON Microelectronics 将公司名称改为意法半导体有限公司,意法半导体是世界最大的半导体公司之一。

从成立之初至今,ST 的增长速度超过了半导体工业的整体增长速度。

自1999年起,ST 始终是世界十大半导体公司之一。

据最新的工业统计数据,意法半导体 (STMicroelectronics) 是全球第五大半导体厂商,在很多市场居世界领先水平。

例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列。

STM32L 系列产品基于超低功耗的 ARM Cortex-M3 处理器内核,采用意法半导体独有的两大节能技术:130nm 专用低泄漏电流制造工艺和优化的节能架构,提供业界领先的节能性能。

LED电子时钟

LED电子时钟
XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2 来自反向振荡放大器的输出。
P1口 8位双向I/O口。引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1口也可接收编码数据。
2.3系统总体方案介绍
部件组成:单片机89C2051、电源、时分显示部件。
时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。时分显示模块以及显示驱动都通过89C2051的I/O口控制。
电源部分:电源部分有二部分组成。一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作。
4.2 概述..................................................7
4.2.1主程序................................................8
第五章仿真图……………………………………………………………………….13
{
if(up==0)
{
delay(50); //消除抖动
if(up==0)
{
n++;
if(n==x)//上限越界显示为0
n=0;
while(up==0);
}
}
if(down==0)
{
delay(50);
if(down==0)
{
if(n==0)//下限越界显示为最大可显示

基于Proteus的数字电子钟的设计与仿真

基于Proteus的数字电子钟的设计与仿真

基于Proteus的数字电子钟的设计与仿真一、设计目的与要求 (1)二、设计内容与方案制定 (1)三、芯片简介 (1)1、AT89C52 (1)2、AT24C02 (2)四、设计步骤 (3)1、硬件电路设计 (3)1.1.硬件电路组成框图 (3)1.2.各单元电路及工作原理 (3)1.3.绘制原理图 (5)1.4.元件清单列表 (6)2、程序设计 (7)2.1程序流程 (7)2.2主程序 (9)2.2.源程序 (10)五、调试与仿真 (22)六、心得体会 (23)七、参考文献 (23)一、设计目的与要求设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。

设计要求:设计一个时、分可调的数字电子钟、断电后将数据保存,开启后时间将从断电后时间继续行走。

二、设计内容与方案制定具有校时功能,按键控制电路其中时键、分键六个键分别控制时、分时间的调整。

按下小时数实现对小时数加减,按下分钟数实现对分钟数进行加减,并设置有复位键,启始键。

以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。

通过AT24C02分别写入时、分、秒数据在断电后实现保存,在下次通电后将数据读出保持为断电前数据。

三、芯片简介1、AT89C52AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系2、AT24C02AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况,即通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上,通过进行不同的配置进行选择器件。

LED数码管设计的可调式电子钟说明说

LED数码管设计的可调式电子钟说明说

LED数码管设计的可调式电子钟说明说可调式电子钟的设计理念是提供用户多样化的时间显示和闹钟设定选项,以满足用户不同的需求和喜好。

以下是对设计的详细说明:1.数码管显示:LED数码管采用7段共阳极连接方式,每个数码管由7个LED灯组成,通过控制各个LED灯的点亮与否,可以显示0-9的数字。

数码管的显示仿真效果要清晰、鲜明,确保用户可以轻松辨认时间。

2.时间调节功能:可调式电子钟具备时间调节的功能,用户可以通过按钮或旋钮调整时间。

其中旋钮可以实现小时和分钟的调节,而按钮可以实现小时和分钟的增加或减少。

设计时需考虑人机交互的便利性,确保时间调节操作简单明了。

3.闹钟设定:可调式电子钟还具备闹钟功能,用户可以设定一个或多个闹钟时间点。

用户可以通过按钮或旋钮设置闹钟的小时和分钟,还可以设定是否重复响铃。

闹铃可以通过声音、震动或LED灯闪烁等方式提醒用户。

为了避免误操作,设计时需要考虑设置闹钟的过程,确保用户能够轻松设置闹钟。

4.电源供应:可调式电子钟可采用外部电源或内置电池供电。

设计时需考虑到电源的稳定性和可靠性,确保时钟长时间准确运行。

当外部电源断开时,内置电池可以提供备用电源,防止时间设置的丢失。

5.背光功能:可调式电子钟还可以考虑添加背光功能,在光线不好的情况下,用户可以通过按下按钮或通过传感器自动点亮背光。

背光的亮度可以根据用户偏好进行调节。

6.美观设计:除了功能性,可调式电子钟的外观设计也很重要。

设计时可以考虑采用简约设计风格,以及时尚的外壳材料。

同时,数字显示的对齐和间距,以及按钮和旋钮的位置、大小都需要细致推敲,确保整体外观美观大方。

总之,可调式电子钟的设计需要满足用户对时间显示和闹钟功能的需求。

通过合理的控制功能,人性化的设计以及简洁好看的外观,可为用户提供一台方便、易用的电子钟。

电子秒表设计VHDL

电子秒表设计VHDL

一、设计题目:基于VHDL语言的电子秒表设计(可调时,有闹钟、定时功能)二、设计目的:⑴掌握较复杂的逻辑设计和调试⑵学习用原理图+VHDL语言设计逻辑电路⑶学习数字电路模块层次设计⑷掌握QuartusII软件及Modelsim软件的使用方法三、设计内容:(一)设计要求1、具有以二十四小时计时、显示、整点报时、时间设置和闹钟的功能。

2、设计精度要求为1S。

(二).系统功能描述1 . 系统输入:系统状态及校时、定时转换的控制信号为k、set、ds;时钟信号clk,采用实验箱的50MHz;系统复位信号为reset。

输入信号均由按键产生。

系统输出:8位LED七段数码管显示输出,蜂鸣器声音信号输出。

多功能数字钟系统功能的具体描述如下:2. 计时:set=1,ds=1工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。

3. 校时:在set=0,ds=0状态下,按下“k键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒校准”状态,之后如此循环。

1)“小时”校准状态:在“小时”校准状态下,显示“小时”数码管以1Hz的频率递增计数。

2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以1Hz的频率递增计数。

3)“秒”复零状态:在“秒复零”状态下,显示“分”的数码管以1Hz的频率递增计数。

4. 整点报时:蜂鸣器在“59”分钟的第50—59,以1秒为间隔分别发出1000Hz,500Hz的声音。

5. 显示:采用扫描显示方式驱动8个LED数码管显示小时、分、秒。

闹钟:闹钟定时时间到,蜂鸣器发出交替周期为1s的1000Hz、500Hz的声音,持续时间为一分钟;6. 闹钟定时设置:在set=0,ds=1状态下,按下“k”,进入闹钟的“时”设置状态,之后按下“k键”进入闹钟的“分”设置状态,继续按下“k 键”则进入“秒”设置状态, 之后如此循环。

1)闹钟“小时”设置状态:在闹钟“小时”设置状态下,显示“小时”的数码管以1Hz 的频率递增计数。

51单片机的电子时钟设计

51单片机的电子时钟设计

51单片机的电子时钟设计摘要:本文介绍了基于51单片机的电子时钟的设计,从硬件和软件两个方面给出了具体实现过程。

该时钟的设计采用功能分块的思想方法,将硬件电路划分为开关电路,显示驱动电路和数码管电路等假设干独立模块,而软件的实现那么由闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等组成。

文中给出了各个模块的电路图,并用Proteus的ISIS软件对电子时钟系统的各个功能进展了仿真,并给出了相应的仿真结果图像。

关键词:单片机;电子时钟;键盘控制一、引言1957年,Ventura创造了世界上第一个电子表,从而奠定了电子时钟的根底,电子时钟开场迅速开展起来。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进展满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而到达计时的功能,是人民日常生活补课缺少的工具。

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进展时和分的校对,片选的灵活性好。

二、时钟的根本原理分析利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,那么表示1s到了,秒变量加1,同理再判断是否1min 钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED 显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

基于CD40110的电子钟设计

基于CD40110的电子钟设计

数字电路课程设计报告设计课题:基于CD40110的电子钟设计专业班级:电子信息工程1702学生姓名:学号:指导教师:设计时间:2019.4——2019.5基于CD40110的电子钟设计一、设计任务与要求任务:用CD40110芯片制作电子钟;要求:能显示小时、分钟、秒钟。

二、方案设计与论证(至少二个方案比较)电路通电后,震荡电路产生1Hz信号并被芯片CD40110接受,并且通过4个单体共阴极数码管显示,即电子钟记时。

1.原理分析:电路接通后,由Ne555芯片制作的震荡电路开始起震,产生1Hz信号,当上升沿信号输入CD40110芯片 CPu端口时开始从0计数,通过CD40110的Ya~Yg端口输出到共阴极数码管显示。

并且通过74ls11来控制电路实现秒钟60进制、分钟60进制和时钟24进制(60进制用十位上6控制,即g、f、e连接端;24进制用的是个位4上的g、f,十位2上的g控制)2.原理分析:电路接通后,由分频电路产生1Hz信号,当上升沿信号输入CD40110芯片CPu端口时开始从0计数,通过CD40110的Ya~Yg端口输出到共阴极数码管显示。

并且通过74ls11来控制电路实现秒钟60进制、分钟60进制和时钟24进制(60进制用十位上6控制,即g、f、e连接端;24进制用的是个位4上的g、f,十位2上的g 控制)两个方案对比来看,很明显就是信号源电路的设计的方案不一样,显而易见方案二中消耗的资源多,对比方案一来看要用较多的芯片。

通过分析,结合设计电路性能指标、器件的性价比,本设计电路选择方案一。

三、单元电路设计与参数计算(功能部分电路)1.信号源:1Hz震荡电路将参数R1=10k,R2=10k,C=47uf,带入可计算得:f=1Hz功能部分电路如图3所示。

图3 1Hz震荡电路四、总原理图及元器件清单1.总原理图图4-1 电子钟电路2.元件清单表1 元件清单元件序号型号主要参数数量备注(单价)单位:元R1、R2 定值电阻10k 2 0.07 R 定值电阻1k 42 0.05 NE555 555定时器 1 0.89CD40110 6 2.2 C1 电解电容47uF 1 0.03C2 瓷片电容0.01 1 0.0174LS11 3输入与门 2 2.006 0.37共阴极数码管五、安装与调试1.电路安装将电路的接地端与实验箱地相连,电源端与实验箱+5v电源相连,将1Hz震荡电路输出端与时钟部分电路输入端相连。

51单片机电子时钟课程设计实验报告

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计总结报告题目:单片机电子时钟(带秒表)的设计目录1.题目与主要功能要求 (2)2.整体设计框图及整机概述 (3)3.各硬件单元电路的设计、参数分析及原理说明 (3)4.软件流程图和流程说明 (4)5.总结设计及调试的体会 (10)附录1.图一:系统电路原理图 (11)2.图二:系统电路PCB (12)3.表一:元器件清单 (13)4.时钟程序源码 (14)题目:单片机电子时钟的设计与实现课程设计的目的和意义课程设计的目的与意义在于让我们将理论与实践相结合。

培养我们综合运用电子课程中的理论知识解决实际性问题的能力。

让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。

课程设计的基本任务利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。

主要功能要求最基本要求1)使用MCS-51单片机设计一个时钟。

要求具有6位LED显示、3个按键输入。

2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。

3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。

开始计时时为000000,到235959后又变成000000。

4)使用3个键分别作为小时、分、秒的调校键。

每按一次键,对应的显示值便加1。

分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。

在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。

5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。

6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。

51单片机电子时钟课程设计实验报告

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计总结报告题目:单片机电子时钟(带秒表)的设计设计人员:张保江江润洲学号: 13 29班级:自动化1211指导老师:阮海容目录1.题目与主要功能要求 (2)2.整体设计框图及整机概述 (3)3.各硬件单元电路的设计、参数分析及原理说明 (3)4.软件流程图和流程说明 (4)5.总结设计及调试的体会 (10)附录1.图一:系统电路原理图 (11)2.图二:系统电路 PCB (12)3.表一:元器件清单 (13)4.时钟程序源码 (14)题目:单片机电子时钟的设计与实现课程设计的目的和意义课程设计的目的与意义在于让我们将理论与实践相结合。

培养我们综合运用电子课程中的理论知识解决实际性问题的能力。

让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。

课程设计的基本任务利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。

主要功能要求最基本要求1)使用MCS-51单片机设计一个时钟。

要求具有6位LED显示、3个按键输入。

2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。

3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。

开始计时时为000000,到235959后又变成000000。

4)使用3个键分别作为小时、分、秒的调校键。

每按一次键,对应的显示值便加1。

分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。

在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。

5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。

数电课程实验报告——数字钟的设计

数电课程实验报告——数字钟的设计

.《数字电子技术》课程设计报告设计题目: 数字钟班级学号:1407080701221 1407080701216 1407080701218学生:志强企海清指导教师:周玲时间:2016.6.15-2016.6.16《数字电子技术》课程设计一、设计题目:数字钟的设计一、设计任务与要求:1.时钟显示功能,能够以十进制显示“时”、“分”、“秒”。

其中时为24进制,分秒为60进制。

2. 其他功能扩展:(1)设计一个电路实现时分秒校准功能。

(2)闹钟功能,可按设定的时间闹时。

(3)设计一个电路实现整点报时功能等。

在59分51秒、53秒、55秒、57秒输出750Hz 音频信号,在59分59秒时输出1000Hz信号,音频持续1s,在1000Hz荧屏结束时刻为整点。

二、设计方案:数字电子钟由石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。

振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。

秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。

计数器的输出分别经译码器送显示器显示。

计时出现误差时,可以用校时电路校时、校分。

三、芯片选定及各单元功能电路说明:实验器材及主要器件(1)CC4511 6片(2)74LS90 5片(3)74LS92 2片(4)74LS191 1片(5)74LS00 5片(6)74LS04 3片(7)74LS74 1片(8)74LS2O 2片(9)555集成芯片1片(10)共阴七段显示器6片(11)电阻、电容、导线等若干①振荡器石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整。

它还具有压电效应,在晶体某一方向加一电场,则在与此垂直的方向产生机械振动,有了机械振动,就会在相应的垂直面上产生电场,从而机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限止时,才达到最后稳定。

这用压电谐振的频率即为晶体振荡器的固有频率。

基于单片机的多功能数字钟设计报告毕业设计(论文)

基于单片机的多功能数字钟设计报告毕业设计(论文)

目录1..............设计整体思路2.............基本原理3.............单元电路设计及单元电路4..............安装调试步骤5..............故障分析与电路改进6..............总结与体会7..............参考文献8..............附录(元器件清单及总电路图)一.设计的整体思路:1.课程设计要求:要用时序逻辑电路设计出一个多功能可调的数字钟,这个数字钟要可调,能显示时分秒,并且要能准确的显示。

2.设计的目的:1 掌握集成电路的引脚安排2 掌握各芯片的逻辑功能及使用方法3 理解数字钟的组成和工作原理4 熟悉数字钟的设计与制作要求:时间以24小时为一个计时周期显示时分秒有校时功能,可以分别对时分进行校时计数器有整点报时功能须有晶体振荡器提供表针时间基准信号画出电路原理图元器件及参数选择电路仿真及调试自行装配和调试,并能发现问题和解决问题编写设计报告二.基本原理及其框图1.主电路是由一个4060芯片,六个74161四位同步二进制计数器和六个CD4511七段显示译码器构成。

其中4060是用来产生始终脉冲信号,74161是用来计数的工作时,每秒一次的方波作为“秒”脉冲信号,因每分钟有60秒,所以“秒”计数器为六十进制计数器,“分”的计数器亦同,而“时”采用二十四进制计数器。

当“秒”计数器满60时,输出秒进位脉冲,送“分”计数器;当“分”计数器满60时,输出“分”进位脉冲,送“时”计数器计数;当“时”计数器满24小时候,“时”“分”“秒”计数器同时自动复零。

每个计数器输出均要经过译码器,显示器显示时钟的“时”“分”“秒”。

三.单元电路设计及单元电路1.如图所示:多谐振荡器该电路由一个4060,一个晶振和一个10M电阻两个22pf电容组成.如图所示2.译码显示电路如图所示:该电路由一个4511BD芯片与共阴极数码管构成图3——1该电路时有两个74LS161和一个74LS04与门,两个数码管和两个的CD4511译码器构成,他们构成一个六十进制计数器,是用来显示秒。

单片机毕业论文

单片机毕业论文

专科毕业设计(论文)题目基于51单片机的可调数码日历钟的设计与制作院(系部)电子与信息工程系专业名称电子信息技术年级班级学生姓名指导教师摘要单片机以其体积小、编程灵活、控制功能强大、价格低廉等特点被广泛应用在各种电子电器产品中。

单片机技术的出现和发展带来了电子技术和控制领域的一场革命。

单片机课程作为职业院校电子信息类专业一门重要的基础课程,它既是一门很有实用价值、实践性很强且很有趣味性的课程,同时它又是一门集硬件电路设计与软件编程于一体的学科,既要求我们有较好的电工电子技术基础知识,又要求有一定的逻辑思维和软件开发(编程)能力。

通过近几年对单片机的学习,我已掌握单片机的基本知识,并具备了单片机应用系统的初步开发能力。

即将毕业之际,我运用我所掌握的单片机知识设计和制作了一个基于51单片机的可调数码日历钟,这既是对我所学知识的总结与高度概括,同时也将自己所掌握的知识与实际应用结合起来,进一步提高工程实践能力。

数码日历钟是实际生活中应用较多的一个电子计时装置,可供人们查询日期、星期及掌握时间。

本文首先从数码日历钟的功能要求入手,对设计任务进行了分析,并将任务分解为若干个模块,提出在设计与制作过程中要用到的相关知识点,给出了本设计的硬件电路及软件流程,还给出了部分模块的源程序代码。

本设计经过多次调试运行无误,最终提交出一个完整的应用系统产品。

本次毕业设计的数码日历钟能在12864液晶屏上显示出年月日时分秒以及星期几,还能显示当前环境温度,并能通过按键调整日期和时间,在调整日期的同时通过相应算法自动实现星期几的调整,而且无论是否闰年、任何月份,当日期调整时都保证不会出现非法日期。

数码日历钟是一个非常实用的设计与制作,成本低廉,如能进一步完善,具有一定的推广使用价值。

本设计任务比较复杂,要考虑的问题很多,C语言的模块化程序设计思想较好地解决了这个问题,故本设计任务采用C语言编程。

关键词:51单片机,C语言,数码日历钟,毕业设计,制作I河南理工大学毕业设计论文目录摘要 (Ⅰ)1概述 (1)1.1 毕业设计的选题背景及制作意义 (1)1.1.1毕业设计的选题背景 (1)1.1.2毕业设计的制作意义 (1)1.2 数码日历钟的功能要求 (1)1.3 本设计制作的主要内容 (2)2数码日历钟的设计与制作任务分析 (3)2.1数码日历钟的设计与制作任务分析与分解 (3)2.2设计方案的论证及选择 (3)3 相关知识链接 (6)3.1 51单片机简介 (6)3.1.1 51单片机简介 (6)3.1.2 51单片机引脚功能介绍 (8)3.2由已知日期推算星期几 (11)3.2.1如何判断一个年份是否闰年 (11)3.2.2由已知日期如何推算星期几 (11)3.3 12864图形液晶的使用 (13)3.3.1 液晶概述 (13)3.3.2 LCM引脚功能介绍 (14)3.3.3 LCD12864图形液晶显示模块指令集 (15)3.3.4 LCD12864图形液晶显示模块与单片机的接口 (17)3.3.5 LCD12864图形液晶显示模块的基础函数 (17)3.4 51单片机中的中断与定时 (19)3.4.1 51单片机中的中断 (19)3.4.2 51单片机中的定时/计数器 (22)3.5数字温度传感器DS18B20的使用 (28)3.5.1 DS18B20概述 (28)3.5.2 DS18B20的内部结构 (29)3.5.3 DS18B20与单片机的接口电路 (32)3.5.4 DS18B20的操作命令 (32)-1-3.5.5 DS18B20的时序 (33)3.6 矩阵式按键的检测 (36)4系统设计与调试 (44)4.1 硬件系统设计与调试 (44)4.1.1硬件系统设计原理图 (44)4.1.2硬件系统元器件清单 (44)4.1.3硬件系统组装与调试 (45)4.2 软件系统设计与调试 (45)4.2.1软件系统设计 (45)4.2.2软件系统调试与仿真 (47)5结束语 (49)参考文献 (50)致谢 (51)-2-河南理工大学毕业设计论文 1 概述1、概述1.1 毕业设计的选题背景及制作意义1.1.1毕业设计的选题背景单片机以其体积小、编程灵活、控制功能强大、价格低廉等特点被广泛地应用在各种电子电器产品中。

基于AT89C51单片机的数字电子时钟设计

基于AT89C51单片机的数字电子时钟设计

/安徽工程大学机电学院单片机课程设计题目:数字电子时钟设计指导老师:***制作人员:范超学号:************班级:自动化2132日期:7月13日-7月24日总评成绩:课程任务设计书设计题目:数字电子时钟的设计设计任务:1.设计一款时,分,秒可调数字电子时钟可整点报时;2.设计三个按键K1,K2和K3,用于调节时钟的时间;3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;本设计采用AT89C51单片机为核心器件。

具有电子钟显示,时间调整,整点报时等功能。

此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。

根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。

而且能显示清晰、直观的数字符号。

针对数字钟会产生误差的现象,就设计有校准时间的功能。

AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。

此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。

它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。

电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。

用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。

根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。

显示器件选用LED八段数码管。

在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。

针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。

关键字:Proteus,Keil uVision,AT89C51,电子钟,整点报时摘要 (3)第1章概述 (5)1.1 设计背景 (5)1.2系统方案论证与设计 (5)第2章系统硬件设计 (7)2.1 系统总电路的设计 (7)2.1.1系统的总框图 ................................................................................................2.1.2芯片的选择 (7)2.2最小系统设计 (9)2.2.1时钟电路的选择与设计 (10)2.2.2复位电路的选择与设计 .............................................. 错误!未定义书签。

本科毕业设计论文--eda课程设计报告多功能数字钟设计

本科毕业设计论文--eda课程设计报告多功能数字钟设计

湖北大学物电学院EDA课程设计报告(论文)题目:多功能数字钟设计专业班级: 14微电子科学与工程*名:**时间:2016年12月20日指导教师:万美琳卢仕完成日期:2015年12月20日多功能数字钟设计任务书1.设计目的与要求了解多功能数字钟的工作原理,加深利用EDA技术实现数字系统的理解2.设计内容1,能正常走时,时分秒各占2个数码管,时分秒之间用小时个位和分钟个位所在数码管的小数点隔开;2,能用按键调时调分;3,能整点报时,到达整点时,蜂鸣器响一秒;4,拓展功能:秒表,闹钟,闹钟可调3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。

4.答辩在规定时间内,完成叙述并回答问题。

目录(四号仿宋_GB2312加粗居中)(空一行)1 引言 (1)2 总体设计方案 (1)2.1 设计思路 (1)2.2总体设计框图 (2)3设计原理分析 (3)3.1分频器 (4)3.2计时器和时间调节 (4)3.3秒表模块 (5)3.4状态机模块 (6)3.5数码管显示模块 (7)3.6顶层模块 (8)3.7管脚绑定和顶层原理图 (9)4 总结与体会 (11)多功能电子表摘要:本EDA课程主要利用QuartusII软件Verilog语言的基本运用设计一个多功能数字钟,进行试验设计和软件仿真调试,分别实现时分秒计时,闹钟闹铃,时分手动较时,时分秒清零,时间保持和整点报时等多种基本功能关键词:Verilog语言,多功能数字钟,数码管显示;1 引言QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程,解决了传统硬件电路连线麻烦,出错率高且不易修改,很难控制成本的缺点。

利用软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然2 总体设计方案2.1 设计思路根据系统设计的要求,系统设计采用自顶层向下的设计方法,由时钟分频部分,计时部分,按键调时部分,数码管显示部分,蜂鸣器四部分组成。

计算机科学与技术专业专升本论文07183

计算机科学与技术专业专升本论文07183

毕业论文题目基于A VR的可调电子钟设计院系名称:计算机科学与技术专业班级:11专升本学生姓名:学号:指导教师:目录摘要 (4)第一章引言 (5)1.1设计任务 (5)1.2设计要求 (5)第二章总体方案论证与设计 (6)第三章系统硬件设置 (7)3.1 ATmega16单片机简介 (7)3.2 ATmega16单片机的工作原理 (7)3.2.1 I/O端口的工作原理 (7)3.2.2定时/计数器 (8)3.2.3 中断系统 (8)3.2.4 振荡器 (9)3.3时钟模块设计 (10)3.3.1 DS1302特性介绍 (10)3.3.2 DS1302引脚介绍 (11)3.3.3 DS1302有关日历,时间的寄存器 (12)3.3.4 DS1302与单片机接口电路 (12)3.4显示模块设计 (13)3.4.1 LCD1602的特性介绍 (14)3.4.2 LCD1602引脚介绍 (15)3.4.3 1602内部功能器件及相关功能 (16)3.4.4 1602液晶与单片机接口电路 (18)3.5 设置模块 (20)3.6 振荡电路 (21)3.7 复位电路 (22)第四章系统软件设计 (23)4.1 时钟函数模块 (25)4.1.1实现功能 (25)4.1.2 函数设计 (25)4.2 显示函数模块 (30)4.2.1实现功能 (30)4.2.2 函数设计 (30)4.2.3 小结 (31)4.3 按键函数模块 (32)4.3.1 实现功能 (32)4.3.2 函数设计 (32)4.3.3 小结 (32)4.4 主函数模块 (32)第五章心得体会 (33)第六章致谢 (33)附录 1元器件表 (34)附录2 仿真图 (35)附录3 源码 (36)附录4 参考文献 (68)摘要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。

单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。

电子时钟ppt课件

电子时钟ppt课件

DS18B20与单片机接口电路:
精品课件
报警模块 ❖ 在本设计中蜂鸣器直接接在单片机P3.6上。报警模
块采用单片机输出一定频率的方波从而使蜂鸣器发 出声音。
精品课件
设置模块 ❖ 设置模块采用四个按键与P1^4、P1^5、P1^6、P1^7 ❖ 相接组成独立按键,接口电路如下;
精品课件
电源接口部分 ❖ 采用USB接口从电脑接到电源接口中,拨动开关可控
精品课件
总体方案组成框图如下所示:
精品课件
三、系统硬件设计
本设计主要用到AT89S51系列单片机,其端口应用如下 表格:
精品课件
LCD显示模块设计
1602液晶功耗较小可直接与单片机接口相接,电源直接与 电源电路相接为+5V,对比度可调。本设计使用单片机的P0口和P1 口与1602进行通信。另外1602有行显示,每行显示的字符数为16 个,还提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示 移位等多种功能
精品课件
目录
一、课程设计概述 二、方案的确定 三、系统硬件设计 四、系统软件设计 五、系统调试过程 六、总结 七、遇到的问题及解决方法和结论 八、附录
精品课件
一、课程设计概述
利用单片机、时钟芯片DS1302、温度传感器 DS18B20、1602液晶等实现日期、时间、温度的显示, 即是一个简单的万年历。具体的功能如下: (1)通过DS1302能够准确的计时,时间可调并在液 晶屏上显示出来。 (2)通过DS18B20能够实时、准确的检测当前环境 温度,测量温度范围为 -55 ℃ ~+ 125 ℃ ,在 10~+ 85°C 范围内,精度为 ± 0.5°C 。 (3)利用单片机自身功能实现闹钟。
精品课件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机综合实验课程报告题目可调电子时钟设计学生姓名学号院系专业指导教师二O一二年五月十五日目录摘要 (1)关键字 (1)一、可调电子时钟预期功能 (3)二、设计方案 (3)2.1 单片机最小系统 (3)2.2 LCD1602 (3)2.3 DS1302 (4)三、硬件电路设计 (4)四、软件设计 (5)五、仿真结果 (7)六、小结 (8)参考文献 (8)附录 (10)可调电子时钟设计南京信息工程大学信息与控制学院,江苏南京 210044摘要:用AT89C51作为最小系统设计可调电子时钟,用液晶显示屏LCD102输出显示,用时钟芯片DS1302管理时间。

可以显示年、月、日、星期、时、分、秒,并且均可通过按键调整。

当按第一个键时开始调整时间,第二个键是加键,第三个键是减键。

单片机具有集成度高、功能强、通用好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。

数字电子时钟电路设计系统,以AT89C51单片机为控制核心,由按键、液晶显示屏和LED灯显示等功能模块组成。

基于题目基本要求,本系统对时间显示和定时报警进行了重点设计。

本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高本系统成功的实现了要求的基本功能。

关键词:AT89C51;LCD1602;DS1302Design of Adjustable Electronic ClockNUIST,Nanjing 210044,ChinaAbstract:This paper introduced the design of the adjustable digital clock based on A T89C51, the specific process of how the system hardware and software achieved were detailed descrip tion through the design of adjustable digital clock. The modular design and production, whic h consisted of MCU module, clock module and the associated control module, were mainly recounted.As well as hardware design and software design use the same method,consists suspension module,time adjustable module,and that use the C language to achieve because of its sample and strong negotiability.In this design,the functions of time run and change,functions of the year,month and day display have been achieved.Key words:AT89C51;LCD1602;DS1302一、数码管显示预期功能1、以格式“小时-分钟-秒”显示时间。

2、每过一秒显示内容更新。

3、可以通过按键来调整时间,包括时、分、秒的增加或减小。

4、整点时,蜂鸣器或扬声器报时。

5、用时钟芯片DS1302来管理时间。

6、显示年月日,且能调整。

7、显示星期。

二、设计方案1、51单片机最小系统设计单片机最小系统如下图所示:以ST89C51单片机为核心,选用12MHZ的晶振,由于晶振的频率越高,单片机的运行速度就越快,但考虑到单片机的运行速度快会导致对存储器的要求就会变高,因此12MHZ晶振为最佳选择。

外接电容的值虽然没有严格的要求,但是外接电容的大小会影响振荡器的频率高低、振荡器的稳定性和起振的快速性,因此我们选用30pF的电容作为起振电容。

复位电路为按键高电平复位,当按键按下,RES端为高电平,当高电平持续4us的时间就可以使单片机复位。

2、时间显示设计采用液晶显示屏LCD1602显示时间:D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LR S R W EV ee DB0~DB7上的信号是命令还是显示数据。

RS=0时,DB0~DB7的信号视为命令数据。

RS=1时,DB0~DB7的信号则作为液晶屏的显示数据。

R/W (5管脚)——读/写控制线。

控制是从液晶屏读数据还是向液晶屏写数据。

R/W =0时,写数据。

R/W =1时,读数据。

E(6管脚)——使能端。

该管脚控制液晶屏从数据总线DB0~DB7上将数据读入液晶屏。

当该管脚上的电平由1向0变化时,数据总线DB0~DB7的数据被读入液晶屏。

DB0~DB7(7~14管脚)——数据总线。

这8位数据总线是数据交换的通道,单片机向液晶屏送入的命令或数据都通过这8位数据总线进行。

单片机需要先向液晶屏输出一些显示设置命令,然后再输出显示数据。

当单片机向液晶屏输出显示设置命令时,RS 管脚应该清0。

当设置完成后,需要使RS 管脚置1以向液晶屏输入显示数据。

同时,R/W 管脚也接低电平,液晶屏接收数据从DB0~DB7写入。

当RS 管脚和R/W 管脚设置妥当后,执行对E 管脚清0,就会在E 管脚上形成一个由高向低的跳变,这个跳变就使得命令或显示数据从数据总线DB0~DB7进入液晶屏。

3、时间管理设计采用时钟芯片DS1302管理时间:静态RAM可通过简单的串行接口与单片机进行通信可提供:秒分时日日期月年的信息;每月的天数和闰年的天数可自动调整;可通过AM/PM 指示决定采用24 或12 小时格式。

三、硬件电路设计整体电路图:连线如下:液晶显示器LCD1602的D0~D7分别与P2口相连,RS、RW、E分别与P1.0、P1.1、P1.2口相连,3个时间调整按键分别与P3.0、P3.1和P3.2相连,整点报时的二极管与P3.7口相连,时钟芯片的/RST、SCLK、I/O分别与P1.3、P1.4、P1.5相连。

四、软件设计1、主程序流程图:2、中断服务程序流程图五、仿真结果总体仿真图:XT AL218XT AL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LRST 9SCLK 14I/O 12X13X25VCC116VCC21U2DS1302X1CRYST AL设置R1100D2LED-BIRYY112MHzC430pC530pR21KΩC210000000pF增大减小RS R W E RST SCLKIORST SCLKIOR S R W E整点报时:XT AL218XT AL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LRST 9SCLK 14I/O 12X13X25VCC116VCC21U2DS1302X1CRYST AL设置R1100D2LED-BIRYY112MHzC430pC530pR21KΩC210000000pF增大减小RS R W E RST SCLKIORST SCLKIOR S R W E仿真结果如图所示,运行后,液晶显示器显示年月日、星期和时分秒,所有显示时间均可通过按键修改,并具有整点报时功能。

六、小结课程设计是培养学生综合运用所学知识,发现实际问题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。

在此次数字钟设计过程中, 在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计、操作中,更进一步地熟悉了单片机芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的使用方法,了解了电路的开发和制作及课程设计报告的编写。

加深了对相关理论知识及专业知识的掌握度,增强自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻的体会到了理论联系实际的重要性。

通过此次单片机课程设计不仅仅将我们一学期在单片机课程上的所学很好的应用到了实际设计中,更是将理论知识应用到了实践中,这才是真正的学习,不仅仅是读万卷书,更要行万里路,讲知识与实践有机的结合。

也十分感谢老师为我们提供了这次单片机课程设计的机会,我们也通过此次课程设计,更清晰更实际的接触到了单片机。

参考文献[1] 李广弟等编, 单片机基础,北京航空航天大学出版社 [2] 吴金戌等编, 8051 单片机实践与应用,清华大学出版社[3] 王洪庆编,微型计算机控制技术,机械工业出版社[4] 付家才编,单片机控制工程实践技术,化学工业出版社[5] 鲍宏亚编,MCS51系列单片机应用系统设计及实用技术,中国宇航出版社[6] 杨文龙,单片机原理及应用[M],西安电子科技大学出版社[7] 赵文博,刘文涛.单片机语言C51程序设计[M],人民邮电出版社源程序:(1)主程序:#include<reg51.h>#include"LCD1602.H"#include"DS1302.h"#include"intrins.h"#include"keyscan.h"sbit beep=P3^7;uchar shan=0; //设置时间时闪烁,用于计时uchar shan_time=15;//闪烁时间uchar shan_max=35; //闪烁周期,亮-灭void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void di(uint x) //蜂鸣器发声函数{beep=0;delay(x);beep=1;delay(x);}/**********************显示处理程序**************************************/void shanshuo(uchar addr,uchar count_1,uchar time_num) //闪烁显示子程序{w_com(0x80+addr); //闪烁显示,格式:写入1602地址,设置的位号,显示的位号if(count==count_1&(shan<shan_time)) //显示“”{w_data(' ');w_data(' ');}else //显示时钟w_time(time[time_num]/10);w_time(time[time_num]%10);}}void deal() //对时间进行显示处理{uchar addr=0x44;shanshuo(addr,3,2); //时addr+=3;shanshuo(addr,2,1); //分addr+=3;shanshuo(addr,1,0); //秒addr=0x02;shanshuo(addr,7,6); //年addr+=3;shanshuo(addr,6,4); //月addr+=3;shanshuo(addr,5,3); //日addr+=3;if(count==4&(shan<shan_time)) //星期{w_com(0x80+addr);w_string(0xff," ");}else w_string(11,week[time[5]]);}/*********************初始化程序***************************************/ void init_lcd() //1602初始化{w_com(0x38);w_com(0x0c);w_string(0x00,"20 - - "); //年月日格式w_string(0x44,"--:--:--"); //时间格式}void init1302() //1302初始化{if(read1302(0x81)&0x80) settime(0x80,0);}void init_timer0() //最大定时时间65.536ms{TH0=0;TL0=0;TR0=1;ET0=1;EA=1;}/*********************主程序***************************************/void main(){uchar i=0,addr=0x82;init_lcd(); //LCD1602初始化init1302(); //DS1302初始化init_timer0();while(1){keyscan();if(num1>num2) //num1>num2,说明设置时间完成,将新时间写入DS1302{t[0]=set_time[0]; //读取新时间,将其转换为DS1302 内部时间序列t[1]=set_time[1];t[2]=set_time[2];t[5]=set_time[3];t[3]=set_time[4];t[4]=set_time[5];t[6]=set_time[6];addr=0x82; //DS1302 分地址,其他时间依次加2for(i=1;i<7;i++) //写入时间{settime(addr,t[i]);addr+=2;}num2++; //确保不在设置情况下不执行此写时间程序if(num1>=100) num1=num2=0; //防止溢出sure=1; //时间设置完成,sure置位,从DS1302读取时间}// if(time[1]==0)if((time[1]==0)&&(time[0]<=5)) //整点报时{di(1); //调用蜂鸣器发声函数}}}/***********************中断服务程序*************************************/ void timer0() interrupt 1 //定时器0处理程序{TH0=0;TL0=0;shan++;if(shan>=shan_max) shan=0;if(sure) //sure置位时,set复位,正常走时{gettime();}deal(); //如果设置键按下,执行闪烁程序}(2)LCD1602.h:sbit RS=P1^0;sbit RW=P1^1;sbit E=P1^2;#define uint unsigned int#define uchar unsigned char/*******************LCD1602********************************/void delay_xus(uint x) //读写延时,12+(x-1)*5 us{while(x--) ;}void w_com(uchar com) //写命令,RS=0{RW=0;RS=0;E=1;P2=com;E=0;RW=1;delay_xus(2); //12+1*5=17us}void w_data(uchar dat) //写数据,RS=1{RW=0;RS=1;E=1;P2=dat;E=0;RW=1;delay_xus(2);}void w_onebyte(uchar addr,uchar dat) //向某一地址写数据{w_com(0x80+addr);w_data(dat);}void w_time(uchar dat) //写1302的时间,将时间转换为十六进制{w_data(dat+'0');}void w_string(uchar addr,uchar code *p) //向某一地址写字符串{uchar i=0;if(addr<=0x67) w_com(0x80+addr); //若addr>0x67则超出1602地址范围,则不进行写地址while(*(p+i)!='\0'){w_data(*(p+i));i++;}}(3)DS1302.h:sbit RST=P1^3;sbit SCLK=P1^4;sbit IO=P1^5;uchar time[7]=0; //从1302获取的时间暂存单元,格式:sec,min,h,day,month,week,year uchar code *week[9]={"***","SUN","MON","TUE","WEN","THU","FRI","SAT"}; //周日-周六void w_byte(uchar dat) //向DS1302写一字节{uchar i=8;while(i--)//for(i=0;i<8;i++){IO=dat&0x01;SCLK=1;SCLK=0;dat>>=1;}}uchar r_byte() //读一字节{uchar i=8,dat=0;while(i--)//for(i=0;i<8;i++){dat>>=1;if(IO) dat|=0x80; //There was a mistake!SCLK=1;SCLK=0;}return dat;}void write1302(uchar addr,uchar dat) //向某一地址写数据{RST=0;SCLK=0;RST=1;w_byte(addr);w_byte(dat);SCLK=1;RST=0;}uchar read1302(uchar addr) //从某一地址读数据{uchar dat;RST=0;SCLK=0;RST=1;w_byte(addr|0x01);dat=r_byte();SCLK=1;RST=0;dat=dat/16*10+(dat&0X0F);return dat;}void settime(uchar addr,uchar dat) //设置时间,注意格式转换{write1302(0x8e,0x00); //禁止写保护(即允许向1302写数据),WP=0write1302(addr,((dat/10)*16)|(dat%10)); //格式转换}void gettime() //从1302获取时间{uchar i=0;uchar addr=0x81; //秒的读取地址,其他地址依次加2for(i=0;i<7;i++){time[i]=read1302(addr);addr+=2;}}(4)keyscan.h:/***********************按键扫描程序*************************************/ bit set=0,add=0,sub=0,sure=1; //标志位:设置,加,减及确定uchar num1=0,num2=0;char set_time[7]; //sec,min,h,week,day,month,yearuchar code *t[7]; //用于将设置的时间转化为按DS1302时间顺序排列sbit set_key=P3^0; //设置键sbit add_key=P3^1; //加一键sbit sub_key=P3^2; //减一键uchar idata count=0;//count从1到7为设置时钟位(s,min,h……六位)void delay_ms(uint x) //消抖延时{uint y=110;for(;x>0;x--)for(y=110;y>0;y--) ;}void keyscan(){if((P3&0x07)!=0x07){delay_ms(90); //这里为了set键考虑,设置小点if((P3&0x07)!=0x07) //确认有键按下{if(set_key==0) //设置键被按下{count++; //count从1到7为设置时钟位(s,min,h……六位)set=1; //set为设置标志位,sure为确定标志位sure=0; //set置位时不读取DS1302内部时间,sure置位时开始读取DS1302内部时间if(count>=8){count=0;set=0;num1++;}}if(set&(count==1)) //在进入设置时间时,读取当前时间,在此时间基础上进行修改{set_time[0]=time[0];set_time[1]=time[1];set_time[2]=time[2];set_time[3]=time[5];set_time[4]=time[3];set_time[5]=time[4];set_time[6]=time[6];}if((!add_key)&(!sure)&sub_key) //'+'键,时间加1{add=1;delay_ms(10); //补偿消抖时间,否则按一下会增加很多switch(count){case 1:set_time[0]++;if(set_time[0]>=60) set_time[0]=0;break;//sec case 2:set_time[1]++;if(set_time[1]>=60) set_time[1]=0;break;//min case 3:set_time[2]++;if(set_time[2]>=24) set_time[2]=0;break;//h case 4:set_time[3]++;if(set_time[3]>=8) set_time[3]=1;break;//week case 5:set_time[4]++;if(set_time[4]>=32) set_time[4]=1;break;//day case 6:set_time[5]++;if(set_time[5]>=13) set_time[5]=1;break;//month case 7:set_time[6]++;if(set_time[6]>=99) set_time[6]=0;break;//year;}}if((!sub_key)&(!sure)&add_key) //'-'键,时间减1{sub=1;delay_ms(10); //补偿消抖时间,否则按一下会减少很多switch(count){case 1:set_time[0]--;if(set_time[0]<60) set_time[0]=59;break;//sec case 2:set_time[1]--;if(set_time[1]<0) set_time[1]=59;break;//min case 3:set_time[2]--;if(set_time[2]<0) set_time[2]=23;break;//hcase 4:set_time[3]--;if(set_time[3]<1) set_time[3]=7;break;//week case 5:set_time[4]--;if(set_time[4]<0) set_time[4]=31;break;//day case 6:set_time[5]--;if(set_time[5]<1) set_time[5]=12;break;//monthcase 7:set_time[6]--;if(set_time[6]<0) set_time[6]=99;break;//year;}}if(!add_key&!sub_key&sure) //'+'和'-'同时按下时,秒清零{set_time[0]=0;settime(0x80,0);}if(add|sub) //在对时间加减处理后进行读取显示{time[0]=set_time[0];time[1]=set_time[1];time[2]=set_time[2];time[5]=set_time[3];time[3]=set_time[4];time[4]=set_time[5];time[6]=set_time[6];}while(!set_key);}}}评分标准。

相关文档
最新文档