基于单片机控制的开关电源设计.

基于单片机控制的开关电源设计

系 部: 电子与通信工程系 姓 名: 龚倩倩 专业班级: 电信10D1 学 号: 102222105 指导老师: 邵雯

2012年9月21日

声 明

本人所呈交的基于单片机控制的电源开关设计,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。

作者签名:

日 期:

【摘要】

开关电源体积小、效率高,被誉为高效节能电源,现己成为稳压电源的主导产品。随着开关电源在计算机、通信、航空航天、仪器仪表及家用电器等方面的广泛应用, 人们对其需求量日益增长, 并且对电源的效率、体积、重量及可靠性等方面提出了更高的要求。开关电源以其效率高、体积小、重量轻等优势在很多方面逐步取代了效率低、又笨又重的线性电源。

本文介绍了一款基于PWM 技术的DC-DC 开关稳压电源, 用proteus 仿真, 输出纹波小,电压稳定可靠.

[关键词]:开关电源,DC-DC ,单片机,proteus

[Abstract]: The small size of the switching power supply, high efficiency, known as energy-efficient power supply, has now become the leading products of the regulated power supply.With the wide application of switching power supplies in computers, communications, aerospace, instrumentation and household appliances, people growing their demand and higher power efficiency, size, weight, and reliabilityrequirements. Switching power supply for its high efficiency, small size, light weight advantages in many ways to gradually replace the inefficient, clunky, heavy linear power.

This article describes a DC-DC switching power supply based on PWM technology, with proteus simulation output ripple voltage is stable and reliable.

[Keywords]: switching power supplies, DC-DC, single-chip, proteus

目录

【摘要】........................................................................................................................................... 3

一、引 言 ........................................................................................................................................ 4

二、总体设计 .................................................................................................................................. 5

(一)硬件总体设计 . .............................................................................................................. 5

(二)AT 89C52单片机概述 . .................................................................................................. 5

(三)开关电源系统硬件设计 . .............................................................................................. 9

1. 开关电源电路设计 . ........................................................................................................ 10

2. 电压反馈电路 . ................................................................................................................ 10

3. 限流电路 . ........................................................................................................................ 11

三、软件设计 ................................................................................................................................ 11

(一)总的软件设计思想 . .................................................................................................... 11

(二)各部分的软件框图和程序 . ........................................................................................ 12

1. 主程序设计 . ................................................................................................................. 12

2.数据显示子程序 . ...................................................................................................... 13

3. 键盘扫描子程序 . ......................................................................................................... 13

4. 键值处理子程序流程图 . ............................................................................................. 14

四、程序清单 ................................................................................................................................ 14

一、引 言

本设计中采用的是脉宽调制型, Pwm 技术是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM 的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。在脉宽调制中因为频率不变,所以无论是对电路中的磁性元件及晶体管的测试和设计都很方便,而且对射频干扰的抑制也变得比较容易。利用单片机可以实现对开关电

源的智能控制,实现智能化开关电源的制作。高度集成、功能强大的开关型稳压电源代表着开关电源发展的主流方向,其技术也日驱成熟。

二、总体设计

本课题的主要思想是利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。通过键盘预置电压,控制单片机进行脉宽调制,使输出电压在大范围内可调。通过单片机软件控制,实现电源的智能保护,可以设定某个规定的电压或者电流,当超过该电压或者电流时,单片机关断开关管,电源不再工作,以便保护电源。

三、硬件设计

(一)硬件总体设计

本设计中拟采用脉宽调制型,先通过电压及功率变换设计出一个DC12V 左右的电压源, 再对12V 的电压源, 通过脉宽调制, 实现步进0.1V 、输出电流500 mA、LCD 显示的直流电压。利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。硬件总体框图如图3-1所示。

图3-1硬件总体框图

(二)AT 89C52单片机概述

1.AT89C52单片机组成

图3-2 AT89C52单片机组成结构图

