基于单片机的多功能数字时钟论文1_第1页
基于单片机的多功能数字时钟论文1_第2页
基于单片机的多功能数字时钟论文1_第3页
基于单片机的多功能数字时钟论文1_第4页
基于单片机的多功能数字时钟论文1_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数 字 时 钟 论 文论文题目: 基于单片机的多功能数字时钟 学生姓名 李勋贵(1010940419 ) 王华 (1010940412) 张金婉 (1010940428) 学院: 电子信息与工程学院 专业班级: 电科1004 起止时间: 2012年11月 2013年1月 摘要电子钟已成为人们日常生活中的必需品,广泛应用于各种场所。电子钟在使用时通常挂在高处,不便于时间的设置。本设计利用按键手动对时间的修改和定时功能进行操作,使用更为便捷,应用前景更加广阔。系统电路由时钟模块、主控模块、键盘及显示模块、电源模块组成。实时时钟采用ds1302实现年、月、日、时、分、秒、星期等时间信息的采集及闹钟功

2、能。这样设计的结果使电路结构十分简洁,各种要求能完全保证,使系统电路的稳定性得到提高。同时,它采用c语言对系统的各功能模块进行编程实现,并且系统具有键盘控制功能,方便校对时间。关键词:单片机stc89c52、电子闹钟、ds1302abstract electric clock has become necessary in peoples daily life, it has been widely used in various places. electric clock was usually hanged in high places. this design has intruduc

3、ed infrared remote control technology which make the time modification and timing function more convenient, so it has a better prospect to put into practice. the system is made up of the clock circuit module, control module, temperature sample module, keyboard and display module, and the power suppl

4、y module. in order to achieve the function of time information collection such as minutes, seconds and years, the real-time clock use ds1302 technology which makes the circuit structure very concise. it can ensure to achieve various requirements and make the system circuit stability improved. at the

5、 same time, it uses c language on the functional modules of the system programming, and it has the keyboard control function keywords: single-chip microcomputer-stc89c52 ,clock,ds1302目 录1 引言12 概述12.1 系统设计任务12.2 系统设计23 系统硬件设计43.1系统硬件电路芯片选型介绍43.11 stc89c52单片机介绍43.12 ds1302时钟芯片介绍73.2系统硬件电路设计103.2.1单片机最

6、小系统电路设计103.2.2系统供电系统电路设计123.2.3按键调整电路设计123.2.4时钟电路设计133.2.5 lcd1602显示电路设计143.2.6 系统闹钟电路设计153.3 系统整体电路及pcb线路板绘制153.3.1 protel99se软件介绍153.3.2 系统原理图与pcb绘制164 系统软件设计184.1 c语言介绍184.2 系统整体及各部分程序流程184.21 系统整体程序流程184.22 ds1302时钟读写程序流程194.23 按键扫描子程序流程204.24 闹铃部分程序流程215 系统焊接与调试225.1 电路焊接调试225.2 系统功能测试225.3 系统

7、误差分析235.4 设计总结23致 谢24参考文献25附录1系统元器件清单27附录2 系统源程序281 引言传统在信息高速发展的今天,几乎每个行业都实现了机械自动化,单片机(又称为微控制器)的出现是计算机发展史上的一个重要里程碑,它以体积小、功能全、性价比高等诸多优点而独具特色,在工业控制、尖端武器、通信设备、信息处理、家用电器等嵌入式应用领域中独占鳌头。51系列单片机是国内目前应用最广泛的8位单片机之一,单片机的使用使得仪器的智能化、小型化、可靠化方面都得到了很大的改善,让很多仪器的原理与设计都发生了很大变化。目前,单片机得到了越来越多爱好者的推广,可谓是“众人拾柴火焰高”,特别是近些年来,

