精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

自制玩具3——單片機(jī)實(shí)現(xiàn)I2C 兩總線通信1602液晶+18B20溫度傳感顯示溫度

針對1602的液晶的學(xué)習(xí),大多數(shù)初學(xué)者都是用并行的方式來驅(qū)動(dòng),這樣需要用到大量的IO口,單片機(jī)的選型就會(huì)比較大,有點(diǎn)浪費(fèi)資源。

后來想想如果能用到單片機(jī)內(nèi)部資源I2C的串行的方式來驅(qū)動(dòng),就只用到兩個(gè)IO口即可,一個(gè)SDA,一個(gè)SCL,選擇一個(gè)8引腳的單片機(jī)就可以實(shí)現(xiàn)了。

 

下圖就是選用的一款的PIC12F系列的8引腳單片機(jī),兩個(gè)IO驅(qū)動(dòng)1602液晶,一個(gè)IO口驅(qū)動(dòng)18B20溫度傳感,總共占用3個(gè)IO口,還多兩個(gè)引腳可以干點(diǎn)別的。

當(dāng)然I2C驅(qū)動(dòng)1602液晶,還需要用到一個(gè)串行轉(zhuǎn)并行的芯片PCF8574,改芯片支持I2C,該轉(zhuǎn)換芯片也比較便宜,很容易購買到。

注意:PCF8574的8個(gè)數(shù)據(jù)口只能用到四4個(gè)數(shù)據(jù)口對接1602的高四位數(shù)據(jù)口,PCF8574剩下的四個(gè)口需要對接1602的RS位 RW位和EN使能位,所以

最終1602的驅(qū)動(dòng)方式是四總線驅(qū)動(dòng)。

希望感興趣的朋友可以探討一下。

psb

全部回復(fù)(36)
正序查看
倒序查看
2014-04-28 15:44

目測樓主原理圖為PFC+反激

0
回復(fù)
daihui713
LV.6
3
2014-04-28 15:51
@wangchuangwccc
目測樓主原理圖為PFC+反激[圖片]

呵呵 眼真尖啊  沒錯(cuò)是的  PFC+QR 

0
回復(fù)
daihui713
LV.6
4
2014-04-28 16:16

先上關(guān)鍵程序——

I2C方式,四總線驅(qū)動(dòng)1602液晶,寫指令和寫數(shù)據(jù)函數(shù)

void L1602_white_command(uchar command)

    uchar temp=0; 

    delay_us(20);          //代替忙檢測 

    temp=(command&0xF0)|0x08;    //先送高四位對應(yīng)1602高四位,同時(shí)RS=0,RW=0,EN=0 

    iic_white(temp); 

    temp|=0x04;         //拉高EN 

    iic_white(temp); 

    delay_us(20);  

    temp&=0xFB;       //拉低EN 

    iic_white(temp); 

    temp=(command<<4)|0x08;       //然后寫命令的低四位 同時(shí)RS=0,RW=0,EN=0 

    iic_white(temp); 

    temp|=0x04;         //拉高EN 

    iic_white(temp); 

    delay_us(20);  

    temp&=0xFB;       //拉低EN 

    iic_white(temp);

}

void L1602_white_data(uchar data)

       uchar temp=0; 

        delay_us(20); 

        temp=(data&0xF0)|0x09;             //先送高四位對應(yīng)1602高四位,同時(shí)RS=1,RW=0,EN=0 

        iic_white(temp); 

        temp|=0x04;          //拉高EN 

        iic_white(temp); 

        delay_us(20);  

        temp&=0xFB;       //拉低EN 

        iic_white(temp); 

        temp=(data<<4)|0x09;       //然后寫命令的低四位 同時(shí)RS=1,RW=0,EN=0 

        iic_white(temp);

         temp|=0x04;         //拉高EN

         iic_white(temp); 

        delay_us(20);  

        temp&=0xFB;       //拉低EN 

        iic_white(temp);

}

 