AT89C51是一种带4K 字节FLASH 存储器(FPEROM —Flash

Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

引脚说明:

(1)电源引脚

Vcc(40脚):典型值+5V 。

Vss(20脚):接低电平。

(2)外部晶振

X1、X2分别与晶体两端相连接。当采用外部时钟信号时,X2接振荡信号,X1接地。

(3)输入输出口引脚:

P0口:I/O双向口。作输入口时,应先软件置“ 1”。

P1口:I/O双向口。作输入口时,应先软件置“ 1”。

P2口:I/O双向口。作输入口时,应先软件置“ 1”。

P3口:I/O双向口。作输入口时,应先软件置“ 1”。

(4)控制引脚

RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作、计时完成后,RST 引脚输出96个晶振周期的高电平。DISROT 默认状态下,复位高电平有效。

① ALE/PROG(30引脚):一般情况下,ALE 以晶振六分之一的固定频率输出

脉冲,可用来作为外部定时器或时钟使用。

② PSEN (29引脚):外部程序存储信号时外部程序存储器选通信号。当

AT89C51RC 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次。

③ EA/VPP(31引脚):访问外部程序存储器控制信号,为使能从0000H 到FFFFH

的外部程序存储器读取指令,必须接END 。

④ XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。 ⑤ XTAL2(18引脚):振荡器反相放大器的输入端。

P1口作为LCD 液晶屏的数据口,采用并口数据传输模式,P2口中的P2.0、P2.1、P2.2、作为控制信号输出口,分别接RS 、R/W、E 控制端,P2.3、P2.4分别接湿温度传感器的SCK 和DATA ,P2.5. 、P2.6、P2.7接按键电路,P1口的P1.0、P1.1、P1.2分别接ADC0831的控制端,P1.4接报警的蜂鸣器。

3.AT89C52单片机的最小系统

图3-4 AT89C52单片机组成结构图

(1)复位电路:

由电容串联电阻构成,由图并结合" 电容电压不能突变" 的性质,可以知道,当系统一上电,RST 脚将会出现高电平,并且,这个高电平持续的时间由电路的RC 值来决定。典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC 的取值就可以保证可靠的复位。一般教科书推荐C 取10u ,R 取10K 。原则就是要让RC 组合可以在RST 脚上产生不少于2个机周期

的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。

(2) 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率, 用于有串口通讯的场合)/12MHz(产生精确的uS 级时歇, 方便定时操作) ,在本电路中,取12M 。

(三)开关电源系统硬件设计

1. 开关电源电路设计

图3-3开关电源电路

如图3-3可看出,DC50V 输入, 经Q1,Q2,Q3, 进行交流变换,输入给储能性元件L1, 当输出电压有波动时, 调整管Q4调整输入电压,反过来抑制输出电压的波动。

2. 电压反馈电路

电压反馈部分,当电压达到12V 时,电流流经稳压二极管D4、三极管Q2 B,E 极、电阻R8 使Q2导通,Q2导通将使三极管13003提前进入关断区,从而使输出电压稳定在12V 左右。

3. 限流电路

当R11上流经的电流到达一定值,在R11上将产生压降,当压降超过0.7V ,三极管Q3饱和导通.Q3集电极电压为0,自激式振荡回路终止,输出电流变小,当R11上的电流小到足够的值,R11两端的电压低于0.7V ,Q3又截止,自激振荡回路又继续振荡。

三、软件设计

(一)总的软件设计思想

系统的软件设计采用C 语言,对单片机进行编程实现各项功能。

程序是采用keil c51软件编写的, 可以使液晶显示屏对特定数字、英文字母以

及汉字组成的句子进行显示,并通过按键对显示内容实现控制、转换等功能。

主程序主要起到一个导向和决策功能,决定液晶显示屏该显示什么内容,该如何显示。液晶显示屏各种功能的实现主要通过调用具体的子程序。

(二)各部分的软件框图和程序

1. 主程序设计

文字描述下 例如(通电之后,系统开始工作,若是有键按下,就根据按键程序进行工作,并把结果显示到LCD 液晶显示屏上,若是没有按键,定时时间一到,气体传感)

2.数据显示子程序

3. 键盘扫描子程序

4. 键值处理子程序流程图

四、程序清单

//*************************************************************************************************

//* *

//* ******************************头文件及宏定义************************** *

//* *

//*************************************************************************************************

#include

#include"includes.h"

#define uchar unsigned char

#define uint unsigned int

#define SCANPORT P2

#define TIME1H 80

#define TIME1L 80 //定时器1溢出时间// sbit wr=P3^1;

