单片机课程设计数字电压表设计_第1页
单片机课程设计数字电压表设计_第2页
单片机课程设计数字电压表设计_第3页
单片机课程设计数字电压表设计_第4页
单片机课程设计数字电压表设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、文档可自由编辑打印目目 录录摘要摘要.21.1.设计目的与功能要求设计目的与功能要求.3 1.11.1 设设计目的计目的.3 3 1.21.2 功能要求功能要求.3 32.2.总体设计总体设计.3 2.12.1 系统设计系统设计.3 2.22.2 设计方案设计方案.3 2.32.3 总体设计框图总体设计框图.43. .硬件电路设计硬件电路设计 .5 3.1.1 核心元器件介绍核心元器件介绍.5 3.1.1.1.1 芯片介绍芯片介绍.5 3 3.1.2.1.2 其它部分简介其它部分简介.11 1.1.模拟电压输入部分模拟电压输入部分 11 2.2.四位八段共阴极数码管四位八段共阴极数码管 .12

2、 3.3.报警装置报警装置.134. .软件设计软件设计.13 4.14.1 C C 语言流程图语言流程图.13 4.24.2 C C 语言程序清单语言程序清单.155.5.调试仿真调试仿真.186.6.设计总结设计总结.20 .21文档可自由编辑打印摘摘 要要 数字电压表的诞生打破了传统电子测量仪器的模式和格局。它显示清晰直观、读数准确,采用了先进的数显技术,大大减少了因人为因素所造成的误差事件。数字电压表是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。数字电压表把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起,成为仪器、仪表领域中独立而

3、完整的一个分支,数字电压表标志着电子仪器领域的一场革命,也开创了现代电子测量技术的先河。本设计采用了以单片机为开发平台,控制系采用 AT89C52 单片机,A/D 转换采用 ADC0808,系统除能保确实现要求的功能以外,还能方便进行 8 路其他 A/D 转换量得测量、远程测量结果传送等扩展功能。简易数字电压测量电路由 A/D 转换、数据处理、显示控制等组成。关键词关键词:单片机;AT98C52;A/D 转换;ADC0808;数据处理文档可自由编辑打印Abstract The birth of the digital voltmeter broken the traditional elect

4、ronic surveyinginstrument patterns and structure.It shows clear intuitive, readings accurate, use of advanced digital display technology, greatly reducing the caused by human factors error of events. Digital voltmeter is the continuous analogue (dc input voltage) convert discontinuous, discrete digi

5、tal form, and to display appearance.The digital voltmeter electronic technology, computing technology, automation technology results with the precision electric measurement technology closely together,become instrument and meter field independent and complete a branch, digital voltmeter electronic i

6、nstruments field marks a revolution, also started the modern electronic measurement technology precedent. This design USES A USES singlechip development platform, and control department AT89C52 microcontroller, A/D conversion using ADC0808, except that the system realized required functions,but also

7、 can facilitate assessment of no.8 other A/D conversion amount must measurement, remote measurement results delivery etc function expansion. Simple digital voltage measurement circuit by the A/D conversion, data processing, display and control etc. Keywords: SCM;AT89C52;A/D conversion;ADC0808;data p

8、rocessing文档可自由编辑打印1.1.设计目的与功能要求设计目的与功能要求 1.11.1 设计目的设计目的利用单片机 AT89C52 及 ADC0808 制作 3 位数字电压表,更好地学习掌握单片机AT89C52 的工作原理及 A/D 的转换编程方法。 1.21.2 功能要求功能要求 主控部分:选择单片机为核心元件构成系统。 检测部分:测量电压范围分为两档,DC 05V 和 DC 051.2V,最小测量电压误差 50mV。 显示部分:用 4 位数码管显示测量电压,2 位整数,2 位小数。 超过上限电压时,进行声音报警。2.2.总体设计总体设计 2.12.1 系统设计系统设计 主要分为两部

