基于单片机的led显示系统
2串LED背光的液晶屏需要超过6V的起辉电压,在3.3V-5V的单片机应用中需要升压才能点亮,若采用规范制式电路和器件来驱动会很嫌麻烦。但是你若不耻引用俺的招式,就会一下子简单易行、轻松愉快的搞定。
多次的科学实验证明了第一图最为简易而且靠谱。过亮时需要通过代码调整输出方波空宽比,详细运用尽可参见STC之PWN设置说明。
波形显示:脉冲周期180uS、上为LED端波形,其直流幅值4,8V 2.2V脉冲、下为STC的输出端波形波幅4.1V,空宽比4:2。
在电池供电时二极管压降损耗不能忽略,可考虑加3极管提高效率。
双口同步驱动减低损耗。
有的屏方便引出中点连线的话更为简单,这时需要电阻限流。
需要多倍升压时的电路,2口互为反相。但驱动电流小、效率低。
若为STC单片机而且有PWM功能则用以下代码就可用P2.7直接通过电容和二极管驱动背光。
void PWM_Init(void) //算法为f = fosc/12/256
{ PCA_USE_P24P25P26P27(); //切换输出引脚
CCON = 0; //初始化PCA控制寄存器
PCA_CLK_12T(); //fosc/12
PCA_PWM2 = 0x00; //PCA模块2工作于8位PWM,
CCAP2H = CCAP2L = 0xb0; //0x80时输出对称方波,增减可调空宽比。
CCAPM2 = 0x42; //PCA模块2为6位PWM模式
CR = 1; //PCA定时器开始工作
}
若单片机没有PWM功能,可用定时器中断来翻转IO口驱动背光。
(若单片机没有推挽输出功能,则还需要加推挽输出管。)
timer0()interrupt 3 using 1
{ TR1 = 0;
TL1 = 0x00; //重设定时初值
TH1 = 0xC4; //重设定时初值
TR1 = 1; //定时器1开始计时
LCD_BG=~LCD_BG;
}
void main()
{ P4M0 =0x10;
P3M0=0x20;
AUXR &= 0xBF; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x10; //设置定时器模式
TL1 = 0x00; //设置定时初值
TH1 = 0xC4; //设置定时初值
EA=1; //CPU开中断*/
ET1=1; //T0开中断*/
TF1= 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
。。。。。
LED属于高速器件,这里用到5.5Khz,效果狠好、效率也高,还便于用较小电容驱动,蛮有利。
这彩屏实际观感比图片表达的要好很多。只是1.8寸小了点,达给低端单片机 还是很可以的。若用到俺的“flash”招式,还可以意外的“牛X”。
若你的实验板子是低存储空间的便宜芯片,也别泄气,参看俺的招式,或可以让这个屏有更多的发挥机会。
图为512RAM内存14K程序空间的IRC15W415的驱动情况,因为扩了flash,居然也给可以用彩图字符显示动态数据,和多样的彩图界面。