0
回復(fù)
2014-04-28 16:28
@wangchuangwccc
目測樓主原理圖為PFC+反激[圖片]
王工厲害呀!
0
回復(fù)
2014-04-28 16:29
@daihui713
先上關(guān)鍵程序——I2C方式,四總線驅(qū)動(dòng)1602液晶,寫指令和寫數(shù)據(jù)函數(shù)voidL1602_white_command(ucharcommand){     uchartemp=0;     delay_us(20);         //代替忙檢測     temp=(command&0xF0)|0x08;   //先送高四位對應(yīng)1602高四位,同時(shí)RS=0,RW=0,EN=0     iic_white(temp);     temp|=0x04;        //拉高EN     iic_white(temp);     delay_us(20);      temp&=0xFB;      //拉低EN     iic_white(temp);     temp=(command
思路不錯(cuò)值得借鑒!
0
回復(fù)
2014-04-28 16:31
@yueyunno1
思路不錯(cuò)值得借鑒!
戴工你這個(gè)液晶支持串口通信嗎?只接高4位就能工作!
0
回復(fù)
daihui713
LV.6
8
2014-04-28 16:51
@yueyunno1
戴工你這個(gè)液晶支持串口通信嗎?只接高4位就能工作!

樂云兄  這個(gè)本身是并口的  后面我加了一個(gè)串口轉(zhuǎn)并口的芯片 PCF8754, 這個(gè)芯片支持I2C驅(qū)動(dòng),    這個(gè)芯片只接1602的高四位, 剩下四個(gè)口需要接RS RW EN

0
回復(fù)
shenx123
LV.10
9
2014-04-28 17:02
四總線, 有什么好處啊
0
回復(fù)
daihui713
LV.6
10
2014-04-28 17:25
@shenx123
四總線,有什么好處啊

其實(shí)我單片機(jī)是I2C兩總線————對接串口轉(zhuǎn)并口芯片PCF8754——————四總線對接1602液晶數(shù)據(jù)接口,剩下四個(gè)對接1602的RS RW 和EN使能位。

其實(shí)單片機(jī)并行驅(qū)動(dòng)1602液晶需要用到11個(gè)IO口(包括8個(gè)數(shù)據(jù)口,RS RW EN共11),如果是四總線驅(qū)動(dòng)的話就可以省下個(gè)數(shù)據(jù)口,也就是說如果是并行驅(qū)動(dòng)1602液晶,采用4總線驅(qū)動(dòng),最終只需要7個(gè)IO口

當(dāng)然如果采用I2C驅(qū)動(dòng)的話就只要2個(gè)IO口,但是需要加一個(gè)串口轉(zhuǎn)并口的芯片

0
回復(fù)
2014-04-28 17:30
@daihui713
其實(shí)我單片機(jī)是I2C兩總線————對接串口轉(zhuǎn)并口芯片PCF8754——————四總線對接1602液晶數(shù)據(jù)接口,剩下四個(gè)對接1602的RSRW和EN使能位。其實(shí)單片機(jī)并行驅(qū)動(dòng)1602液晶需要用到11個(gè)IO口(包括8個(gè)數(shù)據(jù)口,RSRWEN共11),如果是四總線驅(qū)動(dòng)的話就可以省下個(gè)數(shù)據(jù)口,也就是說如果是并行驅(qū)動(dòng)1602液晶,采用4總線驅(qū)動(dòng),最終只需要7個(gè)IO口當(dāng)然如果采用I2C驅(qū)動(dòng)的話就只要2個(gè)IO口,但是需要加一個(gè)串口轉(zhuǎn)并口的芯片
明白了,1602可以用4BIT驅(qū)動(dòng)?是不是這個(gè)意思?我沒有試過!
0
回復(fù)
daihui713
LV.6
12
2014-04-28 17:35
@yueyunno1
明白了,1602可以用4BIT驅(qū)動(dòng)?是不是這個(gè)意思?我沒有試過!

呵呵 是的 可以四線驅(qū)動(dòng) 我也是最近試了才知道了    不過需要設(shè)置一下1602的控制字 把8線改成4線

0
回復(fù)
2014-04-28 21:38
@daihui713
呵呵是的可以四線驅(qū)動(dòng)我也是最近試了才知道了   不過需要設(shè)置一下1602的控制字把8線改成4線
哦  這樣我就明白了  還真沒有注意這個(gè)問題,空了也試試!
0
回復(fù)
山東大漢
LV.10
14
2014-04-28 23:17
@daihui713
呵呵眼真尖啊 沒錯(cuò)是的 PFC+QR 
做的板子真精巧, 程序如何?
0
回復(fù)
山東大漢
LV.10
15
2014-04-28 23:18
@daihui713
樂云兄 這個(gè)本身是并口的 后面我加了一個(gè)串口轉(zhuǎn)并口的芯片PCF8754,這個(gè)芯片支持I2C驅(qū)動(dòng),   這個(gè)芯片只接1602的高四位,剩下四個(gè)口需要接RSRWEN
有具體的接法圖嗎?
0
回復(fù)
daihui713
LV.6
16
2014-04-28 23:49

因?yàn)闁|西小,比較簡單,原理圖我沒有整理過,所以我都是直接焊接的調(diào)試的 ,主要就是PCF8574這個(gè)芯片要和1602液晶要對接好。

我是這樣接的:

