通信工程毕业设计基于单片机数字电压表设计_第1页
通信工程毕业设计基于单片机数字电压表设计_第2页
通信工程毕业设计基于单片机数字电压表设计_第3页
通信工程毕业设计基于单片机数字电压表设计_第4页
通信工程毕业设计基于单片机数字电压表设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、青岛农业大学第五届电子设计大赛设计方案项 目 名 称:基于单片机数字电压表设计参赛成员:陈昌栋通信09级2班丁胜朋通信09级2班张艳敏通信09级2班基于单片机的数字电压表摘要:本文介绍一种基于STC89C52单片机的一种电压测量电路,该电路采用运放OP07高精度、逐步逼近A/D转换电路,测量范围直流0-±2000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。正文着重给出了软硬件系统的各部分电路,介绍了逐步逼近电路的原理,STC89C52的特点,AD0804的功能和应用。该电路设计新颖、功能强大、可扩展性强。关键词:电压测量,运放OP07,逐步逼近式 A/D转换器,12864液

2、晶模块1前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由

3、它们构成的基于单片机的数字电压表的工作原理。2系统原理及基本框图 2.1 单片机部分由于单片机在整个设计中占据着重要的地方,首先介绍一下单片机的相关知识。单片机STC89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要。8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:·中央处理器: 中央处理器(CPU)是整个单片机的核心

4、部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。·数据存储器(RAM) 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。8051内部结构如图1所示:图1 8051 内部结构·程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

5、83;定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。·并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。·全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。·中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。·时钟电路:8051内置最高频率达12MHz的时钟电路,用

6、于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。下图是MCS-51系列单片机的内部结构示意图2所示:图2 MCS-51结构框图MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配

7、置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图3是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:图3 51单片机引脚图Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

8、初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。其复位电路如图4所示:图4 复位电路图·Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,A

9、LE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。·Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取

10、外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。2.2电平测量的电路设计该方案要求的测量信号电平的动态范围大(0.0014.99Vrms),频带宽(20Hz0.2MHz),电压测量误差为土(3%读数+2个字)。由上对AD637性能分析,系统应采用电压输出方式,不宜采用直接dB输出方式,并应具备输如信号增益调节环节,以保证信号电平的动态范围及精度。电平测量的原理框图如图5所示:可变增益放大器AD637模/数转换MPU信号输入图5 电平(电压)测量原理框图下面是对各框图的解说:(1)可变增益放大电路的设计由于最小输入信号

11、为毫伏级,系统要求具有输入阻抗变换功能,可变增益放大电路可采用射随器加可变增益放大器的结构形式。由于大多数AD变换器的满刻度输出为5V,增益变换档位应为5V、1V、100mV和10mV4个档位。经实际测量,AD637在输入信号为2MHz以下,信号有效值为0.77Vrms范围内能保证无误,当输入电压为200mVrms时,频率上限高达600kHz,考虑到芯片供电与输入电压的关系,AD673输入信号幅度范围选取0.22V。所以该可变增益放大电路可采用电阻网络衰减器和固定增益放大器相串联形式,放大器增益不小于200,上述档位对应的衰减器衰减量分别为0.001倍、0.01倍、0.1倍和1倍。射随器应选择

12、单位增益带宽大于0.6MHz,输入失调电压、失调电流小的运放芯片,可选择OP07单运放芯片。其在土15V供电时,输入失调电压的典型值和最大值分别为20UF和75UF;输入偏置电流的典型值和最大值分别为6NA和12NA;增益带宽积大于0.6MHZ,完全满足设计精度要求。由于放大器增益至少应大于200,放大器芯片的选择主要考虑输入失调电压、电流和增益带宽参数,选择OP07芯片。其开环在1MHZ时可达50DB,输入失调电压典型值为35UV,失调电流典型值50NA,满足设计要求。可变增益放器电路的电路图如图6所示。待测电信号由J1输入电路,从TESTV输出。放大电路输入阻抗变换采用拨码开关S2完成。档

