单片机课程设计(论文)-太阳能LED交通警示灯.doc

上传人:来看看 文档编号:3262738 上传时间:2019-08-06 格式:DOC 页数:20 大小:3.97MB
返回 下载 相关 举报
单片机课程设计(论文)-太阳能LED交通警示灯.doc_第1页
第1页 / 共20页
单片机课程设计(论文)-太阳能LED交通警示灯.doc_第2页
第2页 / 共20页
单片机课程设计(论文)-太阳能LED交通警示灯.doc_第3页
第3页 / 共20页
单片机课程设计(论文)-太阳能LED交通警示灯.doc_第4页
第4页 / 共20页
单片机课程设计(论文)-太阳能LED交通警示灯.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《单片机课程设计(论文)-太阳能LED交通警示灯.doc》由会员分享,可在线阅读,更多相关《单片机课程设计(论文)-太阳能LED交通警示灯.doc(20页珍藏版)》请在三一文库上搜索。

1、 太阳能LED交通警示灯摘 要本系统是在光照的条件下照射光伏电池板,使光伏电池板对蓄电池进行充电,当蓄电池的电压值到达AT89C51单片机工作时,单片机就开始控制电路。包括对车辆数目的计数、传感及显示装置。同时又有电路对太阳能充电过程进行过流保护、过压及欠压的检测、电池充电状态量的表示。通过各种保护及检测电路来控制光伏蓄电池的充放电时的电压、电流特性,从而可以提高蓄电池的寿命。当有光照射下,蓄电池进行充电,并且单片机也开始工作,此时可显示出通过的车辆数目。在无光的情况下,光伏蓄电池停止充电,但单片机控制LED数码管,进行警示标志,显示为“日”字。关键词 光伏电池板 单片机 运放电路 可控硅 A

2、bstrctThe system is under the conditions of exposure in light of PV panels so PV panels for recharging the batteries.When the battery voltage reached AT89C51 work, began MCU control circuit.Count on the number of vehicles, sensing and display devices.It also has solar recharging process overcurrent

3、protection circuit, over-voltage and under-testing, said the state is charging the battery.Through various photovoltaic protection and detection circuit to control the charging and discharging battery voltage and current characteristics.thereby improving battery life.When the bright illumination, fo

4、r rechargeable batteries, and SCM has begun work at this time indicates that the number of vehicles.In the dark, stop photovoltaic battery charging, but MCU control LED control for the warning signs.showed Japan.Keywords AT89S51 Microcontroller Unit silicon PV panels SCM operational amplifier circui

5、ts目录一、 方案比较与论证 1.过电压、过电流检测电路。1 2、放电控制电路。1二、 主要单元电路分析 1、最小系统。2 2、检测电路。3 3、充放电控制电路。3 4、过电流保护电路。4 5、过压与欠压检测电路。5 6、电池电量检测。57、显示电路。6三、系统软件设计 1、软件设计原理图。7四、测试方法及数据 1、测试与数据。7五、测试结果及功能分析 结果与分析。8六、参考文献。8 附录太阳能LED交通警示灯一 方案比较与论证1.过电压、过电流检测电路方案一:采用A/D转换电路采集实际电压与基准值比较,利用单片机来控制电压、电流的比较,来判断电压高低,从而输出反馈信号给单片机。其特点是电路结

6、构简单,工作稳定,但转换速度不高,不能达到所需要求。方案二:采用运放电路,其基本功能是对两个输入电压进行比较,并根据比较结果输出高电平或低电平电压。它广泛应用于信号产生、信号处理和检测电路中。其电路结构较为复杂,但工作电路中可消除温度变化,电源的波动等优点。经过比较选择方案二用于电路的检测。2、放电控制电路方案一:采用继电器控制电路来实现可控硅导通,但常常因为电源电压低于继电器的吸合电压而使其不能正常工作,将会影响电路的可靠性。 方案二:采用运放放大电路来实现可控硅的导通,其特点是电阻非常小,而产生的功率很大,从而可产生触发信号。 通过比较本次设计采用方案二二、主要单元电路分析通过以上分析,本

