找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2057|回复: 3
打印 上一主题 下一主题
收起左侧

液晶只显示黑块,请·大家帮我看看程序,谢谢了

[复制链接]
跳转到指定楼层
楼主
ID:115690 发表于 2016-5-9 23:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>   
  2. #include<intrins.h>
  3. typedef unsigned char uchar;
  4. typedef unsigned char uint;
  5. unsigned char code table[]= {"Temp wireless   "};
  6. unsigned char code table1[]={"Temp:           "};
  7. unsigned char code shuzi[]={"123456789ABCDEFG"};

  8. unsigned char num;      
  9. sbit rs=P1^2;//LCD数据/命令选择端(H/L)
  10. sbit rw=P1^1;//LCD读/写选择端(H/L)
  11. sbit en=P1^0;//LCD使能控制

  12. /*******************************************************************************
  13. 以下是对液晶模块的操作程序
  14. *******************************************************************************/
  15. /***********1602液晶显示部分子程序****************/
  16. void ready()
  17. {
  18.         P0=0xff;
  19.         rs=0;  //RS(H/L),低电平选择命令
  20.         rw=1;  //RW(H/L),读操作
  21.         en=1;
  22.         while(P0&0x80);  //当为0时表示不忙,退出循环。
  23.         en=0;
  24. }
  25. void write_com(uchar com)
  26. {
  27.         ready();
  28.         rs=0;//命令
  29.         rw=0;
  30.         P0=com;
  31.         en=1;//ready()执行完后,en为0。形成高脉冲,表示可对液晶读写。
  32.         en=0;
  33. }
  34. void write_date(uchar date)
  35. {
  36.         ready();
  37.         rs=1;//数据
  38.         rw=0;
  39.         P0=date;
  40.         en=1;//ready()执行完后,en为0。形成高脉冲,表示可对液晶读写。
  41.         en=0;
  42. }

  43. /**************************************************
  44. 函数功能:主函数
  45. ***************************************************/
  46. void main(void)
  47. {         
  48.           en=0;
  49.           P0=0xff;

  50.         write_com(0x38);        //设置工作方式
  51.         write_com(0x0c);        //设置光标
  52.         write_com(0x06);        //设置输入方式
  53.         write_com(0x01);        //清屏
  54.         write_com(0x80);
  55.           for(num=0;num<16;num++)
  56.         {
  57.            write_date(shuzi[num]);
  58.         }
  59.         while(1);
  60. }//      
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:103952 发表于 2016-5-26 22:45 | 只看该作者
对1602的操作部分,最好在每执行完一条指令后加个延时,比如delay(5);(具体延时程序我就不说了)延时一小会儿,让1602准备接收数据
回复

使用道具 举报

板凳
ID:103952 发表于 2016-5-26 22:46 | 只看该作者
lcdrs=1;

lcdrw=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;
就像这样,每个后面都加个延时。
回复

使用道具 举报

地板
ID:115690 发表于 2016-5-26 22:49 | 只看该作者

好的,我试试
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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