久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1943|回復: 0
收起左側

用HC89S105C8單片機驅動串行LCD1602 附程序

[復制鏈接]
ID:316245 發表于 2020-11-22 15:03 | 顯示全部樓層 |閱讀模式
驅動串行LCD1602
    手頭有一塊HC89S105C8開發板, 打算做一個電容測試器. 首先需要連接和驅動1602LCD顯示屏, 由于開發板上的引出端口并不連續, 如圖01所示, 如果用8位數據線的話, 接線將十分不方便. 因此使用了帶PCF8574驅動的1602顯示屏.

HC89S105C8開發板端口

HC89S105C8開發板端口
    考慮到HC89S105系列單片機端口具有多種輸入輸出配置方式的特點, 本程序的開發關鍵在于端口的配置處理上.

   1. 配置時, 首先需要定義IIC通訊端口:
    sbitIIC_SDA = P1^7;
    sbitIIC_SCL = P3^0;

   2. 然后, 配置端口的輸入輸出定義:
    //端口輸入輸出控制定義
    #defineSetSclOut  P3M0 = P3M0 & Bin(11110000)   | Bin(00001000)     //IIC_SCL(P3_0)端口為推挽輸出
    #defineSetSdaOut  P1M3 = P1M3 & Bin(00001111)   | Bin(10000000)     //IIC_SDA(P1_7)端口為推挽輸出
    #defineSetSdaOutOD    P1M3 = P1M3 &Bin(00001111)   | Bin(10100000)     //IIC_SDA(P1_7)端口為帶上拉開漏輸出
    由于SDA數據線在發送數據后需要讀取應答脈沖, 所以還需要設置輸入方向
    #defineSetSdaIn    P3M1 = P3M1 &Bin(00001111)   | Bin(01100000)     //IIC_SDA(P3_1)端口為帶上拉輸入

    3.在控制程序中, 需要設置端口為輸出方向時, 只要直接輸入以下指令即可:
    SetSclOut;
    SetSdaOut;SetSdaOutOD;

   4. SDA數據線在發送數據后需要讀取應答脈沖時, 設置為:
    SetSdaIn;
    讀取完成后, 再重新設置到輸出方式:
    SetSdaOut;SetSdaOutOD;

    程序中, 為了使顯示數據美觀和符合習慣, 還設置了顯示數據高位無效零消除程序:
//-------------------------------------------------------------------
//按指定位置(,)顯示一個Int數字
void LCD_DispInt(unsigned char Col,unsigned char Row, unsigned int Numb)
{
       unsignedchar i;

       BreakInt(Numb);
/*
       //全部顯示方式
       for(i= 0; i < 5; i++)
       {
              LCD_DispChar(Col+i,Row, One[ i]+48);
       }
*/
       //無效零消除模式
       if(One[0]==0)
                     LCD_DispChar(Col+0,Row, ' ');
       else  LCD_DispChar(Col+0, Row, One[0]+48);

       if(One[0]==0&& One[1]==0)
                     LCD_DispChar(Col+1,Row, ' ');
       else  LCD_DispChar(Col+1, Row, One[1]+48);

       if(One[0]==0&& One[1]==0 && One[2]==0)
                     LCD_DispChar(Col+2,Row, ' ');
       else  LCD_DispChar(Col+2, Row, One[2]+48);

       if(One[0]==0&& One[1]==0 && One[2]==0 && One[3]==0)
                     LCD_DispChar(Col+3,Row, ' ');
       else  LCD_DispChar(Col+3, Row, One[3]+48);

       LCD_DispChar(Col+4,Row, One[4]+48);
}

//----------------------------------------------------------------------------
//分解Int數為單個整數數組
void BreakInt(unsigned int iNum)
{
       One[0]= (unsigned char)(iNum / 10000);
       iNum= iNum % 10000;
       One[1]= (unsigned char)(iNum / 1000);
       iNum= iNum % 1000;
       One[2]= (unsigned char)(iNum / 100);
       iNum= iNum % 100;
       One[3]= (unsigned char)(iNum / 10);
       One[4]= (unsigned char)(iNum % 10);
}

    這樣, 當顯示數值的最高位等于零時, 顯示屏就自動消除了.
圖02.jpg

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线免费观看 | 亚洲 精品 综合 精品 自拍 | 国产精品揄拍一区二区 | 久久av一区二区三区 | 国产视频观看 | 精品一区国产 | 亚洲精品日韩欧美 | 九九热精品在线视频 | 91精品久久久 | 久久精品亚洲一区二区三区浴池 | 国产一区二区三区精品久久久 | 精品一级电影 | 日韩成人精品视频 | 一级毛片在线播放 | 在线免费观看日本视频 | 在线看91 | 久久久久国产视频 | 亚洲欧美自拍偷拍视频 | 日韩中文在线观看 | 在线免费黄色小视频 | 国产精品麻 | 午夜视频在线播放 | 久久国产精品久久国产精品 | 中文字幕一区在线观看视频 | 欧美精品日韩精品 | 黄视频网站在线 | av黄色免费 | 大久| 国产区免费视频 | 中文字幕在线网 | 久久久久久亚洲 | 涩涩视频网站在线观看 | 久久艹免费视频 | 国产1区2区在线观看 | 99草免费视频 | 国产精品美女在线观看 | 少妇一级淫片aaaaaaaaa | 一区二区三区四区免费在线观看 | 精国产品一区二区三区 | 久久精品国产精品青草 | 久久久久亚洲 |