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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 26569|回復: 43
打印 上一主題 下一主題
收起左側

單片機加個PCF8574模塊,實現IIC方式驅動LCD1602

  [復制鏈接]
跳轉到指定樓層
樓主
PCF8574模塊使實現IIC驅動LCD1602成為現實。

下圖是PCF8574模塊與1602的連接電路圖:

實物接法如下:
想要使用PCF8574模塊來實現IIC驅動LCD1602,首先非常必要弄清楚IIC的時序、PCF8574設備地址、四線控制LCD1602方法。
下面是兩個重要的h文件。通過修改這兩個h文件中的部分代碼(接線有所不同)即可移植到你的程序中去。

單片機源程序如下:
  1. void delay1(uchar x)
  2. {
  3.         uchar a,b;
  4.         for(a=x;a>0;a--)
  5.          for(b=200;b>0;b--);
  6. }

  7. void write_com(uchar com)                //寫命令函數
  8. {        uchar com1,com2;
  9.         com1=com|0x0f;
  10.         write_add(com1&0xfc);
  11.         delay1(2);
  12.     write_add(com1&0xf8);
  13.         com2=com<<4;
  14.         com2=com2|0x0f;
  15.         write_add(com2&0xfc);
  16.         delay1(2);
  17.     write_add(com2&0xf8);
  18.        
  19. }

  20. void write_date(uchar date)                //寫數據函數
  21. {
  22.         uchar date1,date2;
  23.         date1=date|0x0f;
  24.         write_add(date1&0xfd);
  25.         delay1(2);
  26.         write_add(date1&0xf9);
  27.         date2=date<<4;
  28.         date2=date2|0x0f;
  29.         write_add(date2&0xfd);
  30.         delay1(2);
  31.         write_add(date2&0xf9);
  32.                
  33. }

  34. void init_lcd()                                        //初始化函數
  35. {                                                                                                 
  36.         write_com(0x33); //顯示模式設置
  37.         delayms(6);
  38.         write_com(0x32); //顯示模式設置
  39.         delayms(6);
  40.         write_com(0x28); //4位總線,雙行顯示,顯示5×7的點陣字符
  41.         delayms(6);
  42.         write_com(0x01); //清屏
  43.         delayms(6);
  44.         write_com(0x06); //字符進入模式:屏幕不動,字符后移
  45.         delayms(6);
  46.         write_com(0x0c); //顯示開,關光標
  47.         //write_LCD_Command(0x0f); //顯示開,開光標,光標閃爍
  48.         delayms(6);
  49. }

  50. //顯示字符串:第x行第y列顯示什么內容
  51. void ShowString(unsigned char x,unsigned char y,unsigned char *str)
  52. {
  53.        
  54.         if(x == 1)
  55.         {
  56.                 write_com(0x80 | y-1);
  57.         }
  58.         if(x == 2)
  59.         {
  60.                 write_com(0xc0 | y-1);
  61.         }
  62.         //輸出字符串
  63.        
  64.         while(*str!='\0')
  65.         {
  66.                 write_date(*str);
  67.                 str++;
  68.         }

  69. }
復制代碼

所有資料51hei提供下載:
PCF8574 LCD1602_4.rar (685 Bytes, 下載次數: 658)
PCF8574.rar (536 Bytes, 下載次數: 444)

評分

參與人數 3黑幣 +160 收起 理由
peiyingxuan + 30 贊一個!
xinyu0000 + 30 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏14 分享淘帖 頂5 踩1
回復

使用道具 舉報

來自 2#
ID:674764 發表于 2019-12-26 17:51 | 只看該作者
我測試成功了,感謝樓主!
分享下經驗:如果是8574 寫入的地址是0X27<<1 ,如果是8574A,寫入的地址是0X3F<<1
(write_add 里面指代的是8574A)
iic的sart,stop,ack 。。。 都是通用的
回復

使用道具 舉報

板凳
ID:71233 發表于 2019-3-5 10:28 | 只看該作者
補個實物連接圖:
回復

使用道具 舉報