8、基于51单片机电子产品的层出不穷,表明单片机在电子产品行业起着举足轻重的作用,各大城市公共场所出现大屏幕电子时钟已是很常见的现象,下面我们就电子时钟的原理及设计做些详细的介绍。电子钟已成为人们日常生活中的必需品,广泛应用于各种场所,给人们的生活、学习和工作带来极大的方便。目前市场上所售的数字电子钟其主要功能都是依赖于数字电路的各功能模块的组合来实现的。这些数字钟的芯片组合和电路连接都比较难,而且焊接的过程也比较复杂,相对成本比较高,为了克服这些缺点,且能适合多种场合使用,选择了以单片机编程为主的数字电子钟以满足更多人的需求。这次主要是通过软件编程来完成的,这样就降低了硬件电路的复杂性,而且其成

9、本也有所降低,摆脱了数字电路设计所带来的电路复杂,焊接过程复杂,成本高等的劣势。所要设计的数字电子钟充分挖掘了单片机的资源和运算控制能力,具有功能多,显示全的优点。本设计应用按键控制技术,时间的修改和定时功能更为便捷,应用前景更加广阔。2 概述2.1 系统设计任务本课题主要任务是设计一个基于单片机多功能电子闹钟,采用常用的stc89c52芯片作为主控芯片,采用价格低廉的ds1302时钟芯片作为时间控制芯片,采用锂电池为ds1302供电,掉电保护,保证时间数据不会丢失。显示应用的是lcd1602液晶屏,显示字体清晰,显示效果如图2.1所示。 图2.1 电子闹钟显示效果示意图本课题研究的基本内容是

10、利用stc89s52单片机控制时钟芯片ds1302,在此过程中主要实现的功能有:1) 显示年、月、日;2) 显示星期;3) 显示当前的时间;4) 可设置闹钟;5) 通过按键可以调整时间,校正时间,闹钟设定;在此过程中,需要完成的任务有:1) 设计出系统总体硬件电路图。2) 完成程序的编写与系统的仿真。3) 完成元器件的布局、pcb板的绘制、电路的焊接和调试。2.2 系统设计本系统是利用stc89c52芯片为核心,控制ds1302时钟芯片及lcd1602液晶,实现年、月、日、星期、时间的准确显示。stc89s52接受并处理ds1302数据的处理显示及键盘输入的控制信息的处理,输出时间、日期、温度

11、的显示并具有校正功能。系统模块组成框图如图2.2所示。lcd1602液晶显示51单片机最小系统单元电源电路按键调整电 路ds1302时钟电路2.2 系统硬件电路方框图系统软件流程图如图2.3所示。系统初始化读取ds1302数据数据显示(时间日期)键盘扫描,是否有键按下?否时间日期闹钟调整调整结束?否是是2.3 系统软件程序流程图3 系统硬件设计3.1系统硬件电路芯片选型介绍3.11 stc89c52单片机介绍stc89c52是一种低功耗、高性能cmos8位微控制器,具有8k 在系统可编程flash 存储器。使用atmel 公司高密度非易失性存储器技术制造,与工业80c51 产品指令和引脚完全兼

12、容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案,stc89s52引脚图如图3.1所示。图3.1 stc89c52引脚图stc89c52主要功能及特性:stc89c52具有以下标准功能:8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,stc89c52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式

13、下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。l 与mcs-51单片机产品兼容l 8k字节在系统可编程flash存储器l 1000次擦写周期l 全静态操作:0hz33hzl 三级加密程序存储器l 32个可编程i/o口线l 三个16位定时器/计数器l 八个中断源l 全双工uart串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 掉电标识符stc89c52单片机的四个i/o口作用分别如下: p0 口:p0口是一个8位漏极开路的双向i/o口。作为

14、输出口,每位能驱动8个ttl逻辑电平。对p0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。在这种模式下,p0具有内部上拉电阻。在 flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。p1 口:p1 口是一个具有内部上拉电阻的8 位双向i/o 口,p1 输出缓冲器能驱动4 个ttl 逻辑电平。对p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。此外,p1.0和p1.2分别作定时器/计数器2的外部计数

