由於 51 微控制器沒有硬體 iic 介面,即使有硬體接**們通常還是採用軟體模擬 i2c。主要原因是硬體 iic 設計的比較複雜,而且穩定性不怎麼好,程式移植比較麻煩,用軟體模擬 iic,最大的好處就是移植方便,同乙個**相容所有微控制器,任何乙個微控制器只要有 io 口(不需要特定 io),都可以很快的移植過去。
一、資料位的有效性規定
iic匯流排進行資料傳送時,scl訊號為高電平期間,sda上的資料必須保持穩定;只有在scl上的訊號為低電平期間,sda上的高電平或低電平狀態才允許變化。
注:iic只有兩根雙向訊號線,乙個是資料線sda,乙個是時鐘線scl。
二、匯流排定址方式
iic 匯流排定址按照從機位址位數可分為兩種,一種是 7 位,另一種是 10位。本微控制器中採用 7 位的定址位元組(定址位元組是起始訊號後的第乙個位元組)的位定義如下:
d7~d1 位組成從機的位址。d0 位是資料傳送方向位,為「 0」時表示主機
向從機寫資料,為「1」時表示主機由從機讀資料。
1、編寫i2c.h
#include
"i2c.h"
void
delay10us()
void
i2cstart()
void
i2cstop()
unsigned
char
i2csendbyte
(unsigned
char dat)
sda=1;
delay10us()
; scl=1;
while
(sda)
} scl=0;
delay10us()
;return1;
}unsigned
char
i2creadbyte()
return dat;
}void
at24c02write
(unsigned
char addr,
unsigned
char dat)
unsigned
char
at24c02read
(unsigned
char addr)
2、編寫i2c.**件
#ifndef _i2c_h_
#define _i2c_h_
#include
sbit scl=p2^1;
sbit sda=p2^0;
void
i2cstart()
;void
i2cstop()
;unsigned
char
i2csendbyte
(unsigned
char dat)
;unsigned
char
i2creadbyte()
;void
at24c02write
(unsigned
char addr,
unsigned
char dat)
;unsigned
char
at24c02read
(unsigned
char addr)
;#endif
3、編寫主程式main.c
#include
"reg52.h"
#include
"i2c.h"
#include
"intrins.h"
typedef
unsigned
int ui;
typedef
unsigned
char uc;
//#define led p2 //×¢ò⣡£¡²»¼ó";"
//sbit beep=p1^5;
//sbit led=p2^0;
//sbit moto=p1^0;
sbit k1=p3^1;
sbit k2=p3^0;
sbit k3=p3^2;
sbit k4=p3^3;
sbit lsa=p2^2;
//×îµíî»
sbit lsb=p2^3;
//´îµíî»
sbit lsc=p2^4;
//¸ßî»
char num=0;
uc disp[4]
;uc code smgduan[10]
=;void
delay
(ui i)
void
keypros()
while
(!k1);}
if(k2==0)
while
(!k2);}
if(k3==0)
while
(!k3);}
if(k4==0)
while
(!k4);}
}void
datapros()
void
digdisplay()
p0=disp[i]
;delay
(100);
p0=0x00;}
}void
main()
}
51微控制器
數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...
51微控制器
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...
51微控制器
設計包含乙個矩陣式鍵盤電路和動態顯示電路的微控制器應用系統,通過根據按下不同的數字按鍵 0 9 在數碼管上顯示出自己學號的後8位。各位大神幫忙挑挑錯,或者問題太大了可以幫忙寫乙個新的麼!萬分感謝!好著急 a 8255 equ 7cffh a口 b 8255 equ 7dffh b口 c 8255 e...