找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4956|回復: 4
打印 上一主題 下一主題
收起左側(cè)

LCD1602顯示字符亂碼!望大神們指點迷津

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:244633 發(fā)表于 2017-11-1 14:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
程序如下:#define RS_CLEAR      GpioDataRegs.GPACLEAR.bit.GPIO30
#define RS_SET        GpioDataRegs.GPASET.bit.GPIO30
#define RW_CLEAR      GpioDataRegs.GPACLEAR.bit.GPIO4
#define RW_SET        GpioDataRegs.GPASET.bit.GPIO4
#define E_SET         GpioDataRegs.GPASET.bit.GPIO5
#define E_CLEAR       GpioDataRegs.GPACLEAR.bit.GPIO5
#define D0_SET        GpioDataRegs.GPASET.bit.GPIO18
#define D0_CLEAR      GpioDataRegs.GPACLEAR.bit.GPIO18
#define D1_SET        GpioDataRegs.GPASET.bit.GPIO19
#define D1_CLEAR      GpioDataRegs.GPACLEAR.bit.GPIO19
#define D2_SET        GpioDataRegs.GPASET.bit.GPIO20
#define D2_CLEAR      GpioDataRegs.GPACLEAR.bit.GPIO20
#define D3_SET        GpioDataRegs.GPBSET.bit.GPIO59
#define D3_CLEAR      GpioDataRegs.GPBCLEAR.bit.GPIO59
#define D4_SET        GpioDataRegs.GPBSET.bit.GPIO60
#define D4_CLEAR      GpioDataRegs.GPBCLEAR.bit.GPIO60
#define D5_SET        GpioDataRegs.GPBSET.bit.GPIO61
#define D5_CLEAR      GpioDataRegs.GPBCLEAR.bit.GPIO61
#define D6_SET        GpioDataRegs.GPBSET.bit.GPIO58
#define D6_CLEAR      GpioDataRegs.GPBCLEAR.bit.GPIO58
#define D7_SET        GpioDataRegs.GPCSET.bit.GPIO68
#define D7_CLEAR      GpioDataRegs.GPCCLEAR.bit.GPIO68





unsigned int DB; void LCD_change()
{
    if((DB&0x01)==0x01)
            D0_SET=1;
                else
                D0_CLEAR=1;
    if((DB&0x02)==0x02)
            D1_SET=1;
                else
                D1_CLEAR=1;
    if((DB&0x04)==0x04)
            D2_SET=1;
                else
                D2_CLEAR=1;
    if((DB&0x08)==0x08)
            D3_SET=1;
                else
                D3_CLEAR=1;
    if((DB&0x10)==0x10)
            D4_SET=1;
                else
                D4_CLEAR=1;
    if((DB&0x20)==0x20)
            D5_SET=1;
                else
                D5_CLEAR=1;
    if((DB&0x40)==0x40)
            D6_SET=1;
                else
                D6_CLEAR=1;
    if((DB&0x80)==0x80)
            D7_SET=1;
                else
                D7_CLEAR=1;
                  }
void init_LCD1602()
{
   DELAY_US(15000);               //yanshi15ms
//   LCD_write_command(0x38);
//   DELAY_US(5000);
//   LCD_write_command(0x38);
//   DELAY_US(5000);
//   LCD_write_command(0x38);
   LCD_write_command(0x38);
   DELAY_US(5000);
   LCD_write_command(0x08);
   DELAY_US(5000);
   LCD_write_command(0x01);
   DELAY_US(5000);
   LCD_write_command(0x06);
   DELAY_US(5000);
   LCD_write_command(0x0c);
   DELAY_US(5000);
}

void LCD_write_command(uchar command)
{  
  E_CLEAR=1;
  RS_CLEAR=1;
  //RW_CLEAR=1;
  DB=command;
  DELAY_US(500);
  E_SET=1;
  DELAY_US(1000);
  E_CLEAR=1;
}


void LCD_write_dat(uchar dat)
{
  E_CLEAR=1;
  RS_SET=1;
  //RW_CLEAR=1;
  DB=dat;
  DELAY_US(500);
  E_SET=1;
  DELAY_US(1000);
  E_CLEAR=1;
}

void LCD_1602()
{
   init_LCD1602();
   LCD_write_command(0x80);
   LCD_write_dat('A');
//   while(1);

   }




QQ圖片20171101143753.jpg (465.36 KB, 下載次數(shù): 89)

QQ圖片20171101143753.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:244633 發(fā)表于 2017-11-1 14:42 | 只看該作者
照片拍攝有問題,在第一行的第二格顯示了亂碼
回復

使用道具 舉報

板凳
ID:111634 發(fā)表于 2017-11-1 18:49 | 只看該作者
本帖最后由 zl2168 于 2017-11-1 18:51 編輯

實例67  LCD1602顯示屏顯示
Proteus仿真一下,確認有效。
實例61 LCD1602顯示屏顯示.rar (49.26 KB, 下載次數(shù): 14)


若需改變1602顯示內(nèi)容,只須將需顯示的內(nèi)容用ASCII碼寫入顯示數(shù)組,即可。
以上摘自張志良編著《80C51單片機仿真設(shè)計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1。書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復

使用道具 舉報

地板
ID:241829 發(fā)表于 2017-11-1 19:13 | 只看該作者
重寫一遍
回復

使用道具 舉報

5#
ID:150793 發(fā)表于 2017-11-1 20:43 | 只看該作者
樓主用的什么單片機,看著這么牛!
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表