找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2743|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

關(guān)于lcd1602亂碼問題求解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:377611 發(fā)表于 2018-11-15 11:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是我的程序
初始接上1602顯示沒有問題
但是稍微一動(dòng)板子
就會(huì)亂碼 出現(xiàn)一些其他的字符,請問是什么原因
謝謝大家

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define Data  P2    //??????
  6. uchar  FirstLine[] ="123";  //?????????
  7. uchar  SecondLine[]="nihao";   //?????????
  8. sbit RW=P3^3;//?????????????lcd1602??????//
  9. sbit RS=P3^2;
  10. sbit E=P3^4;
  11. void delay(uchar ms)   // ???????ms????
  12. {
  13. uchar i,j;
  14. for(i=ms;i>0;i--)
  15. for(j=100;j>0;j--);
  16. }
  17. void DelayUs(unsigned char us)  //--???????
  18. {
  19. unsigned char uscnt;
  20. uscnt=us>>1;        /*12MHz???*/
  21. while(--uscnt);
  22. }
  23. void DelayMs(unsigned char ms)
  24. {
  25. while(--ms)
  26.    {
  27.      DelayUs(250);
  28.      DelayUs(250);
  29.   DelayUs(250);
  30.   DelayUs(250);
  31.    }
  32. }
  33. void lcd_write_com(uchar c)    //д????
  34. {
  35. DelayMs(5);//???????????????????????
  36. E=0;
  37. RS=0;
  38. RW=0;
  39. _nop_();
  40. E=1;
  41. Data=c;
  42. E=0;
  43. }
  44. void lcd_write_dat(uchar c)    //д????
  45. {
  46. DelayMs(5);  //???????????????????????
  47. E=0;
  48. RS=1;
  49. RW=0;
  50. _nop_();
  51. E=1;
  52. Data=c;
  53. E=0;
  54. RS=0;
  55. }
  56. void lcd_init()    //LCD?????
  57. {
  58. DelayMs(15);
  59. lcd_write_com(0x38); //display mode
  60. lcd_write_com(0x38); //display mode
  61. lcd_write_com(0x38); //display mode
  62. lcd_write_com(0x06); //?????????λ??
  63. lcd_write_com(0x0c); //??????????????
  64. lcd_write_com(0x01); //???????
  65. }
  66. void ShowChar(uchar pos,uchar c)  //??????????
  67. {
  68. unsigned char p;
  69. if (pos>=0x10)
  70.     p=pos+0xb0; //????????????????4λ?0xc
  71. else
  72.     p=pos+0x80; //????????????????4λ?0x8
  73. lcd_write_com(p);//д????
  74. lcd_write_dat(c);   //д????
  75. }
  76. void ShowString (uchar line,char *ptr)   //????????
  77. {
  78. unsigned char l,*p;
  79. p=ptr;
  80. l=line<<4;
  81. while((*p)!='\0')
  82.   {
  83.     ShowChar(l++,*(p));
  84. p++;
  85.   }
  86. }
  87. void disp(void)    //??????????????????
  88. {
  89. ShowString(0,FirstLine);
  90. ShowString(1,SecondLine);
  91. }
  92. void main()
  93. {

  94. lcd_init();
  95. delay(50);
  96. while(1){
  97.   disp();
  98.     }
  99. }
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:358930 發(fā)表于 2018-11-15 12:16 | 只看該作者
你這程序有數(shù)據(jù)口判忙程序嗎?找個(gè)標(biāo)準(zhǔn)例程看看唄,沒有判忙,一動(dòng)板子并口通信時(shí)數(shù)據(jù)不得丟幾個(gè)呀。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表