#include <REGX52.H>
#include <math.h>
#define input P0
#define uchar unsigned char
#define uint unsigned int
sbit rw=P2^5;
sbit rs=P2^6;
sbit en=P2^7;
void time(int time_number) //@12.000MHz
{
do
{
unsigned char data i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
time_number--;
}while(time_number);
}
//写命令
void lcd_com(uchar com){
rs=0;
rw=0;
en=0;
input=com;
time(5);
en=1;
time(5);
en=0;
}
//写数据
void lcd_date(uchar date){
rs=1;
rw=0;
en=0;
P0=date;
time(5);
en=1;
time(5);
en=0;
}
//初始化
void lcd_init(){
lcd_com(0x38);
lcd_com(0x06);
lcd_com(0x0c);
lcd_com(0x01);
}
//显示位置
void lcd_set(uint i,uint j){
if(i==1){
lcd_com(0x80+j-1);
}
if(i==2){
lcd_com(0x80|0x40+j-1);
}
}
//显示数字范围0到5位数
void show_number(int number,int m,int n){
int con=0;
int a=number;
while(number){
con++;
number/=10;
}
lcd_init();
while(con){
lcd_set(m,n+con-1);
lcd_date(0x30+a%10);
a/=10;
con--;
}
}
//显示一个字符
void show_char(char a,int m,int n){
lcd_init();
lcd_set(m,n);
lcd_date(a);
}
//显示字符串
void show_chars(char* a,int m,int n){
int i=0;
lcd_init();
lcd_set(m,n);
for(i=0;;i++){
if(*(a+i)!=0){
lcd_date(*(a+i));
}
else{
break;
}
}
}
void main(){
show_chars("abcde",1,1);
while(1);
}