15、输入(p1.0/t2)和时器/计数器2的触发输入(p1.1/t2ex),具体如表3-1所示。在flash编程和校验时,p1口接收低8位地址字节。表3-1 p1口的第二功能引脚号第二功能p1.0t2(定时器/计数器t2的外部计数输入),时钟输出p1.1t2ex(定时器/计数器t2的捕捉/重载触发信号和方向控制)p1.5mosi(在系统编程用)p1.6miso(在系统编程用)p1.7sck(在系统编程用)p2口:p2口为一个内部上拉电阻的8 位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的 管脚被外部拉

16、低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给 出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高 八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口作为stc89c52的一些特殊功能口,如表3-2所示:表3-2 p3的

17、特殊功能口管脚备选功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)3.12 ds1302时钟芯片介绍ds1302是dallas公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态ram,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过am/pm指示决定采用24或

18、12小时格式。ds1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)res复位(2)i/o数据线(3)sclk串行时钟。时钟/ram的读/写数据以一个字节或多达31个字节的字符组方式通信。ds1302工作时功耗很低保持数据和时钟信息时功率小于1mwds1302是由ds1202改进而来增加了以下的特性:双电源管脚用于主电源和备份电源供应,vcc1为可编程涓流充电电源,附加七个字节存储器。它广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域下面。将主要的性能指标作一综合:实时时钟具有能计算2100年之前的秒、分、时、日、星期、月、年的能力,还有闰年调整的

19、能力;318位暂存数据存储ram串行i/o口方式使得管脚数量最少宽范围工作电压2.0-5.5v工作电流2.0v时,小于300na读/写时钟或ram数据时有两种传送方式单字节传送和多字节传送字符组方式8脚dip封装或可选的8脚soic封装根据表面装配与ttl兼容vcc=5v可选工业级温度范围-40+85双电源管用于主电源和备份电源供应上是ds1302的一些全面的预览,ds1302芯片外形及引脚定义图分别如图3.2与图3.3所示。 图3.2 ds1302外形图图3.3 ds1302引脚图vcc2:主用电源引脚;x1、x2:ds1302外部晶振引脚;gnd:地;rst:复位引脚;i/o:串行数据引脚

