1、单片机技术及应用单片机技术及应用基于基于汇编及汇编及C51程序设计程序设计第9章 单片机应用系统设计及举例第9章 单片机应用系统设计及举例主 要 章 节 9.1 单片机应用系统开发过程 9.2 单片机电子时钟的设计 9.3 单片机数显温度计设计2022-6-2221第9章 单片机应用系统设计及举例9.1 单片机应用系统开发过程9.1.1 单片机应用系统开发的基本过程 1. 明确系统的任务和功能要求 2. 系统的总体方案设计 3系统详细设计 4系统仿真与制作 5系统调试与修改 6生成正式系统或产品2022-6-2231第9章 单片机应用系统设计及举例9.1.2 单片机应用系统的硬件系统设计单片机
2、应用系统的硬件系统设计1. 是单片机芯片及主要器件的选择是单片机芯片及主要器件的选择1) 程序存储器2) 数据存储器3) 集成的外部设备4) 并行I/O接口5) 系统速度匹配2. 系统扩展和配置。系统扩展和配置。1)扩展:程序存储器、数据存储器、I/O口、定时/计数器、中断系统2)配置:键盘、显示器、打印机、A/D转换器、D/A转换器3. 其他电路设计其他电路设计1)译码电路 2)总线驱动器3) 抗干扰电路2022-6-2241第9章 单片机应用系统设计及举例9.1.3 单片机应用系统的软件设计1. 软件设计的特点(1)软件结构清晰、简捷、流程合理。(2)各功能程序实现模块化、系统化。这样,既
3、便于调试、连接,又便于移植、修改和维护。(3)程序存储区、数据存储区规划合理,既能节约存储容量,又能给程序设计与操作带来方便。(4)运行状态实现标志化管理。各个功能程序运行状态、运行结果以及运行需求都设置状态标志以便查询,程序的转移、运行、控制都可通过状态标志来控制。(5)经过调试修改后的程序应进行规范化,除去修改“痕迹”。规范化的程序便于交流、借鉴,也为以后的软件模块化、标准化打下基础。(6)实现全面软件抗干扰设计。软件抗干扰是计算机应用系统提高可靠性的有力措施。(7)为了提高运行的可靠性,在应用软件中设置自诊断程序,在系统运行前先运行自诊断程序,用以检查系统各特征参数是否正常。2022-6
4、-2251第9章 单片机应用系统设计及举例 2. 资源分配 1)程序存储器ROM/EPROM资源的分配 2)数据存储器RAM资源的分配 3)定时/计数器、中断、串行口等分配2022-6-2261第9章 单片机应用系统设计及举例9.2 单片机电子时钟的设计 9.2.1 功能要求功能要求 本设计电子时钟主要功能为: (1)自动计时功能。 (2)能显示计时时间,显示效果良好。 (3)有校时功能,能对时间进行校准。 扩展功能:(用户自己添加) (4)具有整点报时功能,在整点时使用蜂鸣器进行报时。 (5)具有定时闹钟功能,能设定定时闹钟,在时间到时能使蜂鸣器鸣叫。2022-6-2271第9章 单片机应用
5、系统设计及举例9.2.2 总体方案设计 1计时方案计时方案 第一种是通过单片机内部的定时器/计数器,采用软件编程来实现时钟计时,这种实现的时钟一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合; 第二种是采用专用的硬件时钟芯片计时,这种实现的时钟一般称为硬时钟。专用的时钟芯片功能比较强大,除了自动实现基本计时外,一般还具有日历和闰年补偿等功能,计时准确,软件编程简单,但硬件成本相对较高,通常用在对时钟精度要求较高的场合。2022-6-2281第9章 单片机应用系统设计及举例 2显示方案显示方案 LED数码管, LED数码管显示亮度高,显示内容
6、清晢,根据具体的连接方式可分为静态显示和动态显示。 LCD液晶显示, 一般能显示的信息多,显示效果好,而且液晶显示器一般都带控制器,显示过程由自带的控制器控制,不须要CPU参与,但液晶显示器造价相对较高。2022-6-2291第9章 单片机应用系统设计及举例 定时选择硬件定时,显示选择LCD液晶显示,总体设计框图2022-6-2210151单片机时钟电路复位电路LCD按键时钟芯片第9章 单片机应用系统设计及举例9.2.3 主要器件介绍主要器件介绍 1. DS1302简介简介 DS1302是DALLAS公司推出的高性能低功耗涓流充电时钟芯片,内含有一个实时时钟/日历寄存器和31个字节静态RAM,
7、实时时钟/日历寄存器能提供2100年之前的秒、分、时、日、日期、月、年等信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24小时或12小时格式。内部31个字节静态RAM可提供用户访问。对时钟/日历寄存器、RAM的读/写,可以采用单字节方式或多达31个字节的字符组方式;工作电压范围宽:2.05.5V;与TTL兼容,VCC=5V;温度范围宽,可在-40C+85C正常工作;采用主电源和备份电源双电源供电,备份电源可由电池或大容量电容实现;功耗很低,保持数据和时钟信息时功率小于1mW。2022-6-22111第9章 单片机应用系统设计及举例 2. DS1302引脚功能引脚功
8、能 2022-6-22121 1 2 3 4 5 6 7 8 VCC2 X1 X2 GND VCC1 SCLK I/O RST X1、X2:32.768kHz晶振接入引脚。 GND:地。 :复位引脚,低电平有效。I/O:数据输入/输出引脚,具有三态功能。SCLK:串行时钟输入引脚。VCC1:电源1引脚,备用电源。VCC2:电源2引脚,主电源。 RST第9章 单片机应用系统设计及举例3. DS1302的时钟的时钟/日历寄存器及片内日历寄存器及片内RAM 1)控制寄存器 DS1302的 /RST引脚回到高电平后写入的第一个字就为控制命令。2022-6-22131D7D6D5D4D3D2D1D01A
9、4A3A2A1A0RD/ RAM/CKW2022-6-22114寄存器名称D7D6D5D4D3D2D1D01A4A3A2A1A0RD/ 秒寄存器10000000或1分寄存器10000010或1小时寄存器10000100或1日寄存器10000110或1月寄存器10001000或1星期寄存器10001010或1年寄存器10001100或1写保护寄存器10001110或1涓流充电寄存器10010000或1时钟突发模式10111110或1RAM011000000或1110或1RAM3011111100或1RAM突发模式11111110或1RAM/CKW2022-6-221152)日历、时钟寄存器寄存器
10、名称取值范围D7D6D5D4D3D2D1D0秒寄存器0059CH秒的十位秒的个位分寄存器00590分的十位分的个位小时寄存器0112或002312/240A/PHR小时的个位日寄存器013100日的十位日的个位月寄存器01120001或0月的个位星期寄存器01070000星期几年寄存器0199年的十位年的个位写保护寄存器WP0000000涓流充电寄存器TCSTCSTCSTCSDSDSRSRS时钟突发寄存器第9章 单片机应用系统设计及举例4)DS1302的输入/输出过程DS1302通过 -RST引脚驱动输入/输出过程,当 置过 -RST高电平启动输入/输出过程,在SCLK时钟的控制下,首先把控制
11、命令字写入DS1302的控制寄存器,其次根据写入的控制命令字,依次读写内部寄存器或片内RAM单元的数据,对于日历、时钟寄存器,根据控制命令字,一次可以读写一个日历、时钟寄存器,也可以一次读写8个字节,对所有的日历、时钟寄存器(表10.5中的时钟突发模式),写的控制命令字为0BEH,读的控制命令字为0BFH;对于片内RAM单元,根据控制命令字,一次可读写一个字节,一次也可读写31个字节。当数据读写完后,过 -RST变为低电平结束输入/输出过程。无论是命令字还是数据,一个字节传送时都是低位在前,高位在后,每一位的读写发生在时钟的上升沿。第9章 单片机应用系统设计及举例4. DS1302与与51单片
12、机的接口单片机的接口 2022-6-22171VCC2X1X2GNDVCC1SCLKI/ORST+5V8051P1.2P1.3P1.4+5V驱动程序见书。第9章 单片机应用系统设计及举例9.2.4 硬件电路设计硬件电路设计2022-6-22181P27P27P26P25P24P23P22P21P20P26P25P24P23P22P21P20P15P16P17P17P16P15XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD7
13、32P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016LRST5SCLK7I/O6X12X23VCC18VC
14、C21DS1302DS1302X1CRYSTALBAT13VX2CRYSTALC11nFC21nFC31nFR1200K0K1K2R210kR410kR310k第9章 单片机应用系统设计及举例9.2.5 软件程序设计软件程序设计2022-6-22191 软件程序划分为以下几个部分:系统主程序、DS1302驱动程序、LCD驱动程序。在主程序中调用DS1302驱动程序和LCD驱动程序,另外在主程序中还包含按键处理。 DS1302驱动程序和LCD驱动程序在前面已介绍,这里主要介绍主程序。2022-6-22120程序见书第9章 单片机应用系统设计及举例9.3 单片机数显温度计设计单片机数显温度计设计
15、9.3.1 功能要求功能要求 本设计数显温度计主要功能为: (1)测量温度范围-5599。 (2)测量精度0.5。 (3)显示效果良好。 扩展功能:(用户自己添加) (4)测量多点温度。 (5)可温度上下限报警。2022-6-22211第9章 单片机应用系统设计及举例9.3.2 总体方案设计总体方案设计 温度测量通常可以使用两种方式来实现:一种是用热敏电阻之类的器件,第二种方法是用温度传感器芯片。本设计选择第二种方法设计的单片机数字显示温度计,显示部件选择LCD,总体框图如图。2022-6-2222151单片机时钟电路复位电路LCD温度传感器芯片第9章 单片机应用系统设计及举例9.3.3 主要
16、器件介绍主要器件介绍 1. DS18B20简介简介 DS18B20是DALLAS公司生产的单总线数字温度传感器芯片,具有3引脚TO-92小体积封装形式;温度测量范围为-55+125;可编程为912位A/D转换精度;用户可自设定非易失性的报警上下限值;被测温度用16位补码方式串行输出;测温分辨率可达0.0625;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或两根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少。可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。2022-6-22231第9章 单片机应用
17、系统设计及举例2. DS18B20的外部结构的外部结构2022-6-22241 1 2 3 DALLAS DS18B20 GND DQ VDD 1 2 3 NC NC NC NC NC VDD DQ GND (a) TO-92 封装 (b) SOIC 封装 DQ:数字信号输入/输出端。GND:电源地。VDD:外接供电电源输入端(在寄生电源接线方式时接地)。第9章 单片机应用系统设计及举例3. DS18B20的内部结构的内部结构 DS18B20内部主要由4部分组成:64位光刻ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器等。2022-6-22251 高速 缓存 存储器 存储器与
18、控制逻辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 生成器 64 位ROM和单总线接口 电源检测 DQ VDD GND VD1 VD2 第9章 单片机应用系统设计及举例 1)光刻ROM存储器 光刻ROM中存放的是64位序列号,出厂前已被光刻好,它可以看作是该DS18B20的地址序列号。 2)高速暂存存储器 高速暂存存储器由9个字节组成2022-6-222612022-6-22127字节序号功 能0温度转换后的低字节1温度转换后的高字节2高温度触发器TH3低温度触发器TL4配置寄存器5保留6保留7保留8CRC校验寄存器2022-6-22128 DS18B20中的
19、温度传感器可完成对温度的测量,当温度转换命令发布后,转换后的温度以补码形式存放在高速暂存存储器的第0和第1个字节中。以12位转化为例:用16位符号扩展的二进制补码数形式提供,以0.0625/LSB形式表示,其中S为符号位。表9.5是12位转化后得到的12位数据,高字节的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘以0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘以0.0625即可得到实际温度。D7D6D5D4D3D2D1D0LS Byte232221202-12-22-32-4D7D6D5D4D3D2D1D0MS ByteSSSSS
20、2625242022-6-22129温度/16位二进制编码十六进制表示1250000 0111 1101 000007D0H850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 00102H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111
21、1100 1001 0000FC90HDS18B20部分温度数据表2022-6-22130D7D6D5D4D3D2D1D0TMR1R011111配置寄存器用于确定温度值的数字转换分辨率,该字节各位的意义如下:其中:低五位一直都是1 ,TM是测试模式位,用于设置DS18B20是在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表9.7所示(DS18B20出厂时被设置为12位)。R1R0分辨率/位温度最大转换时间/ms00993.750110187.51011275.001112750.00第9章 单片机应用系统设计及举例 4. DS18B
22、20的温度转换过程的温度转换过程 根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。DS18B20的ROM指令和RAM指令如表所示。2022-6-223112022-6-22132指 令约定代码约定代码功功 能能读ROM33H读DS18B20温度传感器ROM中的编码(即64位地址)匹配 ROM55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS18B20 使之作出响应,为下一步对该 DS18B
23、20 的读写作准备搜索 ROM0H用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址。为操作各器件做好准备跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才作出响应 ROM指令表2022-6-22133RAM指令表指 令约定代码功 能温度变换44H启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度
24、数据命令,紧跟该命令之后,是传送两字节的数据复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中重调 EEPROM0B8H将EEPROM中的内容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电模式。寄生供电时DS18B20发送“0”,外接电源供电时DS18B20发送“1”第9章 单片机应用系统设计及举例 每一步骤都有严格的时序要求,所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在前。 时序可分为初始化时序、
25、读时序和写时序。复位时要求主CPU将数据线下拉500s,然后释放,DS18B20收到信号后等待1560s左右,后发出60240s的低电平,主CPU收到此信号则表示复位成功。2022-6-22341第9章 单片机应用系统设计及举例 读时序分为读“0”时序和读“1”时序两个过程。对于DS18B20的读时序是从主机把单总线拉低之后,在15s之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20完成一个读时序过程至少需要60s。 对于DS18B20的写时序仍然分为写“0”时序和写“1”时序两个过程。DS18B20写“0”时序和写“1”时序的要求不同,当要写“0”时,单总线要被拉低至
26、少60s,以保证DS18B20能够在15s到45s之间正确地采样I/O总线上的“0”电平;当要写“1”时,单总线被拉低之后,在15s之内就得释放单总线。 2022-6-22351第9章 单片机应用系统设计及举例5. DS18B20与单片机的常见接口与单片机的常见接口2022-6-22361单片寄生电源供电方式连接图 8051 GND DQ VDD P1.0 VCC 4.7k GNDDS18B20 2022-6-22137单片外部电源供电方式 8051 GND DQ VDD P1.0 VCC 4.7k GNDDS18B20 VCC 2022-6-22138外部供电方式的多点测温电路图 8051
27、P1.0 VCC 4.7k GND DQ VDD GNDDS18B20 VCC GND DQ VDD GNDDS18B20 VCC 第9章 单片机应用系统设计及举例9.3.4 硬件电路设计硬件电路设计2022-6-22391P15P15P16P16P17P17P27P27P26P25P24P23P22P21P20P20P21P22P23P24P25P26XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P
28、1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCDLM016L2.0DQ2VCC3GND1U2DS18B20R110kX1CRYSTALC
29、11nFC21nFC31nFR2200第9章 单片机应用系统设计及举例9.3.5 系统软件程序设计系统软件程序设计 单片机数字显示温度计的软件程序主要由主程序、温度测量子程序和温度转换子程序等组成。 1主程序主程序 在主程序中首先初始化,检测DS18B20是否存在,通过调用读温度子程序读出DS18B20的当前值,调用温度转换子程序把从DS18B20中读出的值转换成对应的温度值,温度的符号显示在LCD上,温度值的整数部分分成十位和个位显示,小数点显示,温度值的小数部分显示,循环。2022-6-224012022-6-221412温度测量子程序温度测量子程序1主程序主程序 开始 DS18B20 复位初始化 发跳过 ROM 命令 发温度转换命令温度转换 DS18B20 复位初始化 发跳过 ROM 命令 发读温度命令 读转换温度值 结束 2022-6-221423温度转换子程序温度转换子程序程序见书第9章 单片机应用系统设计及举例 习习 题题1、2、4、52022-6-22431