数码管电子显示屏 自动化与单片机等专业毕业设计 毕业论文.doc_第1页
数码管电子显示屏 自动化与单片机等专业毕业设计 毕业论文.doc_第2页
数码管电子显示屏 自动化与单片机等专业毕业设计 毕业论文.doc_第3页
数码管电子显示屏 自动化与单片机等专业毕业设计 毕业论文.doc_第4页
数码管电子显示屏 自动化与单片机等专业毕业设计 毕业论文.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

05. 15 数码管电子显示屏摘 要:本设计采用的是AT89S52单片机,该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时、分、秒、星期信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。温度检测采用DALLAS公司的数字化温度传感器DS18B20,该芯片采用的是独特的“一线总线”的方式与单片机进行通信,一线总线独特而且经济的特点,是用户可以轻松的组建传感器网络,为测量系统的构建引入全新的概念。实时温度采用一线总线的方式传输大大的提高了信号的抗干扰性,分辨率可通过软件设置,其小巧的体积为各种环境下测量温度提供了方便。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,更符合我们实际生活的需要,对我们大学生来说也更加有用,具有广阔的市场前景。关键词:时钟电钟;DS1302;动态扫描;单片机 Abstract:This design USES the AT89S52 SCM is adopted, the SCM MCU51 kernel, therefore has the very good compatibility with 8KB ROM, internal, able to store huge amounts of program, the most outstanding characteristic is to have the ISP in system burning function, causes burning program is more convenient. Timer chip adopt the DALLAS company Juan fine charging clock chip DS1302, this chip through simple serial communication to communicate with MCU, clock/calendar circuit can real-time provide year, month, day, time, seconds, week information, adopt double power supply, when external power off when power will be able to use back-up battery accurate timing.Temperature detection using DALLAS companys digital temperature sensor DS18B20, this chip USES is unique 1-wire bus way to communicate with MCU, 1-wire bus unique and economic characteristic, is the user can easily established sensor network for measuring system, the construction of the concept of introducing new. Real-time temperature using 1-wire bus way transmission greatly improve the anti-interference signal by software Settings, resolution, its small volume for various circumstances measuring temperature provided convenience. To sum up the calendar has read convenient, direct display, functional diversity, simple circuit, low cost, and many other advantages, conform to the trend of the development of electronic instruments, more accord with the need of our actual life, to our university students are more useful, a broad market prospect. Keywords :clock actuated; DS1302; Dynamic scanning; microcontroller 目录第一章 绪论11.1 课题开发的背景及意义1第二章 设计要求与方案论证32.1设计要求:32.2 系统基本方案选择和论证32.2.1单片机芯片的选择方案和论证:32.2.2 显示模块选择方案和论证:32.2.3时钟芯片的选择方案和论证:42.2.4温度传感器的选择方案与论证:42.3 电路设计最终方案决定5第三章 系统的硬件设计与实现63.1 电路设计框图63.2 系统硬件概述63.3 主要单元电路的设计63.3.1单片机主控制模块的设计63.3.2时钟电路模块的设计83.3.3温度采集模块设计93.3.4 电路原理及说明93.3.5显示模块的设计12第四章 系统的软件设计134.1程序流程框图134.2 子程序的设计154.2.1 DS18B20温度子程序154.2.2 读、写DS1302子程序16第五章 系统的硬件设计185.1系统硬件电路设计185.2系统硬件仿真运行情况图195.2.1 显示日期、时间、实时温度19第六章 测试分析206.1软件测试206.2测试结论20结论21致谢词22参考文献:23附录一:系统程序清单24附录二:系统电路图36第一章 绪论1.1 课题开发的背景及意义20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,再根据具体硬件结构,以及针对具体应用对象的特点与软件结合,以作完善。单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机具有体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录象机、摄象机,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。电子钟是一种利用数字电路来显示年、月、日、秒、分、时、星期的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用数字电子钟已经成为一种时尚。但目前市场上各式各样的数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点。因此有必要对数字电子钟进行改进。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。数字电子钟一个无处不在的电子产品,经过多年的发展技术已经相当成熟了。目前应用广泛的数字钟大多用AT89S52单片机为核心控制部件制作的,可以实现对年、月、日、时、分、秒的数字显示,通过扩展还可实现对电子钟所在地点的温度显示等,广泛用于车站、医院、机场、厕所等公共场所的时间显示。与机械钟表和3V电源半机械钟相比,数字电子钟具有时间精确、停电不用校准、减少汞电池的使用等优点。现代社会,守时已不仅关系到一个人的职业生涯,还成了衡量一个人道德的标准。手表为人解决了在没有时钟情况下的时间概念,然而,手表对于忙碌的生活显然已不太适应,设计一款电子数字手表势在必行。本课题将通过对目前市场上的数字电子钟的研究,制作一个以AT89S52单片机为核心控制部件的数字式电子显示屏,该屏具有显示年、月、日、时、分、秒,星期,智能实时温度等功能。因此,研究电子万年历及扩大其应用,有着非常现实的意义。第二章 设计要求与方案论证2.1设计要求: 具有年、月、日、星期、时、分、秒等显示功能; 具有当前环境温度检测显示功能 具备年、月、日、星期、时、分、秒校准调时功能;2.2 系统基本方案选择和论证2.2.1单片机芯片的选择方案和论证:方案一: 采用AT89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二: 采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S52作为主控制系统。2.2.2 显示模块选择方案和论证:方案一: 采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LCD液晶显示屏。方案二: 采用88点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。所以采用了LED数码管作为显示。2.2.3时钟芯片的选择方案和论证:方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二: 采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。所以选择DS1302作为时钟芯片用于计时。2.2.4温度传感器的选择方案与论证:方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。所以采用数字式温度传感器DS18B20来检测环境温度。2.3 电路设计最终方案决定综上各方案所述,对此次作品的方案选定: 采用AT89S52作为主控制系统; DS1302提供时钟;数字式温度传感器DS18B20检测;LED数码管动态扫描作为显示。第三章 系统的硬件设计与实现3.1 电路设计框图AT89S52主控制模 块LED数码管动态扫描显示模块键盘扫描模块 DS18B20温度采集模块DS1302时钟模块3.2 系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由1个7SEG-MPX4-CC、6个7SEG-MPX2-CC和一个7SEG-MPX1-CC数码管、74HC373锁存构成。使用动态扫描显示方式对数字的显示。3.3 主要单元电路的设计3.3.1单片机主控制模块的设计AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的主控系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如图-1 所示 图-1 主控制系统 3.3.2时钟电路模块的设计图-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2 Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。 图-2 DS1302的引脚图3.3.3温度采集模块设计如图-3所示。采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P3.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss(GND)接地。 图-3 DS18B20温度采集3.3.4 电路原理及说明(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。表-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表-2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。 (2) DS1302的控制字节DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出 表-1 DS1302的控制字格式(3) 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图-4所示 图-4 DS1302读/写时序图(4) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。 表-2 DS1302的日历、时间寄存器 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 3.3.5显示模块的设计如图5所示,采用动态扫描显示,由1个7SEG-MPX4-CC、6个7SEG-MPX2-CC和一个7SEG-MPX1-CC数码管、74HC373锁存构成接2K限流电阻,再接9013三极管接到共阴数码管的COM端作为选通位码,每位选择相应的列。另一个74HC373接4.7K限流电阻,再接并行的LED数码管的断码。图-5 LED动态扫描显示第四章 系统的软件设计软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。4.1程序流程框图 显示子程序开始初始化分离时间、日期、温度读写时间、日期、温度 返回图-A 主程序流程图 图-B 时间调整程序流程图4.2 子程序的设计4.2.1 DS18B20温度子程序36Init_DS18B20(void) DQ = 1; delay(1); DQ = 0; delay(60); DQ = 1; delay(15);/读一个字节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(10); return(dat);/写一个字节WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01;delay(10); DQ = 1; dat=1; /读取温度ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0xBE);a=ReadOneChar();b=ReadOneChar();t=b;t0;a-)IO=ACC0;SCLK=0;/delayus(10);SCLK=1;ACC=ACC1;/向1302读出一字节uchar read_byte()uchar a;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return(ACC);/向1302写入数据void Write1302(uchar add,uchar dat)RST=0;SCLK=0;/delayus(5);RST=1;write_byte(add);/write_byte(dat)/10*16+(dat)%10);write_byte(dat/104;Decimal=Decimal*10+(temp&=0x0F); */ d1=temp/16; d2=temp%16; d=d1*10+d2;return (d);/初始化DS1302void Initial_DS1302(void) Write1302(WRITE_PROTECT,0X80); Write1302(WRITE_SEC,0x56); /秒位初始化 Write1302(WRITE_MIN,0x34); /分钟初始化 Write1302(WRITE_HOUR,0x12); /小时初始化 Write1302(WRITE_PROTECT,0x00); 第五章 系统的硬件设计5.1系统硬件电路设计5.2系统硬件仿真运行情况图5.2.1 显示日期、时间、实时温度第六章 测试分析6.1软件测试电子万年历是多功能的数字型时钟,可以看当前日期、时间,还有温度的仪器。电子万年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在返回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2.烧入温度的程序后,进行修改时间、日期时相应的数码管位没有按要求闪动。 解决:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序返回时再打开定时器1中断允许。最终解决了此问题。6.2测试结论经过多次的反复测试仿真与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固.结论通过本次毕业设计我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。在课题选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。在整个设计过程中,分期分时工作,充分发挥我的主观能动性,自主学习,学到了许多课本上没有学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨论、研究。完了最初的设想。对电路的设计、布局要先有一个好的构思,才显得电路版图美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学的讨论,通过老师的指导,理清了思路。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都要有耐心。此次设计中学到了很多很多东西,这是最重要的。总之,这是一次对我们三年来所学专业的全方面考核,对我们以后进入社会融入社会有很大帮助。致谢词从论文选题到搜集资料,从提纲的完成到正文的反复修改,我经历了喜悦、聒噪、痛苦和彷徨,在写作论文的过程中,心情是如此复杂。如今,伴随着这篇毕业论文的最终成稿,复杂的心情烟消云散,自己甚至还有一点成就感。 感谢学校系部给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。在做毕业设计的日子里得到了张进峰老师的悉心指导,在此向我的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我对这次的设计完成有了信心和动力,也给了我很多无私的帮助和支持,我在此深表谢意。我还要感谢大学中给我们授课的所有老师们,是他们让我学到了很多很多知识,让我看到了世界的精彩,让我学会了做人做事。 最后感谢陪伴我的同学、朋友们,有了你们我的人生才丰富,有了你们我在奋斗的路上才不孤独,谢谢你们。 姓名:耿杰参考文献:1周立功单片机开发网2ATMEL公司AT89S52单片机中文PDF资料3维纳电子DS18B20温度传感器中文PDF资料4古玉年 编 单片机实验指导书 苏州市职业大学 2006 5杨子文 编 单片机原理及应用 西安电子科技大学出版社 20066陈正振 编 电子电路设计与制作 广西交通职业技术学院信息工程系 20077刘娟 编 单片机C语言与Protues仿真技能实训 中国电力出版社 20108广州周立功单片机发展有限公司DS1302涓流式时钟芯片原理及应用中文PDF资料9周润景 编 基于PROTEUS的51单片机设计与仿真 北京航空航天大学出版社 2010附录一:系统程序清单1.头文件(相关定义)sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;sbit CY = 0xD7;sbit AC = 0xD6;sbit F0 = 0xD5;sbit RS1 = 0xD4;sbit RS0 = 0xD3;sbit OV = 0xD2;sbit P = 0xD0;/* TCON */sbit TF1 = 0x8F;sbit TR1 = 0x8E;sbit TF0 = 0x8D;sbit TR0 = 0x8C;sbit IE1 = 0x8B;sbit IT1 = 0x8A;sbit IE0 = 0x89;sbit IT0 = 0x88;/* IE */sbit EA = 0xAF;sbit ES = 0xAC;sbit ET1 = 0xAB;sbit EX1 = 0xAA;sbit ET0 = 0xA9;sbit EX0 = 0xA8;/* IP */ sbit PS = 0xBC;sbit PT1 = 0xBB;sbit PX1 = 0xBA;sbit PT0 = 0xB9;sbit PX0 = 0xB8;/* P3 */sbit RD = 0xB7;sbit WR = 0xB6;sbit T1 = 0xB5;sbit T0 = 0xB4;sbit INT1 = 0xB3;sbit INT0 = 0xB2;sbit TXD = 0xB1;sbit RXD = 0xB0;/* SCON */sbit SM0 = 0x9F;sbit SM1 = 0x9E;sbit SM2 = 0x9D;sbit REN = 0x9C;sbit TB8 = 0x9B;sbit RB8 = 0x9A;sbit TI = 0x99;sbit RI = 0x98;#define uchar unsigned char#define uint unsigned intsbit p30=P30;sbit p31=P31;sbit p32=P32;uchar sec;uchar min;uchar hou;uchar day;uchar month;uchar year;uchar week;uchar Seg=0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F;#define WRITE_SEC 0x80#define WRITE_MIN 0x82#define WRITE_HOUR 0x84#define WRITE_DATA 0x86#define WRITE_MONTH 0x88#define WRITE_YEAR 0x8c#define SEC 0x81#define MIN 0x83#define HOUR 0x85#define DATA 0x87#define MONTH 0x89#define DAY 0x8b#define YEAR 0x8d#define WRITE_PROTECT 0x8esbit A8 =P20;sbit A9 =P21;sbit A10=P22;sbit A11=P23;sbit A12=P24;sbit A13=P25;sbit A14=P26;sbit A15=P27;sbit S0 =P10;sbit S1 =P11;sbit S2 =P12;sbit S3 =P13;sbit S4 =P14;sbit S5 =P15;sbit S6 =P16;sbit S7 =P17;sbit S8=P33;/位寻址寄存器定义sbit ACC0=ACC0;sbit ACC7=ACC7; /管脚定义sbit RST = P34; / DS1302片选 sbit SCLK = P35; / DS1302时钟信号 sbit IO= P36; / DS1302数据信号 sbit DQ=P37;void delay(int n) while(n-);#endif2.DS18B20读写子程序Init_DS18B20(void) DQ = 1; delay(1); DQ = 0; delay(60); DQ = 1; delay(15);/读一个字节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(10); return(dat);/写一个字节WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01;delay(10); DQ = 1; dat=1; /读取温度ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0xBE);a=ReadOneChar();b=ReadOneChar();t=b;t0;a-)IO=ACC0;SCLK=0;/delayus(10);SCLK=1;ACC=ACC1;/向1302读出一字节uchar read_byte()uchar a;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return(ACC);/向1302写入数据void Write1302(uchar add,uchar dat)RST=0;SCLK=0;/delayus(5);RST=1;write_byte(add);/write_byte(dat)/10*16+(dat)%10);write_byte(dat/104;Decimal=Decimal*10+(temp&=0x0F); */ d1=temp/16; d2=temp%16; d=d1*10+d2;return (d);/初始化DS1302void Initial_DS1302(void) Write1302 (WRITE_PROTECT,0X80); Write1302 (WRITE_SEC,0x56); /秒位初始化 Wri

温馨提示

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

评论

0/150

提交评论