20、,数据输出或者输入都从这个引脚;sclk:串行时钟引脚;vcc1:备用电源;ds1302的内部结构如图3.4所示: 图3.4 ds1302的内部结构图ds1302是spi总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与ds1302通信,首先要先了解ds1302的控制字。ds1302的控制字如图3.5所示。图3.5 ds1302的控制字控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到ds1302中。位6:如果为0,则表示存取日历时钟数据,为1表示存取ram数据;位5至位1(a4a0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操

21、作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个sclk脉冲的下降沿,读出ds1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图3.6 。 图3.6 ds1302的读写时序图ds1302是dallas公司的涓流充电时钟芯片, ds1302工作时功耗很低、保持数据和时钟信息功耗小于1mw,仅用一节电池就能唱时间保持数据。所以总的来说ds1302的操作分2步(显示部分属于液晶显示的内容,不属于ds1302本身的内容),但是在讲述操作时序之前

22、,我们要先看看寄存器:寄存器样式.jpg上图是ds1302的寄存器样式,我们看到:1、第7位永远都是12、第6位,1表示ram,寻址内部存储器地址;0表示ck,寻址内部寄存器;3、第5到第1位,为ram或者寄存器的地址;最低位,高电平表示rd:即下一步操作将要“读”;低电平表示w:即下一步操作将要“写”。3.2系统硬件电路设计由第2章的系统框图可知本系统主要包括五个部分组成即电源模块,键盘输入模块,ds1302时钟模块,单片机最小系统模块及lcd1602显示模块。下面对各个模块进行介绍。3.2.1单片机最小系统电路设计单片机最小系统电路实现对采集数据的处理和输出显示的控制,主控电路由at89s

23、52单片机、晶振电路、复位电路三部分组成,各部分作用如下所述,由其三部分构成的单片机最小系统电路如图3.7所示。图3.7最小系统电路图 复位电路是为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5v5%,即 4.755.25v。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当vcc超过4.75v低于5.25v以及晶体振荡器 稳定工作时,复位信号才被撤除,微机电路开始正常工作。目前为止,单片机复位电路主要有四种类型:(1)微分型复位电路;(2)积分型复位电路;(3)比较器型复位电路;(4)看门

24、狗型复位电路。典型复位电路图如图3.8所示:图3.8 复位电路晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低 的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶 振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄, 所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。晶振有一个重要的参数,那就是负载

25、电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。 一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般ic的引脚都有等效输入电容,这个不能忽略。典型应用电路如图3.9所示:图3.9 晶振电路3.2.2系统供电系统电路设计本系统采用三节干电池供电,由于三节干电池输出是大约4.5v直流电压,加上两个滤波电容滤除干扰,为系统供电,d1为电源指示灯,当上电后led的亮灭来指示系统电源的正常与否,供电电路如图3.10所示。图3.10 系统电源电路

26、图3.2.3按键调整电路设计采用6mm*6mm*6mm轻触按键,4个按键分别连接在单片机的p3.0、p3.1、p3.2、p3.3口,key1按键是调整模式键,按下key1键分别是对时间的时、分、秒、日期等的设置,当完成设置后显示时钟界面;key2是“减”功能键;key3是“加”功能键;key4是用来调闹钟的功能键,其连接图如图3.11所示。 图3.11 键盘控制模块图3.2.4时钟电路设计方案一:采用单片机本身的定时器,根据振荡频率来算时间,虽然这样价格最低廉,但是时间走的不精确,断电数据也会丢失。方案二:采用ds12c877时钟芯片,此芯片内置锂电,断电数据不会丢失。但是ds12c877电路

27、比较复杂同时价格比较昂贵。方案三:采用ds1302时钟芯片,此时钟芯片能产生准确的时间、年、月、日等,外加一块锂电池能保证断电后能保证数据部丢失,具有ds12c877的功能,同时电路简单,价格低廉。综上所述,综合价格与功能等因素,因此我们采用方案三。方案三与单片机的连接图如图3.12所示。图3.12 ds1302的连接电路图1、vcc为主电源接5v,电源引脚需加滤波电容,一般电容选取104陶瓷电容;2、x1、x2外接32.768k的晶振;3、5、6、7脚分别与控制器相联,注意外部4.7k上拉电阻;4、备用电源脚,注意是3.3v,ds1302要求备用电源电压稍微低于主用电源;ds1302的具体操

28、作的大致过程,就是将各种数据写入ds1302的寄存器,以设置它当前的时间以及格式。然后使ds1302开始运作,ds1302时钟会按照设置情况运转,再用单片机将其寄存器内的数据读出。再用液晶显示,就是我们常说的简易电子钟。3.2.5 lcd1602显示电路设计本系统采用lcd1602液晶显示模块,lcd1602显示直观、美观、价格低廉、便于大批量开发。lcd1602b 可以显示2行16个字符,有 8 位数据总线 d0-d7,和 rs、r/w、 en 三个控制端口,工作电压为 5v,并且带有字符对比度调节和背光;显示电路图如图3.13所示:图3.13 lcd1602显示电路图3.2.6 系统闹钟电

29、路设计系统闹钟电路采用三极管驱动蜂鸣器来实现,当闹钟时间到时蜂鸣器演奏一首音乐,闹铃响的过程中按下key1键,闹铃停止,否则闹铃响一分钟后自动停止闹铃。系统闹铃电路如图3.14所示。 图3.14闹铃电路3.3 系统整体电路及pcb线路板绘制3.3.1 protel99se软件介绍 本文在硬件电路的设计过程中,原理图和pcb的绘制采用protel99se软件,protel99se是应用于windows9x/2000/nt操作系统下的eda设计软件,该软件以其简单易操作的优势一直以来备受电子工程师的喜爱,因而也成了很多高校电子相关专业eda工具的必选课程。 3.3.2 系统原理图与pcb绘制采用p

30、rotel99se软件绘制原理图和pcb的主要步骤如下所述:1. 建立系统所需原件库;2. 加载所建原件库到工程项目中;3. 在原理图页面中放置所需元器件并按照电气性能连接各元件;4. 建立原件封装库并加载到工程文件中;5. 绘制好电路后进行erc电气检测,并生成网络表;6. 在工程中建立pcb文件,导入生成的网络表;7. 按照网络飞线提示绘制pcb,最后完成drc检测。按照如上步骤最终完成绘制的电路原理图如图3.15所示,pcb线路板图如图3.16所示。图3.15电子闹钟系统整体电路图3.16电子闹钟系统pcb版图4 系统软件设计4.1 c语言介绍该数字闹钟的软件部分采用c语言编程来实现各项

31、功能,采用c语言编程有如下特点:1 简洁紧凑、灵活方便2 运算符丰富3 数据结构丰富4 c是结构式语言5 c语法限制不太严格,程序设计自由度大6 c语言适用范围大,可移植性好4.2 系统整体及各部分程序流程4.21 系统整体程序流程系统的软件部分分为:lcd1602液晶显示部分;时钟ds1302控制部分;单片机主控部分;按键控制部分组成。系统的整体程序流程图如图4.1所示。系统初始化读取ds1302数据数据显示(时间日期)键盘扫描,是否有键按下?否时间日期闹钟调整调整结束?否是是图4.1系统整体程序流程图4.22 ds1302时钟读写程序流程单片机通过指令,从ds1302当中读取时间数据,送到

32、单片机处理然后送到lcd1602显示。其程序实现流程图如图4.2所示。开始变量初始化ds1302不写保护复位产生一个高电平写ds1302地址延时一段时间向该地址写数据地址增加数据是否写完?否复位产生一个高电平写ds1302地址延时一段时间讲该地址的数据读出地址增加数据是否读完?显示数据否是图4.2 ds1302时钟读写程序流程图4.23 按键扫描子程序流程系统通过按键来对时间进行校正及对闹钟的设定,由于按键会有机械性的都抖动,因此需要在程序中加入防抖动程序。具体程序流程图如图4.3所示。开始按键扫描是否有键按下?k1按下k2按下k3按下年月日 星期 时钟调整显示闹钟闹钟调整否返回是图4.3 按

33、键调整部分子程序流程图4.24 闹钟部分程序流程闹钟部分可以通过按键设定闹铃时间,通过按键可以关闭闹钟其具体程序执行过程如图4.4所示。开始时间显示时间是否到闹钟设定时间?闹铃停止闹铃开,播放音乐否返回是闹铃期间是否有按键按下?是否图4.4 闹钟部分程序流程图5 系统焊接与调试5.1 电路焊接调试在该电子钟制作调试过程中,曾遇到以下问题:1) 当硬件连接无误,在系统启动后液晶不显示,系统没有反应,这种情况有以下几种可能:第一,硬件电路中存在虚焊,或电路接线焊错;第二,芯片插反了导致电路短路;第三,液晶电路焊接错误。遇到这种情况首先要用万用表检查芯片的供电电压是否为5v,如果不是就检查供电电路有

