




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于STC单片机的数控恒压源的设计【摘要】直流稳压电源的应用非常的广泛,质量优良的直流稳压电源,才能满足各种电子线路的要求。所以直流稳压电源的设计颇为重要,特别是数控制流稳压电源。本文主要介绍数控直流稳压电源的设计,对其中涉及的PWM输出、AD采样、单片机等也有详细介绍。将单片机数字控制技术, 有机地融入直流稳压电源的设计中, 就能设计出一款高性价比的多功能数字化通用直流稳压电源。该设计除了对电压的数字控制的功能外还有可监测实际电压输出和数字电压表的功能。因此设计具有高精度,多功能,液晶显示的特点。第一章 直流稳压电源的基本原理在电子电路中,通常都需要电压稳压的直流电源供电。日常生活中也需要将交流电转变成直流电,形成直流稳压电源。直流稳压电源的基本原理直流电源电路一般由电源变压器、整流滤波电路及稳压电路所组成。如图1-1图1-1直流稳压电源的工作原理电源变压器的作用是将电网220V的交流电压变成整流电路所需要的电压U1。 1.1整流滤波电路整流电路的作用是将交流电压U1,变换成脉动的直流U2,它主要有半波整流、全波整流方式,可以由整流二极管构成整流桥堆来执行,常见的整流二极管有1N4007、1N5148等,桥堆有RS210等。滤波电路作用是将脉动自流U2滤除纹波,变成纹波小的U3,常见的电路有RC滤波、LC滤波、等,常用的选RC滤波电路。其中它们的关系为:Ui=nU1其中,n为变压器的变化。 U2=(1.11.2)U1 每只二极管或桥堆所承受的最大反向电压URM=U1对于桥式整流电路中,每只二极管的平均电流ID(AV)=1/2IR=0.45U1/R。RC滤波电路中,C的选择应适应下式,即RC放电时间常数应满足RC=(35)T/2式中,T为输入交流信号周期,R为整流滤波电路的等效负载电阻。常用的整流滤波电路如图1-2所示,桥式整流滤波电路。图1-2桥式整流、电容滤波电路图1-3交流电压U的波形1.2 稳压电路稳压的作用是将滤波电路定的电路输比电压经稳压后,输出较稳定的电压。常见的稳压电路有三端稳压器、串联式稳压电路等。本文采用三端稳压器,三端固定式稳压器的基本应用电路如下图所示,只要把正输入电压Ui加到MC7805的输入端,MC7805的公共端接地,其输出端便能输出芯片标称正电压U0,在实际应用电路中,芯片输入端和输出端与地之间除分别接大容量滤波电容外,通常还需在芯片引出脚根部接小容量电容Ci,C0到地。Ci用于抑制芯片自激振荡,C0用于压窄芯片的高频带宽,减小高频噪声。Ci和C0的具体取值应随芯片输出电压高低及应用电路的方式不同而异。图1-4 三端固定式稳压电路正、负输出稳压电源 正、负输出稳压电源能同时输出两组数值相同、极性相反的恒定电压。 图1-5所示为正、负输出电压固定的稳压电源。它由输出电压极性不同的两片集成稳正器MC7815和MC7915构成,电路十分简单。两芯片输入端分别加上i 20V的输入电压。图1-5 正、负输出电压固定稳压电源1.3 电源设计根据以上原理电源部分则使用三端集成稳压芯片7815和7915输出稳定+15V和-15V,对运算放大器OP07和LF356进行双电压供电。因此电源的设计:1. 正负15V电源电路如下图所示,对于滤波电容的选择,要考虑:1.整流管的压降;2.7815、7915最小允许压降Ud;3.电网波动10%。从而允许波纹的峰峰值t=18(1-10%)-0.7-Ud-15=4.9v 接近似电流放电计算,假设=0(通角),则C=1430f选取滤波电容C=2200f/30V2. +5V电源 允许的最大纹波峰峰值t(max)=9(1-10%)-1.4-2.3-5=2.76VC=3600f 选取滤波电容C=4700f/16V图1-6 15V电源设计电路原理图图1-7 5V电源电路原理图第二章 数控恒压源的实现方案传统的直流稳压电源输出是通过粗调波段开关及细调电位器来调节的,并由电位表指示电压值的大小。这种直流稳压电源存在读数不直观、电位器易磨损、稳压精度不高、不易调准、电位构成复杂、体积大等缺点,而基于单片机控制的数控直流电源不但实现了直流稳压的功能,而且没有上述的缺点。2.1设计要求 输出电压范围:0010.0V 输出电压的调整方式:步进 步进数值为01V 显示方式:LCD液晶显示; 监测DA的输出电压值;2.2数控电源的方案论证图2-1设计总体框图上图所示数控电源的输出电压数值由键盘控制。通过键盘把需要输出的电压值以步进方式输入到单片机。这里电压采用单片机的PWM模拟电压输出。显示电路既可用来显示输出的电压值,也可用来显示键盘电路的调整过程。PWM输出模拟电压不一定满足要求,如果不满足输出电压的要求,将需要添加一个电压放大器。经过OP27线形转换后,得到所需电压值,另外对于监测电压的实际输出电压值通过单片机的AD采样口将采样值送回单片机处理后显示。在该数字控制电源中,使用8051芯片完成系统控制按键输入判断,电压数值显示,以及对外部芯片的各种数字控制。第三章 数字控制部分3.1 STC12C5410AD单片机介绍STC12C5410AD系列及STC12C2052AD系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。4路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。STC12C2052AD系列只有2路PWM,8路高速8位A/D转换。1.增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统80512. 工作电压:STC12C5410AD系列工作电压:5.5V - 3.5V(5V单片机)/ 3.8V - 2.2V(3V单片机)STC12C2052AD系列工作电压:5.5V - 3.5V(5V单片机)/ 3.8V - 2.2V(3V单片机)3. 工作频率范围:0 - 35 MHz,相当于普通8051的 0420MHz4. 用户应用程序空间1K / 2K / 4K / 6K / 8K / 10K / 12K 字节.5. 片上集成 512 字节 RAM(STC12C5410AD系列), STC12C2052AD系列单片机为256字节RAM6. 通用I/O口(27/23/15个),复位后为: 准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过55mA7.时钟源:外部高精度晶体/时钟,内部R/C 振荡器用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟常温下内部R/C 振荡器频率为:5.2MHz 6.8MHz精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,应认为是4MHz 8MHz8. 共6个16位定时器/计数器,两个专用16位定时器T0和T1再加上PCA模块可再实现4个16位定时器,STC12C2052AD系列只有两路PCA9. 外部中断2路,下降沿中断或低电平触发中断,Power Down模式可由外部中断唤醒10. PWM(4路)/PCA(可编程计数器阵列,4路),5410系列是4路,2052系列只有两路-也可用来当4路D/A使用-也可用来再实现4个定时器-也可用来再实现4个外部中断(上升沿中断/下降沿中断均可分别或同时支持)11.A/D转换, 10位精度ADC,共8路。STC12C2052AD系列只有8位精度3.1.1 STC12C5410AD系列8051 单片机的基本结构框图 3.1.2 I/O口各种不同的工作模式及配置介绍I/O口配置STC12C5410AD系列单片机其所有I/O口均可由软件配置成4种工作类型之一,如下表所示。4种类型分别为:准双向口(标准8051输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC12C5410AD系列单片机上电复位后为准双向口(传统8051的I/O口)模式。2V以上时为高电平,0.8V以下时为低电平。P3口设定P2口设定 P1口设定3.1.3 PWM输出STC12C5410AD系列单片机有四路可编程计数器阵列(PCA)/PWM,12C2052AD系列只有两路。PCA含有一个特殊的16位定时器,有4个16位的捕获/比较模块与之相连。每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速输出或可调制脉冲输出。模块0连接到P3.7(CEX0/PCA0/PWM0),模块1连接到P3.5(CEX1/PCA1/PWM1),模块2连接到P2.0(CEX2/PCA2/PWM2),模块3连接到P2.4(CEX3/PCA3/PWM3)。寄存器CH和CL的内容是正在自由递增计数的16位PCA定时器的值。PCA定时器是4个模块的公共时间基准,可通过编程工作在:1/12振荡频率、1/2振荡频率、定时器0溢出或ECI脚的输入(P3.4)。定时器的计数源由CMOD SFR的CPS1和CPS0位来确定。CMOD SFR还有2个位与PCA相关。它们分别是:CIDL,空闲模式下允许停止PCA;ECF,置位时,使能PCA中断,当PCA定时器溢出将PCA计数溢出标志CF(CCON SFR)置位。CCON SFR包含PCA的运行控制位(CR)和PCA定时器标志(CF)以及各个模块的标志(CCF3/CCF2/CCF1/CCF0)。通过软件置位CR位(CCON.6)来运行PCA。CR位被清零时PCA关闭。当PCA计数器溢出时,CF位(CCON.7)置位,如果CMOD寄存器的ECF位置位,就产生中断。CF位只可通过软件清除。CCON寄存器的位03是PCA各个模块的标志(位0对应模块0,位1对应模块1,位2对应模块2,位3对应模块3),当发生匹配或比较时由硬件置位。这些标志也只能通过软件清除。所有模块共用一个中断向量。PCA的中断系统如图所示。PCA的每个模块都对应一个特殊功能寄存器。它们分别是:模块0对应CCAPM0,模块1对应CCAPM1,模块2对应CCAPM2,模块3对应CCAPM3.特殊功能寄存器包含了相应模块的工作模式控制位。当模块发生匹配或比较时,ECCFn位(CCAPMn.0,n0,1,2,3由工作的模块决定)使能CCONSFR的CCFn标志来产生中断。PWM(CCAPMn.1)用来使能脉宽调制模式。PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果TOG位(CCAPMn.2)置位,模块的CEXn输出将发生翻转。当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果匹配位MATn(CCAPMn.3)置位,CCON寄存器的CCFn位将被置位。CAPNn(CCAPMn.4)和CAPPn(CCAPMn.5)用来设置捕获输入的有效沿。CAPNn位使能下降沿有效,CAPPn位使能上升沿有效。如果两位都置位,则两种跳变沿都被使能,捕获可在两种跳变沿产生。通过置位CCAPMn寄存器的ECOMn位(CCAPMn.6)来使能比较器功能。每个PCA模块还对应另外两个寄存器,CCAPnH和CCAPnL。当出现捕获或比较时,它们用来保存16位的计数值。当PCA模块用在PWM模式中时,它们用来控制输出的占空比。脉宽调节模式(PWM)所有PCA模块都可用作PWM输出(下图)。输出频率取决于PCA定时器的时钟源。PCA PWM mode / 可调制脉冲宽度输出模式由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器EPCnL,CCAPnL有关。当 CL SFR的值小于EPCnL,CCAPnL时,输出为低,当PCA CL SFR的值等于或大于EPCnL,CCAPnL时,输出为高。当CL的值由FF变为00溢出时,EPCnH,CCAPnH的内容装载到EPCnL,CCAPnL中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。由于PWM是8位的,所以PWM的输出频率=PCA时钟输入源频率/256,PCA时钟输入源可以从以下4种中选择一种:Fosc / 12, Fosc / 2,定时器0的溢出, ECI / P3.4输入举例:要求PWM输出频率为38KHz,选Fosc/2为PCA/PWM时钟输入源,求出Fosc的值由计算公式38000 = Fosc / 2 / 256 ,得到外部时钟频率Fosc = 38000 x 256 x 2 =19,456,000如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM的时钟输入源当EPCnL = 0及ECCAPnL = 00H时,PWM固定输出高当EPCnL = 0及ECCAPnL = 00H时,PWM固定输出高当EPCnL = 1及CCAPnL = 0FFH时,PWM固定输出低当EPCnL = 1及CCAPnL = 0FFH时,PWM固定输出低限流电阻用10K到1KPCA/PWM寄存器列表CMOD - PCA模式 寄存器的位分配 (地址:D9H)CMOD - PCA模式 寄存器的位描述 (地址:D9H)CMOD - PCA计数器阵列的计数脉冲选择 (地址:D9H)CCON - PCA控制寄存器的位分配 (地址:D8H)CCON - PCA控制寄存器的位描述 (地址:D8H)CCAPMn - PCA比较/捕获模块寄存器的位分配(CCAPM0地址:0DAH;CCAPM1地址:0DBH)CCAPMn - PCA比较/捕获模块寄存器的位描述 ( n:0,1,2,3 )PCA模块工作模式(CCAPMn寄存器,n:0,1,2,3)3.1.4 AD转换器STC12C5410AD系列带A/D转换的单片机的A/D转换口在P1口(P1.7-P1.0),有8路10位高速A/D转换器,STC12C2052AD系列是8位精度的A/D, 速度均可达到100KHz(10万次/秒)。8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。需作为A/D使用的口需先将其设置为开漏模式或高阻输入,在P1M0、P1M1寄存器中对相应的位进行设置。ADC_CONTR 特殊功能寄存器: A/D转换控制特殊功能寄存器CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0ADC_START: 模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换,转换结束后为0。ADC_FLAG: 模数转换器转换结束标志位,当A/D转换完成后,ADC_FLAG = 1,要由软件清0。不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,当A/D转换完成后,ADC_FLAG = 1,一定要软件清0。SPEED1,SPEED0:模数转换器转换速度控制位ADC_POWER: ADC电源控制位。0:关闭ADC电源;1:打开A/D转换器电源.建议进入空闲模式前,将ADC电源关闭,ADC_POWER =0.启动AD转换前一定要确认AD电源已打开,AD转换结束后关闭AD电源可降低功耗,也可不关闭。初次打开内部A/D转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换,议启动A/D转换后,在A/D转换结束之前,不改变任何I/O口的状态,有利于高精度A/D转换ADC_DATA / ADC_LOW2 特殊功能寄存器: A/D转换结果特殊功能寄存器模拟/数字转换结果计算公式如下:结果 ( ADC_DATA7:0,ADC_LOW21:0 ) = 1024 x Vin / Vcc Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。取ADC_DATA的8位为ADC转换的高8位,取ADC_LOW2的低2位为ADC转换的低2位,则为10位精度。如果舍弃ADC_LOW2的低2位,只用ADC_DATA寄存器的8位,则A/D转换结果为8位精度。结果 ADC_DATA7:0 = 256 x Vin / VccSTC12C2052AD系列单片机A/D转换精度只有8位,固无ADC_LOW2寄存器。3.1.5 A/D转换模块的参考电压源STC12C5410AD和STC12C2052AD系列单片机的参考电压源是输入工作电压Vcc,所以一般不用外接参考电压源。如7805的输出电压是5V,但实际电压可能是4.88V到4.96V,用户需要精度比较高的话,可在出厂时将实际测出的工作电压值记录在单片机内部的EEPROM里面,以供计算。如果有些用户的Vcc不固定,如电池供电,电池电压在5.3V-4.2V之间漂移,则Vcc不固定,就需要在8路A/D转换的一个通道外接一个稳定的参考电压源,来计算出此时的工作电压Vcc,再计算出其他几路A/D转换通道的电压。 如可在ADC转换通道的第七通道外接一个1.25V(或1V,或)的基准参考电压源,由此求出此时的工作电压Vcc,再计算出其它几路A/D转换通道的电压。3.2单元电路设计3.2.1利用PWM实现D/A功能的应用电路图PWM输出相当于DAC0832八位集成D/A转换器。D/A转换部分的输出电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例。8位字长的D/A转换器具有256种状态。当电压控制字从0,1,2,到256时,电源输出电压为0.0,0.1,10.0。每路电压输出值的计算:REF为参考电压,data为输入8位的比特数据;我们这里用的REF=5v。3.2.2 A/D转换应用线路,按键扫描如上图所示键盘电路通过分压电路,第一个按键所得电压为1/2Vcc,第二个按键分压2/3Vcc,第三个按键分压3/4 Vcc,第四个按键分压4/5 Vcc,那么利用单片机的P1.7口对按键电压进行采样,再对键盘电压对键盘的按下与否进行判断处理。3.2.3 AD采样电路和数字电压表 考虑到单片机的内部处理功能,可通过STC芯片的AD转换器增加数字电压表功能。即由单片机的P1.3口对电压进行采样,通过设置ADC_CONTR 特殊功能寄存器,启动以及停止AD转换。然后读取寄存器ADC_DATA / ADC_LOW2 (A/D转换结果特殊功能寄存器)的值最后通过单片机将十六进制数转换为ASCII码利用液晶显示模块显示。因此将输出电压直接送回单片机进行AD采样,显示即实现了监测输出电压值的功能。另外由于可以采样得到输出电压,那么可以校准输出电压和预置电压,使输出电压值更为精确。AD采样电路3.2.4电压放大电路运算放大器通常都是工作在闭环状态将运算放大器的放大电路接上一定的反馈电路和外接元件,就可以实现各种数学运算运算放大器反馈电路有各种形式,不同的反馈电路和不同的输入方式可以组成各种不同用咖运算放大电路图514是输入信号加在反相输入端的比例运算电路其中R1为输入端电阻,Rf为反馈电阻,它以并联负反馈的方式将输出电压反馈到反相输入端,为了在输入信号Ui0时, 输出U0o,电阻的选择应满足R2R1/ Rf这样可保证运算放大器的反相输入端与同相输入端的外接电阻相等,使其处于对称平衡状态,以消除运算放大器的偏置电流对输出电压的影响,因此,称R2为平衡电阻由理想运放的两条重要结论可知,Ii0,U+U-。通过R1的电流I1,即:If=I1又由于运放的通向输入端接地,U+=0,所以可得U+U-,也就是说,当同相端接地,U+=0时反相输入端电位U-0,它是一个不接地的“地”,称为“虚地”。“虚地”的存在是运算电路在闭环工作状态下的一个重要特征。由图5.14可得因为I1If,所以可得闭环电压放大倍数则为上式表明,该电路的输出电压与输入电压之比仅由电阻RF与R1的比值决定,而与集成运放本身的参数无关式中的负号表示输出电压与输入电压反相,因而称为反相比例运算放大电路。 当R1RF时,U0-Ui,反相输入比例运算电路就成了反相器那么此电路利用PWM模拟电压输出,后通过二次滤波,经过OP27放大电压后,电压为原来的两倍,即由原来的05v放大为010v变化。接法如下:3.2.5显示电路设计:数控电源的数据显示采用LCD液晶显示:即用单片机的P2口输出,利用液晶显示模块,电路如下图所示:第四章 软件部分4.1软件设计说明:控制程序使用C51编写,在KEIL C平台下编译通过,运用STC软件将程序下载到芯片。当按键按下,可进行电压调整,可调节电压1v,调节电压以步进0.1v 。在按键加减的过程中,LCD模块显示的电压随着上下变化,当按键不动作后,将单片机的PWM模拟输出电压经二次滤波电路输出,经线性,放大得到与显示电压值相同的电压。同时将输出电压接至单片机的P1.2口可监测输出电压值,可进行预置值与测量值的比较。另外将AD采样口独立出来可以实现数字电压表的测量功能。4.2程序设计流程图设计流程图分为三大部分,即主程序流程图,键盘扫描流程图,键盘控制流程图。主程序流程图:开始初始化:定时器初始化,AD初始化PWM初值设定等待中断PWM输出键盘扫描流程图:键盘控制流程图:4.3设计源程序见附页第五章 硬件调试5.1制版电路原理图见附录1,元件清单见附录2。PCB图如下图所示按照PCB图将元件焊接至铜板上,焊接时注意是否虚焊。5.2调试准备就绪后,将变压器通电,开始进行测试,检测它们是否达到设计要求。检查的项目包括输出电压范围,在整个输出电压范围内的步进调整值,输出电压与预置电压是否匹配和数字电压表功能的精准度。数控电源系统的供电由直流稳压电源提供,由硬件电路的正负15V电源,5V电源提供。排除故障:在测试调试的过程中要排除障碍,刚开始液显不能正常工作,检查是否上电,调节电位器,看背光灯是否变化,没有变化则应检查单片机的输出口是否与液显正确连接,用万用表排查虚焊。当检查硬件没有问题之后,再进行测试,当还是无法达到要求工作时,那么就是程序问题。根据流程图修改程序,在KEIL软件中编译无错后再下载至再次进行调试检测。5.2.1电压测试:预置电压值/v显示电压值/v监测电压值/v绝对误差/%相对误差/%0.10.10.110.0110.000.50.50.520.0240.001.21.21.190.010.831.81.81.820.021.112.02.02.010.010.502.42.42.430.031.252.92.92.900.000.003.33.33.320.020.614.64.64.620.020.435.15.15.110.010.206.76.76.730.030.457.07.07.010.010.148.28.28.230.030.379.39.39.310.010.119.99.910.00.010.105.2电压表测试:被测电压/v实际测量值/v绝对误差/%相对误差/%0.90.920.022.221.41.410.010.711.71.700.000.002.12.300.209.522.52.500.000.003.33.310.010.303.73.680.020.544.54.520.020.445.05.000.000.00 以上为电压测试结果,由于PWM的分辨率为0.2,所以其误差范围可以限制在00.2V左右,在这个范围内产生误差是允许的。因此监测电压与输出电压基本一致。因为PWM输出为八位,分辨率=PWM占空比/250,那么当站空比值变化1时,其电压变化为0.02V,后运放将电压放大变化0.04v。所以可达到电压变化精度为0.04V。用单片机控制电源时,输出直流0-10V,液晶显示器显示清晰正确,误差极小,完美的实现了数控恒压源这一课题。5.3 设计心得: (1)、设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源。(2)、设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图。(3)、在设计程序时,不能妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。(4)、要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。(5)、在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。 结束语本文主要运用STC12C5410AD单片机的内部资源,利用PWM输出模拟DA输出,AD采样通道对电压进行采样。由于电压输出只能是05v,所以电压输出端加运放给予放大得到所需幅值的电压。在软件设计方面,在按键发生动作时,对输出电压进行调整,当按键不发生动作时,作为数字电压表进行使用。功能上还不够完善,如没有电流过流时的报警指示功能等等,还可以运用INA126和74LS14构成电流保护电路,进一步得到提高。附录I附录II#include#define uchar unsigned char #define uint unsigned intuchar a,b,c,d,key,keyvalue,sel_flag,push_val,zt_flag;unsigned int temp,temp1;unsigned int j;unsigned char m,mss_cnt;unsigned char ADC_Channel_3_Result_bak,ychi;unsigned char ADC_Power_On_Speed_Channel_2 =0xe2 ;/P1.2作为A/D输入unsigned char ADC_Power_On_Speed_Channel_3 =0xe3 ;/P1.3作为A/D输入unsigned char ADC_Channel_2_Result;unsigned char ADC_Channel_3_Result;uchar code table0= The V is:;uchar code table2=0123456789MV .A;/*lcd显示*sbit rs=P30;sbit rw=P31;sbit e =P32;void delay(unsigned char x)unsigned char a,b;for(a=x;a!=0;a-)for(b=20;b!=0;b-);void writecomm(uchar comm)P2=comm;rs=0;rw=0;e=0;delay(500);e=1;delay(500);e=0;void writedat(uchar dat)P2=dat;rs=1;rw=0;e=0;delay(500);e=1;delay(500);e=0;void writesmh(uchar add,uchar date)uchar count;count=date;writecomm(0x80+add);delay(500);writedat(table2count);delay(500);void init()uchar i;delay(100);writecomm(0x38);delay(100);writecomm(0x0c);delay(100);writecomm(0x06);delay(100);writecomm(0x01);delay(100);writecomm(0x80);delay(5);for(i=0;i10;i+ )writedat(table0i);delay(5);void ADC_init() uchar iotemp; iotemp=0x1c; ADC_CONTR=ADC_CONTR|0x80;/;开A/D转换电源 delay(10);/;开A/D转换电源后要加延时,1mS以内就足够了P1M0=P1M0|iotemp;/;设置P1.5键盘,P1.3,1.4,1.6AD 设置A/D通道所在的I/O为开漏模式 P1M1=P1M1|iotemp; AUXR=AUXR|0x10; EADC_SPI=1; /*显示*void display() a=temp/1000; b=temp/100%10; c=temp/10%10; d=temp%10; writesmh(0x46,b); delay(500); writesmh(0x47,13); delay(500); writesmh(0x48,c); delay(500); writesmh(0x49,d); delay(500); for(j=0;j40;j+) delay(500);void display1() a=temp1/1000; b=temp1/100%10; c=temp1/10%10; d=temp1%10; writesmh(0x46,b); delay(500); writesmh(0x47,13); delay(500); writesmh(0x48,c); delay(500); writesmh(0x49,d); delay(500); for(j=0;j2) zt_flag=0; if(keyvalue=4) sel_flag+; if(sel_flag2) sel_flag=0; switch(zt_flag) case 1:writesmh(0x00,1); switch(sel_flag) case 1: if(keyvalue=2)&(temp10) temp1-=100; display1(); break; case 2: if(keyvalue=2)&(temp10) temp1-=10; display1(); break; case 0: if(temp0) push_val-; if(temptemp1)&(push_val250) push_val+; display(); break; default: break; break; case 2:writesmh(0x00,2); if(keyvalue=2)&(temp10) temp1+=10; push_val-=5; if(keyvalue=3)&(temp10)&(push_val250) temp1-=10; push_val+=5; if(temp0) push_val-; if(temptemp1)&(push_val250)push_val=0; if(push_val 0) push_val=250;/*main*void main() init(); ADC_init(); ET0 = 1; /定时器0中断打开 TMOD = 0x01;/设定时器0为模式1,16位模式 TH0=(65536-2500)/256; TL0=(65536-2500)%256; TR0=1; EA=1; push_val=0xc0;while(1)pwm();/*adc*void ADC_INT(void) interrupt 5 using 3 uchar ychi,ychi1; if(ADC_CONTR&0x07)=0x03)/键盘处理 ADC_Channel_3_Result=ADC_DATA; ADC_Channel_3_Result=(ADC_Channel_3_Result*1.0/256)*50;if(ADC_Channel_3_Result 29) & (ADC_Channel_3_Result 34) & (ADC_Channel_3_Result 38)& (ADC_Channel_3_Result 40) key=0xff; if ( ychi!=key ) if (ychi1=0) ychi=key; else keyvalue= key ; ychi1=0;else ychi1=1; if(ADC_CONTR&0x07)=0x02) /AD1 ADC_CONTR=ADC_CONTR&0xe7; /清0 ADC_FLAG, ADC_START 位, 停止A/D转换 ADC_Channel_2_Result=ADC_DATA; temp=(ADC_Channel_2_Result*1.0/256)*500; /*2.5MS定时*void Time0(void) interrupt 1 using 2 TH0=(65536-2500)/256; TL0=(65536-2500)%256; mss_cnt+; if(mss_cnt%4=0)/0.01S ADC_DATA=0x00;ADC_CONTR=ADC_Power_On_Speed_Channel_3;/选择P1.5作为A/D转换通道 delay(2); /20200usADC_CONTR=ADC_CONTR|0x08; /;启动 AD 转换 while(ADC_CONTR&0x10)=0x00); fuc_key(); if(mss_cnt%40=0) /0.1秒处理一次 ADC_DATA=0x00;ADC_CONTR=ADC_Power_On_Speed_Channel_2;/选择P1.3作为A/D转换通道 delay(2); /20200usADC_CONTR=ADC_CONTR|0x08;/;启动 AD 转换 while(ADC_CONTR&0x10)=0x00); 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程保修的处理方案(3篇)
- 安全教育年度培训计划课件
- 安全教育平台培训考核课件
- 农业废弃物资源化利用在2025年的技术创新动态报告
- 安全教育培训骗人课件
- 安全教育培训途径课件
- 农业产业园项目农产品质量安全监管体系可行性研究与2025年效益评估报告
- 农业产业园项目农业科技成果转化与2025年经济效益评估报告
- 安全教育培训课件案例
- 2025年新能源社区智能微电网技术创新与应用案例深度解析报告
- 2025深入贯彻中央八项规定精神学习教育测试题和答案
- 医生进基层活动方案
- 2025-2030年中国蔬果保鲜剂行业市场深度调研及发展趋势与投资价值评估研究报告
- 2025年中国卡通公仔相机行业市场调查与发展研究报告
- 云南省土地征收农用地转用审批管理细则 (2023年修订)
- 2024年长庆油田分公司招聘考试真题
- 药剂知识竞赛试题及答案
- 尊师重教主题班会教案
- 医院质量与安全管理委员会制度职责及工作流程
- 幼儿园获奖公开课:中班数学《2和3的组成和分解》课件
- 数字化环境下航空装备研制质量管理的思考
评论
0/150
提交评论