微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 1602仿真为何这样显示,求解答

1602仿真为何这样显示,求解答

时间:10-02 整理:3721RD 点击:
本来应横着显示,但是它是竖着显示,而且没有显示完。


程序如下,求大神解答
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LOVE YOU!";
uchar code table1[]="XXX.TNMCU.COM";
sbit lcden=P3^4;   //液晶使能端
sbit lcdrs=P3^5;   //液晶数据命令选择端
uchar num;                                       
void delay(uint m)
{
   uint x,y;
   for(x=m;x>0;x--)
       for(y=110;y>0;y--);
}
void write_com(uchar com)
{
   lcdrs=0;            //选择写命令模式
   P0=com;      //将写的命令送到数据总线
   delay(5);
   lcden=1;     //使能端给高脉冲,因为初始化函数中已经将lcden置为0
   delay(5);       
   lcden=0;     //将使能端置0以完成高脉冲
}
void write_date(uchar date)
{
   lcdrs=1;
   P0=date;
   delay(5);
   lcden=1;
   delay(5);
   lcden=0;
}
void init()
{
           lcden=0;
        write_com(0x38);   //设置16x2显示,5x7点阵,8位数据接口
        write_com(0x0f);   //设置开显示,不显示光标
        write_com(0x06);   //写一个字符后地址指针加一
        write_com(0x01);   //显示清0,数据指针清0
}
void main()
{
  init();
  write_com(0x80);
  for(num=0;num<11;num++)
  {
     write_date(table[num]);
         delay(5);
  }
  write_com(0x80+0x40);
  for(num=0;num<13;num++)
  {
     write_date(table1[num]);
         delay(5);
  }
  while(1);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top