求救啊搞了一天了还是乱码这是lcd程序求大神看看哪里出错了
#include <reg52.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit rs = P2^6; //寄存器选择输入
sbit rw = P2^5; //液晶读/写控制
sbit en = P2^7; //液晶使能控制
sbit psb = P3^2; //串/并方式控制
sbit rst = P3^4; //液晶复位端口
void lcd_com(uchar com);
void lcd_dat(uchar dat);
void lcd_busy();
void lcd_dis(uchar *table);
void lcd_int();
void delay(uint z)
{
uchar i;
while(z--)
for(i=10;i>0;i--);
}
void lcd_busy(void) //忙检测
{
uchar busy;
rs=0; rw=1;
do{
en=1;
_nop_();
_nop_();
busy=P0;
_nop_();
_nop_();
en=0;
}while(busy & 0x80);
}
void lcd_com(uchar com)
{
lcd_busy();
rs=0;//命令01
rw=0;//写数据
P0=com;
en=1;
_nop_();
_nop_();
en=0;
}
void lcd_dat(uchar dat)
{
lcd_busy();
rs=1;//数据1
rw=0;//写方式
P0=dat;
en=1;
_nop_();
_nop_();
en=0;
}
void lcd_int()
{
psb=1;
rst=0;
delay(5);
rst=1;
delay(5);
lcd_com(0x30);
lcd_com(0x0c);
lcd_com(0x01);
lcd_com(0x02);
lcd_com(0x80);
delay(50);
}
void lcd_dis(uchar *table)
{
uchar i,j;
for(i=0;i<32;i++)
{
lcd_com(0x80+i); //先写入水平坐标值
lcd_com(0x80); //写入垂直坐标值
for(j=16;j>0;j--) //再写入两个8位元的数据
lcd_dat(*table++);
delay(1);
}
for(i=0;i<32;i++)
{
lcd_com(0x80+i);
lcd_com(0x88);
for(j=16;j>0;j--)
lcd_dat(*table++);
delay(1);
}
}
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>