13、位选择采用模拟开关芯片CD4052。,MPU根据采样获得的测量值大小,自动完成档位转换。档位在10V时,输入信号首先经R14、R15衰减0.1倍,经射随器后在衰减0.01倍,由CD4052BE切换至200倍放大器U4。由电路图可知,流经所有芯片的信号峰值均小于2V,使整个电路可采用土5V电源供电,既简化了整个系统的电源设计,又兼容了后继处理电路的要求。图6 可变增益放大电路2.3有效测量电路的设计有效测量电路由有效测量芯片AD637和A/D转换芯片ADC0804组成。有效值测量芯片采用后置二阶滤波连接方式,其中的CAV(C1)取值为1UF时满足信号在20H1MHZ频带范围内的测量精度要求,此时

14、测量时间为365MS,此时间参数可作为采样周期的参考值。在该电路中,由于AD637输出的最小电压幅度为200MV,A/D转换精度应大于8BITS方能在A/D转换的参考电压为5V时满足系统测量误差小于3%的要求。因本系统对A/D转化的采样频率要求高,A/D转换芯片可采用并行输出方式,本电路采用具有8BITS换精度的ADC0804芯片。由于AD637输出的最大电压幅度为2V,A/D转换器的参考电压至少应为5V,选用+5V电源作为参考电压,完全满足系统精度及AD7920供电要求。电平测量的完整电路图如图7所示。图7 有效值测量电路2.4A/D 转换电路的设计A/D 转换器的转换精度对测量电路极其重要

15、,它的参数关系到测量电路性能。本设计采用逐步逼近式A/D 转换器,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。在对转换精度要求较高,而对转换速度要求不高的场合如电压测量有广泛的应用。2.4.1逐步逼近式A/D转换器的工作原理逐步逼近式A/D转换器的工作原理图,如图8所示:图8 A/D工作原理图2.4.2 AD0804的应用ADC0804的规格及引脚图8 位COMS 依次逼近型的A/D 转换器.三态锁定输出存取时间:135US分辨率:8位转换时间:100US总误差:正负1LSB工作温度:ADC0804LCN-070度引脚图及说明,如图9所示:图9 AD

16、C0804/CS 芯片选择信号。/RD 外部读取转换结果的控制输出信号。/RD 为HI 时,DB0DB7 处理高阻抗:/RD 为LO 时,数字数据才会输出。/WR:用来启动转换的控制输入,相当于ADC 的转换开始(/CS=0 时),当/WR 由HI变为LO时,转换器被清除:当/WR 回到HI 时,转换正式开始。CLK IN,CLK R:时钟输入或接振荡无件(R,C)频率约限制在100KHZ1460KHZ,如果使用RC 电路则其振荡频率为1/(1.1RC)/INTR:中断请求信号输出,低地平动作.VIN(+) VIN(-) :差动模拟电压输入.输入单端正电压时, VIN(-)接地:而差动输入时,

17、直接加入VIN(+) VIN(-).AGND,DGND:模拟信号以及数字信号的接地.VREF:辅助参考电压.DB0DB7:8 位的数字输出.VCC: 电源供应以及作为电路的参考电压.其设计电路如图10所示:图10 AD设计电路2.5 液晶显示部分一元器件介绍12864M是一种图形液晶显示器,它主要由行驱动/列驱动和128*64全点阵液晶显示器组成。可完成图形显示,也可显示8*4个(16*16点阵)汉字。1、电源:VDD+5V,模块内自带-10V负压,用于LCD的驱动。2、显示内容:128(列)*64(行)点。3、七种指令。4、与CPU接口采用8位数据总线并行输入输出和8条控制线。5、工作温度:

