娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

AT24C02數(shù)據(jù)存儲+普中51單片機+江科大自化協(xié)

發(fā)布者:平凡夢想最新更新時間:2024-08-08 來源: elecfans關(guān)鍵字:AT24C02  數(shù)據(jù)存儲 手機看文章 掃描二維碼
隨時隨地手機看文章

1 系統(tǒng)原理圖

2 現(xiàn)象

 

當(dāng)按鍵Key1被按下時,LCD1602顯示的數(shù)值加1,每按下一次,自增1;當(dāng)按鍵Key2被按下時,LCD1602顯示的數(shù)值自減1;當(dāng)按鍵Key3被按下時,單片機將LCD1602顯示的數(shù)值保存在AT24C02中,掉電不丟失;當(dāng)按鍵Key4被按下時,單片機從AT24C02中讀取數(shù)據(jù),并顯示在LCD1602。


3 參考程序


(1)主函數(shù)


#include

#include 'delayms.h'

#include 'key.h'

#include 'lcd1602.h'

#include 'at24c02.h'


unsigned char KeyNum;

unsigned int Num;


void main()

{

    LCD1602_Init();

    LCD1602_ShowNum(1,1,Num,5);

    while(1)

    {

        KeyNum=key();

        if(KeyNum==1)    //K1按鍵,Num自增

        {

            Num++;

            LCD1602_ShowNum(1,1,Num,5);

        }

        if(KeyNum==2)    //K2按鍵,Num自減

        {

            Num--;

            LCD1602_ShowNum(1,1,Num,5);

        }

        if(KeyNum==3)    //K3按鍵,向AT24C02寫入數(shù)據(jù)

        {

            AT24C02_WriteByte(0,Num%256);

            delayms(5);

            AT24C02_WriteByte(1,Num/256);

            delayms(5);

            LCD1602_ShowString(2,1,'Write is OK');

            delayms(1000);

            LCD1602_ShowString(2,1,'           ');

        }

        if(KeyNum==4)    //K4按鍵,從AT24C02讀取數(shù)據(jù)

        {

            Num=AT24C02_ReadByte(0);

            Num|=AT24C02_ReadByte(1)<<8;

            LCD1602_ShowNum(1,1,Num,5);

            LCD1602_ShowString(2,1,'Read is OK');

            delayms(1000);

            LCD1602_ShowString(2,1,'           ');

        }

    }

}


(2)I2C函數(shù)


#ifndef _i2c_h_

#define _i2c_h_


void I2C_Start(void);

void I2C_Stop(void);

void I2C_SendByte(unsigned char Byte);

unsigned char I2C_ReceiveByte(void);

void I2C_SendAck(unsigned char AckBit);

unsigned char I2C_ReceiveAck(void);

    

#endif


#include


sbit I2C_SCL=P2^1;

sbit I2C_SDA=P2^0;


/**

  * @brief  I2C通信開始

  * @param  無

  * @retval 無

  */

void I2C_Start(void)

{

    I2C_SCL=1;    //空閑狀態(tài)

    I2C_SDA=1;    //空閑狀態(tài)

    I2C_SDA=0;

    I2C_SCL=0;

}


/**

  * @brief  I2C通信結(jié)束

  * @param  無

  * @retval 無

  */

void I2C_Stop(void)

{

    I2C_SDA=0;    

    I2C_SCL=1;    //回到空閑狀態(tài)

    I2C_SDA=1;    //回到空閑狀態(tài)

}


/**

  * @brief  I2C主機向從機發(fā)送一個字節(jié),SCL為同步信號,低電平寫數(shù)據(jù)

  * @param  Byte 要發(fā)送的字節(jié)

  * @retval 無

  */

void I2C_SendByte(unsigned char Byte)

{

    unsigned char i;

    for(i=0;i<8;i++)            //一個字節(jié),8bit

    {

        I2C_SDA=Byte&(0x80>>i);    //SCL為低電平,主機為發(fā)送器,寫數(shù)據(jù)

        I2C_SCL=1;                //SCL為高電平,從機為接收器,讀數(shù)據(jù)

        I2C_SCL=0;                //時序要求,51單片機速度比較慢

    }

}


/**

  * @brief  I2C主機接收從機一個字節(jié),SCL為同步信號,高電平讀數(shù)據(jù)

  * @param  無

  * @retval 接收到的一個字節(jié)數(shù)據(jù)

  */

unsigned char I2C_ReceiveByte(void)

