LED灯亮度调节.docx
- 文档编号:17249733
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:11
- 大小:431.01KB
LED灯亮度调节.docx
《LED灯亮度调节.docx》由会员分享,可在线阅读,更多相关《LED灯亮度调节.docx(11页珍藏版)》请在冰点文库上搜索。
LED灯亮度调节
课程嵌入式实验
题目LED灯亮度调节报告
学院信息工程学院
专业13计算机测控
LED灯亮度调节实验
一、实验目的
应用PWM定时器输出PWM信号控制LED显示亮度,要求亮度分256级连续可调。
亮度级别由电位器调节电压通过AD转换输入,亮度级别值显示在LCD液晶显示器。
要求采用中断方式进行AD值读取。
二、实验设备
仿真软件proteus7.9、keil5
三、实验原理
系统通过调节电位器,利用LPC2114内置的AD转换器读取电位器的电压值,根据电压值调整PWM信号的占空比,积分后实现LED亮度可调,并实时在LCD1602上显示亮度级别。
3.1PWM输出
LPC2000的PWM基于标准的定时器模块,具有定时器的所有特性,它是定时器功能中匹配事件的功能扩展。
使用PWM功能,可以在指定引脚输出需要的波形。
输出波形可分为两类:
单边沿输出和双边沿输出。
该实验使用单边沿输出。
使用两个匹配寄存器就可以实现单边沿控制的PWM输出。
其中一个匹配寄存器(PWMMR0)控制PWM周期,另一个匹配寄存器控制PWM边沿的位置,即占空比。
3.2AD转换器
AD转换器的基本时钟由VPB时钟提供。
可编程分频器将时钟调整至逐步逼近转换所需的4.5MHz(最大)。
10位精度要求的转换需要11个A/D转换时钟。
3.3LCD12864
3.3.1引脚功能说明
12864采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3-1所示:
引脚
名称
方向
说明
引脚
名称
方向
说明
1
VSS
-
GND(0V)
11
DB4
I
数据4
2
VDD
-
SupplyVoltageForLogic(+3.3v)
12
DB5
I
数据5
3
VO
-
SupplyVoltageForLCD(悬空)
13
DB6
I
数据6
4
RS(CS)
O
H:
DataL:
InstructionCode
14
DB7
I
数据7
5
R/W(SID)
O
H:
ReadL:
Write
15
PSB
O
H:
ParallelMode
L:
SerialMode
6
E(SCLK)
0
EnableSignal
16
NC
-
空脚
7
DB0
I
数据0
17
/RST
O
ResetSignal低电平有效
8
DB1
I
数据1
18
NC
-
空脚
9
DB2
I
数据2
19
LEDA
-
背光源负极(LED-OV)
10
DB3
I
数据3
20
LEDK
-
背光源正极(LED+5v)
表3-1:
引脚接口说明表
3.3.21602LCD的指令说明
3.3.31602LCD的时序
读写操作时序如图3-1和图3-2所示:
图3-1读操作时序
图3-2写操作时序
四、软件设计
#include"lpc21xx.h"
#include"lcd12864.h"
#include"USC2GB.h"
#defineFpclk600000000
typedefunsignedcharuint8;
typedefunsignedintuint16;
typedefunsignedlonguint32;
uint32ADC_Data,ADC_Data0;
uint8str1[]="DEGREE:
";
uint8str2[]="000";
uint8numcode[10]={'0','1','2','3','4','5','6','7','8','9'};
/*延时函数*/
voiddelay_ms(uint16ms)
{
uint16x,y;
for(x=0;x { for(y=0;y<800;y++); for(y=0;y<700;y++); } } voidPWMInit()//pwm初始化 { PINSEL0=(PINSEL0&0xfffffffc)|0x00000002;//设置引脚连接模块连接PWM1输出 PWMPCR=0x200;//使能PWM1输出 PWMMCR=0x02;//MR0匹配后复位定时器 PWMPR=0x00;//设置预分配系数为0 PWMMR0=2551;//设置匹配周期 PWMMR1=2550;//设置匹配值 PWMLER=0x03;//使能PWM匹配0和1锁存 PWMTCR=0x09;//PWM使能、计数器使能 PWMMR0=2551;//初始化第二次 PWMMR1=2550; PWMLER=0x03; PWMTCR=0x09; } void__irqIRQ_ADC(void) { ADC_Data=ADDR;/*读取通道0的结果寄存器ADDR0数据到全局标量*/ ADC_Data=(ADC_Data>>6)&0x3ff;//分离转换结果 ADC_Data=ADC_Data>>2;//十位结果变成8位 ADCR|=1<<24;/*再次启动转换*/ VICVectAddr=0x00;/*中断结束*/ } voidADCInit()//AD转换初始化 { ADCR=(1<<0)|//SEL=1,选择通道0 ((60-1)<<8)|//CLKDIV=Fpclk/1000000-1,即转换时钟为1MHz (0<<16)|//BURST=0,软件控制转换操作 (0<<17)|//CLKS=0,使用11clock转换 (1<<21)|//PDN=1,正常工作模式(非掉电转换模式) (0<<22)|//TEST1: 0=00,正常工作模式(非测试模式) (1<<24)|//START=1,启动转换 (0<<27); PINSEL1|=1<<22;//设置AD转换 //中断设置 /*进行VIC设置*/ VICIntSelect=0x00;/*所有中断通道设置为IRQ中断*/ VICVectCntl0=0x20|18;/*设置ADC中断最高优先级*/ VICVectAddr0=(uint32)IRQ_ADC;/*设置中断服务程序地址*/ VICIntEnable=1<<18;/*使能ADC中断*/ } intmain() { uint8i; PINSEL2|=0;//设置P1口为GPIO IODIR1|=0xFFFF0000; PWMInit();//pwm初始化 ADCInit();//AD转换初始化 IO1DIR|=0x1fff<<16;//设置1602引脚输出 IO1CLR|=0x1fff<<16; Lcd_Initial(); for(i=0;i<4;i++){Lcd_Character_16X16_0(1,2,i*16+30,Judge_e,i);}//亮度等级 while (1) { PWMMR1=ADC_Data*10;//将AD处理的数值赋给PWMMR1,改变脉宽 PWMLER=0X03;//更新PWM占空比 PWMTCR=0x09;//PWM使能、计数器使能 Lcd_Character_16X8(1,5,48,letter_logo[ADC_Data/100]); Lcd_Character_16X8(1,5,56,letter_logo[ADC_Data%100/10]); Lcd_Character_16X8(1,5,64,letter_logo[ADC_Data%10]); } } #include"lpc21xx.h" typedefunsignedcharuint8; typedefunsignedintuint16; typedefunsignedlonguint32; #defineRS(1<<24) #defineRW(1<<25) #defineE(1<<26) #defineBUSY(1<<23) #defineFIRSTLINE0x80 #defineSECONDLINE0xc0 voidDelayMs(unsignedcharms); voidCheckBusy(void); voidWriteCommand(unsignedcharcommand); voidWriteData(unsignedchardata); voidSet_XY(unsignedcharx,unsignedchary); voidDisplayChar(unsignedcharx,unsignedchary,unsignedchardata); voidDisplayString(unsignedcharx,unsignedchary,unsignedchar*str); voidInitLcd(void); 五、电路设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 亮度 调节