34、没有问题。如果两端有电压就看看芯片插反没有。2) 系统启动液晶显示不正常,这有可能是背光调节电位器阻值不合适,需要调节一下控制背光的10k电位器。3) 系统显示不稳定,这有可能是电压不稳定,或者stc89c52芯片的31引脚ea引脚没有接高电平。5.2 系统功能测试焊接调试好的电子闹钟实物效果图如图6.1所示。图6.1电子闹钟实物效果图通过按键设置闹钟时间,闹钟设定完毕显示当前时间,当闹钟时间到闹铃开始播放一分钟音乐,音乐播放器件按下第一个按键,闹铃停止播放音乐。闹钟有on和off档位,如果周末不需要闹钟功能可以通过按键设定关闭闹钟。经过对实物的实际测试验证该数字闹钟的各项功能均达到了设计要求

35、。5.3 系统误差分析本系统的误差来源主要有:1) ds1302时钟芯片本身的问题,这个可以通过测试,看看在一定时间内误差是多少,可以用程序调节弥补误差。2) 系统的外围器件像晶振等带来的误差,这种情况要求我们在焊接的时候元器件布局要合理,保证线路质量,最大程度的减少误差。5.4 设计总结 在此毕业设计过程中,巩固了我在大学4年内学过的知识,尤其是单片机和c语言编程方面的知识,同时通过这次毕设提高了单片机编程的能力,尤其是获得的软件调试经验,同时了解到了其它相关领域的知识,对今后的工作学习有着极大的帮助。 由于时间太仓促,经验不足,理论方面也相应的存在不足,加上条件有限,仍存在着一些设计方面的

