微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 自己写的1602液晶 求指导,求请教!

自己写的1602液晶 求指导,求请教!

时间:10-02 整理:3721RD 点击:

  1. 今天才学完1602液晶  自己模仿写了一个程序  求指教啊!谢谢了!
  2. #include<reg51.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code table[]="LI WEI :";//第一行显示字符串
  6. uchar code table1[]="I LOVE YOU !";//第二行显示字符串
  7. sbit lcde=P2^7; //使能端
  8. sbit lcdrs=P2^6; //数据或指令选择
  9. sbit lcdrw=P2^5; //读写选择
  10. uchar num; // 表的移动变量
  11. void delay(uint z) //延时函数,延时较长时不用uchar
  12. {
  13. uint x,y;
  14. for(x=z;x>0;x--)
  15. for(y=110;y>0;y--);
  16. }
  17. void write_com(uchar com) //写指令
  18. {
  19. lcdrs=0;
  20. P0=com;
  21. delay(5);
  22. lcde=1;
  23. delay(5);
  24. lcde=0;
  25. }
  26. void write_data(uchar date)//写数据
  27. {
  28. lcdrs=1;
  29. P0=date;
  30. delay(5);
  31. lcde=1;
  32. delay(5);
  33. lcde=0;
  34. }

  35. void init() //初始化函数
  36. { lcde=0;
  37. lcdrw=0;
  38. write_com(0x38); //16*2显示,5*7点阵,8位数据接口
  39. write_com(0x0f);//开显示,开光标,光标闪烁
  40. write_com(0x06); //显示一个字符后,光标加一,指针加一
  41. write_com(0x01); //清屏(数据和显示)
  42. write_com(0x80+0x10); //数据指针的设置(隐藏在后面)
  43. }
  44. main()
  45. { init();//初始化
  46. for(num=0;num<8;num++) //循环显示第一行
  47. {
  48. write_data(table[num]);
  49. delay(20);
  50. }

  51. write_com(0x80+0x54);
  52. for(num=0;num<12;num++) //循环显示第二行
  53. {
  54. write_data(table1[num]);
  55. delay(20);
  56. }
  57. for(num=0;num<16;num++) //整屏移动(只能一字节一字节移动)
  58. {
  59. write_com(0x18); //整屏移动的指令
  60. delay(300);
  61. }
  62. while(1);
  63. }

复制代码

小编究竟要干什么?

就是想让大师们看看我的程序的写法,对风格和一些应该注意的地方给点建议!

不错哦

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

网站地图

Top