《小型仓库温湿度监测系统 毕业设计.doc》由会员分享,可在线阅读,更多相关《小型仓库温湿度监测系统 毕业设计.doc(42页珍藏版)》请在三一办公上搜索。
1、 南京信息职业技术学院 毕业设计论文作者 学号 10619s34 系部 电子信息工程系 专业 电子信息工程技术/电子商务 题目 小型仓库温湿度监测系统 指导教师 评阅教师 完成时间: 2010 年 3 月 15 日 毕业设计(论文)中文摘要小型仓库温湿度监测系统摘要:仓库内要实现温湿度的精确控制必须进行多点测量。基于这一要求,本文采用多个数字温湿度传感器SHTll来设计仓库监测系统,以达到简化软硬件系统设计,提高测量精度的目的。首先介绍了SHTll的结构特点、接口电路和工作时序,然后确定了采用多个SHTll纽成的温湿度测量系统的软硬件设计方案,最后基于AT89S51单片机设计了电路简洁、大大节
2、省I/O口资源、具有现场独立显示和远距离通信功能的多点温湿度测量系统,并编写了PC机端直观的数据观测界面程序,为现代化仓库的集中管理提供了条件。关键词:SHT11;AT89S51;串口通信;仓库温湿度监测系统毕业设计(论文)外文摘要Title : Small Storage Temperature & Humidity Monitoring SystemAbstract:Multipoints monitoring is necessary for storage exact temperature & humidity controlling system For this reason,w
3、e use several digital temperature & humidity sensors to design the storage monitoring system,It can makethe software and hardware designing easier and the measuring precision higher Firstly,the paper,introduces SHTl1s structure characters,I/O connecting circuit and working schedule The scheme that h
4、ow to design the software and hardware of temperature & humidity measuring system by using several SHTl1 is presented Initially,A temperature &humidity measuring system based on AT89S51 is designedThe advantages of the system are simple hardware,less I/O resource,selfdisplaying and long distance com
5、municationFurthermore,A data observation interface in the PC terminal is programmed,which can provide A good condition for concentrative management of modern storageKeywords: SHTll;AT89S51;Connection to serial interface;Storage Temperature & Humidity Monitoring System目录一、引言51.1设计目的51.2设计要求5二、系统总体设计6
6、2.1信号采集62.1.1温湿度传感器72.1.2 SHT11性能特点72.1.2 SHT11的功能管脚及实物82.1.3 SHT11内部结构和工作原理92.1.5 硬件设计92.1.6 软件设计112.2 单片机AT89S51162.2.1 单片机AT89S51的结构及组成172.2.2 单片机AT89S51的引脚182.2.3 存储器212.2.4Flash 闪速存储器的编程232.2.5 单片机最小系统的硬件电路282.3 通信模块292.3.1 RS-232、RS-485及其接口电路302.3.2 串口的基本接线方法322.4 电源模块332.4.1 芯片LM7805332.5 硬件设
7、计综述34三、软件设计353.1 AT89S51软件设计353.1.1 软件结构设计353.2 PC机数据接收界面设计38四、系统调试38结论致谢参考文献一、引言1.1设计目的防潮、防霉、防腐是仓库日常工作的重要内容,是衡量仓库管理质量的重要指标。它直接影响到储备物资的使用寿命和工作可靠性。为保证日常工作的顺利进行,首要问题是加强仓库内温度与湿度的监测工作。但传统的方法是用与湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。因此我们需要一种造价低
8、廉、使用方便且测量准确的温湿度测量仪。 1.2设计要求一、基本功能 检测温度、湿度 实时显示温度、湿度 设定温湿度限定值 过限报警二、 主要技术参数 温度检测范围 : 0+100(可软件调整) 测量精度 : 1 湿度检测范围 : 0%-100%RH(可软件调整) 检测精度 : 1%RH 显示方式 : 后台实时显示 报警方式 : 后台报警 二、系统总体设计本设计是以AT89S51为CPU的一套检测系统,其中涉及到温湿度检测、矩阵键盘、报警电路、单片机、后台显示等部分的设计。图2-1 系统总体框图 本设计由信号采集、信号分析、信号处理和电源四个部分组成的。 (一) 信号采集 由多个数字式温湿度传感
9、器SHT11组成; (二) 信号分析 由单片机AT89S51组成; (三) 信号处理 由后台软件组成。 2.1信号采集本设计利用传感器技术进行信号采集,为单片机提高数据。传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始被测信号进行准确可靠的捕捉和转换,一切准确的测量和控制都将无法实现。工业生产过程的自动化测量和控制,几乎主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。本设计使用了数字式温湿度传感器SHT11。2.1.1温湿度传感器温湿度的测量在仓储管理、生产制造、气象观测、科学研究以及日常生活中被广泛
10、应用,传统的模拟式湿度传感器一般都要设计信号调理电路并需要经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。SHT11是瑞士Sensirion公司生产的具有I2C总线接口的单片全校准数字式相对湿度和温度传感器。该传感器采用独特的CMOSens TM技术,具有数字式输出、免调试、免标定、免外围电路及全互换的特点。该传感器将CMOS芯片技术与传感器技术结合起来,从而发挥出它们强大的优势互补作用。2.1.2 SHT11性能特点 SHT11温湿度传感器的主要特性如下:将温湿度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一芯片(CMOSe
11、ns TM技术);可给出全校准相对湿度及温度值输出;带有工业标准的I2C总线数字输出接口;具有露点值计算输出功能;具有卓越的长期稳定性;湿度值输出分辨率为14位,温度值输出分辨率为12位,并可编程为12位和8位;小体积(7.655.0823.5),可表面贴装;具有可靠的CRC数据传输校验功能;片内装载的校准系数可保证100互换性;电源电压范围为2.45.5;电流消耗,测量时为550,平均为28,休眠时为3;2.1.2 SHT11的功能管脚及实物图 2-1 SHT11 引脚说明图 2-2 SHT11 实物 SHT11温湿度传感器采用SMD(LCC)表面贴片封装形式,管脚排列如图2-2所示,其引脚
12、说明如下:(1)GND:接地端;(2)DATA:双向串口数据线;(3)SCK:串口时钟输入;(4)VDD电源端:2.45.5电源端;(58)NC:空管脚2.1.3 SHT11内部结构和工作原理温湿度传感器SHT11将温度感测、湿度感测、信号变换、AD转换和加热器等功能集成到一个芯片上,其内部结构如图2-3所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的AD转换器;最后经过二线串口数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境巾进行校准,校准系数
13、存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHT11内部还集成了一个加热元件,加热元件接通后可以将SHT11的温度升高5左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(95RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHT11温度升高、相对湿度降低,较加热前,测量值会略有差异。图2-3 SHT11内部结构框图2.1.5 硬件设计2.1.5.1 SHT11与微控制器的连接SHT11通过I2C接口与微控制器连接,具体电路如图2-4所示。其中,串口时钟输入线(SCK):S
14、CK用于微控制器与SHTll之间的通信同步,而且由于SHTll接口包含了完全静态逻辑,所以并不存在最小SCK频率限制,即微控制器可以以任意低的速度与SHTll通信。串口数据线(DATA):DATA引脚是三态门结构,用于内部数据的输出和外部数据的输入。DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿后有效,所以微控制器可以在SCK高电平时读取数据,而当其向SHTll发送数据时则必须保证DATA线上的电平状态在SCK高电平段稳定;为了避免信号冲突,微控制器仅驱动DATA在低电平,在需要输出高电平的时候,微控制器将引脚置为高阻态,由外部的上拉电阻(如4.7k)将信号拉至高电平(如图2-
15、4所示),从而实现高电平输出。图 2-4 典型I2C接口电路 2.1.5.2 硬件电路图 2-5 AT89S51和SHT11的硬件连接图SHTll是两线制的数据传输方式,具有I2C总线接口,在多点测量应用系统中通常是将多个SHTll分别独立地连接到微控制器I/O口上,微控制器通过对每一个SHTll进行测量操作,得到每一点的温湿度数据。但这样的连接方式存在两个主要缺点:(1)由于每个SHTll占用微控制器两个I/O口,所以微控制器有限的I/O口资源将制约着单个微控制器上所能测量的最大点数;(2)由于每个SHTll的测量所需时间是固定不变的,采用单独操作的逐个测量方式在多点测量系统中必然导致数据采
16、集时间过长、控制滞后,从而影响控制系统性能的提高。多个SHTll传感器和AT89S51的连接方式采取如下方案:各SHTll的SCK线接到AT89S51的同一个I/O口上,而DATA线则分别接到不同I/O口线上,需要注意的地方是:DATA数据线需要外接上拉电阻。这种连接方式有几个优点:首先,n个传感器只占用n+1个I/O口,比前述方式节省了n-1个I/O口,解决了多点测量系统中微控制器I/O口资源短缺和尽可能增加测量点之间的矛盾问题;其次,由于多个SHTll共用一条时钟线所以在每次测量中可以同时发出测量命令,多个传感器同时进行测量,只需一次等待时间则完成了整体数据的收集,大大缩短了数据采集时间,
17、为控制系统快速响应提供了条件。硬件连接如图2-5所示,本设计需要测试4个不同地方的温湿度情况,所以选择了4个SHT11传感器。2.1.6 软件设计2.1.6.1 工作时序SHTll测量过程包括4个部分:启动传输、发送测量命令、等待测量完成和读取测量数据,其中可能会涉及到启动传输时序、命令发送时序、读取数据时序和通信复位时序。微控制器首先用一组“启动传输”时序来表示数据传输的初始化,其时序图如图2-6所示:当SCK时钟高电平时DATA翻转为低电平;在DATA为低电平期间,SCK变为低电平,再翻转为高电平;随后是在SCK时钟高电平时DATA翻转为高电平。图2-6 “启动传输”时序在“启动传输”时序
18、之后,微控制器可以向SHTll发送命令。命令字节包括高3位的地址位(目前只支持000)和低5位的命令位。SHTll传感器共有5条用户命令,具体命令格式见表2-1所列表 2-1 SHTxx命令集 SHTll通过在数据传输的第8个SCK时钟周期下降沿之后,将DATA拉低来表示正确接收到命令,并第9个SCK时钟周期的下降沿之后释放DATA线(即恢复高电平),图2-7以微控制器发送湿度测量命令0000010l为例说明发送命令的时序。图2-7 命令发送时序微控制器发送一组测量命令后需要根据测量数据精确度81214bit分别等待大约1155210ms,而SHTll则通过拉低DATA表示测量结束,并且把测量
19、结果存储在SHT11内部的存储器内,然后自动进入空闲状态,等微控制器执行完其他任务后再来读取。测量数据读取前,微控制器先重新启动SCK,即SHTll拉低DATA,接着2字节的测量数据和1字节的CRC校验将由SHTll传送给微控制器。2字节的测量数据是从高字节的高位开始传送,并以CRC校验字节的确认为表示通信结束。微控制器需要通过拉低DATA来确认接收的每个字节,若不使用CRC校验位则微控制器可以在接收完测量数据的最低位后保持DATA为高电平来终止通信,图2-8给出了数据读取时序图。在测量和通讯结束后,SHT11自动转入休眠模式。图2-8 读取数据时序当遇到与SHT11通信发生错误时,微控制器可
20、以通过发送通信复位序列重新复位SHT11的串口接口。复位时序为DATA保持高电平时,触发SCK时钟9次或更多次,这就可以复位串口,而状态寄存器内容仍然保留,通信复位时序如图2-9所示图2-9通信复位时序2.1.6.2 寄存器配置SHT11传感器中的一些高级功能是通过状态寄存器来实现的,寄存器各位的类型及说明见表2-2所列。下面对寄存器相关位的功能说明: 位类型说 明缺 省7保留06读工检限(低电压检查)X5保留04保留03只用于试验,不可以使用02读/写加热0关1读/写不从OTP重下载0重下载0读/写1=8位相对湿度,12位温度分辨率。0=12位相对湿度,14位湿度分辨率012位相对湿度,14
21、位湿度表2-2 SHT11状态寄存器类型及说明(1)加热 使芯片中的加热开关接通后,传感器温度大约增加5,从而使功耗增加至8A(5V)。加热用途如下: 通过对启动加热器前后的温、湿度进行比较,可以正确地区别传感器的功能; 在相对湿度较高的环境下,传感器可通过加热来避免冷凝。 (2)低电压检测 SHT11工作时可以自行检测VDD电压是否低于2.45V,准确度为 0.1V。 (3)下载校准系数 为了节省能量并提高速度,OPT在每次测量前都要重新下载校准系数,从而使每一次测量节省8.2ms的时间。 (4)测量分辨率设定 将测量分辨率从14位(温度)和12位(湿度)分别减到12位和8位可应用于高速或低
22、功耗场合。2.1.6.3 数据计算1. 相对湿度为了补偿湿度传感器的非线性以获取准确数据,建议使用如下公式修正读数:RH=C+CS()+CS()(公式 2-1);式中S()为SHT11测得的相对湿度测量值;线性补偿系数C 、C、 C值见表2-3。S()CCC12 bit-40.0405-2.8108 bit-40.648-7.210表2-3 湿度转换系数由于实际温度与测试参考温度25(77)的显著不同, 应考虑湿度传感器的温度补偿:RH=(T-25)(t+tS()+RH(公式 2-2);温度补偿系数t 、t值见表 2-4。S()tt12 bit0.010.000088 bit0.010.001
23、28图2-4温度补偿系数 从S()到RH的对应关系参见图2-10。图2-10 S()转换到相对湿度2. 温度可用如下公式将数字输出转换为温度值:T = d+ dS()(公式 2-3);式中S()为SHT11温度测量值,特点系数d、d值见表2-5。S()dd14 bit0.010.01812 bit0.040.072VDDdd 5V-40.00-40.004V-39.75-39.503.5V-39.66-39.353V-39.60-39.282.5V-39.55-39.23表2-5温度转换系数3. 测量举例图2-11 “0000100100110001”“0000100100110001”=23
24、53RH=C+CS()+CS()=-4+0.04052353+-2.8102353=75.19 %RH(未包含温度补偿)2.2 单片机AT89S51本设计采用ATMEI公司的AT89S51芯片作为微控制器。AT89S51是一个低功耗,高性能 CMOS 8位单片机。主要性能参数: 与 MCS-51 产品指令系统完全兼容 4k 字节在系统编程(ISP)Flash 闪速存储器 1000 次擦写周期 4.05.5V 的工作电压范围 全静态工作模式: 0Hz 33MHz 三级程序加密锁 1288字节内部 RAM 32 个可编程 I /O 口线 2 个 16 位定时/计数器 6 个中断源 全双工串口 UA
25、RT 通道 低功耗空闲和掉电模式 中断可从空闲模唤醒系统 看门狗(WDT)及双数据指针 掉电标识和快速编程特性 灵活的在系统编程(ISP字节或页写模式) 2.2.1 单片机AT89S51的结构及组成AT89S51是由CPU、内部数据存储器RAM、内部程序存储器ROM、并行输入/输出(I/O)口、串口口、定时/计数器、中断系统、时钟电路等部分组成,它们均由单一总线连接并被集成在一块半导体芯片上,即组成了单片微型计算机。结构图如图2-12图 2-12 AT89S51内部结构2.2.2 单片机AT89S51的引脚AT89S51采用40管脚双列直插DIP封装,如图 2-13。图 2-13 AT89S5
26、1引脚图引脚功能说明: VCC :电源电压 VSS :地 P0 口: P0 口是一组 8 位漏极开路型双向 I/0 口,也即地址/数据总线复用口。作为输出口用时,每位能驱动 8 个TTL逻辑门电路,对端口写“ l ”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 F1ash 编程时, P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口: Pl 是一个带内部上拉电阻的 8 位双向 I/O 口, Pl 的输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对
27、端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流( I)。Flash 编程和程序校验期间, Pl 接收低 8 位地址。P1.5、P1.6、P1.7可用于程序固化(下载)使用,如表 2-6。 表2-6 P2 口: P2 是一个带有内部上拉电阻的 8 位双向 I/O 口, P2 的输出缓冲级可驱动(吸收或输出电流)4个 TTL 逻辑门电路。对端口写“ 1 ”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I)。在访问外部程
28、序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR 指令) 时, P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行MOVXRi 指令)时, P2 口线上的内容(也即特殊功能寄存器( SFR )区中 P2 寄存器的内容),在整个访问期间不改变。Flash 编程或校验时, P2 亦接收高位地址和其它控制信号。 P3 口: P3 口是一组带有内部上拉电阻的 8 位双向 I/0 口。 P3 口输出缓冲级可驱动(吸收或输出电流) 4 个 TTL逻辑门电路。对 P3 口写入“ l ”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的 P3 口将
29、用上拉电阻输出电流(I)。P3 口除了作为一般的 I/0 口线外,更重要的用途是它的第二功能,如下表2-7所示:P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。表2-7 RST :复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高电平将使单片机复位。 WDT 溢出将使该引脚输出高电平,设置 SFR AUXR 的 DISRT0 位(地址 8EH )可打开或关闭该功能。 DISRT0 位缺省为 RESET 输出高电平打开状态。 ALE/:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。即使不访问外部存储器, ALE
30、 仍以时钟振荡频率的1 /6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 F1ash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 M0VX 和 M0VC 指令 ALE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。 :程序储存允许()输出是外部程序存储器的读选通信号,当 AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输
31、出两个脉冲。当访问外部数据存储器,没有两次有效的信号。 /VPP :外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为0000H FFFFH),端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存端状态。如端为高电平(接 Vcc 端), CPU 则执行内部程序存储器中的指令。F1ash 存储器编程时,该引脚加上 +12V 的编程电压 Vpp 。 XTALl :振荡器反相放大器及内部时钟发生器的输入端。 XTAL2 :振荡器反相放大器的输出端。 内置看门狗电路(WDT) :由十单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞而陷入死循环,这样会打断程
32、序的正常运行,从而使单片机控制的系统无法继续工作,造成整个系统陷入停滞状态,发生不可预料的后果。为了避免这种情况发生,本芯片内置了看门狗电路。所谓看门狗技术是一种程序监视技术,它不断的监视程序循环运行时间,当程序出现跑飞时而陷入死循环时,看门狗电路就会在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位,使单片机可以在无人状态下实现连续工作。2.2.3 存储器AT89C51内核采用程序存储器和数据存储器空间分开的结构,均具有 64KB 外部程序和数据的寻址空间。2.2.3.1程序存储器 用于存放编制好的程序和表格
33、。ROM的0000H-002AH单元预留给上电复位后引导程序地址及5个中断服务程序的入口地址,在实际应用系统中,主程序的存放从002BH单元开始。在程序存储器中有六个单元有特定的含义:0000H0002H:单片机复位后,PC=0000H即从此处开始执行指令。0003H000AH:外部中断0入口地址区。000BH0012H:定时器0溢出中断入口地址区。0013H001AH:外部中断1入口地址区。001BH0022H:定时器溢出中断入口地址区。0023H002AH:串口口中断入口地址区。使用时常在这些入口外安放一条绝对跳转指令,使程序跳转到拥护安排的中断处理程序的起始地址,或从0000H外执行一跳
34、转指令,跳转到用户设计的初始程序入口。如果 EA 引脚接地,全部程序均执行外部存储器。 若 EA 接Vcc,程序首先执行地址从0000H-0FFFH (4KB)内部程序存储器,再执行地址为 1000H-FFFFH(60KB)的外部程序存储器。2.2.3.2数据存储器数据存储器用于存放运算中间的结果、数据暂存、缓冲、标志位、待测程序等功能。片内的低128B的RAM地址为00H7FH,供用户做RAM用,但是在这中间的前32单元,00H1FH即引用地址寻址做用户RAM用,常常做工作寄存器区,分做四组,每组由8个单元组成通用寄存器R0R7,任何时候都由其中一组作为当前工作寄存器,通过RS0,RS1的内
35、容来决定选择哪一个工作寄存器。片内RAM不够用时,须扩展片外数据存储器。此时单片机通过P2口和P0口选出6位地址,使用ALE作低8位的锁存信号,再由P0口写入或读出数据。写时用,读时用做外部数据存储器的选通信号。2.2.3.3 特殊功能寄存器SFR在内部数据存储器的80HFFH的高128B单元中有21个特殊功能寄存器SFR,其余单元现无定义,用户不能对这些单元进行读写操作。它们用来管理CPU和I/O口以及内部逻辑部件,在指令中专用寄存器是以存储单元方式被读写的,专用寄存器虽有名称,但寻址时都做专用寄存器用,它们的地址是与片内RAM的地址相连的。下面就专用寄存器作以简单的介绍:累加器A:在绝大多
36、数情况下它参与运算的一方并存放运算的结果。寄存器B:进行乘除运算时,寄存器B有特定的用途,在乘时存放一个乘数以及积的最高位,A中存放另一个乘数以及积的低位。除法时,B中存放除数及余数,而在A中存放被除数和商,其他情况可作为普通寄存器用。堆栈指针SP:在子程序调用或中断时,用来暂存数据和地址,它按先进后出的原则存储数据,它是一个八位寄存器它指出堆栈顶部在片内RAM中的位置,系统复位后,SP变成07H,使堆栈从00单元开始。;数据指针DPTR:由两个字节组成,DPH字地址由83H,DPL由82H,存放一个16位的二进制数做地址用。程序状态字PSW:8位寄存器,存放程序执行过程中的各种信息。2.2.
37、4 Flash 闪速存储器的编程2.2.4.1并行编程 AT89s51 单片机内部有 4k 字节的可快速编程的 Flash 存储阵列。编程方法可通过传统的 EPROM 编程器使用高电压(+12V)和协调的控制信号进行编程。AT89S51 的代码是逐一字节进行编程的。(一) 编程方法:编程前,须按编程模式表(表 2-7)和图 2-14、图 2-15 所示设置好地址、数据及控制信号,AT89S51 编程方法如下: 1 在地址线上加上要编程单元的地址信号。 2 在数据线上加上要写入的数据字节。 3 激活相应的控制信号。 4 将/VPP端加上 +12V 编程电压。 5 每对 Flash 存储阵列写入一
38、个字节或每写入一个程序加密位,加上一个 ALE/编程脉冲。每个字节写入周期是自身定时的,大多数约为50us 。改变编程单元的地址和写入的数据,重复 1-5步骤,直到全部文件编程结束。(二) 数据查询:AT89S5l 单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数据查询。(三) Ready/:字节编程的进度可通过“RDY/BSY”输出信号监测,编程期间,ALE 变为高电平“H”后 P
39、3.0 端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P3.0 变为高电平表示准备就绪状态。(四) 程序校验:如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,各加密位也可通过直接回读进行校验。(五) 读片内签名字节:AT89S51单片机内有3个签名字节,地址为 000H、100H 和200H 。用于声明该器件的厂商和型号等信息,读签名字节的过程和正常校验相仿,只需将 P3.6 和 P3.7 保持低电平,返回值意义如下: (000H)=1EH 声明产品由 ATMEL 公司制造 (100H)=51H 声明为 AT89S51 单片机 待添加的隐藏文字内容3
40、(200H)=06H(六) 芯片擦除:在并行编程模式,利用控制信号的正确组合并保持 ALE/ 引脚 200ns-500ns 的低电平脉冲宽度即可完成擦除操作。在串口编程模式,芯片擦除操作是利用擦除指令进行。在这种方式,擦除周期是自身定时的,大约为 500ms。擦除期间,用串口方式读任何地址数据,返回值均为 00H 。表 2-7 Flash 编程模式注: 1 芯片擦除每一 PROG 脉冲为 200ns-500ns 。 2 写代码数据每一 PROG 脉冲为 200ns-500ns 。 3 写加密位每一 PROG 脉冲为 200ns-500ns 。 4 编程期间 P3.0 引脚输出 RDY/BSY
41、信号。 5 “”不需理会。 图 2-14 Flash存储器编程(并口模式) 图 2-15 Flash存储器校验(并口模式)数据查询:2.2.4.2串口编程将 RST 接至 Vcc,程序代码存储阵列可通过串口 ISP 接口进行编程,串口接口包含SCK线、MOSI(数据输入)和 MISO(数据输出)线。将RST拉高后,在其它操作前必须发出编程使能指令,编程前需将芯片擦除。芯片擦除则将存储代码阵列全写为 FFH 。外部系统时钟信号需接至 XTAL1 端或在 XTALl 和 XTAL2 接上晶体振荡器。最高的串口时钟(SCK)不超过 l/16 晶体时钟,当晶体为 33MHz 时,最大 SCK 频率为
42、2MHz 。 (一) 编程方法:1 上电次序:将电源加在 Vcc 和 GND 引脚, RST 置为“ H ”,如果 XTAL 和 XTAL2 接上晶体或者在 XTAL1 接上 3-33MHz 的时钟频率,等候 10ms 。 2 将编程使能指令发送到 MOSI(Pl.5),编程时钟接至 SCK(Pl.7),此频率需小于晶体时钟频率的 l/16 。 3 代码阵列的编程可选字节模式或页模式。写周期是自身定时的,一般不大于 0.5ms(5V 电压时)。 4 任意代码单元均可 MISO(Pl.6)和读指令选择相应的地址回读数据进行校验。 5 编程结束应将 RST 置为“L”以结束操作。 6 断电次序:如
43、果需要的话按这个方法断电,假如没有使用晶体,将 XATL 置为低,RST 置低,关断 Vcc 。(二) 数据查询:数据校验也可在串口模式下进行,在这个模式,在一个写周期中,通过输出引脚 MISO 串口回读一个字节数据的最高位将为最后写入字节的反码。(三) 串口编程指令设置:串口编程指令设置为一个4字节协议,参见表2-8 。(四) 并行编程接口:采用控制信号的正确组合可对 Flash 闪速存储阵列中的每一代码字节进行写入和存储器的整片擦除,写操作周期是自身定时的,初始化后它将自动定时到操作完成。图 2-16 Flash存储器串口下载 表 2-8 Flash串口编程指令注: 1. 当 LB3 和
44、LB4 加密位已编程时则不可读签名字节。 2. B1=0 B2=0 ,方式 1 ,无加密保护 B1=0 B2=l ,方式 2 ,加密位 LBl B1=1 B2=0 ,方式 3 ,加密位 LB2 B1=1 B2=1 ,方式 4 ,加密位 LB3各加密位在方式 4 执行前需按顺序逐一操作。复位信号为“ H ”后,建立数据前使 SCK 为低电平至少为 64 个系统时钟周期,复位脉冲是必须的。 SCK 时钟频率不得大于 XTAL1 时钟的 1/ 16 。 在页读/写模式,数据总是从地址 00 开始直到 255。命令字节后紧跟着高 4 位地址,全部数据单元 256 字节会逐一进行读/写,此时下个指令将准
45、备译码。2.2.5 单片机最小系统的硬件电路单片机要能正常工作必须要有时钟和复位电路,单片机芯片+复位电路+时钟电路,构成单片的最小运行环境,如图2-17所示。图2-172.2.5.1复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的状态,并从这个状态开始工作,PC=0000H,从第一单元取指令执行。单片机复位电路如图图2-17,图中提供上电复位和按键复位两种方式。复位条件是:必须使RST引脚上加上持续两个机器周期以上的高电平,点偏激才有效复位。2.2.5.2时钟电路 时钟电路是用来产生AT89S51单片机工作时所必须的时钟信号,AT89S51本身就是一个复杂的同步时序电路,为保