{

    unsigned char i,Byte=0x00;

    I2C_SDA=1;                //主機釋放數(shù)據(jù)線SDA

    for(i=0;i<8;i++)

    {

        I2C_SCL=1;            //主機作為接收器

        if(I2C_SDA) Byte|=(0x80>>i);    //讀數(shù)據(jù)

        I2C_SCL=0;            //從機作為發(fā)送器,寫數(shù)據(jù)

    }    

    return Byte;

}


/**

  * @brief  I2C主機發(fā)送應(yīng)答

  * @param  AckBit 應(yīng)答位,0為應(yīng)答,1為非應(yīng)答

  * @retval 無

  */

void I2C_SendAck(unsigned char AckBit)

{

    I2C_SDA=AckBit;

    I2C_SCL=1;

    I2C_SCL=0;

}


/**

  * @brief  I2C主機接收應(yīng)答位

  * @param  無

  * @retval 接收到的應(yīng)答位,0為應(yīng)答,1為非應(yīng)答

  */

unsigned char I2C_ReceiveAck(void)

{

    unsigned char AckBit;

    I2C_SDA=1;

    I2C_SCL=1;

    AckBit=I2C_SDA;

    I2C_SCL=0;

    return AckBit;

}


(3)AT24C02函數(shù)


#ifndef _at24c02_h_

#define _at24c02_h_


void AT24C02_WriteByte(unsigned char WordAddress,Data);

unsigned char AT24C02_ReadByte(unsigned char WordAddress);

    

#endif


#include

#include 'i2c.h'


#define AT24C02_ADDRESS 0xA0


/**

  * @brief  AT24C02寫入一個字節(jié)

  * @param  WordAddress 要寫入字節(jié)的地址

  * @param  Data 要寫入的數(shù)據(jù)

  * @retval 無

  */

void AT24C02_WriteByte(unsigned char WordAddress,Data)

{

    I2C_Start();

    I2C_SendByte(AT24C02_ADDRESS);

    I2C_ReceiveAck();

    I2C_SendByte(WordAddress);

    I2C_ReceiveAck();

    I2C_SendByte(Data);

    I2C_ReceiveAck();

    I2C_Stop();

}


/**

  * @brief  AT24C02讀取一個字節(jié)

  * @param  WordAddress 要讀出字節(jié)的地址

  * @retval 讀出的數(shù)據(jù)

  */

unsigned char AT24C02_ReadByte(unsigned char WordAddress)

{

    unsigned char Data;

    I2C_Start();

    I2C_SendByte(AT24C02_ADDRESS);

    I2C_ReceiveAck();

    I2C_SendByte(WordAddress);

    I2C_ReceiveAck();

    

    I2C_Start();

    I2C_SendByte(AT24C02_ADDRESS|0x01);

    I2C_ReceiveAck();

    Data=I2C_ReceiveByte();

    I2C_SendAck(1);

    I2C_Stop();

    return Data;

}


(4)LCD1602函數(shù)


#ifndef __LCD1602_H__

#define __LCD1602_H__

    

    void LCD1602_WriteCommand(unsigned char Command);

    void LCD1602_WriteData(unsigned char Data);


    void LCD1602_Init(void);

    void LCD1602_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char);

    void LCD1602_ShowString(unsigned char Line,unsigned char Column,unsigned char *String);

    void LCD1602_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);

    void LCD1602_ShowSignedNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);

    void LCD1602_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);

    void LCD1602_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);

    

#endif


#include

#include 'intrins.h'


//引腳配置,硬件原理圖,普中A2

sbit LCD1602_RS = P2^6;

sbit LCD1602_RW = P2^5;

sbit LCD1602_E  = P2^7;

#define LCD1602_DATAPORT P0



/**

  * @brief  LCD1602延時函數(shù)

  * @param  xms=1, 延時1ms

  * @retval 無

  */

void LCD1602_Delayms(unsigned char xms)        //@11.0592MHz

