关于1602的一些问题,恳请大家帮忙

2019-07-15 09:09发布

  1. #include <reg52.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int  uint;
  4. #define lcd_data P0                            //lcd数据口
  5. sbit EN=P2^7;                                        //lcd使能
  6. sbit RS=P2^6;                                     //lcd命令/数据
  7. sbit RW=P2^5;                                        //lcd读取/写入

  8. void delay(uint x)                                        //延时函数
  9. {
  10.         uchar y,z;
  11.         for(y=x;y>0;y--)
  12.                 for(z=110;z>0;z--);
  13. }

  14. void lcd_write_com(uchar com)                //lcd写命令函数
  15. {
  16.         RW=0;
  17.         RS=0;
  18.         EN=0;
  19.         lcd_data=com;
  20.         EN=1;
  21.         delay(5);
  22.         EN=0;
  23. }

  24. void lcd_write_dat(uchar dat)                //lcd写数据函数
  25. {
  26.         RW=0;
  27.         RS=1;
  28.         EN=0;
  29.         lcd_data=dat;
  30.         EN=1;
  31.         delay(5);
  32.         EN=0;
  33. }

  34. void lcd_init()                //lcd初始化
  35. {
  36.         lcd_write_com(0x38);
  37.         lcd_write_com(0x0c);
  38.         lcd_write_com(0x06);
  39.         lcd_write_com(0x01);
  40. }

  41. void display(uchar x,uchar y,uchar *str)
  42. {
  43.         if(y==0)
  44.                 lcd_write_com(0x80+x);
  45.         else
  46.                 lcd_write_com(0xc0+x);
  47.         while(*str!='')
  48.         {
  49.                 lcd_write_dat(*str++);
  50.         }
  51. }

  52. void main()
  53. {
  54.         lcd_init();
  55.         display(4,1,"Why");
  56.         while(1);
  57. }
复制代码
想在任意位置电视字符串,但是
为什么display函数里的x,y值怎么改都是在第一行第一个开始显示?
感谢大家帮忙,谢谢!!
0条回答

一周热门 更多>