|
2黑幣
矩陣按鍵控制12864顯示1-10012864底驅(qū):
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data=P0;//屏并行端口DB0~DB7
uchar time;//定義全局變量
sbit rs=P3^5;//屏端口定義
sbit wr=P3^6;//
sbit en=P3^4;//屏使能
sbit rd=P3^4;//屏復(fù)位
unsigned char addresses[] = {0x80,0x90,0x88,0x98};// 12864 地址
void delay_1ms(uint x);//12864 1ms延時(shí)函數(shù)
void write_cmd(uchar cmd);// 12864 寫命令
void write_data(uchar dat);// 12864 寫數(shù)據(jù)
// void LCD12864_Display_Char(unsigned char x,unsigned char y,unsigned char dat);
void LCD12864_Display_Chars(unsigned char x,unsigned char y,unsigned char *dat);//12864
void lcd_init(); //LCD準(zhǔn)備函數(shù)
void delay_1ms(uint x)//12864 1ms延時(shí)函數(shù)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<100;j++);
}
void write_cmd(uchar cmd)// 12864 寫命令
{
rs=0;
wr=0;
en=0;
P0=cmd;
delay_1ms(10);//延時(shí)5ms
en=1;
delay_1ms(10);
en=0;
}
void write_data(uchar dat)// 12864 寫數(shù)據(jù)
{
rs=1;
wr=0;
en=0;
P0=dat;
delay_1ms(10);
en=1;
delay_1ms(10);
en=0;
}
//void LCD12864_Display_Char(unsigned char x,unsigned char y,unsigned char dat)
//{
// write_cmd(0x30);
// write_cmd(0x06);
// write_cmd(addresses[x-1]+(y-1));
// write_data(dat);//寫字符
//}
void LCD12864_Display_Chars(unsigned char x,unsigned char y,unsigned char *dat)//12864
{
write_cmd(0x30);
write_cmd(0x06);
write_cmd(addresses[x-1]+(y-1));
while(*dat != '\0')//寫漢字
{
write_data(*dat);
dat++;
}
}
void lcd_init() //LCD準(zhǔn)備函數(shù)
{
rd=1;
write_cmd(0x30);
delay_1ms(5);
write_cmd(0x0C);
delay_1ms(5);
write_cmd(0x01);
delay_1ms(5);
}
|
|