地板
ID:216839 發表于 2019-4-19 17:26 | 只看該作者
看到里面的內容了,一個函數一個壓縮包
回復

使用道具 舉報

5#
ID:465596 發表于 2019-6-23 17:09 | 只看該作者
謝謝分享,不好一點就是分成兩包
回復

使用道具 舉報

6#
ID:66287 發表于 2019-6-24 08:17 | 只看該作者
謝謝樓主分享,但實際中毫無意義。淘寶上IIC方式驅動的LCD1602屏就8元多,比這個模塊貴不了多少。好用多了!
回復

使用道具 舉報

7#
ID:568561 發表于 2019-7-9 22:05 | 只看該作者
void delay1(uchar x)
{
        uchar a,b;
        for(a=x;a>0;a--)
         for(b=200;b>0;b--);
}

void write_com(uchar com)                //寫命令函數
{        uchar com1,com2;
        com1=com|0x0f;
        write_add(com1&0xfc);
        delay1(2);
    write_add(com1&0xf8);
        com2=com<<4;
        com2=com2|0x0f;
        write_add(com2&0xfc);
        delay1(2);
    write_add(com2&0xf8);
       
}

void write_date(uchar date)                //寫數據函數
{
        uchar date1,date2;
        date1=date|0x0f;
        write_add(date1&0xfd);
        delay1(2);
        write_add(date1&0xf9);
        date2=date<<4;
        date2=date2|0x0f;
        write_add(date2&0xfd);
        delay1(2);
        write_add(date2&0xf9);
               
}

void init_lcd()                                        //初始化函數
{                                                                                                 
        write_com(0x33); //顯示模式設置
        delayms(6);
        write_com(0x32); //顯示模式設置
        delayms(6);
        write_com(0x28); //4位總線,雙行顯示,顯示5×7的點陣字符
        delayms(6);
        write_com(0x01); //清屏
        delayms(6);
        write_com(0x06); //字符進入模式:屏幕不動,字符后移
        delayms(6);
        write_com(0x0c); //顯示開,關光標
        //write_LCD_Command(0x0f); //顯示開,開光標,光標閃爍
        delayms(6);
}

//顯示字符串:第x行第y列顯示什么內容
void ShowString(unsigned char x,unsigned char y,unsigned char *str)
{
       
        if(x == 1)
        {
                write_com(0x80 | y-1);
        }
        if(x == 2)
        {
                write_com(0xc0 | y-1);
        }
        //輸出字符串
       
        while(*str!='\0')
        {
                write_date(*str);
                str++;
        }

}
這就是 高級貨
回復

使用道具 舉報

8#
ID:564867 發表于 2019-7-10 03:12 | 只看該作者
厲害 高手
回復

使用道具 舉報

9#
ID:282095 發表于 2019-7-10 09:18 | 只看該作者
I2C通訊啊
回復

使用道具 舉報

10#
ID:198286 發表于 2019-7-30 11:40 | 只看該作者
正要做這個,軟件很好
回復

使用道具 舉報

11#
ID:104472 發表于 2019-10-20 21:41 | 只看該作者
能驅動就好,麻煩能告訴下,哪句是PCF8574地址句。
回復

使用道具 舉報

12#
ID:461060 發表于 2019-12-1 19:25 | 只看該作者
write_add函數沒有啊
回復

使用道具 舉報

13#
ID:343874 發表于 2019-12-12 21:10 | 只看該作者
淘寶店家給的例程是arduino的,直接調用現成的庫,也是醉了,到論壇里來看看有沒有能用的程序
回復

使用道具 舉報

14#
ID:674764 發表于 2019-12-26 17:34 | 只看該作者
這段代碼可行嗎,有人成功嗎?
里面的 write_byte 有疑問
回復

使用道具 舉報

15#
ID:684573 發表于 2020-1-10 13:16 | 只看該作者
先看看,正在用這個模塊。
回復

使用道具 舉報

16#
ID:684573 發表于 2020-1-20 09:34 | 只看該作者
有現成的,懶得自己寫協議轉換程序了。
回復