9、分:硬件电路及软件程序。硬件电路包括:单片机及外围电路,模拟信号采集电路,A/D 转换电路,数码管显示电路,各部分电路的衔接。软件的程序可采用 C 语言或汇编,这里采用汇编语言。2.22.2 设计方案设计方案数字电压表的设计方案很多,但采用集成电路来设计较多。其设计主要是由模拟电路和数字电路两大部分组成,模拟部分包括 A/D 转换器,基准电源等;数字部分包括振荡器,数码显示,计数器等。其中,A/D 转换器将输入的模拟量转换成数字量,它是数字电压表的一个核心部件,对它的选择一般有两种选择方案:1.采用双积分 A/D 转换器 MC14433,它有多路调制的 BCD 码输出端和超量程输出端,采用动态

10、扫描显示,便于实现自动控制,且具有外接元件少,输入阻抗高,功耗低,电源电压范围宽,精度高等特点,但芯片只能完成 A/D 转换功能,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,加重了电路设计和实际焊接的工作。文档可自由编辑打印振荡器、时序脉冲振荡器、时序脉冲2. 逐次逼近式 A/D 转换器。它的转换速度更快,而且精度更高,比如ADC0808、ADC0809 等,它们通常具有 8 路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示。这样电路设计简单,电路板布线不复杂,便于焊接、调试。虽然 MC14433 的精度高,功耗低,但是此芯

11、片的成本高,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,根据本次设计的要求和目的,我们决定使用第二种方案。2.32.3 总体设计框图总体设计框图 在这个电路图中,单片机 AT89C52 与模数转换器 ADC0808 作为核心元件。晶振荡器将晶振信号由 XTAL 传入驱动单片机工作,由电阻电容组成的复位电路,通电后,按下开关,上拉电阻使 RES 脚高电平,实现复位。AT89C52 单片机中,P0 口接数码管的采采集集单单片片机机A/D转换器转换器ADC0809外界模拟信号外界模拟信号数字信号数字信号量程变换处理量程变换处理四位八段共阴极数码管四位八段共阴极数码管置置 入入

12、预先写好的汇预先写好的汇编程序编程序显示出模拟电压显示出模拟电压的数值的数值文档可自由编辑打印段选信号,控制数码管的段显示,P2.0P2.3 接数码管的位选信号,控制数码管的位显示。P2.4P2.7 接 ADC0808 的控制信号引脚 CLOCK,EOC,START,ALE,其作用在芯片引脚内有详细介绍。P1 口接 ADC0808 的数据口,用于向码数转换器传输数据。ADC0808 通过 OUT1OUT8 向 P3.0 传送转换好的数据,经量化编码后传入单片机。为了明了,这里采用单通道(通道 0)控制(其余通道电平拉低) ,用双刀双掷开关控制其量程的选择。ADC0808 在单片机提供的时钟信号

13、下引发中断,当上升沿过来时进行清零,当下降沿来临时启动芯片开始工作。START 则控制 ADC0808 的运行与否。当所测电压大于设定值时,电流经 NPN 管后引起蜂鸣器叫,实现了报警功能。 对于电压的采集,在仿真图中采用电阻分压模拟。实际设计中,采用霍尔传感器,利用其电流计磁场平衡式检测外界电流,转换成电压后送入模数转换器。3.3.硬件电路设计硬件电路设计3.13.1 核心元器件介绍核心元器件介绍3.1.13.1.1 芯片介绍芯片介绍1.1.单片机单片机 AT89C52AT89C52 介绍介绍a.a.芯片引脚图:芯片引脚图:b.b. 描述:描述: AT89C52 是一个低电压,高性能 CMO

14、S 8 位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器( RAM),文档可自由编辑打印器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,功能强大的 AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52 有 40 个引脚,32 个外部双向输入 /输出(I/O)端口,同时内含 2 个外中断口, 3 个 16 位可编程定时计数器,2 个全双工串行通信口, 2 个读写口线, AT89C52 可以按照常规方法进行编