18、0-60。二模块主要硬件构成说明12864液晶显示结构框图,如图11所示: 图11 12864结构框图三显示界面设置(1)开机显示界面采用12864图像显示处理,通过图像处理得到128*64大小的图像,获取代码显示,图像如下(2)电压测试界面,主显示界面采用的是软件控制,主要代码uchar code dis1="量A 10MV C 100MV"uchar code dis2="程B 1V D 10V"uchar code dis3="所选量程:"uchar code dis4="测值:"uchar code dis

19、5="当前室温:"uchar code dis6="MV"uchar code dis7=" V"uchar code dis8="量程错误!"void disphoto(uchar *photo) /图片显示unsigned char i,j;writecmd(0x34); /关闭绘图for(i=0;i<32;i+) writecmd(0x80+i); /垂直坐标 writecmd(0x80); /水平坐标for(j=0;j<16;j+) /一行可显示16个字符writedat(*photo+);de

20、lay2(1); for(i=0;i<32;i+) writecmd(0x80+i); writecmd(0x88);for(j=0;j<16;j+)writedat(*photo+);delay2(1);writecmd(0x36);显示如图量 A 10mV B 1V 程 C 100mV D 5V所选量程:测值为:(3)温度显示界面通过判断当前温度,显示提示语言:1室温偏高注意防暑2室温适宜注意休息3根据温差谨防感冒室内温度T:xxxx*显示提示语言*四 系统软件设计4.1主程序设计主程序主显示界面测压界面温度T<2020<T<31T>31提示语言提示语言

21、提示语言If u>10mvIf u>100mvIf u>1vIf u>5v提示量程选择错误4.2程序清单主程序代码:#include<reg52.h>#include<intrins.h>#include<stdlib.h>#include<ds18b20.h>#define uchar unsigned char#define uint unsigned intsbit rs=P30; sbit rw=P31;sbit en=P34;sbit psb=P35;sbit int1=P33;/定义管脚功能sbit cs=P3

22、2;/定义ADcs端sbit a1=P26;/定义CD4052的A端口sbit b1=P27 ;/定义CD4052的B端口sbit wr=P36; sbit rd=P37; unsigned int dianya,count,aaa,aaa_h;unsigned int dianyah,dianyal; /用于存储读出数据的高字节和低字节unsigned char addata,i;unsigned int dianya=0;const uchar table=0x30,0x31,0x32,0x33, 0x34,0x35,0x36,0x37, 0x38,0x39,0x41,0x42, 0x43

23、,0x44,0x45,0x46;uchar code dis1="量A 10mV B 1V "uchar code dis2="程C 100mV D 5V"uchar code dis3="所选量程:"uchar code dis4="测值:"uchar code dis5="当前室温:"uchar code dis6="mV"uchar code dis7=" V"uchar code dis8="量程错误!"uchar code d

24、is9="室温偏高注意防暑"uchar code dis10="室温适宜注意休息"uchar code dis11="根据温差谨防感冒"uchar code dis12="请选择量程"unsigned char code photo1=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

25、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

26、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC1,0xE0,0x00,0xF0,0x00,0x0F,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x1F,0xD9,0xE0,0x

27、01,0xF0,0x00,0x0F,0x00,0x1F,0xFF,0xFC,0x01,0xC0,0x00,0x00,0x00,0x1D,0xFD,0xC1,0xFF,0xFF,0xF0,0x0F,0x00,0x1F,0xFF,0xFD,0xFF,0xFF,0xC0,0x00,0x00,0x1F,0xFB,0xC1,0xFF,0xFF,0xF7,0xFF,0xFE,0x1F,0xFF,0xFD,0xFF,0xFF,0xC0,0x00,0x00,0x0D,0xDB,0xFE,0xFF,0xFF,0xF7,0xFF,0xFE,0x1E,0x00,0x00,0x01,0xC0,0x00,0x00,0x