sbit rd=P3^0;

sbit P27=P2^7;

unsigned long int shuchu=500; //默认的开机电压//

uint zhuhuandata;

unsigned long int ch=0;

uchar i=0; //按键标记//

uchar uca_LineScan[3]={0xEF,0xDF,0xBF};

void chuli(); //函数定义//

uchar getkey(); //函数定义//

//*************************************************************************************************

//* *

//* ********************************将键值累加并送显示****************************** *

//* *

//*************************************************************************************************

void qiuhe(uchar t)

{

if(i==1)

{

ch=t;

vShowOneChar(6,89,uca[t]);

}

if(i==2)

{

ch=ch*10+t;

vShowOneChar(6,103,uca[t]);

}

if(i==3)

{

ch=ch*10+t;

vShowOneChar(6,111,uca[t]);

}

}

//*************************************************************************************************

//* *

//* ********************************按键功能函数****************************** *

//* *

//***************************************************************

**********************************

void key_chuli(uchar x)

{

uchar t;

switch(x)

{

case 42: t=0;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'0'

case 31: t=1;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'1'

case 32: t=2;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'2'

case 33: t=3;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'3'

case 21: t=4;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'4'

case 22: t=5;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'5'

case 23: t=6;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'6'

case 11: t=7;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'7'

case 12: t=8;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'8'

case 13: t=9;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'9'

case 41: if(i==3) //'ok'

{

ch=ch*256/512;

shuchu=ch;

ch=0;

TH0=65200;

TL0=65200;

vShowOneChin(2,49,uca_0);

vShowOneChin(2,64,uca_0);

vShowOneChin(4,48,uca_SHU);

vShowOneChin(4,64,uca_CHU);

vShowOneChar(6,88,uca_HEN);

vShowOneChar(6,104,uca_HEN);

vShowOneChar(6,112,uca_HEN);

}

i=0;

break;

}

}

void vTimer0(void) interrupt 1 using 2

{

uchar a,d;

unsigned long int c=0;

uchar data tab[3];

a=(((zhuhuandata&0xf0)>>4)*100/16);

d=((zhuhuandata&0x0f)*100/256);

c=(a+d)*5.12;

tab[0]=c%10;

tab[1]=c/10%10;

tab[2]=c/100%10;

vShowOneChar(2,89,uca[tab[2]]);

vShowOneChar(2,103,uca[tab[1]]);

vShowOneChar(2,111,uca[tab[0]]);

TH0=TIME1H;

TL0=TIME1L;

}

void main(void)