15、程,但不可以在线编程 (S 系列的才支持在线编程 )。其将通用的微处理器和 Flash 存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。C.C.主要特性:主要特性: 1、兼容 MCS51 指令系统 2、8k 可反复擦写(大于 1000 次)Flash ROM; 3、32 个双向 I/O 口; 4、256x8bit 内部 RAM; 5、3 个 16 位可编程定时 /计数器中断; 6、时钟频率 0-24MHz; 7、2 个串行中断,可编程 UART 串行通道; 8、2 个外部中断源,共 8 个中断源; 9、2 个读写中断口线, 3 级加密位; 10、低功耗空闲和掉电模式

16、, 软件设置睡眠和唤醒功能; 11、有 PDIP、PQFP、TQFP 及 PLCC 等几种封装形式,以适应不同产品的需求。d.d. 引脚描述引脚描述VCC:电源电压 GNDGND:地P0P0 口:口:P0 口是一组 8 位漏极开路型双向 I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个 TTL 逻辑门电路,对端口 P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。 在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外

17、接上拉电阻。 文档可自由编辑打印P1P1 口:口:P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL)。 与 AT89C51 不同之处是, P1.0 和 P1.1 还可分别作为定时 /计数器 2 的外部计数输入(P1.0/T2)和输入( P1.1/T2EX) ,Flash 编程和程序校验期间, P1 接收低 8 位地址。 表.P1.0 和 P1.1 的第二功能 引

18、脚号功能特性引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器 2)P2P2 口:口:P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对端口 P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL)。 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时, P2

19、口输出 P2 锁存器的内容。 Flash 编程或校验时, P2 亦接收高位地址和一些控制信号。 P3P3 口:口:P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL) 。 P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。 RSTRST:复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高电平将使单

20、片机复位。 文档可自由编辑打印ALE/ALE/: :当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉PROG冲用于锁存地址的低 8 位字节。一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG) 。 如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱

21、拉高,单片机执行外部程序时,应设置ALE 禁止位无效。 PSENPSEN:程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN 信号。 EA/VPPEA/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。 Fla

22、sh 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 XTAL1XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2XTAL2:振荡器反相放大器的输出端。 时时钟钟振振荡荡器器 AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1、C2 虽然没有十分严格的要求,但电容容

23、量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF10pF,而如使用陶瓷谐振器建议文档可自由编辑打印选择 40pF10F。可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL1 端,即内部时钟发生器的输入端, XTAL2 则悬空。由于外部时钟信号是通过一个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 电路内部振荡 外部振荡电路 2.ADC08082.ADC0808 芯片芯片文档可自由编辑打印a.引脚图引脚图 b.b. 描

24、述:描述: ADC 0808 和 ADC 0809 除精度略有差别外(前者精度为 8 位、后者精度为 7 位),其余各方面完全相同。它们都是 CMOS 器件,不仅包括一个 8 位的逐次逼近型的 ADC部分,而且还提供一个 8 通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统” 。利用它可直接输入 8 个单端的模拟信号分时进行 A/D 转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。C.C. 主要特性主要特性 1)8 路输入通道,8 位 AD 转换器,即分辨率为 8 位。 2)具有转换起停控制端。 3)转换时间为 100s(时钟为 640kHz 时),130s(时

25、钟为 500kHz) 4)单个5V 电源供电 5)模拟输入电压范围 05V,不需零点和满刻度校准。 6)工作温度范围为-4085 摄氏度 7)低功耗,约 15mW。D.D. 外部特性(引脚功能)外部特性(引脚功能)文档可自由编辑打印IN0IN0IN7IN7:8 路模拟量输入端。 DB0-DB7DB0-DB7:8 位数字量输出端。 ADDAADDA、ADDBADDB、ADDCADDC:3 位地址输入线,用于选通 8 路模拟输入中的一路 ALEALE:地址锁存允许信号,输入,高电平有效。 STARTSTART: AD 转换启动脉冲输入端,输入一个正脉冲(至少 100ns 宽)使其启动(脉冲上升沿使

26、 0809 复位,下降沿启动 A/D 转换)。 EOCEOC: AD 转换结束信号,输出,当 AD 转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OEOE:数据输出允许信号,输入,高电平有效。当 AD 转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLKCLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 REFREF(+ +) 、REFREF(- -):):基准电压。 VccVcc:电源,单一5V。 GNDGND:接地。 3.1.23.1.2 其他部分简介其他部分简介1.1.模拟电压输入部分模拟电压输入部分这里设计将实际的模拟信号采集电路简化成一个分压电

