1、 毕业综合实训概述实训目的:对单片机电子时钟的制作及设计原理的掌握,利用本次实训对所学的理论课程进行实际论证,更好的掌握理论知识。能够更好的运用在实践当中。 实训时间:2015年9月21日-2015年11月8日实训要求:1.独立完成实物的制作及理解设计原理;2.分析及制作程序流程图;3. 绘制电路图;4.了解个元器件在电路中的作用。 目 录1 引言11.1选题背景11.2设计原理11.3单片机简介21.4单片机的发展历史21.5单片机的应用领域及发展趋势22 方案议论52.1 设计要求52.2 系统描述52.3 设计方案52.3.1 集成电路52.3.2 单片机的最小系统62.3.3结论73
2、硬件设计83.1硬件结构83.2中心控制模块83.3电源模块113.4控制电路123.5复位电路124软件设计154.1电子时钟的设计原理154.2 软件设计流程155 总结17致谢18参考文献19附录 电子时钟程序201 引言1.1选题背景单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机
3、缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到现在基于8051的单片机还在广泛的使用。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。 汽车上
4、一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!利用单片机实现电子时钟有很多优点,例如外部电路简单,控制方便等,因而备受广大单片机爱好者的喜爱。通过电子时钟的制作方案,掌握C语言的编程方法。并熟练的运用89S52单片机定时器准确的实现时间的递进,按下按键可以设置时间,最重要的是自己还可以通过程序设计输入自己需要的定点时间。1.2设计原理通过单片机对时间准确的控制,实现时间的递进。定时器:时钟周期T是时序中最小的时间单位,具体计算的方法是1/时钟源频率,我们KST-52单片机开发板上用的晶振是11.0592M,那么我们对于这个单片机系统来说,时钟周期=1/11059
5、200秒。1.3单片机简介单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。它的最大优点是体积小,可放在仪表内部,但储存量小,输入输出接口简单,功能较低。1.4单片机的发展历史单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发
6、展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只
7、在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。1.5单片机的应用领域及发展趋势单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:(1)在智能仪器仪表的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数
8、字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计、示波器、各种分析仪)。(2)在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从洗衣机、电冰箱、空调机、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。(3)在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。(4)在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备
9、基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机的发展趋势现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:(1)微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断
10、系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。(2)低功耗CMOS化MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基
11、本都采用了CMOS(互补金属氧化物半导体工艺)。像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。2 方案议论2.1 设计要求具体的设计要求应该满足以下功能:2.1.1硬件方面:(1)可以通过按键进行初始时间的设定;(2)可以通过按键对时间的调整;(3)可以通过按键进行定时及蜂鸣;(4) 可以进行自动调整时间。2.2.2软件方面:(1)系统中
12、外的各器件的初始化工作均在主程序中完成,其次,要设计如何调用显示子程序以及时间运行程序。(2)在实际的控制过程中,常要求有实时时钟,以实现定时或延时控制所以需要此类中断服务程序。2.2 系统描述本课题主要任务是利用单片机等部件设计一个电子时钟,实现时间的递进,以及通过按键的控制实现上叙述的功能。本文分析基于AT89C52单片机的电子时钟的硬件电路和软件设计,具体过程包括数据处理子程序的设计,显示子程序的设计。2.3 设计方案2.3.1 集成电路集成电路(integrated circuit)是一种微型电子器件或部件。采用一定的工艺,把一个电路中所需的晶体管、二极管、电阻、电容和电感等元件及布线
13、互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构;其中所有元件在结构上已组成一个整体,使电子元件向着微小型化、低功耗和高可靠性方面迈进了一大步。它在电路中用字母“IC”表示。集成电路发明者为杰克基尔比(基于硅的集成电路)和罗伯特诺伊思(基于锗的集成电路)。当今半导体工业大多数应用的是基于硅的集成电路。2.3.2 单片机的最小系统在设计的时候我们了解了2款芯片,AT89C51和AT89C52。下面是2款芯片的简介: AT89C51:是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable
14、 Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要功能特性:(1)与MCS-51 兼容;(2)4K字节可编程FLASH存储器;(3)
15、全静态工作:0Hz-24MHz;(4)1288位内部RAM;(5)两个16位定时器/计数器;(6)5个中断源;(7)可编程串行通道;(8)低功耗的闲置和掉电模式;AT89C52:是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89S52单片机在电子行业中有着广泛的应用。主要功能特性:兼容MCS51指令系统;(1)8kB可反复擦写(大于1000次)Flash
16、ROM;(2)32个双向I/O口;(3)256x8bit内部RAM;(4)3个16位可编程定时/计数器中断;(5)时钟频率0-24MHz;(6)2个串行中断,可编程UART串行通道;(7)2个外部中断源,共8个中断源;。2.3.3结论我们通过集成电路和2款单片机的属性和优缺点对比,我们觉得AT89S51单片机芯片更加适合本次实验的中心控制芯片。3 硬件设计3.1硬件结构图3-1是以AT89C52单片机为电子时钟系统硬件设计结构框图。该系统主要是由下载口、供电电路、外部时钟电路、DS18B20温度电路等组成。其工作原理为:此电子时钟,有三个按键:设置、确定、加一;通过按键控制单片机,调整时间。A
17、T89C52外部时钟电路6位7段数码管电源电路图3-1硬件结构图3.2中心控制模块 中控采用的是AT89C52芯片,下面是AT89S52的引脚图:图3-2AT89C52引脚图各端口作用: P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能
18、驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 S
19、CK(在系统编程用) P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉
20、电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89C52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。 端口引脚第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部
21、数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置
22、位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FL
23、ASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。3.3电源模块对于一个电子系统来说,电源部分的设计越发重要。对于一个实际的电子系统,要认真的分析它的电源需求。不仅仅是关心输入电压,输出电压和电流,还要考虑到总的功率,电源实现的效率,电源部分对负载变化的瞬态响应能力,关键器件对电源波动的容忍范围以及相应的允许的电源纹波,还有散热问题等等。本次设计基于AT89S52功率因数测量系统中使用到咯+5V的电源,电源设计的原理图如下。电路中使用到的芯片是7805,7805是稳压芯片,好处是应用比较简单,只需要接上几个电容就可以使用了。 V J132
24、1 5V 1N图3-3电源电路图3.4控制电路控制电路,键1、键2,键3与P2口相连。当电键按下时接口接低电平,实现电子时钟的时间控制。键1连通设置,键2连通实现确认,键3连通实现加一操作。3.5复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。复位电路采用RC充电电路组成上电复位单片机电路,当系统上电时,在上电初期,电容C充电,使复位脚持续高电平,当C充电到达一定程度复位脚电位会慢慢变低,最后被电阻R完全拉低,高电平复位的时间由充电的时间决定,充
25、电时间又由R与C的阻值和容值之积决定。一旦单片机复位脚拉低后就一直都低电平,只有下电后再上电才重新开始复位过程。电路图如下所示:图3-5电子时钟电路图3-4复位电路 图3-5 时钟电路如图3-6所示,是电子时钟实物图他所实现的功能为:(1)电子时钟时间的递进;(2)秒表的实现;(3)定时蜂鸣;(4)显现实际温度。图3-6 电子时钟实物图244软件设计4.1电子时钟的设计原理(1)采用六位数码管显示小时、分钟、秒,并且可以任意设定时间。(2)可以查看并且设定日期,日期采用年、月、日的显示方式。(3)可以查看并设定闹钟,闹钟的显示方式采用与时间相同的显示方式。(4)可以查看并设定星期,数码管的最后
26、一位显示星期,用数字8表示星期日。 (5)系统设定详细说明:系统的初始状态为显示时钟状态,此时显示小时、分钟、秒。初始状态下,按K0键进入时间调整程序,按K1键查看闹钟,按K2键查看日期,按K3键查看星期。进入时间调整状态后,首先调整分钟,此时分钟闪烁显示,按K1键加一,按K2键减一。按K0键开始调整小时,此时小时闪烁显示,按K1键加一,按K2键减一,再按K0键后系统返回到显示时间状态。在调整时间状态下按下K3键进入调整闹钟状态,此时显示原先的闹钟时间,并且闹钟分钟闪烁显示,此时按K1键加一,按K2键减一;调整后按K0键转换到闹钟小时调整单元,此时按K1键加一,按K2键减一。闹钟调整完毕后按K
27、0键回到调整时间状态,按K3键转到调整日期状态。4.2 软件设计流程 秒计数器的计数时钟信号为1Hz的标准信号,可以由CPLD板上提供的20MHZ的信号通过分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号11.设计一个同时显示时、分、秒6个数字的数字钟,则需要6个七段显示器。若同时点亮这6个七段显示器,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号LT(0)一LT(5)来控制6个七段显示器,依次点亮6个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号的频率超过人的眼睛视
28、觉暂留频率24Hz以上,就可以达到尽管每次点亮单个七段显示器,却能具有6个同时显示的视觉效果,而目显示也不致闪烁抖动。其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。控制电路用来将控制时钟的一些功能加入到整个正常计数的显示电路中,通过最终的显示来验证控制电路的正确性【12】。图4.1为整体系统设计标图(下页图4.1 )。初始赋值否矫正1S到?是秒加1,并调整为十进制否60S到?是分加否60分到? 时加是否24h到?是清零图4.1电子时钟流程图 5 总结原本对单片机的硬件制作,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原
29、理有了进一步的学习,同样就有了进一步的认识;其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次编写单片机的大程序,很有成就感。本制作按键分别是A、B、C、三个功能键,中间芯片为核心部件AT89S52。本次制作的电子时钟最终实现的功能为:硬件方面:1、可以通过按键进行初始时间的设定;2、可以通过按键对时间的调整;3、可以通过按键进行定时及蜂鸣;4、 可以进行自动调整时间。软件方面:1.系统中外的各器件的初始化工作均在主程序中完成,其次,要设计如何调用显示子程序以及时间运行程序。2.在实际的控制过程中,常要求有实时时钟,以实现定时或延时控制所以需要此类中断服务程序。 致 谢经过
30、几个月的忙碌,本次毕业论文设计已经接近尾声。由于经验的匮乏,难免有许多考虑不到的地方,在多次的修改和研究之后才写出完成。如果没有导师的督促和指导,以及同学和朋友的支持,想要完成这个毕业论文设计是难以想像的。感谢同学和朋友的及时帮助和教导。感谢所有帮助我的老师、同学和朋友们,在此向他们表达我的感激之情。 参考文献1周昌七,电大理工,2006年11月,总第225期,桌面电子时钟制作 2陈同洲,郭华帅,中国传媒大学学报,2009年3月,第16卷第1期,电子时钟仿真及FPGA实现3吴镇宇,2005年9月,片上时钟系统的研究与的设计4 李建忠,2004年,西安电子科技大学出版社,单片机原理及应用5孙彩兰
31、 蒋海琳,计算机与信息技术,软件纵横,基于C语言为内核的电子时钟设计 6彭小军,新余高专学报,2006年4月,第9卷第2期,用单片机实现电子时钟7颜学超,2006年5月,一种实时时钟芯片的设计8翟玉文 徐宏亮 赵岩,吉林化工学院学报,2007年1月,实用多功能电子时钟设计 9陈同洲,郭华帅,中国传媒大学学报,2009年3月第16卷第1期,电子时钟仿真及FPGA实现10吴镇宇,2005年9月,片上时钟系统的研究与的设计11简宁,企业科技与发展,2010年第16期,电子时钟仿真实现12徐得波,葛广英,2004年9月,自然科学,单片机动态可调电子时钟系统13戴勇,刘斌儒,国外电子元器件2008年第7
32、期,基于AVR单片机Mega16的电子时钟的设计14 何翠萍,刘晓刚,周功海,煤矿现代化,2007年1月第1期,单片机控电子时钟的设计附录 电子时钟程序/主程序void main() P3=0x00; flag1=0; zancun3=0; msecond_minute=0;/置秒表相关参数为0 msecond_second=0; msecond_msecond=0; speak=1;/关闭蜂鸣器 speak_count=0; clock_hour=0; clock_minute=0; clock_flag=0; countdown_flag=0;/倒计时标志位为0 clock_en=0;/开
33、机时默认关闭闹钟 init_t0(); TR0=1;/ / set_ds1302();/设置DS1302的初始时间 /接下来开始编写让数码管显示的程序 while(1) get_ds1302(); judge_dis();/显示处理 judge_s1(); judge_s2(); judge_s3(); judge_clock();/闹钟处理程序 void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0_crycle+;if(t0_crycle=2)/ 0.1秒 t0_crycle=0; msecond_fl
34、ag=1; msecond_count+; if(msecond_count=10)/1秒 msecond_count=0; second_flag=1; /*/时钟显示程序void dis(uchar s6,uchar s5,uchar s4,uchar s3,uchar s2,uchar s1) display1(s6); display2(s5); display3(s4); display4(s3); display5(s2); display6(s1); /*void init_t0() TMOD=0x01;/设定定时器工作方式1,定时器定时50毫秒TH0=(65536-50000)
35、/256;TL0=(65536-50000)%256;EA=1;/开总中断ET0=1;/允许定时器0中断t0_crycle=0;/定时器中断次数计数单元/*/8微秒延时基准程序void delay_8us(uint t) while(-t);/*/3微秒延时程序void delay_3us() ; ; /*/子程序功能:向DS18B20写一字节的数据void w_1byte_ds18b20(uchar value) uchar i=0; for(i=0;i=1; dq_ds18b20=1; /DQ = 1 delay_50us(1);/读一个字节 uchar r_1byte_ds18b20(v
36、oid) uchar i=0; uchar value = 0; for (i=0;i=1; dq_ds18b20=0;/ DQ_L; delay_3us(); dq_ds18b20=1; delay_3us(); delay_3us(); if(dq_ds18b20=1) value|=0x80; delay_50us(1); /延时40us return value;/;*/ds18b20复位子程序void rest_ds18b20(void) rest:delay_3us(); /稍做延时 delay_3us(); dq_ds18b20=1; delay_3us(); dq_ds18b20=0;/ DQ_L; delay_8us(75);/480usT960us dq_ds18b20=1;/拉高总线 delay_8us(8); if(dq_ds18b20=1) return; delay_8us(11); /延时90us if(dq_ds18b20=1) return; else goto rest; 基于单片机的电子时钟的设计 1