基于单片机的LED调光灯PID亮度控制.doc

上传人:李主任 文档编号:3264698 上传时间:2019-08-07 格式:DOC 页数:18 大小:2.60MB
返回 下载 相关 举报
基于单片机的LED调光灯PID亮度控制.doc_第1页
第1页 / 共18页
基于单片机的LED调光灯PID亮度控制.doc_第2页
第2页 / 共18页
基于单片机的LED调光灯PID亮度控制.doc_第3页
第3页 / 共18页
基于单片机的LED调光灯PID亮度控制.doc_第4页
第4页 / 共18页
基于单片机的LED调光灯PID亮度控制.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于单片机的LED调光灯PID亮度控制.doc》由会员分享,可在线阅读,更多相关《基于单片机的LED调光灯PID亮度控制.doc(18页珍藏版)》请在三一文库上搜索。

1、 课程设计说明书题 目: LED调光灯亮度控制 院 (系): 电子工程与自动化学院 专 业: 学生姓名: 学 号: 指导教师: 2011 年 9 月 日摘 要亮度是工业中非常关键的一项物理量,在农业,现代科学研究和各种高新技术的开发和研究中也是一个非常普遍和常用的测量参数。亮度自动控制的原理主要是:将随亮度变化而变化的物理参数,通过光传感器转变成电的或其他信号,传给处理电路,最后转换成亮度数值显示出来。目前最具发展前景的灯光调节是加入自动控制原理,通过自动控制系统,按照给定参数对对象的反馈信息进行调节,从而满足工农业生产的需求。本文介绍了以处理芯片STC1205A08S2为核心器件的亮度控制系

2、统。STC1205A08S2 是宏晶以公司研制的51内核为主的系列单片机,这个芯片设计的时候就吸取其它51系列单片很容易被解密的教训,改进了加密机制。关键词: 亮度控制; STC1205A08S2 ; AbstractBrightness is in the industry is the key of a physical quantity, in agriculture, modern scientific research and high technology research and development is also a very common and commonly mea

3、sured parameters. Automatic brightness control principle is: With the brightness change of the physical parameters, the optical sensor into electrical or other signal, transmitted to the processing circuit, finally converted into brightness value is displayed. At present the most promising light adj

4、ustment is added to the theory of automatic control, the automatic control system, according to the given parameters of the feedback information to adjust, to meet the needs of industrial and agricultural production.This paper introduces the processing chip STC1205A08S2 as the core component of the

5、brightness control system. STC1205A08S2 is Hong Jing to the company developed the 51 kernel series consisting mainly of single chip, the chip design when they absorb other 51 series monolithic easily decrypted lessons, improved the encryption mechanism.Keywords: T Brightness control ;STC1205A08S2引言-

6、 1 -1 课程设计概述- 1 -1.1 课程设计题目- 1 -1.2 主要仪器设备- 1 -2 硬件设计- 2 -2.1 单片机部分- 2 -2.2 亮度反馈部分- 2 -2.3 按键部分- 3 -2.4 串口下载部分- 3 -2.4 LED执行部件- 3 -3 软件设计- 4 -3.1 流程图设计- 4 -4 系统调试- 4 -4.1 LED执行部分调试- 4 -4.2串口下载部分调试- 4 -4.3 LED显示部分调试- 4 -4.4按键部分调试- 4 -4 .5系统调试- 5 -5 总结- 5 -5.1课程设计的过程- 5 -5.2解决问题- 5 -5.3 心得体会- 5 -参考文献-

7、 5 -附 录- 6 -引言 调光灯亮度作为一项光工参数,在工业现场和过程控制中具有至关重要的作用。因而,各种以光敏作为传感器的光敏电阻和光敏二极管普遍使用。本文介绍一种以光敏电阻和数据处理芯片STC构成的灯光亮度自动控制系统。1 课程设计概述1.1 课程设计题目设计LED线性驱动电路和光敏管进行亮度测量电路,再用单片机设计控制器输出PWM,调节LED驱动功率,实现亮度的自动控制,通过键盘进行亮度设置,实际亮度可以实时显示。要求:1、实现亮度可调; 2、控制精度1%(50m); 3、实现亮度闭环反馈控制。*附加要求:通过RS232或RS485接口与PC机通信,在PC机上进行参数显示和设置。键盘

8、单片机系统显示数码管 灯亮传感器图1-1温度控制系统的基本组成1.2 主要仪器设备示波器(YB4328D) 1台直流稳压电源(DF1731SC3A) 1台数字万用表 1块PC机 1台测光敏感元件 1个2 硬件设计整个系统以芯片STC1205A08S2为核心部件。在STC最小系统外围添加了串口下载部分、亮度测量部分、键盘输入部分和LCD显示部分构成的执行部件。2.1 单片机部分 本设计选择的单片机芯片是STC1205A08S2,其原理图如2-1所示。该芯片的P2.0-3用作键盘数字量输入,为了防止干扰使键盘处于低电平,加入了上拉电阻时按键未按下时始终处于高电平状态;P1.0作为光敏电阻反馈数据输