36、问题,个人技能也有待提高。理论知识还要巩固加强。但是宝贵的实践经验还是对自己的提高有着极大的帮助。参考文献1 薛均义,张彦斌.mcs-516系列单片微型计算机及应用m.西安交通大学出版社,19992 中国机械工业教育协会 组编.单片机原理与应用.机械工业出版社.20013 黄继昌传感器工作原理及应用实例a,人民邮电出版社,19984 郭永贞, 数字电子技术m 西安电子科技大学出版社 20005 杨金岩等.8051单片机数据传输接口扩展技术与应用实例m人民邮电出版社,2005 6 张齐,杜群贵.单片机应用系统设计技术m.电子工业出版社,20077 李广弟 单片机基础m,北京航空航天大学出版社,2

37、0018 于京51系列单片机c程序设计与应用方案m 中国电力出版社 2002.9 张齐,杜群贵 单片机应用系统设计技术m.电子工业出版社,200410 张洪润 电子线路与电子技术m.清华大学出版社,200511 童诗白,华成英.模拟电子技术基础m. 高等教育出版社,200612胡海学.单片机原理及应用系统设计m.电子工业出版社,2005.13 及力,protel99se原理图与pcb设计教程m电子工业出版社,2004.14 戴佳,51单片机c语言设计实例精讲m 电子工业出版社 200615 周坚,单片机c语言轻松入门m 北京航空航天大学出版社2007 附录1系统元器件清单多功能数字时钟元器件清

38、单元件名称元件符号元件型号电阻r1 . r51k电阻r44.7k电阻r0. r3 .r6. r7. r8. r9. r10. r11 .r1210k排阻rp110k电解电容c2 c3220uf 10uf晶振y1 y211.0592mhz 32.768k陶瓷电容c4 c530p陶瓷电容c1 100p三极管q19012蜂鸣器bz1buzzer时钟芯片u2ds1302小按键k1. k2. k3. k4switch液晶显示器lcd1lcd1602发光二极管d1led单片机u1switch自锁按键s1sw_spst3.6vbt1附录2 系统源程序/* * 电子钟*/#include main.h#inc

39、lude lcd.h#include ds1302.h#include word.h#include buzz.htime time, tmp_time;alarm alarm;bit alarm_flag=1;#define lcd_command0 / command#define lcd_data1 / datasfr dbport = 0x80;bit flag=0;sbit dq = p23; /温度传送数据io口uint8 tempbuffer7;uint8 temp_value,xiaoshu; /温度值/* * 延时程序*/void delay(uint16 n)while (