{

    unsigned char i, j,k;


    for(k=0;k    {

        _nop_();

        i = 2;

        j = 199;

        do

        {

            while (--j);

        } while (--i);

    }


}


/**

  * @brief  LCD1602寫命令,時序圖

  * @param  Command 要寫入的命令

  * @retval 無

  */

void LCD1602_WriteCommand(unsigned char Command)

{

    LCD1602_RS = 0;

    LCD1602_RW = 0;

    LCD1602_DATAPORT  = Command;

    LCD1602_E  = 1;

    LCD1602_Delayms(1);    //延時1ms

    LCD1602_E  = 0;

    LCD1602_Delayms(1);    //延時1ms

}


/**

  * @brief  LCD1602寫數(shù)據(jù),時序圖

  * @param  Data 要寫入的數(shù)據(jù)

  * @retval 無

  */

void LCD1602_WriteData(unsigned char Data)

{

    LCD1602_RS = 1;

    LCD1602_RW = 0;

    LCD1602_DATAPORT  = Data;

    LCD1602_E  = 1;

    LCD1602_Delayms(1);    //延時1ms

    LCD1602_E  = 0;

    LCD1602_Delayms(1);    //延時1ms

}


/**

  * @brief  LCD1602初始化函數(shù)

  * @param  無

  * @retval 無

  */

void LCD1602_Init(void)

{

    LCD1602_WriteCommand(0x38);    //0011_1000 功能設(shè)置,設(shè)置16x2顯示,5x7點陣,8位數(shù)據(jù)接口

    LCD1602_WriteCommand(0x0C);    //0000_1100 顯示開關(guān)控制,顯示開,光標(biāo)關(guān),閃爍關(guān)    

    LCD1602_WriteCommand(0x06);    //0000_0110 輸入方式設(shè)置,數(shù)據(jù)寫后,AC自動加一,畫面不動

    LCD1602_WriteCommand(0x01);    //0000_0001 清屏,數(shù)據(jù)指針清零、所有顯示清零

}

/**

  * @brief  LCD1602設(shè)置光標(biāo)位置

  * @param  Line 行位置,范圍:1~2

  * @param  Column 列位置,范圍:1~16

  * @retval 無

  */

void LCD1602_SetCursor(unsigned char Line,unsigned char Column)

{

    if(Line == 1)

    {

        LCD1602_WriteCommand(0x80|(Column-1)); //設(shè)置要存入數(shù)據(jù)的DDROM地址,第一行地址

    }

    else

    {

        LCD1602_WriteCommand(0x80|(Column-1)+0x40); //設(shè)置要存入數(shù)據(jù)的DDROM地,第二行地址

    }

}

    


/**

  * @brief  在LCD1602指定位置上顯示一個字符

  * @param  Line 行位置,范圍:1~2

  * @param  Column 列位置,范圍:1~16

  * @param  Char 要顯示的字符

  * @retval 無

  */

void LCD1602_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char)

{

    LCD1602_SetCursor(Line,Column);

    LCD1602_WriteData(Char);

}