{

SCANPORT=0x8F;

ClearLCD(0x00);

vShowOneChar(2,89,uca[5]);

vShowOneChar(2,96,uca_XIAOSHU);

vShowOneChar(2,103,uca[0]);

vShowOneChar(2,111,uca[0]);

vShowOneChar(2,120,uca_V);

vShowOneChin(0,0,uca_DANG);

vShowOneChin(0,16,uca_QIAN);

vShowOneChin(0,32,uca_GONG);

vShowOneChin(0,48,uca_ZUO);

vShowOneChin(0,64,uca_DIAN);

vShowOneChin(0,80,uca_YA);

vShowOneChin(0,96,uca_MAOHAO);

vShowOneChin(4,0,uca_QING);

vShowOneChin(4,16,uca_SHE);

vShowOneChin(4,32,uca_ZHI);

vShowOneChin(4,48,uca_SHU);

vShowOneChin(4,64,uca_CHU);

vShowOneChin(4,80,uca_DIAN);

vShowOneChin(4,96,uca_YA);

vShowOneChin(4,112,uca_MAOHAO);

vShowOneChar(6,96,uca_XIAOSHU);

vShowOneChar(6,88,uca_HEN);

vShowOneChar(6,104,uca_HEN);

vShowOneChar(6,113,uca_HEN);

vShowOneChar(6,119,uca_V);

//

处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

TMOD=0X01;

TH0=TIME1H;

TL0=TIME1L;

ET0=1; //T/C0开中断

TR0=1; //开定时器0中断

IT0=1; //外中断方式:下降沿。

EX0=1; //开启外部中断。

EA=1;

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

while(1)

{

wr=0;

wr=1;

chuli();

if(zhuhuandata

if(zhuhuandata>shuchu)P27=1;

if(zhuhuandata

}

}

void chuli()

{

rd=0;

zhuhuandata=P0;

}

//*************************************************************************************************

//* *

//* ********************************函数实现****************************** *

//* *

//*************************************************************************************************

unsigned char getkey()

{

uchar ucTemp=0; //扫描状态暂存。

uchar ucRow=0,ucLine=0; //行号,列号。

基于单片机控制的开关电源设计

系 部: 电子与通信工程系 姓 名: 龚倩倩 专业班级: 电信10D1 学 号: 102222105 指导老师: 邵雯

2012年9月21日

声 明

本人所呈交的基于单片机控制的电源开关设计,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。

作者签名:

日 期:

【摘要】

开关电源体积小、效率高,被誉为高效节能电源,现己成为稳压电源的主导产品。随着开关电源在计算机、通信、航空航天、仪器仪表及家用电器等方面的广泛应用, 人们对其需求量日益增长, 并且对电源的效率、体积、重量及可靠性等方面提出了更高的要求。开关电源以其效率高、体积小、重量轻等优势在很多方面逐步取代了效率低、又笨又重的线性电源。

本文介绍了一款基于PWM 技术的DC-DC 开关稳压电源, 用proteus 仿真, 输出纹波小,电压稳定可靠.

[关键词]:开关电源,DC-DC ,单片机,proteus

[Abstract]: The small size of the switching power supply, high efficiency, known as energy-efficient power supply, has now become the leading products of the regulated power supply.With the wide application of switching power supplies in computers, communications, aerospace, instrumentation and household appliances, people growing their demand and higher power efficiency, size, weight, and reliabilityrequirements. Switching power supply for its high efficiency, small size, light weight advantages in many ways to gradually replace the inefficient, clunky, heavy linear power.

This article describes a DC-DC switching power supply based on PWM technology, with proteus simulation output ripple voltage is stable and reliable.

[Keywords]: switching power supplies, DC-DC, single-chip, proteus

目录

【摘要】........................................................................................................................................... 3

一、引 言 ........................................................................................................................................ 4

二、总体设计 .................................................................................................................................. 5

(一)硬件总体设计 . .............................................................................................................. 5

(二)AT 89C52单片机概述 . .................................................................................................. 5

(三)开关电源系统硬件设计 . .............................................................................................. 9

1. 开关电源电路设计 . ........................................................................................................ 10

2. 电压反馈电路 . ................................................................................................................ 10

3. 限流电路 . ........................................................................................................................ 11

三、软件设计 ................................................................................................................................ 11

(一)总的软件设计思想 . .................................................................................................... 11

(二)各部分的软件框图和程序 . ........................................................................................ 12

1. 主程序设计 . ................................................................................................................. 12

2.数据显示子程序 . ...................................................................................................... 13

3. 键盘扫描子程序 . ......................................................................................................... 13

4. 键值处理子程序流程图 . ............................................................................................. 14

四、程序清单 ................................................................................................................................ 14

一、引 言

本设计中采用的是脉宽调制型, Pwm 技术是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM 的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。在脉宽调制中因为频率不变,所以无论是对电路中的磁性元件及晶体管的测试和设计都很方便,而且对射频干扰的抑制也变得比较容易。利用单片机可以实现对开关电

源的智能控制,实现智能化开关电源的制作。高度集成、功能强大的开关型稳压电源代表着开关电源发展的主流方向,其技术也日驱成熟。

二、总体设计

本课题的主要思想是利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。通过键盘预置电压,控制单片机进行脉宽调制,使输出电压在大范围内可调。通过单片机软件控制,实现电源的智能保护,可以设定某个规定的电压或者电流,当超过该电压或者电流时,单片机关断开关管,电源不再工作,以便保护电源。

三、硬件设计

(一)硬件总体设计

本设计中拟采用脉宽调制型,先通过电压及功率变换设计出一个DC12V 左右的电压源, 再对12V 的电压源, 通过脉宽调制, 实现步进0.1V 、输出电流500 mA、LCD 显示的直流电压。利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。硬件总体框图如图3-1所示。

图3-1硬件总体框图

(二)AT 89C52单片机概述

1.AT89C52单片机组成

图3-2 AT89C52单片机组成结构图

AT89C51是一种带4K 字节FLASH 存储器(FPEROM —Flash

Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

引脚说明:

(1)电源引脚

Vcc(40脚):典型值+5V 。

Vss(20脚):接低电平。

(2)外部晶振

X1、X2分别与晶体两端相连接。当采用外部时钟信号时,X2接振荡信号,X1接地。

(3)输入输出口引脚:

P0口:I/O双向口。作输入口时,应先软件置“ 1”。

P1口:I/O双向口。作输入口时,应先软件置“ 1”。

P2口:I/O双向口。作输入口时,应先软件置“ 1”。

P3口:I/O双向口。作输入口时,应先软件置“ 1”。

(4)控制引脚

RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作、计时完成后,RST 引脚输出96个晶振周期的高电平。DISROT 默认状态下,复位高电平有效。

① ALE/PROG(30引脚):一般情况下,ALE 以晶振六分之一的固定频率输出

脉冲,可用来作为外部定时器或时钟使用。

② PSEN (29引脚):外部程序存储信号时外部程序存储器选通信号。当

AT89C51RC 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次。

③ EA/VPP(31引脚):访问外部程序存储器控制信号,为使能从0000H 到FFFFH

的外部程序存储器读取指令,必须接END 。

④ XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。 ⑤ XTAL2(18引脚):振荡器反相放大器的输入端。

P1口作为LCD 液晶屏的数据口,采用并口数据传输模式,P2口中的P2.0、P2.1、P2.2、作为控制信号输出口,分别接RS 、R/W、E 控制端,P2.3、P2.4分别接湿温度传感器的SCK 和DATA ,P2.5. 、P2.6、P2.7接按键电路,P1口的P1.0、P1.1、P1.2分别接ADC0831的控制端,P1.4接报警的蜂鸣器。

3.AT89C52单片机的最小系统

图3-4 AT89C52单片机组成结构图

(1)复位电路:

由电容串联电阻构成,由图并结合" 电容电压不能突变" 的性质,可以知道,当系统一上电,RST 脚将会出现高电平,并且,这个高电平持续的时间由电路的RC 值来决定。典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC 的取值就可以保证可靠的复位。一般教科书推荐C 取10u ,R 取10K 。原则就是要让RC 组合可以在RST 脚上产生不少于2个机周期

的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。

(2) 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率, 用于有串口通讯的场合)/12MHz(产生精确的uS 级时歇, 方便定时操作) ,在本电路中,取12M 。

(三)开关电源系统硬件设计

1. 开关电源电路设计

图3-3开关电源电路

如图3-3可看出,DC50V 输入, 经Q1,Q2,Q3, 进行交流变换,输入给储能性元件L1, 当输出电压有波动时, 调整管Q4调整输入电压,反过来抑制输出电压的波动。

2. 电压反馈电路

电压反馈部分,当电压达到12V 时,电流流经稳压二极管D4、三极管Q2 B,E 极、电阻R8 使Q2导通,Q2导通将使三极管13003提前进入关断区,从而使输出电压稳定在12V 左右。

3. 限流电路

当R11上流经的电流到达一定值,在R11上将产生压降,当压降超过0.7V ,三极管Q3饱和导通.Q3集电极电压为0,自激式振荡回路终止,输出电流变小,当R11上的电流小到足够的值,R11两端的电压低于0.7V ,Q3又截止,自激振荡回路又继续振荡。

三、软件设计

(一)总的软件设计思想

系统的软件设计采用C 语言,对单片机进行编程实现各项功能。

程序是采用keil c51软件编写的, 可以使液晶显示屏对特定数字、英文字母以

及汉字组成的句子进行显示,并通过按键对显示内容实现控制、转换等功能。

主程序主要起到一个导向和决策功能,决定液晶显示屏该显示什么内容,该如何显示。液晶显示屏各种功能的实现主要通过调用具体的子程序。

(二)各部分的软件框图和程序

1. 主程序设计

文字描述下 例如(通电之后,系统开始工作,若是有键按下,就根据按键程序进行工作,并把结果显示到LCD 液晶显示屏上,若是没有按键,定时时间一到,气体传感)

2.数据显示子程序

3. 键盘扫描子程序

4. 键值处理子程序流程图

四、程序清单

//*************************************************************************************************

//* *

//* ******************************头文件及宏定义************************** *

//* *

//*************************************************************************************************

#include

#include"includes.h"

#define uchar unsigned char

#define uint unsigned int

#define SCANPORT P2

#define TIME1H 80

#define TIME1L 80 //定时器1溢出时间// sbit wr=P3^1;

sbit rd=P3^0;

sbit P27=P2^7;

unsigned long int shuchu=500; //默认的开机电压//

uint zhuhuandata;

unsigned long int ch=0;

uchar i=0; //按键标记//

uchar uca_LineScan[3]={0xEF,0xDF,0xBF};

void chuli(); //函数定义//

uchar getkey(); //函数定义//

//*************************************************************************************************

//* *

//* ********************************将键值累加并送显示****************************** *

//* *

//*************************************************************************************************

void qiuhe(uchar t)

{

if(i==1)

{

ch=t;

vShowOneChar(6,89,uca[t]);

}

if(i==2)

{

ch=ch*10+t;

vShowOneChar(6,103,uca[t]);

}

if(i==3)

{

ch=ch*10+t;

vShowOneChar(6,111,uca[t]);

}

}

//*************************************************************************************************

//* *

//* ********************************按键功能函数****************************** *

//* *

//***************************************************************

**********************************

void key_chuli(uchar x)

{

uchar t;

switch(x)

{

case 42: t=0;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'0'

case 31: t=1;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'1'

case 32: t=2;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'2'

case 33: t=3;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'3'

case 21: t=4;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'4'

case 22: t=5;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'5'

case 23: t=6;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'6'

case 11: t=7;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'7'

case 12: t=8;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'8'

case 13: t=9;

i++;

qiuhe(t);

if(i==3)

{

vShowOneChin(2,49,uca_que);

vShowOneChin(2,64,uca_ding);

vShowOneChin(4,59,uca_wenhao);

}

break; //'9'

case 41: if(i==3) //'ok'

{

ch=ch*256/512;

shuchu=ch;

ch=0;

TH0=65200;

TL0=65200;

vShowOneChin(2,49,uca_0);

vShowOneChin(2,64,uca_0);

vShowOneChin(4,48,uca_SHU);

vShowOneChin(4,64,uca_CHU);

vShowOneChar(6,88,uca_HEN);

vShowOneChar(6,104,uca_HEN);

vShowOneChar(6,112,uca_HEN);

}

i=0;

break;

}

}

void vTimer0(void) interrupt 1 using 2

{

uchar a,d;

unsigned long int c=0;

uchar data tab[3];

a=(((zhuhuandata&0xf0)>>4)*100/16);

d=((zhuhuandata&0x0f)*100/256);

c=(a+d)*5.12;

tab[0]=c%10;

tab[1]=c/10%10;

tab[2]=c/100%10;

vShowOneChar(2,89,uca[tab[2]]);

vShowOneChar(2,103,uca[tab[1]]);

vShowOneChar(2,111,uca[tab[0]]);

TH0=TIME1H;

TL0=TIME1L;

}

void main(void)

{

SCANPORT=0x8F;

ClearLCD(0x00);

vShowOneChar(2,89,uca[5]);

vShowOneChar(2,96,uca_XIAOSHU);

vShowOneChar(2,103,uca[0]);

vShowOneChar(2,111,uca[0]);

vShowOneChar(2,120,uca_V);

vShowOneChin(0,0,uca_DANG);

vShowOneChin(0,16,uca_QIAN);

vShowOneChin(0,32,uca_GONG);

vShowOneChin(0,48,uca_ZUO);

vShowOneChin(0,64,uca_DIAN);

vShowOneChin(0,80,uca_YA);

vShowOneChin(0,96,uca_MAOHAO);

vShowOneChin(4,0,uca_QING);

vShowOneChin(4,16,uca_SHE);

vShowOneChin(4,32,uca_ZHI);

vShowOneChin(4,48,uca_SHU);

vShowOneChin(4,64,uca_CHU);

vShowOneChin(4,80,uca_DIAN);

vShowOneChin(4,96,uca_YA);

vShowOneChin(4,112,uca_MAOHAO);

vShowOneChar(6,96,uca_XIAOSHU);

vShowOneChar(6,88,uca_HEN);

vShowOneChar(6,104,uca_HEN);

vShowOneChar(6,113,uca_HEN);

vShowOneChar(6,119,uca_V);

//

处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

TMOD=0X01;

TH0=TIME1H;

TL0=TIME1L;

ET0=1; //T/C0开中断

TR0=1; //开定时器0中断

IT0=1; //外中断方式:下降沿。

EX0=1; //开启外部中断。

EA=1;

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

while(1)

{

wr=0;

wr=1;

chuli();

if(zhuhuandata

if(zhuhuandata>shuchu)P27=1;

if(zhuhuandata

}

}

void chuli()

{

rd=0;

zhuhuandata=P0;

}

//*************************************************************************************************

//* *

//* ********************************函数实现****************************** *

//* *

//*************************************************************************************************

unsigned char getkey()

{

uchar ucTemp=0; //扫描状态暂存。

uchar ucRow=0,ucLine=0; //行号,列号。


相关文章

  • 电子信息工程毕业设计题目大全
  • 1 压力容器液位测量 2 多功能遥控小车 3基于RS232的仓库多点温度.湿度.气 4压检测系统 5自动控制升降旗系统 6基于RS485的温度报警系统 7基于模糊算法的水温控制系统的设计 8多分机电话交换机 9简易火灾自动报警系统 10基于 ...查看


  • 最新电子信息工程毕业论文题目参考
  • 1. 家庭防盗报警系统 2. 单片机实现单步进电机及8位流水灯控制的设计 3. 篮球竞赛计时系统 4. 单片机89C51在直流调速控制系统中的应用 5. 八路数字抢答器 6. 基于51机的直流电机设计 7. 基于51单片机的步进电机控制系统 ...查看


  • 基于FPGA的乒乓球游戏参考毕业论文设计
  • 基于 XILINX-FPGA 的乒乓球游戏参考设计 一.背景: Xilinx 大学计划(xilinx university plan 简称 XUP)一直致力于为工程课程 提供新一代软件和硬件设计流程.全球数千所使用 Xilinx 系统进行教 ...查看


  • 基于单片机控制的开关电源设计方案
  • 基于单片机控制的开关电源设计方案 目 录 引言 .................................................... 错误!未定义书签. 1 概述 ............................ ...查看


  • 基于PIC16F690的直流无刷电机驱动器设计
  • 传统的直流电机调速方法很多,如调压调速.弱磁调速等,它们存在着调速响应慢.精度差.调速装置复杂等缺点.随着全控式电力电子器件技术的发展, 以大功率晶体管作为开关器件的直流脉宽调制(PWM)调速系统已成为直流调速系统的主要发展方向. 为配套2 ...查看


  • 通信工程毕业设计题目精选
  • 我7岁1就始做做开发的推批销,就更加员会到挣体的不轻钱.易活生的艰了.人家做辛个小8时我就做1,6小时. 个为失败少理找由 多成为找功法 大多方数想要改革这人世界个 不晓得即时却小事做从起 信工程通毕业计题设精选目 . 1智压力能传感系统器 ...查看


  • 电气自动化毕业论文参考题目
  • 电气自动化毕业论文参考题目 1. PLC控制花样喷泉 2. PLC在数控车床控制系统中的应用 3. PLC控制五层电梯设计 4. 超高压水射流机器人切割系统电气控制设计 5. 基于PLC的恒压供水系统设计 6. PLC交通灯设计 7. 双恒 ...查看


  • 自动浇花控制系统的设计(简版)
  • 学位论文独创性声明 本人郑重声明: 1.坚持以"求实.创新"的科学精神从事研究工作. 2.本论文是我个人在导师指导下进行的研究工作和取得的研究成 果. 3.本论文中除引文外,所有实验.数据和有关材料均是真实的. 4.本论 ...查看


  • 广东海洋大学本科生毕业论文(设计)一览表
  • 广东海洋大学本科生毕业论文(设计)一览表 学院 :信息学院 专业:电子信息工程专业 班级:1031-1036 本班第 页共9页 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 学 ...查看


热门内容