找回密码
 立即注册

QQ登录

只需一步,快速开始

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

能帮我看下单片机程序哪错了吗?求帮助

[复制链接]
跳转到指定楼层
楼主
ID:839531 发表于 2020-12-27 13:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar table[] = "Hello everyone!";
  5. uchar table1[] = "Welcome to here!";
  6. uchar num;
  7. void main(void)
  8. {
  9.   unsigned char i;
  10.         for(i=0;i<16;i++)
  11.         {
  12.                 LcdWriteData(uchar [i]);
  13.         }
  14.         
  15.          while(1);   
  16. }
  17. void Lcd1602_Delay1ms(uint c)
  18. {
  19.         uchar a,b;
  20.         for(;c>0;c--)
  21.         {
  22.                 for(b=199;b>0;b--)
  23.                         {
  24.                                 for(a=1;a>0;a--);
  25.                         }
  26.         }
  27. }
  28. #ifndef LCD1602_4PINS
  29. void LcdWriteCom(uchar com)
  30. {
  31.         LCD1602_E=0;
  32.         LCD1602_RS=0;
  33.         LCD1602_RW=0;
  34.         LCD1602_DATAP=com;
  35.         Lcd1602_Delay1ms(1);
  36.         LCD1602_E=1;
  37.         Lcd1602_Delay1ms(10);
  38.         LCD1602_E=0;
  39. }
  40. #else
  41. void LcdWriteCom(uchar com)
  42. {
  43.         LCD1602_E=0;
  44.         LCD1602_RS=0;
  45.         LCD1602_RW=0;
  46.         LCD1602_DATAPINS=com;
  47.         LCD1602_Delay(1);
  48.         LCD1602_E=1;
  49.         lcd1602_Delay1ms(10);
  50.         LCD1602_E=0;
  51.         lcd1602_Delay1ms(1);
  52.         LCD1602_DATAPINS=com<<4;
  53.         Lcd1602_Delay1ms(1);
  54.         LCD1602_E=1;
  55.         Lcd1602_Delay1ms(10);
  56.         LCD1602_E=0;
  57. }
  58. #endif
  59. #ifndef LCD1602_4PINS
  60. void LcdWriteData(uchar dat)
  61. {
  62.         LCD1602_E=0;
  63.         LCD1602_RS=1;
  64.         LCD1602_RW=0;
  65.         LCD1602_DATAPINS=dat;
  66.         LCD1602_Delay1ms(1);
  67.         LCD1602_E=1;
  68.         LCD1602_Delay1ms(10);
  69.         LCD1602_E=0;
  70. }
  71. #else
  72. void LcdWriteData(uchar dat)
  73. {
  74.         LCD1602_E=0;
  75.         LCD1602_RS=1;
  76.         LCD1602_RW=0;
  77.         LCD1602_DATAPINS=dat;
  78.         Lcd1602_Delay1ms(1);
  79.         LCD1602_E=1;
  80.         Lcd1602_Delay1ms(10);
  81.         LCD1602_E=0;
  82.         LCD1602_DATAPINS=dat<<4;
  83.         Lcd1602_Delay1ms(1);
  84.         LCD1602_E=1;
  85.         Lcd1602_Delay1ms(10);
  86.         LCD1602_E=0;
  87. }
  88. #endif
  89. #ifndef LCD1602_4PINS
  90. void LcdInit()
  91. {
  92.         LcdWriteCom(0x38);
  93.         LcdWriteCom(0x0c);
  94.         LcdWriteCom(0x06);
  95.         LcdWriteCom(0x01);
  96.         LcdWriteCom(0x80);
  97. }
  98. #else
  99. void LcdInit()
  100. {
  101.         LcdWriteCom(0x32);
  102.         LcdWriteCom(0x28);
  103.         LcdWriteCom(0x0c);
  104.         LcdWriteCom(0x06);
  105.         LcdWriteCom(0x01);
  106.         LcdWriteCom(0x80);
  107. }
  108. #endif
  109. #ifndef _LCD_H_
  110. #define _LCD_H_
  111. #define LCD1602_4PINS
  112. #include<reg52.h>
  113. #ifdef uchar
  114. #define uchar unsigned char
  115. #endif
  116. #ifndef uint
  117. #define uint unsigned int
  118. #endif
  119. #define LCD1602_DATAPINS P0
  120. sbit LCD1602_E=P2^2;
  121. sbit LCD1602_RW=P2^1;
  122. sbit LCD1602_RS=P2^0;
  123. void LCD1602_Delay1ms(uint c);
  124. void LcdWriteCom(uchar Com);
  125. void LcdWriteDaTa(uchar dat);
  126. void LcdInit();
  127. #endif
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2020-12-27 15:20 | 只看该作者
编译器提示的什么错误?
回复

使用道具 举报

板凳
ID:814525 发表于 2020-12-27 19:58 | 只看该作者
1.LcdWriteData(uchar [i]);这条语句不对,应该是LcdWriteData(table [i]);或者LcdWriteData(table1 [i]);
2.另外主程序要先对LCD初始化,再启动显示
3.很多程序放值位置不对,应该函数声明及宏定义在前,函数在后。你基本上全反了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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