使用道具 舉報

17#
ID:159575 發表于 2020-2-28 14:53 來自手機 | 只看該作者
bhjyqjs 發表于 2019-6-24 08:17
謝謝樓主分享,但實際中毫無意義。淘寶上IIC方式驅動的LCD1602屏就8元多,比這個模塊貴不了多少。好用多了 ...

那個寶上買的就是這個東西的成品。
回復

使用道具 舉報

18#
ID:224006 發表于 2020-3-5 21:32 | 只看該作者
2個文件都需要?
回復

使用道具 舉報

19#
ID:71233 發表于 2020-3-25 08:11 | 只看該作者
jiajuntao 發表于 2019-10-20 21:41
能驅動就好,麻煩能告訴下,哪句是PCF8574地址句。

void write_iic(uchar date1)//寫入數據到IO    中的
      write_byte(0x7e); //8574A地址,寫數據

uchar read_iic()//向IO讀取數據  中的
      write_byte(0x7f); //8574A地址,寫數據
回復

使用道具 舉報

20#
ID:67274 發表于 2020-4-1 00:51 | 只看該作者
確實不錯,void write_add(uchar date1)//寫入數據到IO
{
        start();
//        write_byte(0x7e); 0X3F<<1   0x7e 8574A芯片
        write_byte(0x4e); //bin(0x27<<1) 0x4e 8574 芯片
        respons();
        write_byte(date1);
        respons();
        stop();
}
回復

使用道具 舉報

21#
ID:723160 發表于 2020-4-6 10:55 | 只看該作者
真好用感謝感謝
回復

使用道具 舉報

22#
ID:89217 發表于 2020-4-20 21:14 | 只看該作者
真好,要啥來啥,我都懷疑我被監控了,謝謝
回復

使用道具 舉報

23#
ID:733339 發表于 2020-5-10 14:27 來自手機 | 只看該作者
這個是只需要該pcf8574的地址然后直接運行就可以了嗎
回復

使用道具 舉報

24#
ID:751512 發表于 2020-5-14 16:34 | 只看該作者
STC12C5A60S2 打死也調試不出來。瘋了
回復

使用道具 舉報

25#
ID:60263 發表于 2020-5-22 14:46 | 只看該作者
剛買子這個模塊測試下
回復

使用道具 舉報

26#
ID:769393 發表于 2020-6-4 20:09 | 只看該作者
ytzmoonunit 發表于 2019-12-26 17:51
我測試成功了,感謝樓主!
分享下經驗:如果是8574 寫入的地址是0X27

還好你提醒,要不然我怎么都調試不通。
回復

使用道具 舉報

27#
ID:510861 發表于 2020-7-30 19:40 | 只看該作者
1602  老是搞不定   不知道哪里問題
回復

使用道具 舉報

28#
ID:760449 發表于 2020-8-19 17:01 | 只看該作者
感謝樓主分享,現在就試一下
回復

使用道具 舉報

29#
ID:878236 發表于 2021-1-16 21:21 | 只看該作者
感謝樓主分享,剛入了這轉接板,現在就試一下
回復

使用道具 舉報

30#
ID:89528 發表于 2021-2-16 22:09 | 只看該作者
借用樓主程序,用STC15W408單片機測試了一下,現把完整的測試工程文件分享一下

PCF8574+1602.rar

28.43 KB, 下載次數: 80, 下載積分: 黑幣 -5

回復

使用道具 舉報

31#
ID:748788 發表于 2021-2-17 16:03 | 只看該作者
請問pcf8574+1602可以用proteus仿真嗎?
回復

使用道具 舉報

32#
ID:471579 發表于 2021-4-28 12:21 | 只看該作者
正在看這個,但是沒有點亮,在找找看是啥原因
回復

使用道具 舉報

33#
ID:837828 發表于 2021-4-28 12:29 | 只看該作者
謝謝,51hei真好用
回復

使用道具 舉報

34#
ID:947166 發表于 2021-6-30 16:42 | 只看該作者
hunterfox 發表于 2020-5-14 16:34
STC12C5A60S2 打死也調試不出來。瘋了