1. PCF8574的高四位P4 P5 P6 P7 分別接1602液晶的D4 D5 D6 D7

2. PCF8574的P0 P1 P2 分別接1602液晶的RS RW EN

3.PCF8574的I2C接口SDA SCL分別對應(yīng)單片機(jī)的I2C接口SDA SCL ,PCF8574作為從機(jī),單片機(jī)找到從機(jī)地址于它通信

整個(gè)通信過程都是寫操作,沒讀的操作。

4.PCF8574的A0 A1 A2是從機(jī)的硬件地址,可以全部接地,也可以全部接VCC,只要在寫從機(jī)地址分清楚就行

0
回復(fù)
2014-04-28 23:55
@daihui713
因?yàn)闁|西小,比較簡單,原理圖我沒有整理過,所以我都是直接焊接的調(diào)試的 ,主要就是PCF8574這個(gè)芯片要和1602液晶要對接好。我是這樣接的:1.PCF8574的高四位P4P5P6P7分別接1602液晶的D4D5D6D72.PCF8574的P0P1P2分別接1602液晶的RSRWEN3.PCF8574的I2C接口SDASCL分別對應(yīng)單片機(jī)的I2C接口SDASCL,PCF8574作為從機(jī),單片機(jī)找到從機(jī)地址于它通信整個(gè)通信過程都是寫操作,沒讀的操作。4.PCF8574的A0A1A2是從機(jī)的硬件地址,可以全部接地,也可以全部接VCC,只要在寫從機(jī)地址分清楚就行[圖片]
這個(gè)科學(xué),得頂!
0
回復(fù)
daihui713
LV.6
18
2014-04-29 15:17

這是PIC單片機(jī)內(nèi)部I2C的模塊化時(shí)序函數(shù),基本上PIC單片機(jī)可以通用

void iic_white(uchar data)

    SSP1IF=0; 

    SEN=1; 

    while(!SSP1IF); 

    SSP1IF=0; 

    SSP1BUF=0x4E; 

    while(!SSP1IF); 

    SSP1IF=0; 

    //if(!ACKSTAT); 

    //else return; 

    SSP1BUF=data; 

    while(!SSP1IF); 

    SSP1IF=0; 

    //if(!ACKSTAT); 

    //else return; 

    PEN=1; 

    while(!SSP1IF); 

    SSP1IF=0;

}

