新手第一次写代码,并没有显示
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//微定义
sbit rs=P2^4;
sbit rw=P2^5;
sbit e=P2^6;
sbit psb=P2^7;
void write_12864com(uchar com);
void write_12864dat(uchar dat);
void initinal(void);
void display1(void);
//**************************
//延时函数,在12Mhz的晶振频率下
//大约50us的延时
//**************************
void delay_50us(uint t)
{
uchar j;
for(; t>0;t--)
for(j=19;j>0;j--);
}
void main(void)
{
initinal(); //初始化
while(1) //不断显示
{
display1();
while(1);
}
}
void write_12864com(uchar com)
{
rw=0;
rs=0;
delay_50us(1);
P0=com;
e=1;
delay_50us(10);
e=0;
delay_50us(2);
}
void write_12864dat(uchar dat)
{
rw=0;
rs=1;
delay_50us(1);
P0=dat;
e=1;
delay_50us(10);
e=0;
delay_50us(2);
}
void initinal(void) // 初始化
{
delay_50us(2);
write_12864com(0x30);
delay_50us(4);
write_12864com(0x30);
delay_50us(4);
write_12864com(0x0f);
delay_50us(4);
write_12864com(0x01);
delay_50us(240);
write_12864com(0x06);
delay_50us(10);
}
void display1(void)
{
uchar i;
uchar a;
a=0x10;
write_12864com(0x80); //第一行地址
delay_50us(1);
for(i=0;i<16;i++)
{
write_12864com(a);
delay_50us(1);
a++;
}
}
照着视频教程写的,可是没有显示
DB0-DB7连的是P0.0-P0.7
最小系统版,芯片是STC89C52RC
求大神帮助
可能有几个原因,一个是对比度的调节,调节对比度可调电阻,应该能看到显示和不显示的效果。二是想12864写入命令或数据后的延时时间不够。三是p0口需要接上拉电阻
我的p0口有上拉电阻,我把延时调大了五倍,也没有显示
有没有调节对比度的可调电阻,应该是第3脚接可调电阻的可调端,可调电阻另两端接第18脚和正5伏
先找到此型号液晶屏的资料看看,因为绝大多数20脚的12864屏的引脚功能排列是一样的,区别在3脚调整对比度的运用,有接VCC或V0或悬空,有0~VCC可调,也有通过18脚负电源在VDD--VEE之间可调,这取决于不同厂家的工艺和电路设计。但是不应该毫无显示。建议屏蔽所有与显示无直接关系的程序,只在主程序初始化完成后随便显示一个字符,以确认液晶屏本身有无问题。
非常不错的例程哦,
强烈的支持一下下了,
细看了一下你的程序,你显示程序里没有写数据语句而是写命令语句。
void display1(void)
{
uchar i;
uchar a;
a=0x10;
write_12864com(0x80); //第一行地址
delay_50us(1);
for(i=0;i<16;i++)
{
// write_12864com(a); //注释掉
write_12864dat(a); //补充的
delay_50us(1);
a++;
}
}
强烈的支持一下下了