27、路模型,实际由霍尔传感器利用其电流计磁场平衡式检测外界电流,转换成电压(模拟电压)后送入模数转换器。文档可自由编辑打印2.2.四位八段共阴极数码管四位八段共阴极数码管 这种数码管可显示 4 位值,每位由 8 个发光二极管(以下简称字段)即a、b、c、d、e、f、g、dp 字段构成,通过控制不同的 LED 的亮灭的不同组合可用来显示数字 09 及小数点“”。单片机 AT89C52 接上拉电阻,数码管位码接单片机 p1 口,段码接 AT89C52 的 P0。 文档可自由编辑打印3.3.报警装置报警装置 这里采用的是 NPN 三极管与蜂鸣器结合。当超过设定值时,蜂鸣器响,报警。4.软件设计软件设计4

28、.1 C 语言流程图语言流程图文档可自由编辑打印开始开始系统初始化系统初始化启动启动 A/D 转换转换采集采集 A/D 转换值转换值数据转换数据转换调用显示调用显示三位是否显示完?三位是否显示完?完?完?读电压值读电压值Y YN NENDEND转换结束?转换结束?YN文档可自由编辑打印4.2 C 语言程序清单语言程序清单主程序主程序#includedefine.h#includesubfunction.cvoid time2(void)interrupt 1/时间中断 0,方式 2CLOCK=!CLOCK; /为 ADC0808 提供一个时钟信号 void bell_ring(unsigned

29、 char l)unsigned char i;for(i=0;il;i+)bell=1;delay1ms(1);bell=0; void main(void) uchar add,tmp; TMOD=0X02; /定时器方式二 TH0=255; TL0=255; EA=1; /开全局中断 ET0=1; /开定时器中断 TR0=1; /定时初始化 while(1) 文档可自由编辑打印 START=0; delay1ms(1); START=1;/输入一个正脉冲,启动模数转换 delay1ms(1); START=0;/START 产生一方波 if(EOC=0)/如果查询到转换结束信号 OE=1

30、;/输出使能 delay1ms(1); add=P1;/读取 AD 数据 OE=0;if(dw=1) display0 = 0; display1=add/51;/将二进制数据转换电压值 255 对 51 求模tmp=add%51; /求得最高位,即整数位255 对 51 求余display2=(tmp*10)/51;/求出小数位的第一位 tmp=(tmp*10)%51;display3=(tmp*10)/51;tmp=(tmp*10)/51; /最高位始终为零,display_func();/数组更新,现在显示if(display0 = 0)&(display1 = 5)&(

31、display2 = 0)&(display3 = 0)bell_ring(5); else if(dw=0)display0=add/51;/将二进制数据转换电压值 255 对 51 求模文档可自由编辑打印tmp=add%51; /求得最高位,即整数位255 对 51 求余display1=(tmp*10)/51;/求出小数位的第一位 tmp=(tmp*10)%51;display2=(tmp*10)/51;tmp=(tmp*10)/51; /最高位始终为零,display3=(tmp*10)/51;tmp=(tmp*10)/51; /最高位始终为零,display_func();/数组更新,现在显示if(display0 = 5

温馨提示

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

评论

0/150

提交评论