0
回復(fù)
2014-04-29 15:57
@daihui713
這是PIC單片機(jī)內(nèi)部I2C的模塊化時(shí)序函數(shù),基本上PIC單片機(jī)可以通用voidiic_white(uchardata){     SSP1IF=0;     SEN=1;     while(!SSP1IF);     SSP1IF=0;     SSP1BUF=0x4E;     while(!SSP1IF);     SSP1IF=0;     //if(!ACKSTAT);     //elsereturn;     SSP1BUF=data;     while(!SSP1IF);     SSP1IF=0;     //if(!ACKSTAT);     //elsereturn;     PEN=1;     while(!SSP1IF);     SSP1IF=0;}
戴工,感謝您寫的好帖子,先頂后看!~
0
回復(fù)
心中有冰
LV.11
20
2014-04-29 17:06
雖然看不懂,但感覺好厲害的樣子
0
回復(fù)
daihui713
LV.6
21
2014-04-29 17:57
@心中有冰
雖然看不懂,但感覺好厲害的樣子

軍長,您好,您是電源網(wǎng)的標(biāo)桿,向您看齊, 單片機(jī)是我做電源6年以來的第二職業(yè),目前主業(yè)還是電源,以后還得向您請教了

0
回復(fù)
daihui713
LV.6
22
2014-04-29 17:57
@電源網(wǎng)-娜娜姐
戴工,感謝您寫的好帖子,先頂后看!~

感謝支持,共同學(xué)習(xí)!

0
回復(fù)
心中有冰
LV.11
23
2014-04-29 19:34
@daihui713
軍長,您好,您是電源網(wǎng)的標(biāo)桿,向您看齊,單片機(jī)是我做電源6年以來的第二職業(yè),目前主業(yè)還是電源,以后還得向您請教了
兄弟過譽(yù)了。單片機(jī)我是門外漢,以后有問題可能還要向你請教呢。
0
回復(fù)
cltwolf
LV.5
24
2014-05-05 21:34
@wangchuangwccc
目測樓主原理圖為PFC+反激[圖片]

看到回帖才去看原理圖的,目光給PIC吸引了。佩服wangchuangwccc,火眼金睛啊

0
回復(fù)
2014-05-08 19:58
@心中有冰
[圖片]兄弟過譽(yù)了。單片機(jī)我是門外漢,以后有問題可能還要向你請教呢。
冰版太謙虛了,都是我們的榜樣!向冰版敬禮!
0
回復(fù)
2014-07-29 11:18
@yueyunno1
冰版太謙虛了,都是我們的榜樣!向冰版敬禮!
哈哈 這個(gè)帖子吸引好多大咖,推薦到社區(qū)經(jīng)典~
0
回復(fù)
daihui713
LV.6
27
2014-07-29 14:57
@電源網(wǎng)-娜娜姐
哈哈這個(gè)帖子吸引好多大咖,推薦到社區(qū)經(jīng)典~

師長威武!最近手頭在忙一些公司運(yùn)作以及新產(chǎn)品開發(fā)的事情,過些日子再整一兩個(gè)貼出來支持一下師長工作

0
回復(fù)
wangsllyg
LV.2
28
2014-07-29 22:18

稍微發(fā)表一下不同意見   

1602 不判斷盲狀態(tài)的話 R/W腳是可以直接接地的 

這樣 EN  RS  和4個(gè)數(shù)據(jù)線   總共只占用6個(gè)單片機(jī)I/O 口  

樓主的方案雖然采用I2C串行驅(qū)動(dòng) 省掉了4個(gè)I/O 口   但多出了一個(gè)PCF8574芯片  個(gè)人感覺有點(diǎn)得不償失      

不知道實(shí)際產(chǎn)品中是否有應(yīng)用的例子

0
回復(fù)
daihui713
LV.6
29
2014-07-30 08:40
@wangsllyg
稍微發(fā)表一下不同意見   1602不判斷盲狀態(tài)的話R/W腳是可以直接接地的 這樣EN RS  和4個(gè)數(shù)據(jù)線  總共只占用6個(gè)單片機(jī)I/O口  樓主的方案雖然采用I2C串行驅(qū)動(dòng)省掉了4個(gè)I/O口   但多出了一個(gè)PCF8574芯片 個(gè)人感覺有點(diǎn)得不償失      不知道實(shí)際產(chǎn)品中是否有應(yīng)用的例子

嗯 你說的也沒錯(cuò),如果四總線并行驅(qū)動(dòng)也只需6個(gè)口,也是可以的。但如果你使用的是8引腳的MCU就可能不足了,連復(fù)位引腳都得算上顯然不合適。

0
回復(fù)
fzhlpp
LV.7
30
2014-08-09 20:32
@daihui713
嗯你說的也沒錯(cuò),如果四總線并行驅(qū)動(dòng)也只需6個(gè)口,也是可以的。但如果你使用的是8引腳的MCU就可能不足了,連復(fù)位引腳都得算上顯然不合適。
也想學(xué)習(xí)液晶顯示,你這些是哪買的,多少銀子?對液晶一竅不通,為什么叫1602...?
0
回復(fù)
daihui713
LV.6
31
2014-08-11 08:19
@fzhlpp
也想學(xué)習(xí)液晶顯示,你這些是哪買的,多少銀子?對液晶一竅不通,為什么叫1602...?

都是淘寶淘的,一般都在10塊錢左右, 1602 代表一行可以顯示16個(gè)字符或數(shù)字,總共有兩行

0
回復(fù)
發(fā)
主站蜘蛛池模板: 欧美一区二区三区四区在线观看 | 毛片免费网站 | 日韩a免费 | 91麻豆国产 | 狠狠色丁香婷婷综合最新地址 | 美女视频黄频大全免费 | 久久国产精品免费看 | 少妇办公室激情呻吟视频 | 丁香激情视频 | 色八网站首页 | 伊人成人影视 | 奇米涩涩涩 | japanesexxx91麻豆 欧美多毛肥胖老妇做爰 | 欧美三级大片免费看 | 少妇被又粗又里进进出出 | 逆天至尊动漫在线观看免费完整观看 | 青青青在线播放 | 国产精品一区二区在线观看网站 | 一区二区黄色视频在线观看 | 亚洲鲁丝片一区二区三区 | 成人黄色一级 | 波波成人影院在线播放 | 伊人春色网 | 九热视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 女人被狂躁到高潮视频免费网站 | 欧美同性男同志VIDEOSBEST免费 | 人成精品视频三区二区一区 | 久久久欧美| 激情视频91| 久久精品福利视频 | 国精产品一二二区视菠萝蜜 | 二区高清 | 国产成人短视频在线观看 | 国产精品久久久久久亚洲美女高潮 | 国产欧美综合在线观看 | 久久婷婷六月 | 天天天天躁天天爱天天碰 | 夜晚精品视频在线观看 | 亚洲人av高清无码 | 天天av天天操 |