找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2134|回复: 4
收起左侧

51单片机LCD12864液晶并行驱动程序

[复制链接]
ID:202895 发表于 2018-12-27 22:36 | 显示全部楼层 |阅读模式
  1. /*========================LCD12864液晶并行驱动程序==========================

  2. 程序名称:12864液晶驱动程序(并行模式)

  3. ================================================= ===========================*/

  4. #include <at89x52.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. uchar t,p;

  8. /********************************引脚定义***********************************/

  9. #define RS P1_0 //RS=0为执行指令;RS=1为执行数据; #define RW P1_1 //读写
  10. #define E P1_2 //使能
  11. #define PSB P1_3 //低电平(串口驱动);高电平(并口驱动)

  12. #define RST P1_4 //LCD复位

  13. /********************************定义数组***********************************/

  14. uchar code title[] = {"LCD 并行接口测试"};
  15. uchar code website[]={"qwertyuioopplkjh"};
  16. uchar code dig[]={"0123456789"};
  17. uchar code dig2[]={0,1,2,3,':'}; //

  18. /*******************************相关子程序**********************************/

  19. void Init_lcd(); //初始化液晶
  20. void lcd_busy(); //忙标志查询
  21. void delay100us(); //100us延时程序
  22. void write(uchar x,uchar Data); //写单字节函数
  23. void Show(uchar address,uchar L,uchar STR1[]);
  24. void Show_dig(uchar address,uint number);

  25. /*******************************延时子程序**********************************/

  26. void delay100(int n)
  27. {
  28. unsigned char i;
  29. while(n--)
  30. for(i=0;i<100;i++);
  31. }

  32. /*******************************LCD 忙标志查询******************************/

  33. void lcd_busy(void)
  34. {
  35. uchar busy;
  36. P0=0xff;
  37. RS=0;
  38. RW=1;
  39. do{
  40.     E=1;
  41.     busy=P0;
  42.     E=0;
  43.    }
  44. while(busy>0x7f);
  45. }

  46. /*****************************写指令或数据**********************************/

  47. void write(uchar x,uchar Data)
  48. {
  49. lcd_busy(); //忙查询
  50. if(x==0)
  51. {
  52.   RS=0;
  53.   RW=0; //写单字节命令字
  54. }
  55. else if(x==1)
  56. {
  57. RS=1;
  58. RW=0; //写单字节数据
  59. }
  60. E=1;
  61. P0=Data;
  62. E=0;
  63. P0=0xff;
  64. }

  65. /*******************************初始化LCD **********************************/
  66. void Init_lcd(void)
  67. {
  68. delay100(20); //启动等待,等LCM讲入工作状态
  69. PSB=1; //并口驱动模式
  70. RST=0;
  71. delay100(4);
  72. RST=1; // 复位LCD
  73. write(0,0x30); //8 位介面,基本指令集
  74. write(0,0x0c); //显示打开,光标关,反白关
  75. write(0,0x01); //清屏,将DDRAM的地址计数器归零
  76. }

  77. /*******汉字和字符显示,参数入口:Show(地址,显示宽度,汉字数组)************/
  78. void Show(uchar address,uchar L,uchar STR1[])
  79. {
  80. uchar i;
  81. write(0,address);
  82. for(i=0;i<L;i++)
  83. write(1,STR1[i]);
  84. }

  85. /************纯阿拉伯数字显示,参数入口:Show_dig (地址,数字)**************/

  86. void Show_dig(uchar address,uint number)
  87. {
  88. uchar shi,ge;
  89. shi=number/10;
  90. ge=number%10;
  91. write(0,address);
  92. delay100(20);
  93. write(1,dig[shi]);
  94. delay100(20);
  95. write(1,dig[ge]);
  96. }

  97. /************************************主程序**********************************/

  98. void main(void)
  99. {
  100. Init_lcd();
  101. TMOD=0X01;
  102. TH0=0xdc;
  103. TL0=0x00;
  104. ET0=1;
  105. TR0=1;
  106. EA=1;
  107. P3_6=0;
  108. delay100(30);
  109. Show(0x83,4,"梁浩"); //写数组里的内容
  110. write(0,0x0d);
  111. delay100(30);
  112. Show(0x90,16,"电子科技协会会长");
  113. delay100(30);
  114. Show(0x88,16,"TEL 152********"); //写英文
  115. delay100(30);
  116. while(1)
  117. {
  118.   Show_dig(0x99,p); //写实时数组
  119. }
  120. }

  121. void exter() interrupt 1
  122. {
  123. TH0=0xdc;
  124. TL0=0x00;
  125. t++;
  126. if(t==20)
  127. {
  128.   t=0;
  129.   p++;
  130. }
  131. if(p==60)
  132. p=0;
  133. }

  134. /***************************************end****** *****************************/
复制代码
回复

使用道具 举报

ID:524818 发表于 2019-5-2 18:44 | 显示全部楼层
复制代码,编译时出现三个错误:52  69 74 行
回复

使用道具 举报

ID:524818 发表于 2019-5-5 12:40 | 显示全部楼层
这个程序驱动的12864是带字库的吗?
回复

使用道具 举报

ID:524818 发表于 2019-5-5 16:37 | 显示全部楼层
在我的单片机运行正常了,仔细检查了一下,我的单片机定义在p3口上,程序中定义为p1口,改过来好了,学习了,谢谢!
回复

使用道具 举报

ID:513419 发表于 2019-5-7 10:07 | 显示全部楼层
屏幕显示不了东西呀,一片白是为什么呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表