7、系统主要由单片机、光伏电池板、蓄电池、过电流保护电路、过压、欠压电路等组成。系统的总体组成框图如图下所示: 1、最小系统单片机最小系统包括复位电路、振荡电路、电源、EA引脚。本设计使用AT89C51单片机。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C51芯片,它内部自带程序存储器,一般情况下,这4K的存储空间足够我们使用,所以我们将AT89C51芯片的第31脚固定接高电平。

8、单片机的工作电压一般在4.5V5.0V之间,它的时钟电路有一个12M的晶振和两个20PF的小电容组成,它们决定了单片机的工作时间精度为1S。复位电路由22F的电容和1K的电阻及200电阻组成,以前教科书上常推荐用10UF电容和10K电阻组成复位电路,这里我们根据实际经验选用22UF的电容和1K的电阻,其好处是在满足单片机可靠复位的前提下降低了复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。单片机最小系统电路图如下所示:2、检测电路该电路主要是用于光伏电池板充电工作后进行检测。当白天有光照射的情况下,光伏电池板开始充电,此时产生一个高电平,给单片机提供信号,使得单片机开始工作。其电路

9、主要包括两个大电阻分别为100K和120K 进行限流,光伏电池板输出9V的电压供给蓄电池。 具体电路图如下所示: 3、充放电控制电路当有光线照到光伏电池板上时,光伏板就一边吸收光线,一边给蓄电池充电。其中采用单片机PWM(脉冲宽度调制)控制,发出关充电电路信号。并且采用IRF540CMOS管来控制电路的导通与否,从而控制蓄电池的充电过程。放电电路主要是由控制电路来控制可控硅BT151的通断进行的,当蓄电池中的电压大于5V时,控制电路就发出电源开启信号,从而使可控硅的管脚导通,供给单片机工作。一般情况下,光伏电池板在白天接受光线,对蓄电池进行充电,同时,它又对单片机进行供电,控制LED数码管,对

10、白天通过车辆数量的传感、计数、显示等功能,当光线不足时,光伏电池板停止充电,此时蓄电池开始向单片机供电,控制LED显示“日“字进行报警。充放电控制电路如下图所示: 4、过电流保护电路光伏电池板在充电的过程中,为防止过电流引起的功率消耗,我组采用差分电路和电压比较器来控制实现。在充电支路上采用压降差进行比较,通过差分放大电路LM339得出基准电压为2.5V。再通过LM339比较器进行,若大于2.5V则为过电路电路,此时电路就会发出过电流信号,把信号传给单片机P1.2后,通过单片机控制来限制电流,然后一直比较直至电压降到2.5V以下。采用的电路图如下所示: 5、过压与欠压检测电路 光伏电池板在充电

11、的过程中,若出现电路过电压或欠电压时会影响蓄电池的工作寿命及工作特性。因此我们考虑设计对过压和欠压情况进行检测。在电路中运用电压比较器进行检测,采用TL431稳压后的参考电压和电路中实际的电压比教。通过LM338运放电路输出信号,再把信号反馈给单片机进行控制。采用的电路图如下所示: 6、电池电量检测为了直观反映蓄电池电量的大小,我组采用发光二极管来表示其状态量。通过其运放的比较来区分不同电压的范围,分别是TL431稳压后的基准电压和和实际电路中经不同电阻分压后的电压比较。其中电压等级分别是5.05.5V、5.56.0V、以及大于6V,若大于6V则三个发光二极管都发亮。说明蓄电池已经充电饱和。其

12、电路图如下所示:7、显示电路光伏电池板在有光线时充电,提供了单片机的正常工作,此时单片机控制LED数码管进行计数,传感,因此需要将数字进行显示。并且根据要求我们选用两位的数码管显示,用74LS164来扩展并行I/O口进行连接,从而能产生两位的显示,其电路如下所示: 三、系统软件设计系统软件流图如下图所示, 四、测试方法及数据 当光伏蓄电池收到光照的时候,用万用表测量蓄电池两端的电压变化,可见蓄电池从0V漫漫变化为6V左右,其变化过程还可分为快速充电阶段,缓慢充电阶段,以及恒定充电方式三阶段,此处只做说明并不做详细介绍。在恒定充电方式下,可长时间对蓄电池充电,从而能最大限度地延长蓄电池寿命。在过