28、00,0x3F,0xFF,0xFE,0xE0,0x00,0xF7,0xFF,0xFE,0x1E,0x1E,0x00,0x01,0xC0,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xF7,0x8F,0x1E,0x1E,0x1E,0x01,0xFF,0xFF,0x80,0x00,0x00,0x07,0xC7,0x9C,0x1F,0xFF,0x07,0x8F,0x1E,0x1E,0x1E,0x01,0xFF,0xFF,0x80,0x00,0x00,0x1F,0xFF,0x9C,0x1F,0xFF,0x07,0xFF,0xFE,0x1E,0x1E,0x00,0x

29、01,0xC0,0x00,0x00,0x00,0x3D,0xFF,0x9C,0x00,0x3E,0x07,0xFF,0xFE,0x1F,0xFF,0xF8,0x01,0xC0,0x00,0x00,0x00,0x3F,0xDF,0xBC,0x00,0xF8,0x07,0x8F,0x1E,0x1F,0xFF,0xFB,0xFF,0xFF,0xC0,0x00,0x00,0x17,0x87,0xFD,0xFF,0xFF,0xF7,0x8F,0x1E,0x1D,0xFF,0xFB,0xFF,0xFF,0xC0,0x00,0x00,0x3F,0xF9,0xF9,0xFF,0xFF,0xF7,0xFF,0x

30、FE,0x1E,0x1E,0x00,0x0F,0xE3,0x80,0x00,0x00,0x3F,0xF9,0xF9,0xFF,0xFF,0xF7,0xFF,0xFE,0x3C,0x1E,0x60,0x3E,0xFF,0xC0,0x00,0x00,0x0E,0x78,0xF0,0x00,0xF0,0x07,0xFF,0xFF,0x3C,0x1F,0xF8,0x7E,0xFF,0x40,0x00,0x00,0x1F,0xF0,0xF0,0x00,0xF0,0x07,0x8E,0x07,0xBC,0x1E,0x71,0xFE,0x7C,0x00,0x00,0x00,0x2F,0xE3,0xF8,0x

31、00,0xF0,0x07,0x8F,0x07,0xBC,0x1E,0x03,0xFE,0x7F,0x00,0x00,0x00,0x07,0xFF,0xFC,0x0F,0xF0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xC0,0x00,0x00,0x3F,0xFF,0xFE,0x0F,0xF0,0x00,0x0F,0xFF,0x7F,0xFF,0xFF,0x9F,0xE7,0xC0,0x00,0x00,0x3F,0x3F,0x9C,0x0F,0xE0,0x00,0x07,0xFE,0x3F,0xFF,0xFC,0x1F,0xC1,0xC0,0x00,0x

32、00,0x18,0x06,0x0C,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

33、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x

34、38,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x07,0x0E,0x00,0x78,0x78,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x0F,0xFF,0xFE,0x7F,0xFF,0xDF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xF7,0xFF,0xFE,0x7F,0xFF,0xDE,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x

35、FF,0xF7,0xFB,0xDE,0xF0,0x78,0x1E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0xF0,0xF3,0xFB,0xDE,0xF0,0x78,0x1E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0xF0,0x7B,0xDE,0xFF,0xFF,0x9F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFB,0xDF,0xFF,0xFF,0x9F,0xFF,0xF0,0x00,0x00,0x00,0x

36、00,0x00,0x00,0x3F,0x6F,0xEF,0xFB,0xDF,0xFF,0x7B,0x9E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1E,0x07,0xFF,0xDF,0xFF,0x7B,0x9E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x07,0xFF,0xDF,0xFF,0xFF,0x9E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x07,0xFF,0xFF,0xFF,0xFF,0x9F,0xFF,0x

37、F0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xBF,0x87,0xFF,0xFC,0x77,0x7B,0x9F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x87,0xB3,0xC0,0x77,0xF8,0x1E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x7F,0xC7,0x83,0xC0,0x73,0xF0,0x1E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xF9,0xE7,0xC0,0x00,0x

38、73,0xFC,0x1E,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0xF1,0xFF,0xFF,0xFE,0x7F,0xFF,0xFE,0x3C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xC0,0x6E,0xFF,0xFE,0x7F,0x0F,0xBC,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x1C,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

