LED灯亮度调节.docx
- 文档编号:30719829
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:12
- 大小:150.57KB
LED灯亮度调节.docx
《LED灯亮度调节.docx》由会员分享,可在线阅读,更多相关《LED灯亮度调节.docx(12页珍藏版)》请在冰豆网上搜索。
LED灯亮度调节
课程嵌入式实验
题目LED灯亮度调节报告
学院信息工程学院
专业13计算机测控
LED灯亮度调节实验
一、实验目的
应用PWM定时器输出PWM信号控制LED显示亮度,要求亮度分256级连续可调。
亮度级别由电位器调节电压通过AD转换输入,亮度级别值显示在LCD液晶显示器。
要求采用中断方式进行AD值读取。
二、实验设备
仿真软件、keil5
三、实验原理
系统通过调节电位器,利用LPC2114内置的AD转换器读取电位器的电压值,根据电压值调整PWM信号的占空比,积分后实现LED亮度可调,并实时在LCD1602上显示亮度级别。
PWM输出
LPC2000的PWM基于标准的定时器模块,具有定时器的所有特性,它是定时器功能中匹配事件的功能扩展。
使用PWM功能,可以在指定引脚输出需要的波形。
输出波形可分为两类:
单边沿输出和双边沿输出。
该实验使用单边沿输出。
使用两个匹配寄存器就可以实现单边沿控制的PWM输出。
其中一个匹配寄存器(PWMMR0)控制PWM周期,另一个匹配寄存器控制PWM边沿的位置,即占空比。
AD转换器
AD转换器的基本时钟由VPB时钟提供。
可编程分频器将时钟调整至逐步逼近转换所需的(最大)。
10位精度要求的转换需要11个A/D转换时钟。
LCD1602
引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3-1所示:
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
表3-1:
引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
1602LCD的指令说明
1602液晶模块内部的控制器共有11条控制指令,如表3-2所示:
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
表3-2控制命令表
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
1602LCD的时序
与HD44780相兼容的芯片时序表如下:
读状态
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
输入
RS=L,R/W=L,D0—D7=指令码,E=高脉冲
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
D0—D7=数据
写数据
输入
RS=H,R/W=L,D0—D7=数据,E=高脉冲
输出
无
表3-3基本操作时序表
读写操作时序如图3-1和图3-2所示:
图3-1读操作时序
图3-2写操作时序
四、软件设计
#include""
#include""
#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() { PINSEL2|=0;//设置P1口为GPIO IODIR1|=0xFFFF0000; PWMInit();//pwm初始化 ADCInit();//AD转换初始化 PLLCON=2; PLLCFG=0x30; PLLFEED=0xAA; PLLFEED=0x55; while((PLLSTAT&0x10)==0); IO1DIR|=0x7ff<<16;//设置1602引脚输出 IO1CLR|=0x7ff<<16; InitLcd(); while (1) { PWMMR1=ADC_Data*10;//将AD处理的数值赋给PWMMR1,改变脉宽 PWMLER=0X03;//更新PWM占空比 PWMTCR=0x09;//PWM使能、计数器使能 str2[0]=numcode[ADC_Data/100]; str2[1]=numcode[ADC_Data%100/10]; str2[2]=numcode[ADC_Data%10]; DisplayString(0,5,str1); DisplayString(1,7,str2); } } 五、电路设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 亮度 调节
![提示](https://static.bdocx.com/images/bang_tan.gif)