40、n-);/* * 毫秒延时程序*/void delay_ms(uint16 n)uint8 m=120; /延时1mswhile (n-)while (m-);/* * 按键扫描*/int8 scan_key(void)int8 val=0;if (keyin1 = 0)delay_ms(10);if (keyin1 = 0)while (keyin1 = 0); /等待按键抬起val = 1;else if (keyin2 = 0)delay_ms(10);if (keyin2 = 0)while (keyin2 = 0);/等待按键抬起 val = 2; else if (keyin3 =

41、 0)delay_ms(10);if (keyin3 = 0)while (keyin3 = 0);/等待按键抬起 val = 3;else if (keyin4 = 0)delay_ms(10);if (keyin4 = 0)while (keyin4 = 0);/等待按键抬起 val = 4; /if (val 0)/buzzer_sound();return val;/*ds18b20子程序*/lcd_wait(void)rs=0;rw=1;_nop_();en=1;_nop_(); en=0;return dbport;void lcd_write(bit style, unsigne

42、d char input)en=0;rs=style;rw=0;_nop_();dbport=input;_nop_();/注意顺序en=1;_nop_();/注意顺序en=0;_nop_();lcd_wait();/液晶字符输入的位置*void gotoxy(unsigned char x, unsigned char y)if(y=0)lcd_write(lcd_command,0x80|x);if(y=1)lcd_write(lcd_command,0x80|(x-0x40);void print(unsigned char *str)while(*str!=0)lcd_write(lc

43、d_data,*str);str+;/*ds18b20延迟子函数(晶振12mhz )*/ void delay_18b20(unsigned int i)while(i-);/*ds18b20初始化函数*/void init_ds18b20(void) unsigned char x=0; dq = 1; /dq复位 delay_18b20(8); /稍做延时 dq = 0; /单片机将dq拉低 delay_18b20(80); /精确延时 大于 480us dq = 1; /拉高总线 delay_18b20(14); x=dq; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 de

44、lay_18b20(20);/*ds18b20读一个字节*/ unsigned char readonechar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) dq = 0; / 给脉冲信号 dat=1; dq = 1; / 给脉冲信号 if(dq) dat|=0x80; delay_18b20(4); return(dat); /*ds18b20写一个字节*/ void writeonechar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) dq =

45、0; dq = dat&0x01; delay_18b20(5); dq = 1; dat=1; /*读取ds18b20当前温度*/void readtemp(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;init_ds18b20();writeonechar(0xcc); / 跳过读序号列号的操作writeonechar(0x44); / 启动温度转换delay_18b20(100); / this message is wery importantinit_ds18b20();writeonechar(0xcc); /

46、跳过读序号列号的操作writeonechar(0xbe); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18b20(100);a=readonechar(); /读取温度值低位b=readonechar(); /读取温度值高位xiaoshu=a&0x0f;temp_value=b4; void temp_to_str() /温度数据转换成液晶字符显示 tempbuffer0=temp_value/10+0; /十位 tempbuffer1=temp_value%10+0; /个位 tempbuffer2=0x2e; tempbuffer3=xiaoshu*10/16+0;

47、/小数 tempbuffer4=0xdf; /温度符号 tempbuffer5=c; tempbuffer6=0; /* * 主界面框架*/void main_frame(void)/w_string(0x4f, c); / w_string(0x4d, .);w_string(0x42, :);w_string(0x45, :);w_string(0x02, /);w_string(0x05, /);/* * 主界面*/void main_show(bit refresh) readtemp(); /开启温度采集程序 temp_to_str(); /温度数据转换成液晶字符gotoxy(10,1); print(tempbuffer); /显示温度if (refresh)read_time(uint8 *)&time); / 重读时间/ 时间if (refresh | (time.sec != tmp_time.sec) / 秒更新tmp_time.sec = time.sec; / 秒重新赋值w_data(0x46, time.sec);/更改时钟秒值if (refresh)main_frame(); /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论