找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]1602液晶显示屏显示不正确 而单片机最小系统测试没问题

[复制链接]
跳转到指定楼层
楼主
所用单片机为STC12C5A60S2,晶振11.0592M。。想用1602显示一定的字符串,结果显示不正确(相同程序和显示屏在STC89C52RC最小系统班上可以正常显示),错误显示如图所示求助,什么原因造成的,该怎么解决?


相关程序如下:

  1. u8 Disp[]="*ABCDEFGHIJKLMNO*";
  2. /*******************************************************************************
  3. * 函 数 名         : main
  4. * 函数功能                   : 主函数
  5. * 输    入         : 无
  6. * 输    出         : 无
  7. *******************************************************************************/

  8. void main(void)
  9. {
  10.         u8 i;
  11.     //P0M0=0x0B;
  12.     delay_ms(100);
  13.         LcdInit();//初始化屏幕
  14.     delay_ms(100);
  15.         for(i=0;i<32;i++)//字符读取
  16.         {
  17.                 LcdWriteData(Disp[i]);        
  18.         }
  19. //    LcdWriteCom(0x40+0x80);//第二行
  20. //    for(i=16;i<32;i++)
  21. //        {
  22. //                LcdWriteData(Disp[i]);        
  23. //        }
  24.         while(1){delay_ms(100);P05=!P05;}                        
  25. }


  26. void LcdWriteData(uchar dat)                        //写入数据
  27. {
  28.         LCD1602_E = 0;        //使能清零
  29.     delay_us(10);
  30.         LCD1602_RS = 1;        //选择输入数据
  31.     delay_us(10);
  32.         LCD1602_RW = 0;        //选择写入
  33.     delay_us(10);

  34.         LCD1602_DATAPINS = dat; //写入数据
  35. //        Lcd1602_Delay1ms(1);
  36.     delay_ms(1);

  37.         LCD1602_E = 1;   //写入时序
  38. //        Lcd1602_Delay1ms(5);   //保持时间
  39.     delay_ms(5);
  40.         LCD1602_E = 0;
  41. }


  42. void LcdWriteCom(uchar com)          //写入命令
  43. {
  44.         LCD1602_E = 0;     //使能
  45.     delay_us(1);
  46.         LCD1602_RS = 0;           //选择发送命令
  47.     delay_us(1);
  48.         LCD1602_RW = 0;           //选择写入
  49.     delay_us(1);
  50.         
  51.         LCD1602_DATAPINS = com;     //放入命令
  52. //        Lcd1602_Delay1ms(1);                //等待数据稳定
  53.     delay_ms(1);

  54.         LCD1602_E = 1;                  //写入时序
  55. //        Lcd1602_Delay1ms(5);          //保持时间
  56.     delay_ms(5);

  57.         LCD1602_E = 0;
  58. }


  59. void LcdInit()                                                  //LCD初始化子程序
  60. {
  61.     LcdWriteCom(0x38);  //开显示,两行
  62.         LcdWriteCom(0x0c);  //开显示不显示光标
  63.         LcdWriteCom(0x06);  //写一个指针加1 LcdWriteCom(0x07);  //滚动
  64.         LcdWriteCom(0x01);  //清屏
  65.         LcdWriteCom(0x80);  //设置数据指针起点
  66. }
复制代码



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

使用道具 举报

沙发
ID:224177 发表于 2017-11-12 13:03 | 只看该作者
有没有大神?求指教!挺急的
回复

使用道具 举报

板凳
ID:69311 发表于 2017-11-12 21:53 | 只看该作者
一个是1T一个12T的,要改延时
回复

使用道具 举报

地板
ID:224177 发表于 2017-11-16 19:50 来自手机 | 只看该作者
zlgmo 发表于 2017-11-12 21:53
一个是1T一个12T的,要改延时

已经解决了,硬件问题,自己做的板子,管脚有点错位,存在漏电!延时没问题,改过了,谢谢了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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