做毕业设计c语言不太会,有个基于51单片机ds1302的1602显示驱动程序帮忙改下
/******************************************************************************///LCD...
/******************************************************************************/
//LCD驱动(1602L液晶显示屏并口驱动程序)
/******************************************************************************/
void chk_busy(){//检查忙位(底层)
RS=0;
RW=1;
E=1;
Lcd_Bus=0xff;
while((Lcd_Bus&0x80)==0x80);
E=0;
}
/******************************************************************************/
void write_com(unsigned char cmdcode){//写命令到LCD(底层)
chk_busy();
RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
E=0;
}
/******************************************************************************/
void write_data(unsigned char Dispdata){//写数据到LCD(底层)
chk_busy();
RS=1;
RW=0;
E=1;
Lcd_Bus=Dispdata;
E=0;
}
/******************************************************************************
//初始化LCD屏(被调用层)
/******************************************************************************/
void lcm_init(void){
write_com(0x30); //选择8bit数据流
write_com(0x0c); //开显示(无游标、不反白)
write_com(0x01); //清除显示,并且设定地址指针为00H
}
/******************************************************************************
//向LCM发送一个字符串,长度64字符之内。(被调用层)
/*****************************************************************************/
void lcm_w_word(unsigned char *s){//应用例:lcm_w_word("您好!");
while(*s>0){
write_data(*s);
s++;
}
}
/******************************************************************************
//写指令或数据(被调用层)
/******************************************************************************/
void lcm_w_test(bit i,unsigned char word){
if(i == 0){
write_com(word);//写指令或数据(0,指令)
}else{
write_data(word);//写指令或数据(1,数据)
}
}
/******************************************************************************
/******************************************************************************
//指定显示位置// (设置LCD显示的起始位置)(被调用层)
/******************************************************************************/
void LCD_set_xy( unsigned char x, //X为行(1~4)
unsigned char y ){ //Y为列(0~7)
unsigned char address;
switch(x){
case 0: address = 0x80 + y; break;
case 1: address = 0x80 + y; break;
case 2: address = 0x90 + y; break;
case 3: address = 0x88 + y; break;
case 4: address = 0x98 + y; break;
default:address = 0x80 + y; break;
}
lcm_w_test(0, address);
} 展开
//LCD驱动(1602L液晶显示屏并口驱动程序)
/******************************************************************************/
void chk_busy(){//检查忙位(底层)
RS=0;
RW=1;
E=1;
Lcd_Bus=0xff;
while((Lcd_Bus&0x80)==0x80);
E=0;
}
/******************************************************************************/
void write_com(unsigned char cmdcode){//写命令到LCD(底层)
chk_busy();
RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
E=0;
}
/******************************************************************************/
void write_data(unsigned char Dispdata){//写数据到LCD(底层)
chk_busy();
RS=1;
RW=0;
E=1;
Lcd_Bus=Dispdata;
E=0;
}
/******************************************************************************
//初始化LCD屏(被调用层)
/******************************************************************************/
void lcm_init(void){
write_com(0x30); //选择8bit数据流
write_com(0x0c); //开显示(无游标、不反白)
write_com(0x01); //清除显示,并且设定地址指针为00H
}
/******************************************************************************
//向LCM发送一个字符串,长度64字符之内。(被调用层)
/*****************************************************************************/
void lcm_w_word(unsigned char *s){//应用例:lcm_w_word("您好!");
while(*s>0){
write_data(*s);
s++;
}
}
/******************************************************************************
//写指令或数据(被调用层)
/******************************************************************************/
void lcm_w_test(bit i,unsigned char word){
if(i == 0){
write_com(word);//写指令或数据(0,指令)
}else{
write_data(word);//写指令或数据(1,数据)
}
}
/******************************************************************************
/******************************************************************************
//指定显示位置// (设置LCD显示的起始位置)(被调用层)
/******************************************************************************/
void LCD_set_xy( unsigned char x, //X为行(1~4)
unsigned char y ){ //Y为列(0~7)
unsigned char address;
switch(x){
case 0: address = 0x80 + y; break;
case 1: address = 0x80 + y; break;
case 2: address = 0x90 + y; break;
case 3: address = 0x88 + y; break;
case 4: address = 0x98 + y; break;
default:address = 0x80 + y; break;
}
lcm_w_test(0, address);
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询