全国大学生电子设计竞赛单相ACDC变换电路A题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学校统一编号HIT-A-003
学校名称哈尔滨工业大学
队长姓名
队员姓名
指导教师姓名
2013年9月7日
摘要
本系统以A VR ATmega16 单片机为控制核心,结合MOSFET驱动器IR2102,低导通电阻功率MOSFET IRF3205制作了一台具有自动稳压功能的AC-DC变换装置,DC-DC部分采用Boost拓扑结构,实现了AC(20~30 V)-DC(36 V)转换。
负载调整率、电压调整率分别达到了2.7%和1.3%,较好地完成了基本要求。
此外,给出了功率因数调整和校正的基本方法和结构框图。
关键词:AC-DC;功率因数调整;Boost电路
目录
一、设计任务................................................5
1.1 基本要求.............................................5
1.2 发挥部分.............................................5
二、方案论证与比较..........................................6
2.1 AC-DC整流电路的选择................................6
2.2 DC-DC主回路拓扑的选择..............................6
2.3 处理器的选择.........................................6
2.4 反馈稳压方案选择.....................................7
2.5 过流保护方案选择.....................................7
2.6 功率因数测量方案选择.................................7
2.7 功率因数调整方案选择.................................7
2.8 系统框图.............................................8
三、理论分析与计算..........................................9
3.1 提高效率的方法.......................................9
3.2 功率因数调整方法.....................................9
3.3 稳压控制方法.........................................10
3.4 AC-DC主回路与器件选择..............................11
3.5 DC-DC主回路与器件选择..............................11
3.6 控制电路.............................................12
3.7 辅助电源.............................................12
3.8 电压测控电路.........................................13
3.9 软件与程序设计.......................................13
四、测试结果与误差分析......................................14
4.1 测试仪器.............................................14
4.2 测试方案.............................................14
4.3 测试数据.............................................15
4.4 测试结果分析.........................................16
五、结论与心得体会..........................................17
参考文献....................................................17
附录1 总电路图..............................................18
附录2 元器件清单............................................19
附录3 程序..................................................19
单相AC-DC变换电路(A题)
【本科组】
一、设计任务
设计并制作如图1所示的单相AC-DC变换电路。
输出直流电压稳定在36 V,输出电流额定值为2 A。
图1 单相AC-DC变换电路原理框图
1.1基本要求
(1)在输入交流电压U s=24V、输出直流电流I o=2A 条件下,使输出直流电压
U o=36V±0.1V。
(2)当U s=24V,I o在0.2A~2.0A 范围内变化时,负载调整率S I≤0.5%。
(3)当I o=2A,U s在20V~30V 范围内变化时,电压调整率S U≤ 0.5%。
(4)设计并制作功率因数测量电路,实现AC-DC变换电路输入侧功率因数的测量,测量误差绝对值不大于0.03。
(5)具有输出过流保护功能,动作电流为2.5A±0.2A。
1.2 发挥部分
(1)实现功率因数校正,在U s=24V,I o=2A,U o=36V 条件下,使AC-DC 变换电路交流输入侧功率因数不低于0.98。
(2)在U s=24V,I o=2A,U o=36V 条件下,使AC-DC 变换电路效率不低于95%。
(3)能够根据设定自动调整功率因数,功率因数调整范围不小于0.80~1.00,稳态误差绝对值不大于0.03。
(4)其他。
二、方案论证与比较
2.1 AC-DC整流电路的选择
(1)全桥整流。
该电路由四个二极管以及LC滤波元件构成。
变压器绕组结构简单,二极管电压低。
但是二极管数量多,总通态损耗大。
(2)半桥整流。
该电路由两个二极管以及LC滤波元件构成。
元件总数少,结构简单,总通态损耗小。
但是二极管电压高,变压器绕组需要中心抽头。
本题中变压器无中心抽头,只能选择方案(1)。
2.2 DC-DC主回路拓扑的选择
(1)Buck-Boost型电路。
既能降压也能升压,输出与输入极性相反,输入输出电流脉动大,结构简单,只需要一只开关管。
输出空载时,会产生很高的电压造成电路中元器件的损坏,故不能空载工作。
(2)前级Boost,后级Buck。
将升降压的功能分成两个模块,使用的元器件数量较多,损耗也相对较大。
但是这种方案有利于AC/DC变换器功率因数的调整。
(3)单级Boost电路。
方案简单,驱动方便,效率较高。
但是由于任务要求输入电压 U I为AC 20 ~30V范围内变化时,输出直流电压稳定在36V,因此使用单级Boost 电路有可能不能满足要求。
不过在重载条件下,整流后电压下降较大,经实验验证效
果较好。
选择方案(3)。
2.3 处理器的选择
(1)采用STC 12C5A16S2单片机。
STC 12C5A16S2单片机是台湾宏晶公司2010年推出的新一代抗干扰,高速,高可靠性,低功耗的微控制器,其编程语言完全兼容传统8051单片机。
(2)采用ATmega16单片机。
ATmega16单片机是基于增强的A VR RISC结构的低功耗8位CMOS微控制器。
片内具有16K可编程Flash,8路10位ADC,四通道PWM,功能强大,开发成本低。
在同样的晶振频率下,方案(2)有更高的性能和更低的功耗,因此可以降低运行频率以减少对电路的电磁干扰。
因此选用方案(2)。
2.4 反馈稳压方案选择
使用单片机ATmega16实时检测输出电压,由于输出电压与PWM波的占空比成正比,若测得的电压高于8 V,则减小占空比;反之,则增加占空比。
设置一个阈值电压差e,当前电压差小于e时不进行调节,从而避免反复调节造成电压波动。
2.5 过流保护方案选择
采用硬件实现过流保护。
将一个动作电流为2.5A的自恢复保险丝串联在输出回路中。
电流未达到动作电流时,其电阻很小,造成的功率损耗也较小;当电流过大时其电阻急剧上升,以减小电流,防止造成负载损坏。
2.6 功率因数测量方案选择
(1)以过零点相位比较法为代表的直接测量法。
其主要依靠硬件装置来实现计算,受硬件本身的影响较大,并且由于谐波和干扰的存在,过零点的准确度难以保证。
其测量框图如图2。
(2)以谐波分析法为代表的软件检测分析方法。
其根据谐波分析得到的i和u的正弦波形参数,求得φ,继而求得cosφ。
这种方法有较好的抗干扰性和稳定性,还可以同时计算电网中电流、电压及其各次谐波的值,从而为功率因数调节提供监控的依据。
图2 功率因数测量方案
2.7 功率因数调整(PFC)方案选择
(1)无源PFC方案。
采用无源元件来改善输入功率因数,减小电流谐波,以满足要求,其特点是简单,但体积庞大、笨重,而且调整后的功率因数只能达到0.7~ 0.8左右。
(2)有源PFC方案。
在桥式整流器与输出电容滤波器之间加入一个功率变换电路,具有体积小、重量轻的特点,可以达到较高的功率因数(通常可达0.98以上),但成本也相对较高。
具体实现方法有以下几种:
a. 采用DSP和Boost电路实现:通过DSP编程控制完成系统的功率因数调整。
通过软件调整控制参数,使系统调试方便,减少了元器件的数量以及材料、装配的成本;但是软件编程困难,采样算法复杂,计算量大,难以达到很高的采样频率,此外还要注意控制器和主电路的隔离和驱动。
b. 如图3,采用UC3854和Boost电路实现:UC3854是一种平均电流型的升压型有源功率因数校正电路。
使用专用IC芯片,无须编程,简单直接;但是电路的外围器件很多,调试困难。
c. 采用UC28019和Boost电路实现:UCC28019也是一种平均电流型的功率因数校正芯片。
该芯片使输入电流的跟踪误差产生的畸变小于1%,实现了接近于1的功率因数,外围器件相对b较少。
以上三种方案只有方案(2a)可实现发挥部分“能够根据设定自动调整功率因数”的要求,但是其算法在短时间内实现难度较大。
图3 功率因数调整方案框图
2.8 系统框图
由于时间仓促,系统仅实现了要求中的部分功能。
上交作品的系统结构框图如图4。
图4 系统框图
三、理论分析与计算
3.1 提高效率的方法
系统的损耗分为三部分:传输损耗、开关损耗及其他损耗。
为了提高效率,可以采取如下措施:
(1)降低开关频率。
开关频率过高,开关管的损耗将会很大;开关频率过低,可能在运行中造成噪声干扰和输出电压纹波的增加。
本设计中将开关频率定为31.25 kHz。
(2)使用低导通电阻的开关管。
本设计采用采用N沟道功率MOSFET IRF3205作为开关管(导通电阻8 mΩ)。
(3)输入整流桥的损耗在低电压、大电流输出时,可占开关电源总功耗的10%以上。
降低整流桥的功耗,可以选择导通压降较低的整流桥。
(4)采用正向导通电压低、反向恢复时间极短的肖特基二极管。
本设计中采用MBR 745,典型正向导通电压为0.57 V(电流7.5 A,温度125℃)。
(5)输出铝电解滤波电容器的等效串联电阻(ESR)应尽量低。
3.2 功率因数调整(PFC)方法
如图5。
UC3854为电源提供有源功率因数校正,它能按正弦的电网电压来牵制非正弦的电流变化,该器件能最佳的利用供电电流使电网电流失真减到最小,执行所有PFC的功能。
图5 UC3854的典型应用电路
由于该芯片的外围电路比较复杂,本次设计中并没有调试成功。
3.3 稳压控制方法
根据电感电流连续工作模式(CCM)下Boost型电路输出电压、输入电压与占空比之间的公式
U o U i =
1 1−D
可得其输出电压可以通过PWM控制信号的占空比D来调整。
但如果电路工作在电感电流断续模式(DCM)下,则输出与输入的关系为
U o U i =
1+√1+
2D T S R
L
2
上式中,R为负载电阻;T s为开关周期。
而Boost型电路电感电流连续的临界条件是
L RT s ≥
D(1−D)2
2
如想保证电路工作在CCM模式,对负载电阻R应该有一定限制。
此时若调节单片机输出PWM波的占空比,就能调节输出电压,从而达到稳压的目的。
具体地说,即单片机检测到输出电压大于36+e V,则降低占空比;单片机检测到输出电压小于36-e V,则提高占空比(e为设定的输出电压误差阈值)。
若电路工作在DCM 模式,在L 、T s 、R 不变的前提下,输出电压U o 仍与占空比D 成正比,故上述调节方法仍可用。
3.4 AC-DC 主回路与器件选择 电路图如图6。
整流桥选择耐压1000 V ,最大电流10 A 的整流桥。
根据公式可计算整流后滤波电容
L
R T 5~3(C ⨯=),P U R 2d L = 上式中,P 为后级电路的输入功率;U d 为电容上的平均电压。
单相全桥电路,T 取0.01 s ,则
576034567225
250105~3(C ~.)=⨯⨯⨯= μF 为提高滤波效果,取两个100V ,4700μF 的电解电容和一个100V ,2200μF 的电解电容并联。
3.5 DC-DC 主回路与器件选择
如图6。
采用Boost 型拓扑结构。
主电路采用N 沟道功率MOSFET IRF3205作为开关管(导通电阻8mΩ);采用高速功率MOSFET 和IGBT 驱动器IR2102作为PWM 驱动芯片(驱动能力强,开启上升时间100 ns ,关断下降时间50 ns );采用肖特基二极管MBR745作为续流二极管(反向耐压45V ,最大电流3 A ),能很好地满足题目的要求。
图6 AC-DC-DC 主回路电路图
3.6 控制电路
如图7,单片机模块由微控制器ATmega16最小系统和外部设备构成,实现对电压采样信号的处理以及稳压功能。
其中单片机的定时器产生占空比可调的PWM 波形,输出给主电路驱动功率MOSFET 完成对DC-DC 变换器的控制;电压采样信号经单片机内部10位ADC 转换成数字信号,与人工设定的电压比对,从而进行相应的计算和调整。
图7 单片机模块结构框图
3.7 辅助电源
如图8,由于输入电压为AC 20~30 V ,不能满足测控电路和单片机供电的需要,
故需要外加辅助电源。
购买一块成品开关电源将AC 220 V转换成DC 15 V为运放和驱动芯片提供电源,之后外加一个自制的辅助电源模块(DC 15 V-DC 5 V)给单片机供电。
自制模块采用降压型开关稳压电源控制器LM2576,该芯片具有多种固定电压输出型号和可调电压输出型号,内置固定频率为52 kHz的振荡器,电压转换效率高(可达77%到88%),输出电压的误差范围小(最大4%),负载驱动能力大(最大3 A)。
本设计中选用LM2576-12为集成运放和PWM驱动芯片供电,选用LM2576-5为单片机供电。
LM2576外围电路的元器件取值参考该芯片的数据手册。
图8 辅助电源电路图
3.8 电压测控电路
如图9。
电压测控采用100kΩ和10kΩ的电阻分压,输出电压理论上是0~3.27 V,可以送入单片机的ADC进行采样。
在电压采样电路的前端串接一个电压跟随器,保证阻抗匹配,减小单片机电路对主回路的影响,提高采样精度。
图9 电压测控电路图
3.9 软件与程序设计
总流程图如图10,具体的程序见附录3。
图10 程序总流程图
四、测试结果与误差分析
4.1 测试仪器
RIGOL DM3051 数字多用表
RIGOL DS1102E 双通道数字示波器
SUING SS3225 可跟踪直流稳定电源
4.2 测试方案
测试框图如图11,按照题目要求对被测量进行测量并记录结果。
图11 测试框图
4.3 测试数据
(1)输出稳压测试
保持其他条件不变,在输入交流电压U s=24 V、输出直流电流I o=2 A条件下,测
量直流输出电压U o。
测试三次,如表1所示。
表1 输出稳压测试数据
(2)负载调整率测试
保持其他条件不变,使U s=24 V,I o在0.2 A~2.0 A范围内调节,测量直流输出电压U o,如表2所示。
表2 负载调整率测试数据
(3)电压调整率测试
保持其他条件不变,当I o=2 A,U s在20 V~30 V范围内调节,测量测量直流输出电压U o,如表3所示。
表3 电压调整率测试数据
(4)过流保护功能测试(见表4)
表4 过流保护功能测试数据
(5)AC-DC 变换电路效率测试(见表5)
表5 AC-DC 变换电路效率测试数据
4.4 测试结果分析
(1)输出稳压测试结果分析
在测试条件下,直流输出电压 U o 在三次测量中均保持在36 V±0.2V 内。
基本满足要求(1)。
(2)负载调整率测试结果分析
在测试条件下,根据负载调整率的计算公式,可以得到
S I =|U o2−U o1U o1|×100%=0.9835.8
×100%=2.7% (3)电压调整率测试结果分析
在测试条件下,根据电压调整率的计算公式,可以得到
S U =|U o2′−U o1′36|×100%=0.4836
×100%=1.3% (4)过流保护功能测试结果分析
在测试条件下,系统具有过流保护功能,且三次测试的动作电流满足基本要求(5)。
(6)AC-DC 变换电路效率测试结果分析
在测试条件下,AC-DC 变换电路效率可以由下式计算
η=P o P s ×100%=71.7787.24×100%=82.3% 五、结论与心得体会
本系统以A VR ATmega16 单片机为控制核心,结合MOS 管驱动器IR2102,低导通电阻功率MOSFET IRF3205制作了一台具有自动稳压功能的AC-DC 变换装置,较
好地完成了基本要求。
硬件方面,测试时发现系统工作时电感的发热量较高,可能是由于电感为手工绕制,缺少绕线工具造成电感线圈有较大损耗;同时如果使用了UC3854将会提高系统的功率因数至接近1。
软件方面,若能采用PID控制理论可以进一步提高控制效率,减小过渡时间。
四天三夜的电子设计竞赛告一段落。
虽然我们的作品并不完善,还有很多可以提高的空间,但是在竞赛的参与过程中得到的知识和经验会让我们受益良多。
参考文献
[1] 全国大学生电子设计竞赛组委会.2011年全国大学生电子设计竞赛获奖作品选编[M].北京:北京理工大学出版社,2012
[2] 裴云庆,杨旭,王兆安.开关稳压电源的设计和应用[M].北京:机械工业出版社,2010
[3] [美]Ron Lenk着.王正仕,等译.实用开关电源设计[M].北京:人民邮电出版社,2006
[4] 林云,管春.电力电子技术[M].北京:人民邮电出版社,2012
[5] 马洪涛等.开关电源制作与调试[M].北京:中国电力出版社,2010
[6] 周志敏,纪爱华.开关电源功率因数校正电路设计与应用实例[M].北京:化学工业出版社,2012
[7] 张华宇等.A VR单片机基础与实例进阶[M].北京:清华大学出版社,2012
[8] 老杨,李鹏举.A VR单片机工程师是怎样炼成的[M].北京:电子工业出版社,2012
[9] 沙占友,孟志永. 提高开关电源效率的方法[J]. 电源技术应用,2012.3
[10] 王浩,刘凤新.高精度电网功率因数测量加权插值FFT优化算法[J].计量技术.2008.6
[11] ATMEL.ATmega16数据手册[Z].2003
附录1 总电路图
附录2 元器件清单
附录3 程序
/******************************************************************************/
/* Name: 电子设计电源题功能:稳压,电路保护功能*/
/* Designed by : 胡车,蒋睿,张佩小组Date:2013/9/5 21:09 */
/* 开发环境: ICCA VR */
/* PD0确定键,PD1增加键,PD2菜单键,PD7减小键,PD5输出PWM波,PD6接继电器*/ /* PA0~PA2液晶控制,PB口液晶数据口,PA5采样电压输入,PA6采样电流输入*/
/******************************************************************************/
#include <iom16v.h>
#include <macros.h>
#include "1602.h"
#define uchar unsigned char
#define uint unsigned int
#define Get_Bit(val, bitn) (val &(1<<(bitn)) )
uint addata;
uint rec=1;
uchar flag=1;//进入按键中断标志
uchar key_flag=0;//按键标志位
uchar num_flag=0;//数字改变标志
uchar err_flag=0;//出错类型标志
uchar delay_flag=0;//适应电压标志
uint vol_exp=368;//360理想输出电压
uint num1=1,num2=5;
uint k1,k2;
uchar cont1[]={"Limited Current:"};
uchar cont2[]={" . A "};
uchar temp1[]={"V oltage: . V "},temp2[]={"Current: . A "},temp3[]={"DUTY CYCLE: %"}; float temp1float=0,temp2float=0;
uint temp1int=0,temp2int=0;
void port_init(void)
{
PORTA = 0xf8;//f8
DDRA = 0x07;
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0xFF; //m103 output only
DDRC = 0x00;
PORTD = 0x8F;
DDRD = 0x70;
}
//TIMER1 initialize - prescale:1
// WGM: 5) PWM 8bit fast, TOP=0x00FF
// desired value: 31.25KHz
// actual value: 31.250KHz (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xFF; //setup
TCNT1L = 0x01;
OCR1AH = 0x00;
OCR1AL = 0x30;//改变A占空比
OCR1BH = 0x00;
OCR1BL = 0x5E;//改变B占空比
ICR1H = 0x00;
ICR1L = 0xFF;
TCCR1A = 0xF1;
TCCR1B = 0x09; //start Timer
}
/*延时函数*/
void delay_ms(unsigned int xms)
{
int i,j;
for(i=0;i<xms;i++)
{
for(j=0;j<1140;j++);
}
}
void delay(uint x)
{
int i,j;
for(i=0;i<x;i++)
{for(j=0;j<200;j++);}
}
//按下按键后待处理的程序
void key_sol(void)//液晶界面
{
flag=0;
key_flag=1;
LcdInit();
WriteChar(1,0,16,cont1);
WriteChar(2,0,16,cont2);
WriteNum(2,0,ASCII[num1]);
WriteNum(2,2,ASCII[num2]);
writecom(0x0f);//开光标显示
writecom(0xc0);
while(key_flag!=0)
{
/*确定按键*/
if(Get_Bit(PIND,PD0)==0)
{
delay_ms(20);
key_flag=key_flag+1;
while(!(Get_Bit(PIND,PD0)));//等待按键松开delay_ms(20);
}
switch(key_flag)
{
case 1://调节电流NUM1
/*增加按键*/
if(Get_Bit(PIND,PD1)==0)
{
num_flag=1;
delay_ms(10);
num1++;
if(num1==10)
{
num1=9;
}
WriteNum(2,0,ASCII[num1]);
writecom(0xc0);
while(!(Get_Bit(PIND,PD1)));//等待按键松开delay_ms(10);
}
/*减少按键*/
if(Get_Bit(PIND,7)==0)
{
num_flag=1;
delay_ms(10);
num1--;
if(num1==0)
{
num1=1;
}
WriteNum(2,0,ASCII[num1]);
writecom(0xc0);
while(!(Get_Bit(PIND,PD7)));//等待按键松开delay_ms(10);
}
break;
case 2://调节电流NUM2
writecom(0xc2);
/*增加按键*/
if(Get_Bit(PIND,PD1)==0)
{
num_flag=1;
delay_ms(10);
num2++;
if(num2==10)
{
num2=9;
}
WriteNum(2,2,ASCII[num2]);
writecom(0xc2);
while(!(Get_Bit(PIND,PD1)));//等待按键松开
delay_ms(10);
}
/*减少按键*/
if(Get_Bit(PIND,7)==0)
{
num_flag=1;
delay_ms(10);
num2--;
if(num2==0)
{
num2=1;
}
WriteNum(2,2,ASCII[num2]);
writecom(0xc2);
while(!(Get_Bit(PIND,PD7)));//等待按键松开
delay_ms(10);
}
break;
case 3:
key_flag=0;
break;
default:
key_flag=0;
}
}
}
#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void)
{
delay_ms(10);
key_sol();
//while(!(Get_Bit(PIND,PD2)));//等待按键松开delay_ms(10);
key_flag=0;
flag=1;
LcdInit();
}
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer1_init();
MCUCR = 0x02;
GICR = 0x40;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
uint AD_GetData(uint ad_input)
{
ADMUX|=0x40; //ADC参考电压A Vcc
ADCSRA|=0x87; //使能ADC,128分频
ADMUX=ad_input; //选择AD转换通道
ADCSRA|=(1<<ADSC);//开始AD转换
delay(1);
while(!(ADCSRA&(1<<ADIF))); //等待转换结束
ADCSRA|=(1<<ADIF); //关闭AD转换
ADCSRA&=0x0f;
return ADC;
}
/*系统修正*/
void sys_comp()
{
while(1)
{
switch (delay_flag)
{
case 0:
case 1:
if(temp1int<vol_exp)
{
OCR1AL=OCR1AL+3;
delay_flag=0;
}
if(temp1int>vol_exp)
{
OCR1AL=OCR1AL-3;
delay_flag++;
}
break;
default:
if(temp1int<vol_exp)
{
OCR1AL=OCR1AL+1;
}
if(temp1int>vol_exp)
{
OCR1AL=OCR1AL-1;
}
delay_ms(1);
}
ad_get();
if(OCR1AL<2)
{
OCR1AL=2;
delay_ms(20);
if(temp1int>vol_exp)
{
delay_ms(30);
if(temp1int>vol_exp)
{
err_flag=0;
err_sol();
PORTD&=0xbf;//打开继电器
}
}
}
if((temp2int>(num1*100+num2*10))&&(OCR1AL>150)) {
err_flag=1;
err_sol();
}
}
}
void err_sol()
{
uchar cont3[]={"Safe Mode "};
uchar cont4[]={"Caution: "};
uchar cont5[]={"V oltage >36V "};
switch (err_flag)
{
case 0:
PORTD|=(1<<PD6);//关闭继电器
LcdInit();
WriteChar(1,0,14,cont4);
WriteChar(2,0,14,cont5);
OCR1AL =2;//初始化A占空比80%
delay_flag=0;
flag=0;
while(!flag);//等待菜单按键按下
delay_ms(50);
break;
case 1:
PORTD|=(1<<PD6);//关闭继电器
LcdInit();
WriteChar(1,0,14,cont3);
// OCR1AL = 0x51;//初始化A占空比80%
delay_flag=0;
flag=0;
while(!flag);//等待菜单按键按下
delay_ms(50);
break;
default:
break;
}
}
/*ad读取*/
void ad_get()
{
uchar i;
uchar t;
uchar r;
addata=AD_GetData(0x45); //获得通道5数字量for(i=0;i<9;i++)
{
addata=addata+AD_GetData(0x45);
}
temp1float=temp1float/9.08;
temp1int=((uint)(temp1float*100)+1);
temp1[8]=ASCII[temp1int/100];
temp1[9]=ASCII[(temp1int%100)/10];
temp1[11]=ASCII[temp1int%10];
while(!flag);
WriteChar(1,0,17,temp1);
addata=AD_GetData(0x46); //获得通道6的数字量for(i=0;i<9;i++)
{
addata=addata+AD_GetData(0x46);
}
temp2float=temp2float/21.0;
temp2int=(uint)(temp2float*100);
temp2[8]=ASCII[temp2int/100];
temp2[10]=ASCII[(temp2int%100)/10];
temp2[11]=ASCII[temp2int%10];
while(!flag);
WriteChar(2,0,17,temp2);
r++;
if(r==30)
{
//LcdInit();
}
/*
addata=AD_GetData(0x47); //获得通道7的数字量for(i=0;i<9;i++)
{
addata=addata+AD_GetData(0x47);
}
temp3float=temp3float/21.0;
temp3int=(uint)(temp3float*100);
temp3[2]=ASCII[temp3int/100];
temp3[4]=ASCII[(temp3int%100)/10];
temp3[5]=ASCII[temp3int%10];
while(!flag);
WriteChar(2,8,7,temp3);
*/
//WriteChar(2,0,?,temp3);//显示占空比
delay_ms(1);
}
/*主函数*/
void main(void)
{
SREG|=0x80;
DDRA=0xff;
PORTA=0xff;
init_devices();
LcdInit();
while(1)
{
sys_comp();
}
}。