2019-07-16 06:03发布
coolRFHU 发表于 2012-4-14 21:49 请看这篇文章啊!百度文库号东东 http://wenku.baidu.com/view/f0bda536f111f18583d05a03.html
最多设置5个标签!
#include<reg52.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P1^3;
sbit RW=P1^0;
sbit PSB=P1^2;
sbit EN=P1^1;
uchar code addr_tab[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置
};
void lcd_wcmd(uchar cmd);
void lcd_wdat(uchar dat);
void delay(uchar z)//延时
{
uchar i,j;
for(i=z;i>0;i--)
for(j=220;j>0;j--);
}
void lcd_checkBusy()//检测忙标志
{
uchar busy;
do{
EN = 0;
RS = 0;
RW = 1;
delay(4);
EN = 1;
busy = P0;
delay(4);
EN = 0;
}
while(busy&0x80);
}
void hanzi_Disp(uchar x,uchar y,uchar *pt)//显汉字
{
lcd_wcmd(addr_tab[8*x+y]); //写地址
while(*pt>0)
{
lcd_wdat(*(pt++)); //写数据
// break;
}
}
void lcd_wcmd(uchar cmd) //写指令
{
RS=0;
RW=0;
EN=0;
delay(4);
P0=(cmd);
delay(4);
EN=1;
delay(4);
EN=0;
}
void lcd_wdat(uchar dat)//写数据
{
RS=1;
RW=0;
EN=0;
P0=dat;
delay(4);
EN=1;
delay(4);
EN=0;
}
void lcd_init()//初始化
{
PSB=1;
lcd_wcmd(0x30);
delay(4);
lcd_wcmd(0x0f);
delay(4);
lcd_wcmd(0x01);
delay(4);
}
void main()//主函数
{
void lcd_checkBusy(void);
lcd_init();
hanzi_Disp(0,0,"单片机世界");
//lcd_wcmd(0x91);
hanzi_Disp(3,0,"爱你到老");
while(1);
}
谢谢了,说实话小弟是想偷懒
一周热门 更多>