规范制式太繁琐!2串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功能,可用定时器中断来翻转I\O口驱动背光。
(若单片机没有推挽输出功能,则还需要加推挽输出管。)
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,居然也给可以用彩图字符显示动态数据,和多样的彩图界面。
谢谢观看
浏览更多精彩内容请登录数码之家网站
技术交流请联系原作者
作者:zdzdzddd
来源:数码之家
51单片机驱动 LCD1602液晶显示 PROTEUS仿真 LCD指令解释
最近后台有小伙伴留言和我说老师给他们留了一个设计作业要用单片机去驱动LCD1602液晶显示任意字符,我利用空闲时间做了一个小实验,希望能帮到他做一个参考,更希望你们看后能有所收获。
51单片机驱动 LCD1602液晶显示系统 PROTEUS仿真及源代码设计
废话不多说先上实物图
LCD1602+51单片机最小系统应用仿真及制作
好了,接下来正式进入制作环节:
第一步:仿真
绘制好原理图,仿真时单片机最小系统只放一个单片机就可以了,但实际电路中需要加上电源模块、复位模块。如下图:
原理图文件请在附件中找。
原理图绘制好后,编写代码并生成hex文件。参考代码如下:
/*************************功能************************/
/*使用外部中断INTO改变LED状态,并且用1602显示出其状态*/
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=" HELLO 1602 ";
uchar code table0[]="1602 TEST ";
uchar code table1[]="RESULT: "; //空格是写到LCD了,即空格也是内容
uchar code table2[]="OK!";
uchar code table3[]="liang";
uchar code table4[]="mie";
uchar num;
sbit led=P1^7;
sbit lcden=P2^0; //液晶使能端
sbit lcdrs=P2^2; //液晶数据命令选择端选择写数据还是写命令
void delay(uint z) // 延时函数
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void write_com(uchar com) //写入
{
lcdrs=0; //LCD 选择输入命令
P0=com; //向P0 口输入命令 39-32端口
delay(5); //延时
lcden=1; //打开LCD 使能
delay(5); //一个高脉冲
lcden=0; //关闭LCD 使能
}
void write_data(uchar date)
{
lcdrs=1; //设置为输入数据
P0=date; //将数据赋给P0 口
delay(5); //延时
lcden=1; //置高
delay(5); //高脉冲
lcden=0; //置低完成高脉冲
}
void init() //LED 初始化
{
lcden=0;
write_com(0x38);//设置16x2 显示5x7 点阵,8 位数据接口
write_com(0x0c); //设置开始显示不显示光标 (指令4)
write_com(0x06); //写一个字符后地址指针加1 (指令3)
write_com(0x01); //显示清零数据指针清零 (指令1)
}
void display(unsigned char *p)//按指针 地址写入数据
{
while(*p!='\0')
{
write_data(*p); //写数据
p++;
delay(1);
}
}
void main()
{
TCON=0x01; //设置中断为INTO
IE=0x81;
led=0;
init();
write_com(0x80); //将数据指针第一行第一个字处,
display(table); //调用函数的方式写入数据
delay(800);
write_com(0x80); //将数据指针第一行第一个字处,
display(table0); //调用函数的方式写入数据
write_com(0x80+0x40); //定义指针位置 将数据指针第二行第一个字处
for(num=0;num<7;num++)
{
write_data(table1[num]);
delay(5);
}
write_com(0x80+0x4c); //按1602的地址单个写入数据
write_data(table2[0]);
write_com(0x80+0x4d); //按1602的地址单个写入数据
write_data(table2[1]);
write_com(0x80+0x4e); //按1602的地址单个写入数据
write_data(table2[2]);
while(1);
}
void key_can() interrupt 0
{
delay(20); // 消除按键抖动
if(P3^3==0)
{
if(P3^3==0)
{
led=!led;
}
if(led==1)
{
write_com(0x80+0x4b);
display(table3);
}
else if(led==0)
{
write_com(0x80+0x4b); //按1602的地址单个写入数据
display(table4);
write_com(0x80+0x4f);
write_data(table1[8]); //按1602的地址单个写入数据
write_com(0x80+0x4e);
write_data(table1[8]);
}
}
}
原理图和代码都有了,仿真的准备工作就完了,现在正式进入仿真。
将代码加载进单片机中,仿真结果如下图:
元器件清单
原件布局及效果图如下:
最后按照要求全部焊接好,上电烧程序测试就可以了。
应该写得够详细了吧,最后,如果有什么意见或者建议欢迎直接给我留言,让我们共同学习一起进步,如果需要完整的代码或设计文件,请在下方留言或者私信我,看到后会第一时间回复。
谢谢!
如果喜欢我的文章请评论转发加关注哦。
相关问答
单片机 直接 驱动 LCD 液晶屏 -ZOL问答普通单片机直接驱动回显得非常吃力因为需要±信号外还需要不同的电压信号,所以一般都选用带液晶驱动器的单片机、当然这样玩玩也是可以的。熟悉一下液晶的运行...
单片机液晶屏 不用 驱动 会亮吗?不,单片机液晶屏需要驱动才能正常显示。驱动器负责控制液晶屏的像素点,调整亮度、对比度和颜色等参数,以及处理输入信号并将其转换为可显示的图像。没有驱动器...
stc 单片机 哪些能 驱动 LCD 液晶屏 ?如果你所说的LCD液晶屏是串口屏的话,那么任意一款STC单片机都能驱动液晶屏。如果是TFT液晶屏,stc单片机中只有8H4KxxTLCD可以驱动LCD屏。这款单片机有集成了L...
单片机驱动 lcd屏亮度不够怎么办?单片机LcD是电流驱动的元件,亮度不够可能是因为你接的限流电阻太大了,你把电阻换成3K到1K试试,应该就会变亮了。又或者可加一适当延时,避免花屏,段码更新...
什么型号的摄像头可以用51 单片机驱动 ,单片机的驱动程序怎么编写的?直接驱动需要设计相应的电路,估计个人搞很困难。买个摄像头驱动板。用51单片机连接摄像头驱动板,摄像头驱动板驱动摄像头。通过程序,实现对某个电路的...直...
用51 单片机 控制HT1621B 驱动液晶屏 引脚怎么个连接法啊?使用51单片机控制HT1621B驱动液晶屏需要连接以下几个引脚:VSS、VDD、VLCD、CSB、RW、ALE和E/RD。其中VSS、VDD和VLCD分别连接电源的GND、电源的VCC和LCD的VLC...
lcd屏可以直接连到 单片机 嘛?可以,LCD屏通常通过并行或串行接口与单片机连接。通过相应的引脚连接,单片机可以直接控制LCD屏的显示内容和操作。一般来说,需要按照LCD屏的规格和接口要求来...
本人初次使用HT1621B 驱动 4位8段LCD,请问高手用 单片机 怎样控制?其中的D0~D3,A0~A5各表示意思?谢谢?HT1621芯片的cs口、wr口、date口连接51单片机的三个输出口。vss和vdd接好,还有vlcd接在滑动变阻器的钟建端。接好就ok了HT1621芯片的cs口、wr口、date口连接5...
【3V 单片机 制作电子钟(用两节干电池) 驱动 电路用2节干电池驱...[最佳回答]1.使用能在1.8~3.3V工作的单片机.2.单片机的工作频率尽量低,降低功耗.3.数码管是很耗电的,建议换成LCD.4.使用DS1302这样的时钟芯片.1.使用能在1.8...
LED 屏显示字不完整-ZOL问答我建议可以为液晶屏增加一块驱动板(楼主在淘宝里面搜索“液晶屏驱动板”就知道是什么来的了),然后用单片机输出VGA或者其他视频信号去控制驱动板就行了~======...