电子设计竞赛设计报告题目:基于单片机的简易数控电源参赛选手:学院:自动化与电子信息学院系别:电子信息工程班级:电信084学号:08021020指导教师:周波老师时间:2011年9月8日基于单片机的简易数控电源摘要:本次设计采用51单片机进行控制,在对单片机系统、喇叭装置和显示电路做了深入的研究之后,拟出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在1用C语言设计了具体软件程序后,用Proteus软件进行了仿真和调试,结果证明了该设计系统的可行性。由于51系列单片机的控制器运算能力强,处理速度快,可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性。关键字:51单片机LCD1602液晶显示数控电源Proteus仿真一、功能介绍本次设计电路主要由主体电路与扩展电路组成,采用单片机控制设计,使LCD液晶显示器显示设定的电压值和从外部读入的实际电压值。设定的电压值经过数据处理可直接送LCD液晶显示器显示。将输入的信号经过51单片机处理在LCD液晶显示器上输出;用控制电路和调节开关对LCD显示的时间进行调节,以上两部分组成主体电路。通过单片机的信号控制音乐芯片电路在报警电路上实现报警功能,设计通过51单片机采集ADC0808模数转换器上的电压信号实现在LCD上显示实际输出电压的值,以上两部分构成扩展电路。经过设计、Proteus仿真、Protel布线制板、焊接调试等工作后设计电路成形。功能总结如下:1)输出电压范围0~+9.9V。2)电压步进0.1V可调。3)使用液晶显示器LCD1602作为显示,最小分辨率可达到0.1V。4)可利用电路上的滑动变阻器进行微调校准。5)用自动扫描代替人工按键,实现输出电压变化。6)设计4个按键,输出电压可预置在0~9.9V之间的任意一个值。7)设计模数转换电路,实现输出电压的实时监控。8)设计报警电路实现超量程报警。9)设计直流电源电路,可直接提供±15V、±5V电压。二、硬件设计本设计包括:单片机系统电路、显示电路、电源电路、报警电路、电压采集电路1、单片机系统电路本设计采用51单片机作为整个电路的控制芯片,用最小系统功能电路实现各种控制。2单片机最小系统功能电路如附录所示:(1)51单片机的引脚图、逻辑图见图2-1图2-151单片机的引脚图、逻辑图(2)引脚功能说明Vcc:电源电压GND:接地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位以吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用,要求外接上拉电阻。P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。另外,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表2-2。表2-2P1.0和P1.1的第二功能引脚号功能特性P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1T2EX(定时/计数2捕获/重装载触发和方向控制)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或2.3/0PINT6.3/PWR3.3/1PINT0.1P1.1P2.1P3.1P4.1P5.1P6.1P7.1PPDVRST/0.3/PRXD1.3/PTXD4.3/0PT5.3/1PT7.3/PRD2XTAL1XTALVss1234567891011121314151617181920Vcc0.0P1.0P2.0P3.0P4.0P5.0P6.0P7.0PVppEA/PROGALE/PSEN7.2P6.2P5.2P4.2P3.2P2.2P1.2P0.2P2122232425262728293031323334353637383940803180518751VccVssPDVRST/1XTAL2XTALVppEA/PSENPROGALE/P3口第二功能P0口P1口P2口地址数据总线地址总线8031805187513输出电流)4个TTL逻辑门电路。对P2端口写“1”,通过内部的上拉电阻把端口拉到高电平,可作输入口。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次RSEN信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。(3)复位电路本次设计在单片机最小系统功能电路上设置复位开关,用以实现系统的复位。复位电路如下图所示:2、显示电路为了获得更好的效果本设计并没有采用常见的LED,而是采用了型号为1602的LCD。用以显示预置输出的电压值和实际输出的电压值。LCD有LED数码显示更好的更的直观效果,也更加经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已4经是单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V,有背光。1602引脚说明,见表2-1。表2-1LCD显示屏引脚说明VDD:电源正极,4.5-5.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为0-5V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式;BLA:LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;BLK:LED背光地端。设计电路如下:53、数模转换电路本次设计采用DAC0832数模转换器对预置的电压值进行转换。DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10~-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。数模转换电路原理图如下:C1C2C3C8C7C5C4C6CSGNDGNDRFE1WRVCCGNDRFE1VREF8GND3VCC20CS1WR12DI34DI25DI16DI07RFB9GND10IOUT111IOUT212DI713DI614DI515DI416XFER17WR218ILE(BY1/BY2)19U2DAC0832U5OP1PU6OP1PR24.12kR31k+88.8Volts4、电源电路本电路为±15V、±5V直流稳压电源,它由变压器输出12V交流电到输出端,再经过电源转化成±15V、±5V直流电,电路主要功能是为整个设计电路供电。7805、7815、7905、7915是个三端稳压管,+5V、+15V、-5V、-15V电压输出,有稳压取样放大电路,保护电路过流、过压、过热,辅助电路,电流源等功能。电路如图所示:6T1D1D3D42200uFC32200uFC9IN12OUT3GNDU1LM7812D2+12-12IN12OUT3GNDU2LM780510uFC110uFC1010uFC410uFC7+5-5DS11KR11243S2SWDIP-21243S1SWDIP-2104C5104C11104C2104C12104C6104C8IN21OUT3GNDU3LM7912CTIN21OUT3GNDU4LM7905CT5、预置按键电路当重新接通电源或走时出现误差时都需要进行电压预置,通常,预置的方法是:根据选择需要预置的位,再进行加减预置,然后按确认键转入正常输出状态即可。本次电路设计4位独立连接式非编码键盘,用来控制‘设置’‘+’‘-’‘电压采集’。并且在采集的同时更新电压显示,确保器正确性。下图所示即为预置电路:6、电压采集电路本次设计采用ADC0808采集电压信号,由单片机进行相应的计算、转换,最后显示在LCD数码管上。ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。电压采集电路如下:7P00P01P02P03P04P05P06P07INP15P16P14OUT121ADDB24ADDA25ADDC23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22U2ADC0808三、软件设计1、主函数的设计这里用C语言的单片机程序构成了本次设计电路的软件系统。该程序实现,本次设计电路的主程序流程图如下图所示:主函数流程图82、D/A转换子程序由原理图可知,片选信号CS和数据传送控制信号XFER都与51单片机的P口相连,WR1、WR2均与P2.2口相连。CPU对DAC1208执行一次写操作,则将一个数据直接写入DAC寄存器,DAC1208的输出模拟量随之变化。由于DAC1208具有数字量的输入锁存功能,故数字量可以直接从51的P0单片机口送入。D/A转换子程序流程图如下图:D/A转换子流程图3、A/D的软件设计本设计电路中,CE/LOAD引脚接地址引脚,使芯片有效状态可以控制。RUN/HOLD(运行/保持)引脚P口,使A/D转换连续进行。A/D转换正在进行时,STA引脚输出高电平,STA引脚降为低电平时,由P0.2输出低电平信号到ICL7109的HBEN,读高4位数据、极性和溢出位;由P口输出低电平信号到LBEN,读低8位数据。不需要采集数据时,不会影响89C51的工作,因此这种方法可简化设计,节省硬件和软件。A/D转换子流程图如下图:A/D转换子流程图94、显示程序显示程序包括预置电压显示和实际输出电压显示程序。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下表是LCD1602液晶模块的内部显示地址。LCD1602内部显示地址123456789