13、流保护电路几过压欠压检测电路中测得的基准电压都为2.5V。并且电池电量检测电路中,测的当蓄电池充电在5.0V5.5V之间电压,第一个发光二极管发亮,当测的电压为5.5V6.0V之间时,有两个发光二极管发亮。当测得电压为大于6.0V时,三个发光二极管都发亮。五、测试结果及功能分析 测试结果基本与蓄电池工作特性相似,在光伏电池板对蓄电池进行充电后,蓄电池的电压从0V慢慢上升到5V时,可控硅就会导通,给单片机提供了电能。然后蓄电池继续可充电至6V。从而可以控制过流保护电路、过压及欠压电路的工作,在白天能通过LED显示计数,在晚上时,蓄电池不充电,放电供单片机工作。此时电压值慢慢下降,使LED发出警示

14、信号。因此实现了基本所需的要求。六参考文献1、模拟电子技术(第二版) 胡宴如主编 高等教育出版社 20002、电子元器件 孟贵华主编 中国电力出版社 20063、单片机基础 鲍小南主编 浙江大学出版社 20024、单片机应用技术选编 何立民主编 北京航空航天大学出版社 19975、电子设计竞赛赛题解析 黄正靖主编 东南大学出版社 20036、电子技术实训 陈梓城主编 机械工业出版社 2005附录:总电路原理图:参考程序程序如下:C51 COMPILER V7.50, COMPILATION OF MODULE CHONGOBJECT MODULE PLACED IN chong.OBJCOMP

15、ILER INVOKED BY: C:KeilC51BINC51.EXE chong.c BROWSE DEBUG OBJECTEXTENDline level source 1 #include 2 #include 3 #include 4 #include 5 #include 6 /* 7 sbit WDI =P10; 8 sbit INPUT1 =P11;/ONOFF 9 sbit INPUT2 =P12;/OVERI 10 sbit INPUT3 =P13;/OVERU 11 sbit INPUT4 =P14;/LACKU 12 sbit INPUT5 =P15;/LED1 13

16、sbit INPUT6 =P16;/LED2 14 sbit INPUT7 =P17;/LED3 15 sbit LEDOUT1 =P20; 16 sbit LEDOUT2 =P21; 17 sbit LEDOUT3 =P22; 18 sbit BUZZ =P23; 19 sbit WARN =P24; 20 sbit ONOFF =P25; 21 sbit CLK =P26; 22 sbit TXD =P27; 23 24 25 */ 26 void Uart(unsigned char a); 27 void InitMcu(void); 28 void InPut(void); 29 v

17、oid Logic(void); 30 bit TimeDelay(unsigned int no,bit logic, unsigned int time); 31 /void timer0(void) interrupt 1; 32 /void INT1(void) interrupt 3; 33 34 bit ONOFF,OVERI,OVERU,LACKU,LED1,LED2,LED3,LIGHT; 35 bit ON_MARK,LOGIC_MARK,FLASH_MARK; 36 unsigned int COUNT,delay,TEMP,TEMP1,TEMP2; 37 unsigned