9、入端口;P0口显示数据输出到LCD1602显示;P1.4作为PWM输出端口。 图 2-1 STC控制系统原理图2.2 亮度反馈部分 如图2-2所示,图中RF为光敏电阻,它可更加接收到的LED灯光的亮度改变自身阻值。LED灯变亮,其阻值越小;反之,LED灯越亮,其阻值也越大。图2-2 亮度反馈原理图 2.3 按键部分 如图2-3所示,通过按键可以增大、减小LED灯的给定值。给定值的不同,其亮度也不同。通过按键可把LED灯调节到合适的亮度。图2-3 按键原理图2.4 串口下载部分 通过下图2-4串口下载电路,可以将程序从PC机直接下载到板子上的STC中,比较方便。图2-4 串口下载电路原理图2.4

10、 LED执行部件如下图2-3所示,P1.4输出PWM输出控制信号。,根据输出电压占空比不同,灯的亮度也不一样。占空比越大,说明输出电压越大,灯就越亮;反之,占空比越小,即说明输出电压越小,灯就越暗。图 2-4 LED执行部件原理图3 软件设计3.1 流程图设计控制现场主程序流程图设计如图 3-1所示。开始LCD1602和AD初始化PWM控制LCD1602显示按键按下图 3-1 程序流程图4 系统调试4.1 LED执行部分调试 装好元件,接通电源,观察LED是否发光。若发光,说明LED部分连接正确;若不发光,则说明此部分线路连接有问题,应该用万用便检查STC第五脚,其电压应在0-5V;还要检查三

11、极管三个脚是否连接正确。4.2串口下载部分调试 把编好的程序通过次串口下载到STC,若可以下载,则说明此部分连线正确;若不能下载,则检查RS232各脚电压是否正常。4.3 LED显示部分调试 将一个正确的显示程序下载到单片机,观察LCD是否按要求显示。若按要求显示,说明此部分可以正常工作;若不能显示,则先检查显示器的好坏,其次检查其各脚的连接是否正确。4.4按键部分调试 按下按键,观察LED灯亮度是否有变化,若按要求变化,说明此部分正常工作;若不按要求变化,则应先检查有关按键部分程序是否书写正确,其次检查按键与STC的线路连接情况是否正确。4 .5系统调试各个部分的调试完成以后,还需要对整个系

12、统进行调试。5 总结5.1课程设计的过程 首先在老师给我们上课的时候要认真听讲,做好笔记,了解PI控制和PWM控制,然后去图书馆和网上找相关资料,再找同学商量,交换意见,一起做好仿真。做好前面的事情后就可以做板子写程序了,对我们来说这是个比较大的工程,要有耐心和恒心。5.2解决问题 我们遇到的比较困难的问题基本上都是调试的问题。板子做好以后,下载了程序问题就来了,板子没有反应。这时候,我们不应该着急,要先检查板子上个焊点都是没有虚焊和漏焊的,然后检查是否有线短路,最后就是调试程序了。调试程序要分模块来调,根据程序流程图把每个模块都调试好,在总的调试就可以了。5.3 心得体会 课程设计是我们专业

13、课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。”千里之行始于足下”。通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。通过课程设计,使我深深体会到,干任何事都必须耐心,细致,以为任何的一个小错误都有可能让我们懊恼一天,我不禁时刻提示自己,一定要养成一种高度负责,认真对待的良好习惯。短短三周是课程设计,使我发现了自己所掌握的知识是真正如此的缺乏,自己综合应用所学的专业知识能力是如此的不足,几年来的学习了那么多的课程,今天才知道自己并不会用,想到这里,我才明白学以致

14、用不是一句简单的话,实践才是真理。 最后,我要感谢我的老师们,感谢你们的帮助,感谢你们的支持。参考文献 1 马忠梅,马岩,张凯,等. 单片机的C 语言应用程序设计M . 北京:北京航空航天大学出版社,1997.2 谭浩强C程序设计M . 北京:清华大学出版社,1991 3 高海生,杨文焕.单片机应用技术大全M.西南交通大学出版社,1999-06.4 徐爱钧 彭秀华.单片机高级C51应用程序设计M.北京:中国计量出版社,2001.5 马盅梅.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社2003.附 录主要电路PCB:实物正面图实物正面图实物反面图实物反面图电路原理图电路原理图现场A

