版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目10单片机综合应用实例项目导读:
在日常生活中,电子时钟、温度测量都与我们密切相关,很多地方都会用到。本项目通过对这两个系统的设计与仿真过程的介绍,对单片机及其常见芯片的综合应用进行展示,尤其是对程序的设计及其代码的实现,体现了功能化、模块化的思想。任务10.1电子时钟的设计与仿真任务描述:
本任务要求设计一个电子时钟装置,包括硬件部分与软件部分的设计,通过Keil、Proteus平台实现系统编程仿真,用LCD1602显示设计效果。10.1.1DS1302简介DS1302是DALLAS公司推出的高性能低功耗芯片,内含1个实时时钟/日历寄存器和31个字节静态RAM,实时时钟/日历寄存器能提供2100年之前的秒、分、时、日、日期、月、年等信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24小时或12小时格式。
内部31个字节静态RAM可提供用户访问。对时钟/日历寄存器、RAM的读/写,可以采用单字节方式或多达31字节的字符组方式;工作电压范围宽,为2.0~5.5V;与TTL兼容,VCC=5V;温度范围宽,可在−40~85℃正常工作;采用主电源和备份电源双电源供电,备份电源可由电池或大容量电容器实现;功耗很低,保持数据和时钟信息时功率小于1mW。10.1.2DS1302引脚功能DS1302可采用8脚DIP封装或SOIC封装,其引脚如图所示。引脚功能如下:X1、X2:32.768kHz晶振接入引脚。GND:地。RST:复位引脚,低电平有效。I/O:数据I/O引脚,具有三态功能。SCLK:串行时钟输入引脚。VCC1:电源1引脚。VCC2:电源2引脚。
在单电源与电池供电的系统中,VCC1提供低电源并提供低功率的备用电源。在双电源系统中,VCC2提供主电源,VCC1提供备用电源,以便在没有主电源时能保存时间信息以及数据,DS1302由VCC1和VCC2两者中较大的供电。DS1302与单片机之间能简单地采用同步串行的方式进行通信,通信只需RST(复位线)、I/O(数据线)和SCLK(串行时钟)3根信号线。10.1.3DS1302的时钟/日历寄存器及片内RAMDS1302有1个控制寄存器、12个时钟/日历寄存器和31个RAM。1.控制寄存器
控制寄存器用于存放DS1302的控制命令字,DS1302的RST引脚回到高电平后写入的第一个字就为控制命令字。10.1.3DS1302的时钟/日历寄存器及片内RAM1.控制寄存器
控制寄存器用于对DS1302的读写过程进行控制,格式如表所示。D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0RD/W
各项功能说明如下:
D7:固定为1。D6:RAM/CK位,片内RAM或时钟/日历寄存器选择位,当RAM/CK=1时,对片内RAM进行读写;当RAM/CK=0时,对时钟/日历寄存器进行读写。D5~D1:地址位,用于选择进行读写的时钟/日历寄存器或片内RAM。
对时钟/日历寄存器或片内RAM的选择如表所示。寄存器名称
D7D6D5D4D3D2D1D01RAM/CK(——)A4A3A2A1A0RD/W(——)秒寄存器10000000或1分寄存器10000010或1小时寄存器10000100或1日寄存器10000110或1月寄存器10001000或1星期寄存器10001010或1年寄存器10001100或1写保护寄存器10001110或1涓流充电寄存器10010000或1时钟突发模式10111110或1RAM011000000或1...11...............0或1RAM3011111100或1RAM突发模式11111110或1D0:读写位。
当RD/W=1时,对时钟/日历寄存器或片内RAM进行读操作;
当RD/W=0时,对时钟/日历寄存器或片内RAM进行写操作。2.时钟/日历寄存器
DS1302共有12个寄存器,其中有7个与时钟/日历相关,存放的数据为BCD码形式。
时钟/日历寄存器的格式如表所示。寄存器名称取值范围D7D6D5D4D3D2D1D0秒寄存器00~59CH秒的十位秒的个位分寄存器00~590分的十位分的个位小时寄存器01~12或00~2312/240A/PHR时的个位日寄存器01~3100日的十位日的个位月寄存器01~120000月的个位星期寄存器01~070000星期几年寄存器01~99年的十位年的个位写保护寄存器WP0000000涓流充电寄存器TCSTCSTCSTCSDSDSRSRS时钟突发模式
说明如下:(1)数据都以BCD码形式表示。(2)小时寄存器的D7位为12小时制/24小时制的选择位,为1时选12小时制,为0时选24小时制。当为12小时制时,D5位为1是上午,D5位为0是下午,D4位为小时的十位数。当为24小时制时,D5、D4位为小时的十位数。(3)秒寄存器中的CH位为时钟暂停位,为1时,时钟暂停;为0时,时钟启动。(4)写保护寄存器中的WP为写保护位,当WP=1时,写保护;当WP=0时,未写保护。当对时钟/日历寄存器或片内RAM进行写时,WP应清零;当对时钟/日历寄存器或片内RAM进行读时,WP一般置1。(5)涓流充电寄存器的TCS位控制涓流充电特性,当它为1010时涓流充电器才工作。DS为二极管选择位。DS为01选择一个二极管,DS为10选择两个二极管,DS为11或00充电器被禁止,与TCS无关。RS用于选择连接在VCC2与VCC1之间的电阻器,RS为00,充电器被禁止,与TCS无关,电阻器选择情况如表所示。RS位电阻器阻值00无无01R12K10R24K11R38K3.片内RAMDS1302有31个片内RAM单元,对片内RAM的操作有单字节方式和多字节方式两种。
当控制命令字为C0H~FDH时为单字节读写方式,命令字中的DS~DI用于选择对应的RAM单元,其中奇数为读操作,偶数为写操作。当控制命令字为FEH、FFH时为多字节操作,多字节操作可一次对所有的RAM单元内容进行读写。FEH为写操作,FFH为读操作。4.DS1302的I/O过程
DS1302通过RST引脚驱动I/O过程,当RST置高电平启动I/O过程。
在SCLK时钟的控制下,首先把控制命令字写入DS1302的控制寄存器,其次根据写入的控制命令字依次读写内部寄存器或片内RAM单元的数据。
对于时钟/日历寄存器,根据控制命令字,一次可以读写一个时钟/日历寄存器。对所有的时钟/日历寄存器,写的控制命令字为0BEH,读的控制命令字为0BFH。10.1.4DS1302与51单片机的接口DS1302与51单片机的连接电路如图所示。DS1302的X1和X2接32kHz晶体,VCC2接主电源VCC,VCC1接备用电源(3V的电池)。51单片机与DS1302连接只需要3条线:时钟线SCLK与P1.2相连,数据线I/O与P1.3相连,复位线RST与P1.4相连。C语言部分接口程序如下:#include<reg51.h>#include<intrins.h>sbitT_RST=PI^2;//DS1302复位线引脚sbitT_CLK=P1^3;//DS1302时钟线引脚sbitT_IO=P1^4;//DS1302数据线引脚...//往DS1302写入1字节数据
voidWriteB(ucharucDa){uchari;ACC=ucDa;for(i=8;i>0;i--){T_IO=ACC0;//相当于汇编语言中的RRCTCLK=1;T_CLK=0;ACC=ACC>>1;}}//从DS1302读取1字节数据}C语言部分接口程序如下:ucharReadB(void){uchari;for(i=8;i>0;i--){ACC=ACC>>1;ACC7=T_IO;T_CLK=1;T_CLK=0;//相当于汇编语言中的RRC}return(ACC);}//DS1302单字节写,向指定单元写命令/数据,ucAddr为DS1302地址//ucDa为要写的命令/数据voidv_W1302(ucharucAddr,ucharucDa){T_RST=0;T_CLK=0;nop_();_nop_();T_RST=1;nop_();_nop_();writeB(ucAddr);/*地址,命令*/writeB(ucDa);/*写1字节数据*/T_CLK=1;T_RST=0;}//DS1302单字节读,从指定地址单元读出的数据
ucharuc_R1302(ucharucAddr){ucharucDa=0;T_RST=0;T_CLK=0;T_RST=1;writeB(ucAddr);/*写地址*/ucDa=ReadB();/*读1字节命令/数据*/T_CLK=1;T_RST=0;return(ucDa);}任务10.2多点温度测量系统的设计与仿真任务描述:
本任务要求设计一个多点温度测量系统,包括硬件部分与软件部分的设计,通过Keil、Proteus平台实现系统编程仿真,用LCD1602显示设计效果。10.2.1DS18B20简介DS18B20是Dallas半导体公司生产的单总线数字温度传感器芯片,3引脚T0-92小体积封装;温度测量范围为−55~125℃;可编程为9~12位A/D转换精度;用户可自行设定非易失性报警上下限值;被测温度用16位补码方式串行输出;测温精度可达0.0625℃;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,因此CPU只需一根端口线就能与诸多DS18B20通信。10.2.2DS18B20的结构DS18B20外部可采用3脚TO-92小体积封装和8脚SOIC封装。其引脚定义如下:DQ:数字信号I/O端。GND:电源地。VDD:外接供电电源输入端(在寄生电源接线方式下接地)。DS18B20内部主要由4部分组成:64位光刻ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器等。DS18B20的存储部件有以下两种。10.2.2DS18B20的结构1.64位ROM64位ROM中存放的是64位序列号,出厂前已被设置好,它可以看作相应DS18B20的地址序列号。不同的器件地址序列号不同。64位序列号的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验(CRC)码。64位ROM的作用是使每一个DS18B20都不相同,这样就可以达到一根总线上挂接多个DS18B20的目的。10.2.2DS18B20的结构2.高速暂存存储器
高速暂存存储器由9个字节组成,其分配如表所示。第0和第1个字节存放转换所得的温度值;第2和第3个字节分别为高温度触发器TH和低温度触发器TL;第4个字节为配置寄存器;第5、6、7个字节保留;第8个字节为CRC寄存器。字节序号功
能0温度转换后的低字节1温度转换后的高字节2高温度触发器TH3低温度触发器TL4配置寄存器5保留6保留7保留8CRC校验寄存器DS18B20中的温度传感器可完成对温度的测量,当温度值转换指令发布后,转换后的温度值以补码形式存放在高速暂存存储器的第0和第1个字节中。
以12位转化为例:用16位符号扩展的二进制补码形式提供,以0.0625/LSB形式表示,单位为℃。
下表是12位转化后得到的12位数据,其中S为符号位,即高字节的前5位是符号位,如果测得的温度大于0,这5位为0,将测到的数值乘0.0625即可得到实际温度;如果温度小于0,这5位为1,将测得的数值取反加1再乘0.0625即可得到实际温度。D7D6D5D4D3D2D1D0LSByte232221202-12-22-32-4
D7D6D5D4D3D2D1D0MSByteSSSSS262524
例如,125℃的数字输出为07D0H,25.0625℃的数字输出为0191H,−25.0625℃的数字输出为FE6FH,−55℃的数字输出为FC90H。下表列出了DS18B20部分温度值与采样数据的对应关系。温度/C°16位二进制编码十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H
高温度触发器和低温度触发器分别存放温度报警的上限值TH和下限值TL;DS18B20完成温度值转换后,就把转换后的温度值T与温度报警的上限值TH和下限值TL做比较,若T>TH或T<TL,则把该器件的报警标志置位,并对主机发出的告警搜索指令做出响应。
配置寄存器用于确定温度值的数字转换分辨率,该字节各位的意义如表所示。D7D6D5D4D3D2D1D0TMR1R011111
其中,低5位一直都是1;TM是测试模式位,用于设置DS18B20是在工作模式还是在测试模式,在DS18B20出厂时该位被设置为0,用户不要去改动;R1和R0用来设置分辨率,如表所示(DS18B20出厂时被设置为12位)。R1R0分辨率/位温度最大转换时间/ms00993.750110187.51011275.001112750.0010.2.3DS18B20的温度值转换过程
根据DS18B20的通信协议,主机控制DS18B20完成温度值转换必须经过3个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。10.2.3DS18B20的温度值转换过程DS18B20的ROM指令和RAM指令如左表和右表所示。指令约定代码功
能读
ROM33H读
DS18B20温度传感器ROM中的编码(即
64位地址)匹配
ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的
DS18B20使之作出响应,为下一步对该DS18B20的读写做准备搜索
ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址。为操作各器件做好准备跳过
ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换令。适用于单片工作告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才作出响应指令约定代码功
能温度变换44H启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部
RAM的第3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中重调
EEPROM0B8H将EEPROM中的内容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电模式。寄生供电时DS18B20发送“0”,外接电源供电时DS18B20发送“1”
每一个步骤都有严格的时序要求,所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次指令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在写指令后,主机需启动读时序完成数据接收。数据和指令的传输都是低位在前。
时序可分为初始化时序、读时序和写时序。复位时要求主CPU将数据线下拉500μs,然后释放,DS18B20收到信号后等待15~60μs,后发出60~240μs的低电平,主CPU收到此信号则表示复位成功。
读时序分为读0时序和读1时序两个过程。对于DS18B20的读时序是从主机把单总线拉低之后,在15μs之内就得释放单总线,让DS18B20把数据传输到单总线上。
DS18B20完成一个读时序过程至少需要60μs。
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
DS18B20写0时序和写1时序的要求不同,当要写0时,单总线要被拉低至少60μs,以保证DS18B20能够在15μs到45μs之间正确地采样I/O总线上的0电平;当要写1时,单总线被拉低之后,在15μs之内就得释放单总线。10.2.4DS18B20与单片机的接口DS18B20可采用外部电源供电,也可采用内部寄生电源供电。可单片连接形成单点测温系统,也能够多片连接组网形成多点测温系统。在多片连接时,DS18B20必须采用外部电源供电方式。
下图是单片寄生电源供电方式,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量,在信号线DQ处于高电平期间把能量储存在内部电容器里,在信号线处于低电平期间消耗电容器上的电能工作,直到高电平到来再给寄生电源(电容器)充电。寄生电源供电方式有3个好处:①进行远距离测温时,无须本地电源;②可以在没有常规电源的条件下读取ROM;③电路更加简洁,仅用一根I/O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购管理流程及工具指南
- 小区房屋质量及安全保障承诺书(7篇)
- 守时守信工作态度承诺书6篇范文
- 企业行政工作流程标准操作手册
- 客户信息管理数据库模板客户关系全覆盖
- 新一代信息技术产业市场规范指南
- 供应链风险评估与应对标准化手册全面风险防控版
- 办公文档自动归档与检索工具
- 企业风险评估与控制模板
- 软件开发安全与漏洞处理预案
- 2025年四川大学教育培训部业务岗工作人员招聘考前自测高频考点模拟试题附答案详解
- 2026届湖南省岳阳市岳阳县达标名校中考物理押题试卷含解析
- 私企请假管理办法细则
- gmp规范培训课件
- 腰椎术后伤口感染管理要点
- 璀璨冒险人二部合唱简谱天使
- 浙江浙江大学“一带一路”国际医学院行政岗招聘(2025年第3批)笔试历年参考题库附带答案详解
- 鞋厂裁断生产管理报告
- 2022公共图书馆服务外包要求
- 2025年全国硕士研究生入学统一考试 (数学二) 真题及解析
- 2025新人教版七年级下册英语 Unit 6知识点梳理及语法讲义(答案版)
评论
0/150
提交评论