1、基于单片机的空气质量检测系统设计专业:通信工程班级:2013级1班姓名:王世达目 录引 言41 概述61.1 系统组成61.2 硬件设计61.3 软件设计72 电路设计82.1 原理图82.2 单片机及外围电路设计82.3 传感器电路设计162.4 A/D模数转换电路182.5 LCD显示电路202.6 LED显示电路222.7 报警模块233 程序设计243.1 主程序设计243.2 按键部分243.3 显示部分243.4 A/D转换部分274 应用软件介绍304.1 keil的应用304.2 protel99se的应用314.3 Proteus的应用335 设计的应用345.1 主要用途3
2、45.2 应用场景346 结果与分析35总 结36致 谢37参考文献38附录1 原理图39附录2 程序源代码40摘 要随着现代科技的高度发展,工业生产力正在不断提高,而由此带来的负面影响也尤为显著,那就是环境的污染,它严重危害着人类的健康和生活。雾霾,为大气污染之一,一直以来广受人们关注。现在有越来越多的地区和国家开始高度重视雾霾天气,并将其视为一种灾害性天气。其实,很早以前就报道过一些雾霾灾害的重大事件,在这几次事件当中,不仅危害到人们的健康,甚至还剥夺了很多人的生命,比如1952年伦敦杀人雾事件和2013年北京雾霾事件。PM2.5,指环境中直径小于2.5m的颗粒物,是雾霾的主要成分之一,由
3、于其粒径小,活性强,易附有毒、有害物质,因而对人体健康威胁很大。因此,对PM2.5的测量显得越来越重要。本文将空气中PM2.5的浓度作为评定空气质量的依据。本设计的控制核心采用的是非常实用的51系列单片机AT89C52,配合粉尘浓度采集装置和显示设备,共同完成数据的采集,处理及显示。并会根据设置好的报警值报警提示,并且用不同颜色的指示灯显示空气质量。本文详细介绍了各个单元的电路设计过程及各功能的实现方法,该系统有良好的人机交互界面,有较高的测量精度,不仅简单实用而且便于携带。相信,它的价值一定会得到体现。关键词:雾霾;大气污染;PM2.5;单片机;AT89C52;空气质量ABSTRACTWit
4、h the highly development of modern science and technology, industrial productivity is increasing, and the resulting negative impact is particularly significant, that is the environment pollution, which cause serious damage to the human health and life.Fog haze, as one of the atmospheric pollution, h
5、as been widely attention by people.Now there are more and more regions and countries begin to attach great importance to the fog weather, and regard it as a kind of severe weather.Actually, long ago reported some fog disaster events, in this case, not only harm peoples health, even deprive the lives
6、 of many people, such as killing 1952 London fog and smog in Beijing in 2013 events.PM2.5 refers to environment particles less than 2.5 microns in diameter, is one of the major components of fog, because of its small size, activity is strong, easy to attach poisonous and harmful substances, thus a b
7、ig threat to human health.So, for the measurement of PM2.5 is more and more important.This article will air concentrations of PM2.5 as a basis for the evaluation of air quality.Used the control core of this design is very practical to 51 series microcontroller AT89C52, cooperate with the dust concen
8、tration acquisition and display devices, common to complete data collection, processing and display.And according to set good alarm value alarm prompt, and use different color indicator shows that the air quality.Each unit circuit are introduced in detail in this paper the design process and method
9、of realization of each function, the system has good man-machine interface, have higher measurement accuracy, not only simple and practical and easy to carry.Believe that its value will be reflected.Keywords: Haze; Atmospheric pollution; PM2.5; Single chip microcomputer; AT89C52;Air quality引 言 现在,老百
10、姓的生活越来越好,衣食住行和几十年前早已不可同日而语。当然,这些都得益于科技的飞速发展和生产力的不断提高。但与此同时也伴随着一些负面影响。比如,现在老百姓都十分关注的雾霾问题。通过调查发现,现在不管是发展中国家还是发达国家,不管是城市还是农村,都或多或少遭受到雾霾的侵害。而雾霾中所包含的有害物质严重影响着人们的健康,甚至威胁到人们的生命。据不完全统计,那些雾霾污染严重的城市比那些相对清洁的城市的死亡率高出将近20%之多。而本设计中检测的PM2.5,它的影响也随着医学技术的发展暴露出其相当恐怖的一面1。根据一些气象学和医学方面的专家推测,PM2.5中所包含的颗粒状污染物对人类健康的影响甚至超过了
11、可怕的沙尘暴。由于人类的生理结构原因,人的身体不能够过滤和阻拦PM2.5中的有害物质。人的鼻子只能挡住部分粒径在10m以上的颗粒物质,而那些粒径在2.5m10m之间的颗粒物虽然可以进入到人的上呼吸道,但是会被呼吸系统内部的绒毛阻挡,有些会通过痰液排出,所以不会对健康造成太大的伤害。但是小于2.5m的颗粒物,由于不能有效的阻挡,会有相当一部分通过呼吸进入支气管,进入肺部,造成呼吸道感染,肺部的气体交换也会受到干扰。这样就有可能使人呼吸困难引发哮喘和慢性支气管炎等疾病,甚至会间接导致心律不齐等心血管方面的问题2。因此,必须高度重视对PM2.5的检测,治理以及防范。本设计就是为了达到检测这一目的。只
12、有准确的检测PM2.5,才能有效的治理和防范。根据PM2.5检测网的空气质量新标准,24小时平均值标准值分布如表1: 表1 PM2.5平均值标准值分布3PM2.5浓度范围(g/m3)空气质量035优3575良75115轻度污染115150中度污染150250重度污染大于250及以上严重污染 本设计根据表1将空气质量大致分为三个等级,单片机通过分析采集到的数据判断PM2.5的浓度落在哪一个浓度区间,从而判断出空气质量等级,并作出相应的反应。本论文层次分明,按功能将设计分为几大部分,化整为零。各单元再紧密配合,实现所有功能。1 概述1.1 系统组成判断大气空气质量的指标很多,本论文选择比较典型的P
13、M2.5这一指标作为本次设计对空气质量的主要评定依据。根据空气中PM2.5的浓度将空气质量分为优良、轻度污染、重度污染三个等级。本系统以单片机为核心,通过检测单元采集大气中PM2.5浓度,然后单片机负责处理分析由检测单元传过来的数据,最后将分析结果送给显示单元。图1为系统组成框图,其中检测单元主要包括传感器和模数转换电路,显示单元包括LED显示,LCD显示,蜂鸣器报警。 图1 系统组成框图1.2 硬件设计本系统采用模块化设计,将整个系统细化为一个个小单元,各单元分别实现不同的功能,最后根据它们之间的相互关系,将它们整合到一起,这样能够达到简化设计的目的。这些单元主要包括单片机、传感器 、A/D
14、模数转换电路、液晶显示电路、LED显示电路、按键电路等功能模块。各模块之间的关系如图2所示 ,传感器将空气中的PM2.5浓度转化为模拟的电压信号,由于本设计采用的单片机不能识别模拟信号,所以需要A/D模数转换电路将模拟信号转化为数字信号,单片机分析处理数据,将分析结果通过LCD、LED、报警模块显示出来。图2 硬件设计框图1.3 软件设计软件部分按照其功能的不同,主要可以划分为主程序部分,按键部分,显示部分,报警部分, A/D转换部分等。2 电路设计2.1 原理图见附件一2.2 单片机及外围电路设计2.2.1 AT89C52介绍AT89C52是一款CMOS 8位的高性能单片机,它由美国ATME
15、L公司生产,现在有许多控制场合都采用AT89C52。它不仅兼容标准的MCS-51指令系统和8051产品引脚,它还拥有更大的只读程序存储器和随机存取数据存储器,而且AT89C52 除了具备 AT89C51 的定时器/计数器 T0 和定时器/计数器 T1,还额外增加了一个定时器/计数器 T2,使设计更加丰富、灵活4。(1)主要性能特点: 与MCS-51产品指令和引脚完全兼容 8K字节可重擦写FLASH闪存存储器 1000次写/擦循环 时钟频率:0Hz24MHz 三级加密存储器 256字节内部RAM 32个可编程I/O口线 3个16位定时/计数器 6个中断源 可编程串行UART通道 低功耗的空闲和掉
16、电模式 片内振荡器和时钟电路 图3 引脚图(2)引脚功能 P0端口:该口是一个8位漏极开路的双向I/O口。在作为输出口时,每根引脚可以带动8个TTL输入负载。当把“1”写入P0时,则它的引脚可用作高阻抗输入。当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻5。 P1端口:该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时
17、可用作输入口。P1口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在对Flash编程和程序校验时,P1口接收低8位地址5。另外,P1.0与P1.1可以配置成定时/计数器2的外部计数输入端(P1.0/T2)与定时/计数器2的触发输入端(P1.0/T2EX),如表2所示。表2 P1口管脚复用功能端口引脚复用功能P1.0T2(定时器/计算器2的外部输入端)P1.1T2EX(定时器/计算器2的外部触发端和双向控制)P1.5MOSI(用于在线编程)P1.6MISO(用于在线编程)P1.7SCK(用于在线编程) P2端口:该口是带有内部上拉电阻的8位双向I/O端口,P2口的
18、输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P2口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器或16位的外部数据存储器时,P2口送出高8位地址,在访问8位地址的外部数据存储器时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。在对Flash编程和程序校验期间,P2口也接收高位地址或一些控制信号5。 P3端口:该口是带有内部上拉电阻的8位双向I/O端口,P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端
19、口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P3口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流5。在AT89C52中,同样P3口还用于一些复用功能,如表3所列。在对Flash编程和程序校验期间,P3口还接收一些控制信号。表3 P3端口引脚与复用功能表端口引脚复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入端。在
20、振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平。在SFR AUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽这种功能。DISRTO位的默认状态,是复位高电平输出功能使能。ALE/PROG:地址锁存允许信号。在存取外部存储器时,这个输出信号用于锁存低字节地址。在对Flash存储器编程时,这条引脚用于输入编程脉冲PROG。一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或晶振。但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。在需要时,可以把地址8EH中的SFR寄存器的0位置为“1
21、”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被激活。在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。PSEN:程序存储器允许信号。它用于读外部程序存储器。当AT89C52在执行来自外部存储器的指令时,每一个机器周期PSEN被激活2次。在对外部数据存储器的每次存取中,PSEN的2次激活会被跳过。EA/Vpp:外部存取允许信号。为了确保单片机从地址为0000HFFFFH的外部程序存储器中读取代码,故要把EA接到GND端,即地端。但是,如果锁定位1被编程,则EA在复位时被锁存。当执行内部程序时,EA应接到Vcc。在对Flash存储器编程时,这条引脚接收12V编
22、程电压Vpp。XTAL1:振荡器的反相放大器输入,内部晶振工作电路的输入。XTAL2:振荡器的反相放大器输出。2.2.2 单片机最小系统的实现 单片机在实际应用中,都是和其它元器件共同完成工作任务的,为了保证单片机能够正常工作并且发挥一定作用,有些元器件是必不可少的,由单片机和这些元器件共同组成的系统称为单片机的最小系统 6。一般说来,51系列单片机的最小系统主要包括:电源、输入/ 输出设备、MCU、复位电路及晶振电路等。单片机最小系统框图如图4所示。图4 单片机最小系统框图(1)晶振电路晶振,全程晶体振荡器,它在单片机系统中发挥着非常重要的作用。它通常和电容配合共同组成晶振电路,或称为时钟电
23、路。单片机运行程序时,需要时钟频率,而时钟频率就是由晶振电路结合单片机内部电路共同产生。现在已有很多单片机都内置晶振电路,不需要外接晶振。晶振电路提供的晶振频率越高,单片机运行的速度也就越快。单片机时运行需要时间基准才能进行内部各种微操作,而这种时间基准由时钟信号来提供。AT89C52有两种时钟信号产生方式,分别为内部时钟和外部时钟方式。采用内部时钟方式需要外接一个晶振电路(有些单片机内置晶振电路,不需要外接晶振电路)与单片机内部的振荡器组合共同产生时钟脉冲信号,而在实际应用中也可以不用晶振电路,而是直接把外部时钟信号直接引入到单片机内部,这种方式就是外部时钟方式。通常在需要多个单片机同时工作
24、,一般采用外部时钟方式,这样可以使这些单片机同步工作,这种方式下,外部信号通常为频率低于12MHz且高电平超过20ns的方波。对于CHMOS工艺的单片机,外部时钟要由XTAL1端引入,而XTAL2端应悬空。由于本系统只用到一个单片机,所以采用了内部时钟方式。图5为晶振电路设计:图5 晶振电路图为了计算方便,晶振电路采用的是12MHz晶体,晶体两端各跨接一个30pF的瓷片电容外接在在单片机的XTAL1和XTAL2两个引脚上,与AT89C52单片机的内部的震荡电路共同构成自激振荡器,用来产生时钟脉冲信号。图中两个瓷片电容器能够帮助稳定频率和达到快速起振的目的。电容值通常选在530pF之间。(2)复
25、位电路为了使单片机有一个稳定的工作状态,单片机在工作开始之前必须进行一次复位,这样单片机才能在一个确定的状态上。否则,单片机很有可能因为某一个端口的高低电平的不稳定导致外围电路误动作造成不可逆的损伤;也可能导致内部定时器异常,不能按程序产生中断或者自行产生中断,使程序异常;也可能使单片机随机向外部设备发送数据等 7。这些都是非常设计者不愿见到的后果。复位电路原理:当AT89C52单片机的RST引脚收到2个机器周期高电平时,单片机就会完成复位操作。在实际应用中,一般用上电复位电路和按键复位电路两种基本形式8。RST引脚的高电平必须保持足够的时间(2个机器周期)才能够完成复位操作。每个单片机都有复
26、位电路,复位电路一般外接电阻电容与单片机一起共同完成复位操作。每种单片机都有它典型的复位电路。由于本设计电路比较简单,所以采用的是上电复位电路,典型电路如图6所示,单片机在上电瞬间,电容充电,且电容上的电压不会发生突变,这就使单片机RST脚的电压在一定时间内与VCC相同。电容充电一定时间后,RST脚上的电压才会降下来。只要合理的选择电容和电阻,就能使RST引脚保持高电平2个机器周期,这样就可以满足单片机复位要求。 图6 复位电路图2.2.3 P0口外接上拉电阻本设计中51 单片机的P0 端与LCD1602液晶显示器相连,为显示器提供数据输出,51单片机的输出口为漏极开路电路,内部无上拉电阻。当
27、做为普通I/O 口输出数据时, V2 截止,当需要输出高电平时,必须外接上拉电阻9,如图7所示。图7 P0口外接上拉电阻另外,外接上拉电阻还可以防止端口读取输入数据时出错。这是因为,在输入状态下,一般情况下从引脚上和锁存器上读来的信号一致,但也有特殊情况。比如,单片机内部总线在输出低电平以后,锁存器输入端为低电平, 对应的输出端为高电平,此时,对应的场效应管导通,端口线会呈低电平状态。也就是说就算端口线上外接高电平信号,从引脚读入单片机的信号也是低电平,因而造成读取信号错误。又如,若单片机输入/输出端口内部总线输出高电平,锁存器输入端为高电平,对应的输出端为低电平,此时,对应的场效应管截止,这
28、样,读取信号就会与实际不同,造成读取错误。所以当单片机的P0 口作为输入输出端口使用时,外加上拉电阻才能保证在输入数据前,输出级的两个场效应管均截止,引脚处于高阻状态。总的来说:无论是防止P0 口在读取数据时发生上述错误,还是在输出时能够驱动NMOS 电路都应该在端口上外接上拉电阻。在本设计中,在P0口外加了一个10K 排电阻。2.3 传感器电路设计2.3.1 传感器GP2Y1010AU介绍经过多方面的比较,本设计选择了一款体积小,灵敏度高的灰尘传感器GP2Y1010AU作为粉尘检测的工具,该传感器由日本夏普公司生产,它可以用来测量空气中0.8微米以上的微小粒子,可以满足本设计检测PM2.5的
29、要求。在许多花粉浓度及粉尘浓度检测等应用中都采用的是这一款传感器 10。此款产品既可以检测出微小粒子的浓度,还在内部设置了气流发生器,用来有效吸入外部空气。灰尘传感器GP2Y1010AU有很长的使用寿命,无论是保养还是安装都非常方便。该传感器不但具有非常低的电流消耗(最大20mA,典型值11mA),而且其稳定性好,精度高,非常适合简单的检测装置。图8为实物图。图8 夏普灰尘传感器GP2Y1010AU0FGP2Y1010AU0F中有一个红外发光二极管和一个光电晶体管,呈对角分布,测量原理如图9所示,传感器中心有个洞可以让空气自由流动,LED定向发射红外线,尤光电晶体管PD检测空气中灰尘散射的光线
30、强度,以此来判断灰尘的密度,然后输出与灰尘密度成正比的模拟电压VO2。 图9 传感器内部结构2.3.2 传感器主要参数表4 GP2Y1010AU0F的主要参数电源电压57V工作温度-1065消耗电流最大值20mA,典型值11mA灵敏度0.5V/(0.1mg/m3)清洁空气中的输出电压0.6V典型值2.4 A/D模数转换电路2.4.1 ADC0832介绍ADC0832 是美国国家半导体公司生产的一种 8 位分辨率、双通道 A/D 转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率14。学习并使用 ADC0832 可是使我们了解 A/D 转换器的原理,
31、有助于我们单片机技术水平的提高。(1)ADC0832主要参数:8 位分辨率;双通道 A/D 转换;输入输出电平与 TTL/CMOS 相兼容;5V 电源供电时输入电压在 05V 之间;工作频率为 250KHZ,转换时间为 32S;一般功耗仅为 15mW;8P、14PDIP(双列直插)、PICC 多种封装;商用级芯片温宽为0 +70,工业级芯片温宽为40+85;(2)芯片引脚定义:CS_:片选使能,低电平芯片使能。CH0:模拟输入通道 0,或作为 IN+/-使用。CH1:模拟输入通道 1,或作为 IN+/-使用。GND:芯片参考 0 电位(地)。DI:数据信号输入,选择通道控制。DO:数据信号输出
32、,转换数据输出。CLK:芯片晶振输入。Vcc/REF:电源输入及参考电压输入(复用)。ADC0832 为 8 位分辨率 A/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为 32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过 DI 数据输入端,可以轻易的实现通道功能的选择。2.5 LCD显示电路 2.5.1 LCD1602简介LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,
33、只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。(1)LCD1602主要技术参数显示容量为162个字符;芯片工作电压为4.55.5V;工作电流为2.0mA(5.0V);模块最佳工作电压为5.0V;字符尺寸为2.954.35(WH)mm。(2)LCD1602的引脚说明LCD1602采用标准的14脚接口
34、,其中:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:V0为液晶显示器对比度调整端。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。 第1516脚:空脚2.5.2 LCD1602电路设计 系统中采用LCD1602作为显示器件输出信息。与传统的LED数
35、码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,根据各管脚的功能电路设计如图10:图10 LCD1602功能电路2.6 LED显示电路本设计采用红、黄、绿三种指示灯显示当前空气质量,当PM2.5小于75时,绿灯亮,表示当前空气质量较为良好;当PM2.5大于75,小于150时,黄灯亮,表示当前空气轻度或中度污染;当PM2.5大于150时,红灯亮,表示当前空气为重度污染状态。红黄绿指示灯负极与单片机三个不同接口相连,正极连在一起并与5V电源相连,当单片机IO口输出低电平时,对应的LED就会被点亮。图11为LED的电路原理图:图11 LED电路原理图2.
36、7 报警模块当PM2.5浓度高于一定程度时,会对身体造成很大伤害,因此该设计专门添加了报警电路。当PM2.5浓度超过单片机设定的报警值时,单片机控制蜂鸣器报警提醒用户PM2.5浓度严重超标。当单片机控制引脚输出低电平时,三极管导通,电流通过蜂鸣器,蜂鸣器响。当单片机控制引脚输出高电平时三极管关断蜂鸣器不响。报警模块如图12所示。图12 报警模块原理图3 程序设计3.1 主程序设计主程序主要配合硬件实现系统的功能,包括数据采集与处理、测量结果的显示以及各个子函数的调用等。图13为主程序流程图:图13 主程序流程图3.2 显示部分 1602液晶模块内部的控制器共有11条控制指令,如5表所示:表5
37、控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRA或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示
38、,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F:
39、 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 3.3 A/D转换部分正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当
40、要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片晶振输入端CLK输入晶振脉冲,DO/DI 端则使用 DI端输入通道功能选择的数据信号。在第1个晶振脉冲的下沉之前 DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,当2位数据为“1”、“0”时,只对CH0进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2位数据为“0”、“1”时,将CH0作为负输入端 IN-,CH1作
41、为正输入端IN+进行输入。到第 3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉 DO端输出下一位数据。直到第11个脉冲时发出最低位数据 DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第 11个字节的下沉输出 DATD0。随后输出 8位数据,到第 19 个脉冲时数据输出完成,也标志着一次 A/D 转换的结束。最后将 CS 置高电平禁用芯片,直接将转换后的数据进行处理就可以了。更详细的时序说明请参考图14:图14 ADC08
42、32 时序图作为单通道模拟信号输入时ADC0832的输入电压是 05V且8位分辨率时的电压精度为 19.53mV。如果作为由 IN+与 IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行 IN+与 IN-的输入时,如果 IN-的电压大于 IN+的电压则转换后的数据结果始终为00H。ADC0832 数据读取程序流程见图15:图15 ADC0832 数据读取流程图应用代码举例:unsigned char ADC0832(bit MO,bit CH) /返回转换结果,unsigned char i,dat,ndat;CS = 0;/将CS端置0,使能
43、_nop_();/延时一个机器周期_nop_();DI = 1;/起始信号必须置高CLK = 1;/时钟信号_nop_();_nop_();CLK = 0;/时钟信号形成第一个脉冲_nop_();_nop_();DI = MO;/模式选择CLK = 1;_nop_();_nop_();CLK = 0;/时钟信号形成第二个脉冲_nop_();_nop_();DI = CH;/通道选择CLK = 1;/_nop_();_nop_();CLK = 0;/时钟信号形成第三个脉冲DI = 1;dat = 0;/读取转换后数据for(i = 0;i 8;i+)dat = 1;CLK=1;_nop_();_
44、nop_();CLK=0;/时钟信号形成第四个脉冲_nop_();_nop_();dat |= ADDO;ndat = 0; if(ADDO = 1)ndat |= 0x80;/反序读取数据,用于校验 for(i = 0;i = 1;CLK = 1;_nop_();_nop_();CLK=0;/时钟脉冲_nop_();_nop_();if(ADDO=1)ndat |= 0x80; CS=1;/结束,使能关CLK=0;DI=1;if(dat=ndat)/数据校验return(dat);elsereturn 0; 4 应用软件介绍4.1 keil的应用Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的