15、DuC512程序/*/#include reg51.h#include intrins.h#include LCD1602.H#define FOSC 24058052L#define BAUD 9600sbitbutton1=P22; /按键-减小亮度sbitbutton2=P21; /按键-增大亮度sbitbutton3=P20 ; /按键-确认 typedef unsigned char BYTE;typedef unsigned int WORD;WORD exp=300;BYTE REV=0;/*AD*/*Declare SFR associated with the ADC */B

16、YTE ch = 0; /ADC channel NO.sfr ADC_CONTR = 0xBC; /ADC control registersfr ADC_RES = 0xBD; /ADC hight 8-bit result registersfr ADC_LOW2 = 0xBE; /ADC low 2-bit result registersfr P1ASF = 0x9D; /P1 secondary function control register/*Define ADC operation const for ADC_CONTR*/#define ADC_POWER 0x80 /A

17、DC power control bit#define ADC_FLAG 0x10 /ADC complete flag#define ADC_START 0x08 /ADC start control bit#define ADC_SPEEDLL 0x00 /540 clocks#define ADC_SPEEDL 0x20 /360 clocks#define ADC_SPEEDH 0x40 /180 clocks#define ADC_SPEEDHH 0x60 /90 clocks/*-Get ADC result-*/WORD GetADCResult(BYTE ch) WORD AD

18、C_R; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; _nop_(); /Must wait before inquiry _nop_(); _nop_(); _nop_(); while (!(ADC_CONTR & ADC_FLAG); /Wait complete flag ADC_CONTR &= ADC_FLAG; /Close ADC ADC_R=ADC_RES*4+ADC_LOW2; /Return ADC result return ADC_R;/*平均值*/WORD GetADCResult_P() WORD A

19、DC_RP=GetADCResult(0); BYTE i; for(i=0;i10;i+) ADC_RP=(ADC_RP+GetADCResult(0)/2; ADC_RP=ADC_RP*0.48828; return ADC_RP;/*-Initial ADC sfr-*/void InitADC() /P1ASF = 0xff; ADC_RES = 0; ADC_CONTR = ADC_POWER | ADC_SPEEDLL; Delay(2);/*-showADC()-*/void showADC(WORD j,BYTE x)BYTE i,a3,k=7;for(i=0;i3;i+)ai

20、=j%10;j/=10;for(i=0;i模糊值 WORD r; r=GetADCResult_P(); if(rexp-i) /CCAP0H=CCAP0H-(exp-r)/ki;CCAP0H=CCAP0H-ki;if(CCAP0Hexp+i) /CCAP0H=CCAP0H+(r-exp)/ki;CCAP0H=CCAP0H+ki;if(CCAP0H0xf4)CCAP0H=0xf4; /*-Initial UART-*/void InitUart() SCON = 0x5a; PCON=0x80; /8 bit data ,no parity bit TMOD = 0x20; /T1 as 8-

21、bit auto reload TH1 = TL1 = -13; /Set Uart baudrate TR1 = 1; /T1 start running /*-Send one byte data to PCInput: dat (UART data)Output:-*/void SendData(BYTE dat) while (!TI); /Wait for the previous data is sen TI = 0; /Clear TI flag SBUF = dat; /Send current data/*-Send a string to UARTInput: s (add

22、ress of string)Output:None-*/void SendString(char *s) while (*s) SendData(*s+); /*- -main()- -*/ void main() BYTE stp=5,ii,tab3; InitUart(); InitADC(); init_LCD(); gotoxy(1,0); display_LCD_string( exp: stp: ); gotoxy(2,0); display_LCD_string(act: ); /*PWM控制*/ CCON = 0; CL = 0; /复位PCA的计数器 CH = 0; CMO

23、D = 0x02; CCAP0H = 0xf4; CCAP0L = 0x00; /50 CCAPM0 = 0x42; CR = 1; showADC(exp,1); gotoxy(1,14); display_LCD_number(stp); while (1)if(!button1)delay_50us(40000);exp -=stp;SendData(0xbb);/SendData(0xbb);if(!button2)delay_50us(40000);exp +=stp;SendData(ADC_RES);SendData(ADC_LOW2);while(!button3)if(!bu

24、tton2)delay_50us(40000);stp+=1;gotoxy(1,14);display_LCD_number(stp);if(!button1)delay_50us(40000);stp -=1;gotoxy(1,14);display_LCD_number(stp);delay_50us(80000);if(RI)RI=0;REV=SBUF;for(ii=0;ii3;ii+)tabii=REV%10;REV/=10;for(ii=0;ii3;ii+)gotoxy(2,14-ii);display_LCD_number(tabii);showADC(exp,1);showADC(GetADCResult_P(),2);PI(3,1);- 15 -

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

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


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