
液晶显示器有字符型,如1602,这个液晶显示器目前是统一的,引脚和命令字都 是统一的。接线如下图所示
另一种是点阵型的,可以显示图形和汉字,用得比较多的是12864。但是,这种液晶显示器的型号很多,引脚和命令字都不统一。下图是一个仿真的实例。实物因不统一,就不好画了。
你用的是串口方式 而程序是并口方式,所以再怎么弄都不会显示出来 ;我这里有串口方式的程序 今晚刚编好的 也测试了液晶能显示出来 你看看吧 把我的端口对应改一下就行 如果液晶再无法显示 那就是你硬件的问题了 比如PSB端口是否接了低电平
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit cs=P2^5 //片选端 高电平有效
sbit sid=P2^6 //数据线
sbit sclk=P2^7 //串行时钟信号 下降沿有效
uchar table[]="我是个小兵却乐天知命,在你的世界说鸟语,在我的世界对不起请说汉语"
uchar datecnt
void delayms(uint z)//单位延时一毫秒
{
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void send_byte(uchar byte)//发送一个字节函数
{
uchar j
cs=1
for(j=0j<8j++)
{
sclk=0
byte=byte<<1
sid=CY
sclk=1
sclk=0
}
cs=0
}
void writecom_12864(uchar com)//写命令控制函数
{
uchar HDATA,LDATA
HDATA=com&0xf0
LDATA=((com<<4)&0xf0)
send_byte(0xf8)
send_byte(HDATA)
send_byte(LDATA)
}
void writedate_12864(uchar date)//写数据控制函数
{
uchar HDATA,LDATA
HDATA=date&0xf0
LDATA=((date<<4)&0xf0)
send_byte(0xfa)
send_byte(HDATA)
send_byte(LDATA)
}
void init_12864()//初始化12864
{
writecom_12864(0x30)
writecom_12864(0x30)
writecom_12864(0x0c)
writecom_12864(0x01)//清屏
writecom_12864(0x06)
}
void display_12864()
{
for(datecnt=0datecnt<64datecnt++)
{
if(datecnt==0) writecom_12864(0x80)
if(datecnt==16)writecom_12864(0x90)
if(datecnt==32)writecom_12864(0x88)
if(datecnt==48)writecom_12864(0x98)
writedate_12864(table[datecnt])
}
}
void main()
{
init_12864()
display_12864()
while(1)
}
段式液晶跟数码管差不多,唯一的区别就是液晶要使用交流信号驱动(直流信号就电解液晶液了)一般采用64HZ方波信号
液晶消耗的电流极低(几uA),一般串联大电阻,电压范围在3.3-12V(对比度取决与电压)
普通单片机直接驱动回显得非常吃力因为需要±信号外还需要不同的电压信号,所以一般都选用带液晶驱动器的单片机、当然这样玩玩也是可以的。熟悉一下液晶的运行方式。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)