老哥,我也用的60s2,同樣調不出來,你知道什么問題了嗎
回復

使用道具 舉報

35#
ID:947166 發表于 2021-6-30 16:43 | 只看該作者
tomsmiss123 發表于 2021-4-28 12:21
正在看這個,但是沒有點亮,在找找看是啥原因

找到原因了么,我也是沒有輸出顯示
回復

使用道具 舉報

36#
ID:947166 發表于 2021-6-30 16:46 | 只看該作者
請教一下,我也用的這個模塊,單片機用的stc12C5A60S2, lcd是1602A,用您的程序調試,沒用結果,地址我改的0x27,不過換了其他的也沒用
回復

使用道具 舉報

37#
ID:137736 發表于 2021-7-2 23:23 | 只看該作者
謝謝樓主,有用
回復

使用道具 舉報

38#
ID:994649 發表于 2021-12-20 14:12 | 只看該作者
不是SCL對應15,SDA對應14嗎
回復

使用道具 舉報

39#
ID:383215 發表于 2022-9-5 13:03 | 只看該作者
非常感謝樓主的無私奉獻!按照樓主的程序,稍加修改,立即成功!
之前用一片CD4094成功驅動LCD1602,這次我只要把8574驅動I/O口的試驗做成功就可以了。



拆掉洞洞板之前做試驗的兩片74HC595,留下LED和電阻,加上8574,我用的是雙列直插PCF8574P,經過試驗發現,PCF8574P的I/O口驅動能力較弱,通過1K電阻驅動LED,亮度只有一點點,遠遠達不到CD4094和74HC595的驅動能力,估計驅動LCD1602問題不大,畢竟PCF8574P的I/O口是雙向I/O口。之所以用PCF8574P,是因為PCF8574P才一塊多錢一片,需要注意的是,PCF8574P 13腳INT不能直接接VCC,必須通過電阻才能接VCC,否則芯片發燙。!
單片機用的是STC8H1K08,PCF8574P雙列直插的寫地址是0x40,STC8H1K08用的IRC是1.2M,注釋掉所有的delay( ),程序運行照樣正常,經過試驗,IRC為5M,程序正常,IRC為6M,程序不正常, delay( )替換成一個_nop_ ( ) 應該就可以了,那么IRC為12M,估計要替換兩個到三個nop,程序才能正常。另外,應答部分的程序代碼沒有完全看懂,等以后用到的時候再慢慢研究和改進了。

回復

使用道具 舉報

40#
ID:1049498 發表于 2022-10-28 01:19 | 只看該作者
hunterfox 發表于 2020-5-14 16:34
STC12C5A60S2 打死也調試不出來。瘋了

我也是,請問調試出來了么
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 自拍第1页 | 国产午夜精品理论片a大结局 | 成人在线观看欧美 | 人人干人人爽 | 精品不卡 | 久久成人一区 | 国产欧美日韩在线播放 | 三级在线视频 | 欧美日韩在线一区二区 | 成人一区二区视频 | 国产我和子的乱视频网站 | 毛片av免费在线观看 | 日韩视频在线观看中文字幕 | 国产精品亚洲片在线播放 | 天堂精品视频 | 99综合网| 精品国产一区二区三区观看不卡 | 久久综合伊人一区二区三 | 色影视| 日韩看片| 美女黄频 | 成人av一区二区三区 | 亚洲午夜精品一区二区三区 | 国内自拍视频在线观看 | 久久精品国产精品青草 | 国外成人在线视频网站 | 黄色大全免费看 | 中文字幕一区二区三区在线视频 | 最近日韩中文字幕 | 黄网站涩免费蜜桃网站 | 久久中文字幕一区 | 国产精品成人在线观看 | 午夜一区二区三区视频 | 日韩成人免费视频 | 国产精品久久久久久久久久 | 成人免费网站 | 69亚洲精品| 麻豆久久久久久 | 羞羞的视频在线 | 黄色大片视频 | 国产综合久久久 |