www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]電視頻道記憶功能,交通燈倒計時時間的設(shè)定,戶外 LED 廣告的記憶功能,都有可能用到 EEPROM 這類存儲器件。這類器件的優(yōu)勢是存儲的數(shù)據(jù)不僅可以改變,而且掉電后數(shù)據(jù)保存不丟失,因此大量應(yīng)用在各種電子產(chǎn)品上。我們

電視頻道記憶功能,交通燈倒計時時間的設(shè)定,戶外 LED 廣告的記憶功能,都有可能用到 EEPROM 這類存儲器件。這類器件的優(yōu)勢是存儲的數(shù)據(jù)不僅可以改變,而且掉電后數(shù)據(jù)保存不丟失,因此大量應(yīng)用在各種電子產(chǎn)品上。


我們這節(jié)課的例程,有點(diǎn)類似廣告屏。上電后,1602 的第一行顯示 EEPROM 從 0x20 地址開始的 16 個字符,第二行顯示 EERPOM 從 0x40 開始的 16 個字符。我們可以通過 UART串口通信來改變 EEPROM 內(nèi)部的這個數(shù)據(jù),并且同時也改變了 1602 顯示的內(nèi)容,下次上電的時候,直接會顯示我們更新過的內(nèi)容。


這個程序所有的相關(guān)內(nèi)容,前面都已經(jīng)講過了。但是這個程序體現(xiàn)在了一個綜合應(yīng)用能力上。這個程序用到了 1602 液晶、UART 串口通信、EEPROM 讀寫操作等多個功能的綜合應(yīng)用。寫個點(diǎn)亮小燈好簡單,但是我們想真正學(xué)好單片機(jī),必須得學(xué)會這種綜合程序的應(yīng)用,實(shí)現(xiàn)多個模塊同時參與工作。因此同學(xué)們,要認(rèn)認(rèn)真真的把工程建立起來,一行一行的把程序編寫起來,最終鞏固下來。


/*****************************I2C.c 文件程序源代碼*******************************/

(此處省略,可參考之前章節(jié)的代碼)

/***************************Lcd1602.c 文件程序源代碼*****************************/

(此處省略,可參考之前章節(jié)的代碼)

/****************************eeprom.c 文件程序源代碼*****************************/

(此處省略,可參考之前章節(jié)的代碼)

/*****************************Uart.c 文件程序源代碼*****************************/

(此處省略,可參考之前章節(jié)的代碼)

/*****************************main.c 文件程序源代碼******************************/

#include

unsigned char T0RH = 0; //T0 重載值的高字節(jié)

unsigned char T0RL = 0; //T0 重載值的低字節(jié)

void InitShowStr();

void ConfigTimer0(unsigned int ms);

extern void InitLcd1602();

extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);

extern void E2Read(unsigned char *buf, unsigned char addr, unsigned char len);

extern void E2Write(unsigned char *buf, unsigned char addr, unsigned char len);

extern void UartDriver();

extern void ConfigUART(unsigned int baud);

extern void UartRxMonitor(unsigned char ms);

extern void UartWrite(unsigned char *buf, unsigned char len);

void main(){

EA = 1; //開總中斷

ConfigTimer0(1); //配置 T0 定時 1ms

ConfigUART(9600); //配置波特率為 9600

InitLcd1602(); //初始化液晶

InitShowStr(); //初始顯示內(nèi)容

while (1){

UartDriver(); //調(diào)用串口驅(qū)動

}

}

/* 處理液晶屏初始顯示內(nèi)容 */

void InitShowStr(){

unsigned char str[17];

str[16] = '