1602液晶不能在指定的位置显示字符?

2020-02-05 09:02发布

#include <reg52.h>//包含52单片机头文件
#include <intrins.h>//包含左右移位头文件
#define uchar unsigned char//宏定义无符号整型数
#define uint unsigned int//宏定义无符号短整型数
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit lcdrw=P3^6;
//void init();
void lcd_com(uchar com);
void lcd_date(uchar date);
void lcdinit();
void lcddisp(uchar add,uchar dat);
void delay(uchar);//声明一个子函数
void main ()
{
    lcdinit();
      
    lcddisp(7,35);
    while(1);
}
/*void init()//初始化
{
     EA=1;//开总中断
     ET0=1;//开定时器0中断
     TH0=(65535-100)/256;//装初值
     TL0=(65535-100)%256;
     TR0=1;//启动定时器0
     TMOD=0x01;
}*/

void lcd_com(uchar com)//写指令
{
    P0=com;
    lcdrs=0;
    lcden=1;
    lcden=0;
    delay(5);
}
void lcd_date(uchar date)//写数据
{
   P0=date;
   lcdrs=1;
   lcden=1;
   lcden=0;
   delay(5);
}
void lcdinit()//初始化
{
   lcdrw=0;//写
   lcd_com(0x38);//设置8位格式2行,5x7点阵
   lcd_com(0x0c);//开显示,关光标,不闪烁
   lcd_com(0x06);//输入方式,增量不移位
   lcd_com(0x01);//清屏
}
void lcddisp(uchar add,uchar dat)//显示
{
    uchar shi,ge;
    shi=dat/10;
    ge=dat%10;
    lcd_com(0x80+add);
    lcd_date(0x30+shi);
   
    delay(5);
   
    lcd_date(0x30+ge);
   

}
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。