18、 int i=0; 38 unsigned char BUFF10=0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09; 39 40 41 42 /* 43 LED 显示 44 */ 45 void Uart(unsigned char a) 46 47 1 unsigned char i; 48 1 CTL =0; 49 1 CLK =0; 50 1 for(i=0;i=1; 65 2 66 1 67 1 CLK=0; 68 1 69 1 70 71 72 /* 73 CPU初始化 74 */ 75 76 void InitMcu(void)

19、77 78 1 /INPUT_MARK =0; 79 1 LOGIC_MARK =0; 80 1 FLASH_MARK =0; 81 1 ON_MARK =0; 82 1 COUNT =0; 83 1 delay =0; 84 1 / NO =0; 85 1 POWER =1; /开启可控硅信号 86 1 BUZZ =0; 87 1 TMOD = 0X01;/定时器0工作在方式1 88 1 PCON = 0X00; 89 1 TH0 = 0xd8; /10ms 90 1 TL0 = 0xf0; 91 1 ET0 =1;/启动定时器0 92 1 TR0 =1; 93 1 EX1 =0; 94 1

20、 IP |=0X04;/外部中断优先 95 1 IT1 =1;/外部为低脉冲触发 96 1 EA =1; 97 1 98 1 99 1 100 101 /* 102 信号处理 103 */ 104 void Logic(void) 105 106 107 1 unsigned char DISPH,DISPL; 108 1 109 1 INPUT1 =1; 110 1 INPUT2 =1; 111 1 INPUT3 =1; 112 1 INPUT4 =1; 113 1 INPUT5 =1; 114 1 INPUT6 =1; 115 1 INPUT7 =1; 116 1 117 1 ONOFF

21、=INPUT1;/白天晚上判断51 COMPILER V7.50 CHONG 12/03/2006 08:34:55 PAGE 3 118 1 OVERI =INPUT2;/过流判断 119 1 OVERU =INPUT3; /过压判断 120 1 LACKU =INPUT4;/欠压判断 121 1 LED1 =INPUT5;/电能容量指示 122 1 LED2 =INPUT6; 123 1 LED3 =INPUT7; 124 1 if(LED1=1) 125 1 126 2 LEDOUT1 =1;/5v-5.5v 127 2 128 1 else 129 1 130 2 LEDOUT1 =0

22、; 131 2 132 1 if(LED2=1) 133 1 134 2 LEDOUT2 =1;/5.5v-6v 135 2 136 1 else 137 1 138 2 LEDOUT2 =0; 139 2 140 1 if(LED3=1) 141 1 142 2 LEDOUT3 =1; /6v- 143 2 144 1 else 145 1 146 2 LEDOUT3 =0; 147 2 148 1 if(LACKU=1)/欠压 149 1 150 2 WDI =1; /继续冲电 151 2 152 2 153 1 else if(OVERU=1)/过压 154 1 155 2 WDI =0

23、; /停止冲电 156 2 157 1 else /欠压与过流之间 158 1 159 2 WDI =1; 160 2 161 1 /LIGHT = TimeDelay(NO,ONOFF,1000);/DELAY 10S 防止误触发 162 1 if(ONOFF=1)/判断白天黑夜 163 1 164 2 ON_MARK =1; 165 2 166 1 else 167 1 168 2 ON_MARK =0; 169 2 170 1 if(LIGHT=1)/ 白天 171 1 172 2 EX1=1;/开外部中断1检测车流 173 2 /COUNT =0;/计数复位为0 174 2 IT1=1

24、; 175 2 FLASH_MARK =0; 176 2 DISPH =(unsigned char)(COUNT/256); 177 2 DISPL =(unsigned char)COUNT; 178 2 Uart(BUFFDISPL);/低位显示 179 2 Uart(BUFFDISPH);/高位显示51 COMPILER V7.50 CHONG 12/03/2006 08:34:55 PAGE 4 180 2 181 2 182 1 else 183 1 184 2 EX1 =0; 185 2 COUNT =0; 186 2 Uart(0x01);/全亮 187 2 Uart(0x01

25、); 188 2 FLASH_MARK =1;/闪烁标志 189 2 190 1 191 192 193 /* 194 定时器0中断 195 */ 196 void timer0(void) interrupt 1 197 198 1 /unsigned int i=0; 199 1 /INPUT_MARK =1; 200 1 TEMP+; 201 1 LOGIC_MARK =1; 202 1 if(FLASH_MARK=1)/闪烁标志 203 1 204 2 i+; 205 2 if(i=50)/1s一次 206 2 207 3 i=0; 208 3 FLASH =FLASH;/闪烁 209

26、 3 210 3 211 2 212 2 213 1 if(FLASH_MARK=0) 214 1 215 2 i=0; 216 2 FLASH =0;/不闪烁 217 2 218 1 if(ON_MARK=1) 219 1 220 2 221 2 if(delay=3000) /光照持续30S启动白天信号 222 2 223 3 LIGHT=0; /误判信号 224 3 delay+; 225 3 226 3 227 2 else 228 2 229 3 LIGHT=1; 230 3 231 2 232 1 else 233 1 234 2 LIGHT =0; 235 2 delay=0; 236 2 237 1 TH0 = 0xd8; /10ms 238 1 TL0 = 0xf0; 239 1 240 1 241 51 COMPILER V7.50 CHONG 12/03/2006 08:34:55 PAGE 5 242 243 /* 244 外部中断1 245 */ 246 void EXINT1(void) interrupt 2 247 248 1 unsigned int k; 249 1 TEMP2=TEMP1; 250 1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1