39、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

40、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

41、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;unsigned char num,temp;/定义键盘返回值,中间变量unsigned char getkey();/键盘扫描函数unsigned char adc0804(void); /读AD0804子程序 /读AD0804子程序unsi

42、gned int datpro(void);/ADC0804读出的数据处理void delay1(unsigned int z);/定义读书延时函数void delay2(unsigned int t);void delayNOP();void lcdpos(uchar X,uchar Y);void writecmd(unsigned char cmd); /写命令void writedat(unsigned char dat); /写数据void init(); /初始化bit busy();void displayA();void displayB();void displayC();v

43、oid displayD();void disphoto(unsigned char *photo); /图片显示void display_jiemian();void clear(); /清屏void display1();void display();void main() delay2(100);init();disphoto(photo1);delay1(2000); clear(); delay2(5);display_jiemian();num=6; while(1) if(num=1)getkey();/获得键盘输入值if(num=2|num=3|num=5|num=6)num=

44、1;switch(num)case 2:a1=0;b1=0;break;case 5:a1=1;b1=0;break;case 3:a1=0;b1=1;break;default:a1=1;b1=1; ;display1();if(num=4)getkey();/获得键盘输入值switch(num)case 2:a1=0;b1=0;break;case 5:a1=1;b1=0;break;case 3:a1=0;b1=1;break;default:a1=1;b1=1; ;lcdpos(3,3);for(i=0;i<10;i+) writedat(dis12i); delay1(1);d

45、isplay_jiemian();delay1(5);if(num=2)/(条件选择语句)不同的档位不同的显示形式getkey();/获得键盘输入值switch(num)case 2:a1=0;b1=0;break;case 5:a1=1;b1=0;break;case 3:a1=0;b1=1;break;default:a1=1;b1=1; ;lcdpos(2,6);writedat('A');delay1(2);lcdpos(3,7);for(i=0;i<2;i+) writedat(dis6i); delay1(1);adc0804();/读取模数转换数据aaa=d

46、atpro();/读电压if(aaa>=40000) display();delay1(1);elsedisplayA();delay1(2); if(num=3)getkey();/获得键盘输入值switch(num)case 2:a1=0;b1=0;break;case 5:a1=1;b1=0;break;case 3:a1=0;b1=1;break;default:a1=1;b1=1; ; lcdpos(2,6);writedat('B');delay1(2);lcdpos(3,7);for(i=0;i<2;i+) writedat(dis7i); delay

47、1(1);delay1(2);adc0804();/读取模数转换数aaa=datpro();/读电压据if(aaa>=40000) display();delay1(1);elsedisplayB();delay1(2);if(num=5)getkey();/获得键盘输入值switch(num)case 2:a1=0;b1=0;break;case 5:a1=1;b1=0;break;case 3:a1=0;b1=1;break;default:a1=1;b1=1; ; lcdpos(2,6);writedat('C');delay1(2);lcdpos(3,7);for

48、(i=0;i<2;i+) writedat(dis6i); delay1(1);delay1(2); adc0804();/读取模数转换数据 aaa=datpro();/读电压if(aaa>=40000) display();delay1(1);elsedisplayC();delay1(2); if(num=6)getkey();/获得键盘输入值switch(num)case 2:a1=0;b1=0;break;case 5:a1=1;b1=0;break;case 3:a1=0;b1=1;break;default:a1=1;b1=1; ;lcdpos(2,6);writeda

49、t('D');delay1(2);lcdpos(3,7);for(i=0;i<2;i+) writedat(dis7i); delay1(1);delay1(2);adc0804();/读取模数转换数据aaa=datpro();/读电压if(aaa>=40000) display();delay1(1);elsedisplayD();delay1(2); unsigned char getkey(void) P2=0xf7;temp=P2;temp=temp&0xe7;while(temp!=0xe7)delay1(5);temp=P2;temp=temp&0xe7;while(tem

温馨提示

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

评论

0/150

提交评论