基于单片机的数控电压源课程设计.docx
《基于单片机的数控电压源课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数控电压源课程设计.docx(41页珍藏版)》请在冰豆网上搜索。
基于单片机的数控电压源课程设计
基于单片机的数控电压源课程设计
一.系统硬件设计结构框图
本数控直流稳压电源的设计以一稳压电源为基础,以高性能单片机系统为控制核心,以稳压驱动放大电路、短路保护电路为外围的硬件系统,在检测与控制软件的支持下实现对电压输出的数字控制,通过对稳压电源输出的电压进行数据采样与给定数据比较,从而调整和控制稳压电源的工作状态及监测开关电路的输出电流大小。
本数控直流稳压电源实现以下功能:
键盘可以直接设定输出电压值;可快速调整电压;LCD显示电压值等。
1.18051简介
我们采用8051系列的AT89S51作为CPU,AT89S51是一种带4K字节FLASH可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
1.2主要特性
1)与MCS-51兼容;
2)8位字长的CPU;
3)可在线ISP编程的4KB片内FLASH存储器,用于程序存储,可擦写1000次;
4)256B的片内数据存储器,其中高128字节地址被特殊功能寄存器SFR占用;
5)可编程的32根I/O口线(P0~P3);
6)2个可编程16位定时器;
7)一个数据指针DPTR;
8)1个可编程的全双工串行通信口;
9)具有“空闲”和“掉电”两种低功耗工作方式;
10)可编程的3级程序锁定位;
11)工作电源的电压为5(1±0.2)V;
12)振荡器最高频率为24MHz;
13)编程频率3~24MHz,编程电流1mA,编程电压为5V。
1.3芯片引脚排列与名称
DIP封装形式的AT89S51的芯片引脚排列与名称如图1所示。
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位,并行,图1AT89S51的芯片引脚排列与名称
漏极开路双向I/O口,作为输出时可驱动8个TTL负载。
该口内无上拉电阻,在设计中作为D/A,A/D及液晶显示器的数据口。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,该口在设计中低四位作为键盘输入口,高四位与RST作为在线编程下载口。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收/输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,可作为输入。
在作为输出时,P2口的管脚被外部拉低,将输出电流。
该口在设计中作为D/A,A/D及液晶显示器的控制口。
P3口:
P3口管脚是带内部上拉电阻的8位双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
P3口也可作为AT89S51的一些特殊功能口,如下表1所示:
表1各端口引脚与复用功能表
端口引脚
复用功能
P3.0
TXD(串行输入口)
P3.1
RXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
/INT1(外部中断1)
P3.4
T0(记时器0外部输入)
P3.5
T1(记时器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
该口在设计中使用其特殊功能作为D/A,A/D读写信号的控制口。
和A/D的中断输入口。
RST:
该引脚为复位信号输入端,高电平有效。
在振荡器稳定工作情况下,该引脚被置成高电平并持续两个机器周期以上是系统复位。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
该引脚在设计中作为锁存器器和A/D的时钟信号。
/PSEN:
外部程序存储器的选通信号。
/EA/VPP:
/EA为访问芯片内部和芯片外部程序存储器的选择信号。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
芯片内振荡器放大器的输入及内部时钟工作电路的输入。
XTAL2:
芯片内振荡器放大器的输出。
2键盘控制器MM74C922
2.1简介
键盘的作用是对单片机输入数据,设计中要求能是电压进行“+”,“-”,及电压值的设定,所以采用键盘为4×4的薄膜矩阵键盘,用MM74C922芯片进行识别按键后送AT89S51的并行口P1,P1.0~P1.3作为键盘输入口。
传统的4×4矩阵键盘识别处理程序的编写相对烦琐。
所以采用MM74C922芯片来将4×4矩阵键盘的键值转换成4位BCD码以简化程序的编写。
2.2主要特性
CMOS工艺技术制造,工作电压3-15V,“二键锁定”功能,编码输出为三态输出,可直接与微处理器数据总线相连,内部振荡器能完成4×4矩阵键盘扫描,亦可用外部振荡器使键盘操作与其他处理同步,通过外接电容避免开关发生前、后沿弹跳所许的延时。
有按键按下时数据有效线变高,同时封锁其他键,片内锁存器将保持键盘矩阵的4位编盘,可由微处理器读出
2.3芯片引脚排列与名称
DIP封装形式的MM74C922的芯片引脚排列与名称如图4所示。
VCC:
供电电压(+5~+15);
GND:
接地;
Y1~Y2:
矩阵键盘行输入,图4MM74C922芯片引脚排列与名称
其内部接有上拉电阻;
X1~X2:
矩阵键盘列输入;
OUT1~OUT2:
矩阵键盘列输出;
OSC:
振荡器输入;
DA:
按键有效输出,当有任意键按下是DA输出高电平;
/OE:
输出有效端,低电平有效。
3D/A转换器DAC0832
3.3.1简介
设计要求电压输出范围是0.0V~9.9V,步进0.1V,共有100种状态,因此采用8位的D/A转换器就能满足设计要求。
因此采用常用的DAC0832芯片。
8位字长的D/A转换器DAC0832具有256种状态,能满足设计要求。
DAC0832芯片是具有两个输入数据寄存器的8位DAC,它能直接与AT89S51单片机相连接,
3.2主要特性
1)8位分辨率;
2)电流型输出,稳定时间为1uS;
3)可双缓冲输入,单缓冲输入或直接数字输入;
4)单一电源供电(+5~+15V);
5低功耗(20mW;)
3.3芯片引脚排列与名称
DIP封装形式的DAC0832的芯片引脚排列与名称如图51所示。
VCC:
电源电压,+5V。
GND:
地线输入端。
图5DAC0832的芯片引脚排列与名称
D0~D7:
8位数字量输入引脚。
单片机由这8根线传送给D/A转换数字量。
D7为最高有效位,D0为最低有效位。
Vref:
参考电压端。
/CS:
片选信号,当/CS为低电平时候,芯片被选中工作。
ILE:
允许数字量输入线。
高电平有效。
/XREF:
传送控制输入线,低电平有效。
/WR1,/WR2:
写命令输入线。
Ffb:
运算放大器反馈线。
Iout1,Iout2:
模拟电流输出线,Iout1+Iout2为一常数。
二.硬件电路设计
1.A/D转换器ADC0809
1.1简介
ADC0809是美国国家半导体公司生产的8位ADC,它是采用逐次逼近的方法完成A/D转换的。
ADC0809的内部结构框图如图所示。
ADC0809由单一+5V电源供电,片内有带锁存功能的8路模拟多路开关,,可对8路0~5V的输入模拟电压信号分时进行转换,完成一次转换约需100us;输出具有TTL三台锁存缓冲器,可以直接接到单片机数据总线上。
通过适当的外接电路,ADC0809可对0~5V的双级性模拟信号进行转换。
1.2主要特性
1)8路8位A/D转换器,即分辨率8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
1.3芯片引脚排列与名称
DIP封装形式的ADC0809的芯片引脚排列与名称如图6所示
各引脚功能说明如下:
VCC:
电源电压,+5V。
GND:
地线输入端。
D0~D7:
8位数字量输出引脚。
A/D转换结
果由这8根线传送给单片机。
D7为最高有效位,图60809引脚图排列与名称
D0为最低有效位。
IN0~IN7:
8路模拟量输入引脚。
Vref(+):
参考电压正端。
。
Vref(-):
参考电压负端。
START:
启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
ALE:
地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
START和ALE两信号用于启动A/D转换。
EOC:
转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。
OE:
允许输出信号。
当OE=1时,即为高电平,允许输出锁存器输出数据。
CLK:
时钟输入信号,0809的时钟频率范围在10~1200kHz,典型值为640kHz。
A、B、C:
3位地址输入线,经过译码后可选通IN0~IN78个通道中的一个通道进行转换。
A、B、C的输入与选通的通道的关系如表2所示:
表2
被选通的通道
CBA
被选通的通道
CBA
IN0
000
IN4
100
IN1
001
IN5
101
IN2
010
IN6
110
IN3
011
IN7
111
2显示器
设计要求能显示当前电压值,因此可采用液晶显示或者数码管显示两种方法。
考虑到数码管显示过于单调,因此采用采用液晶显示。
液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在点阵型液晶显示模块已经是单片机应用设计中常用的信息显示器件了。
2.1简介
本设计中采用了1602C型点阵式液晶显示模块。
LCD技术和半导体技术的结合使该显示模块具有高可靠性和低功耗的特点。
1602C型点阵式液晶显示模块内部有字符产生存储器和数据存储器。
该显示模块可直接与AT89s51单片机相接,所有的显示功能由控制器用指令实现。
由单一的+5V的电源供电,数据传送方式有4位和8位两种选择。
内有显示92个ASCII字符和92个特殊字符的字库。
2.2引脚排列与名称
1602C引脚排列与名称如图7所示。
GND:
电源地;
VCC:
电源正极,4.5-5.5V,通常使用5V电压;
VO:
LCD对比度调节端,电压调节范围为0-5V;
RS:
写入数据或者指令选择端。
要写入指令时,
使RS为低电平;要写入数据时,使RS为高电平;
R/W:
读写控制端。
R/W为高电平时,读取数据;R/W为低电平时,写入数据;
E:
LCD模块使能信号控制端。
写数据时,图71602C引脚排列与名称
需要下降沿触发;。
DB0-DB7:
8位数据总线,三态双向。
如果I/O口资源紧张的话,该模块也可以只使用4位数据线DB4-DB7接口传送数据。
A:
LED背光正极。
需要背光时,A串接一个限流电阻接VDD,K接地,实测该模块的背光电流为50mA左右;
K:
LED背光地端
3.1MM74C922接口电路
设计中MM74C922的输出口与P1口的低四位相接,DA端通过反向器与P3.2相接。
每当有按键按下时,DA就产生高电平,同时向P1口低四位传送16进制的BCD码,分别对应16个按键。
MM74C922与键盘及AT89S51的接线图见图9
图9MM74C922接口电路
3.2DAC0832接口电路
DAC0832最具特色是输入为双缓冲结构,数字信号在进入D/A转换前,需经过两个独立控制的8位锁存器传送。
其优点是D/A转换的同时,DAC寄存器中保留现有的数据,而在输入寄存器中可送入新的数据。
系统中多个D/A转换器内容可用一公共的选通信号选通输出。
设计中用2个电压控制字代表0.1V当电压控制字从0,2,4,……到198时,可调稳压源输出0.0,0.1,……,9.9。
由于DAC0832是电流输出型,输出的电流随输入的电压控制字线性变化。
若要得到电压,还需要外接一片运放来实现电流到电压的转换。
由于DAC0832输出级没有加集成运放,所以需外加LM324相配适用。
考虑到设计需要,采用了单缓冲双级性的接法,如图10所示:
图10DAC0832接口电路
其计算公式为:
其中Vref为参考电压,D为DAC0832接收到的数据。
5为DAC0832基准电压。
如果图中所示电阻RX,RY,RZ的阻值选取适当,则输出电压范围在电压控制字从0,2,4,……到198变换时根据上式计算可得输出电压为+4.9V~-5V,正好满足后续电路的要求。
其中P2.7为DAC0832的片选控制端。
3.3ADC0809接口电路
由于输出电压范围是0.0V~9.9V超出了ADC0809的测量范围,因此使用电位器将输出电压分压后送至ADC0809的输入端。
ADC0809与AT89S51的接口电路如图11所示
图11ADC0809接口电路
其中P2.6为0809的片选信号,与WR和RD分别通过或非门接到0809的START和OE上,EOC通过非门与AT89S51的INT0相接。
由于0809需要时钟信号,因此可以从AT89S51的ALE端得到6分频的振荡信号,为了使6分频后的信号能满足0809的需求,我们采用的是4M的晶体振荡器。
3.4LCD1602C接口电路
LCD1602C与AT89S51的接口电路如图12所示
图12LCD显示电路
3.5可调稳压源电路
为了获得大的负载电流,可调稳压部分使用了最大输出电流为1A的7805三端集成稳压块。
7805原本是输出固定电压为5V的集成稳压块,但可以外接电路来改变输出电压值。
可调稳压的电路见图13:
设运放理想。
这时,可
认为运放输入电压很小。
即:
图13可调稳压电路
其中Vin为D/A部分输出的双级性电压,5为7805的稳压值。
由上式可见,Vout与Vin之间成线形关系,当Vin变化时,输出电压改变。
由于Vin是DAC0832输出的范围是+4.9V~-5V的电压,因而Vout的变化可以从0.0V~9.9V。
经实验证明:
这种可调稳压输出具有良好的负载特性,输出最大负载电流可达到1A。
电压输出端接上500mA负载与未接负载(空载)之间输出电压仅相差0.04V以内。
由于。
3.6流稳压电路
本设计共用到电源有三种:
即±15V,+5V。
可选用的有开关电源和稳压电源两种,由于开关电源的纹波系数比较大,且设计要求电压纹波不大于10mV。
因此采用常用的稳压电源来作为整个系统的电源。
稳压电源由电源变压器、整流电路、滤波电路和稳压电路组成,如图14所示
图14电源方框及波形图
整流和滤波电路:
整流作用是将交流电压U2变换成脉动电压U3。
滤波电路一般由电容组成,其作用是脉动电压U3中的大部分纹波加以滤除,以得到较平滑的直流电压U4。
再通过稳压电路得到平直的直流电压U5。
电源变压器采用了双17.2V的变压器,输入220V,50Hz交流电,经全桥整流,滤波,稳压后得到±15V和+5V三种输出,+5V部分供单片机及D/A,A/D,显示等部分使用,电流最大约400mA;+15V和-15V部分供运放使用,最大电流不超过50mA。
电路如图15所示:
图15电源部分原理图
图中继电器部分是一个开关电路及短路保护电路。
当系统接到220V交流电后经变压器降压,整流桥整流后接到K1,此时由于U1(7815)没有输入,所以K1没有供电,整个后续系统处于关闭状态,当按下SW_ON键时U1得到输入,产生+15V的输出,同时K1得电吸合,形成自锁状态,同时79L15也得电输出-15V电压。
松开SW_ON键后由于K1处于自锁状态,整个系统处于开启状态。
当按下SW_OFF键时,K1被短路,从而断开电源达到关机的目的。
同样,在任一时刻如果产生短路,则K1也会断开达到短路保护的目的。
+5V部分的供电电流在400mA左右,因此采用了最大输出电流为1A的7805三端稳压集成电路,由于功耗大,负载重,加装了散热片。
而+15V和-15V部分最大电流不超过50mA。
在设计过程中发现中两片7805的均使用了散热片且温度偏高,因此加装了风扇,使用+15V电源,将78L15该为7815后可满足风扇需求。
这样在保证性能的同时也降低了成本。
三.程序设计
1主控程序
图16为系统主控程序。
图16系统主控程序框图
2D/A子程序
图17为D/A子程序框图。
图17D/A子程序框图
可以看出,D/A子程序的作用是将设定的数字量通过变换送给D/A。
3A/D子程序
图18A/D子程序框图
由A/D子程序框图看出,修改精度为一个数字量,由于A/D和D/A的精度限制,修改量只能达到0.05V,但足已满足设计需要。
4键盘子程序
图19为键盘子程序框图。
图19键盘子程序框图框图
4.1步进步减子程序
图20步进,步减子程序框图
由步进,步减子程序框图可以看出,如果每次把D/A的数字量加01H,可以使步进量和步减量由0.1V变为0.05V。
如果采用更高位的D/A转换器。
可以使步进量和步减量进一步的减小,以满足更高的要求。
4.2设置子程序
图21设置子程序框图
由设置子程序可以看出,进入设置子程序后就屏蔽了“+”,“-”和设置键。
然后逐步判断按键,执行相应程序。
5.设计总结
六.附件
A、程序实现
单片机系统初始化和存储器分配程序
$NOMOD51
;------------------------------------------------------------------------------
;ThisfileispartoftheC51Compilerpackage//这个文件是c51链接的数据
;------------------------------------------------------------------------------
;STARTUP.A51:
Thiscodeisexecutedafterprocessorreset.这个代码在程序重启之后执行
;
;TotranslatethisfileuseA51withthefollowinginvocation:
;
;A51STARTUP.A51
;
;TolinkthemodifiedSTARTUP.OBJfiletoyourapplicationusethefollowing
;BL51invocation:
;
;BL51,STARTUP.OBJ
;
;------------------------------------------------------------------------------
;
;User-definedPower-OnInitializationofMemory
;
;WiththefollowingEQUstatementstheinitializationofmemory
;atprocessorresetcanbedefined:
;
;;theabsolutestart-addressofIDATAmemoryisalways0
IDATALENEQU80H;thelengthofIDATAmemoryinbytes.IDATA存储的字节长度
;
XDATASTARTEQU0H;theabsolutestart-addressofXDATAmemoryXDATA存储的实际起始地址
XDATALENEQU0H;thelengthofXDATAmemoryinbytes.
;
PDATASTARTEQU0H;theabsolutestart-addressofPDATAmemory
PDATALENEQU0H;thelengthofPDATAmemoryinbytes.
;
;Notes:
TheIDATAspaceoverlapsphysicallytheDATAandBITareasofthe
;8051CPU.AtminimumthememoryspaceoccupiedfromtheC51
;run-timeroutinesmustbesettozero.
;------------------------------------------------------------------------------
;
;ReentrantStackInitilization
;
;ThefollowingEQUstatementsdefinethestackpointerforreentrant
;functionsandinitializedit:
;
;StackSpaceforreentrantfunctionsintheSMALLmodel.
IBPSTACKEQU0;setto1ifsmallreentrantisused.
IBPSTACKTOPEQU0FFH+1;settopofstacktohighestlocation+1.
;
;StackSpaceforreentrantfunctionsintheLARGEmodel.
XBPSTACKEQU0;setto1iflargereentrantisused.
XBPSTACKTOPEQU0FFFFH+1;settopofstacktohighestlocation+1.
;
;StackSpaceforreentrantfunctionsintheCOMPACTmodel.
PBPSTACKEQU0;setto1ifcompactreentrantisused.
PBPSTACKTOPEQU0FFFFH+1;settopofstacktohighestlocation+1.
;
;------------------------------------------------------------------------------
;
;PageDefinitionforUsingtheCompactModelwith64KBytexdataRAM
;
;ThefollowingEQUstatemen