/**

  * @brief  在LCD1602指定位置上顯示所給字符串

  * @param  Line 行位置,范圍:1~2

[1] [2]
關(guān)鍵字:AT24C02  數(shù)據(jù)存儲 引用地址:AT24C02數(shù)據(jù)存儲+普中51單片機+江科大自化協(xié)

上一篇:數(shù)字秒表+普中51單片機+江科大自化協(xié)
下一篇:蜂鳴器播放音樂+普中51單片機+江科大自化協(xié)

推薦閱讀最新更新時間:2025-06-07 23:39

華為新一代OceanStor Pacific系列能否成為海量數(shù)據(jù)存儲新標(biāo)桿?
今天華為面向全球發(fā)布了新一代海量數(shù)據(jù)存儲OceanStor存儲Pacific系列。 該系列以多協(xié)議無損互通、下一代彈性EC算法和系列化硬件,應(yīng)對AI、HPC、視頻等海量數(shù)據(jù)場景的多樣化需求及效率、成本和可靠性挑戰(zhàn),成為海量數(shù)據(jù)存儲新標(biāo)桿。 華為數(shù)據(jù)存儲與機器視覺產(chǎn)品線總裁周躍峰表示:“海量數(shù)據(jù)在企業(yè)數(shù)字化轉(zhuǎn)型中扮演著越來越重要的角色,然而當(dāng)前只有2%的數(shù)據(jù)被保存、保存下來的數(shù)據(jù)只有10%得到分析利用,企業(yè)面臨海量數(shù)據(jù)存不下、流不動、管不好的問題。華為OceanStor存儲Pacific系列成為海量數(shù)據(jù)安心之選。” 據(jù)介紹,OceanStor存儲Pacific系列打破了服
[嵌入式]
華為新一代OceanStor Pacific系列能否成為海量<font color='red'>數(shù)據(jù)存儲</font>新標(biāo)桿?
PIC16F87x單片機存儲器特點及數(shù)據(jù)存儲器使用規(guī)劃
國微芯科技公司的PICmicro單片機和其他單片機相比,在硬件結(jié)構(gòu)和指令系統(tǒng)中采用了很多獨有的設(shè)計。 PIC系列單片機硬件系統(tǒng)設(shè)計簡潔,指令系統(tǒng)設(shè)計精練;采用哈佛總線結(jié)構(gòu),芯片內(nèi)部數(shù)據(jù)總線和指令總線分離;選址方式簡單。 PIC16F87x系列單片機是PIC16系列子系列,是中間檔次產(chǎn)品。PIC系列與其他單片機相比,讓人印象最深的特點可能要屬其內(nèi)存的分頁結(jié)構(gòu),有很多習(xí)慣了其他單片機編程的人認為PIC單片機的內(nèi)存分頁帶來很多不便。本文介紹在PIC1687x系列單片機中,根據(jù)數(shù)據(jù)變量的訪問特性安排其在數(shù)據(jù)存儲器中的位置的方法及其中斷編程,從一方面說明內(nèi)存的規(guī)劃對編程的影響。 1 PIC16F87x單片機存儲器特點 PIC16F8
[單片機]
PIC16F87x單片機存儲器特點及<font color='red'>數(shù)據(jù)存儲</font>器使用規(guī)劃
數(shù)據(jù)存儲技術(shù)引領(lǐng)高度個性化移動醫(yī)療時代
????如今,美國人正借助強大的科技力量引發(fā)一場國家醫(yī)療健康體系的變革:越來越先進的感應(yīng)器與設(shè)備、越來越廉價的個人基因組技術(shù),以及規(guī)模越來越大的移動應(yīng)用市場讓消費者能夠為自己的醫(yī)療做主,成為管理自己健康的CEO. ??? 隨著互聯(lián)網(wǎng)移動設(shè)備的普及,美國醫(yī)療健康體系開始從治療為主向預(yù)防為主轉(zhuǎn)變,這將大大節(jié)約美國的醫(yī)療成本。我相信,不久以后,堅持鍛煉、飲食健康的消費者將能享受到更低的醫(yī)保,就像開車記錄良好的司機能享受到更低的汽車保險一樣。 ??? 事實上,這場革命來得十分及時。目前有超過三分之二的美國成年人都受到肥胖問題的困擾。據(jù)預(yù)測,到2020年,美國糖尿病前期患者和糖尿病患者人數(shù)將超過總?cè)丝诘囊话耄瑸閲以斐擅磕?000億美元
[醫(yī)療電子]
解析高清視頻數(shù)據(jù)存儲技術(shù)的發(fā)展現(xiàn)狀
??? 高清監(jiān)控系統(tǒng)中,數(shù)據(jù)存儲是視頻監(jiān)控中重要的一個環(huán)節(jié),網(wǎng)絡(luò)化、智能化的存儲技術(shù)在監(jiān)控系統(tǒng)中已發(fā)揮著越來越重要的作用。 ??? 海量存儲空間 ??? 高清監(jiān)控應(yīng)用的前端高清攝像機分辨率多為高清720P(HD)和全高清1080P或1080i(Full-HD),傳輸幀率為每秒25幀,高清視頻在經(jīng)過H.264或Mpeg4不同壓縮編碼方式處理后,一般碼率在4-20Mb/s之間,則一路高清視頻每小時將產(chǎn)生2-10GB的數(shù)據(jù)量。監(jiān)控數(shù)據(jù)一般要求7×24小時業(yè)務(wù)連續(xù)存儲,存儲時間從十天半月到一月,甚至一年,數(shù)據(jù)存儲量與時間呈線性增長。安防監(jiān)控遍及城市各個角落,監(jiān)控路數(shù)幾千至萬,存儲容量將達到數(shù)PB級。 ??? 網(wǎng)絡(luò)環(huán)境與系統(tǒng)穩(wěn)定
[安防電子]
采用 SAS 交換技術(shù)應(yīng)對數(shù)據(jù)存儲挑戰(zhàn)
針對當(dāng)前數(shù)據(jù)增長及其相關(guān)成本在內(nèi)的數(shù)據(jù)存儲挑戰(zhàn),首席信息官們和數(shù)據(jù)中心運營商有必要對其當(dāng)前的存儲基礎(chǔ)設(shè)施進行重新評估,并考慮使用相應(yīng)技術(shù)來應(yīng)對這些問題。 普遍的趨勢是增加網(wǎng)絡(luò)存儲的部署,不管是網(wǎng)絡(luò)附加存儲 (NAS) 還是塊 SAN。但已經(jīng)安裝的直連外部存儲和內(nèi)部存儲的規(guī)模仍然相當(dāng)大。不過直連存儲始終存在可擴展性方面的問題。在直連存儲 (DAS) 環(huán)境中,如果所有的服務(wù)器端口都被占用,則只有通過增加新服務(wù)器的方式才能增加新的存儲,其成本極其高昂,而且會導(dǎo)致存儲孤島的產(chǎn)生。 隨著世界范圍內(nèi)數(shù)據(jù)量的持續(xù)增長,領(lǐng)先的芯片及軟件技術(shù)供應(yīng)商 LSI 公司對當(dāng)前數(shù)據(jù)增長帶來的挑戰(zhàn)以及首席信息官對數(shù)據(jù)存儲挑戰(zhàn)進行再評估所能采取的
[嵌入式]
智能化與物聯(lián)網(wǎng)的大潮,F(xiàn)RAM助力三表設(shè)計新突破
前些年隨著一部輕喜劇的播出, 查水表 一詞已被引申為調(diào)侃之語了。而伴隨著智能化大潮的到來,這個曾與我們老百姓生活息息相關(guān)的詞在日常生活中也正與我們漸行漸遠,因為傳統(tǒng)三表已經(jīng)實現(xiàn)了智能計量和無線數(shù)據(jù)采集、數(shù)據(jù)實時存儲和無線采集。作為其中的關(guān)鍵環(huán)節(jié),數(shù)據(jù)存儲的低功耗和可靠性越來越受到關(guān)注。在不久前閉幕的智能水/氣計量產(chǎn)業(yè)鏈高峰論壇(WATER & GAS METERING China2016)上,富士通電子元器件(上海)有限公司亞太區(qū)市場部總經(jīng)理王鈺針對三表數(shù)據(jù)存儲發(fā)表了專題演講。 作為三表中智能化走得較早的電表,其智能化普及程度遠遠領(lǐng)先于氣表和水表,業(yè)界曾預(yù)測智能電表的普及率在2016年將超過90%。 富士通全球FRAM存儲器銷量
[物聯(lián)網(wǎng)]
智能化與物聯(lián)網(wǎng)的大潮<font color='red'>中</font>,F(xiàn)RAM助力三表設(shè)計新突破
組成網(wǎng)絡(luò)的基本單元無線傳感器網(wǎng)絡(luò)節(jié)點解析方案
無線傳感器網(wǎng)絡(luò)是新興的研究領(lǐng)域,在軍事、環(huán)境、健康、家庭、商業(yè)領(lǐng)域等許多方面有著巨大的潛在應(yīng)用前景。無線傳感器網(wǎng)絡(luò)節(jié)點是組成網(wǎng)絡(luò)的基本單元,無線傳感器網(wǎng)絡(luò)的迅速發(fā)展,給無線傳感器網(wǎng)絡(luò)節(jié)點的設(shè)計和管理提出了許多挑戰(zhàn)。 無線傳感器網(wǎng)絡(luò)節(jié)點 無線傳感器網(wǎng)絡(luò)是集數(shù)據(jù)采集、處理及通信功能于一體的分布式自組織網(wǎng)絡(luò)。無線傳感器網(wǎng)絡(luò)由在一定區(qū)域范圍內(nèi)的多個具有無線通信、傳感、數(shù)據(jù)處理功能的網(wǎng)絡(luò)節(jié)點組成。傳感器節(jié)點負責(zé)采集、處理、壓縮數(shù)據(jù)、中轉(zhuǎn)其他節(jié)點的數(shù)據(jù)包并將數(shù)據(jù)包發(fā)送出去。在不同的應(yīng)用中,傳感器網(wǎng)絡(luò)節(jié)點的結(jié)構(gòu)不盡相同,一般由數(shù)據(jù)采集單元(傳感器、A/D轉(zhuǎn)換器)、數(shù)據(jù)處理和控制單元(微處理器、存儲器)、無線通信單元(無線收發(fā)器)和供電單
[嵌入式]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 延长县| 台东市| 宁南县| 岳池县| 哈尔滨市| 海盐县| 林甸县| 崇仁县| 阿城市| 拉萨市| 澳门| 额济纳旗| 年辖:市辖区| 枞阳县| 手机| 镶黄旗| 湖南省| 隆化县| 罗平县| 沈阳市| 石泉县| 外汇| 屏边| 五指山市| 五台县| 菏泽市| 东兴市| 镇巴县| 新巴尔虎左旗| 丹寨县| 仪陇县| 曲阳县| 高碑店市| 黄冈市| 泊头市| 阆中市| 延吉市| 吉隆县| 阜平县| 中超| 凤阳县|