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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7992|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)+XPT2046的電壓表設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
摘要:

本設(shè)計(jì)中利用STC89C52單片機(jī)制作了一個(gè)簡單的數(shù)字電壓表,主要通過A/D轉(zhuǎn)換器XPT2046把輸入的模擬信號(hào)即電位器的電壓值轉(zhuǎn)換成數(shù)字信號(hào),送到1602液晶進(jìn)行數(shù)據(jù)顯示,并預(yù)設(shè)了一個(gè)警報(bào)值,當(dāng)超過警報(bào)值時(shí),報(bào)警電路發(fā)出警報(bào)。

硬件電路主要包括單片機(jī)最小系統(tǒng)、顯示模塊、按鍵模塊、報(bào)警模塊和AD轉(zhuǎn)換模塊、數(shù)據(jù)存儲(chǔ)模塊六個(gè)部分。軟件采用了模塊化的設(shè)計(jì)方法,主要分為主程序、A/D轉(zhuǎn)換子程序、按鍵檢測(cè)子程序、液晶顯示子程序、E2PROM存儲(chǔ)程序和中斷程序。







目錄:

1. 概述.............................................................1

1.1課題研究背景與意義...........................................1

1.2課題設(shè)計(jì)內(nèi)容.................................................1

2. 設(shè)計(jì)方案........................................................1

3. 硬件電路設(shè)計(jì)....................................................2

3.1 器件選擇....................................................2

A.STC89C52..................................................2

B. XPT2046...................................................3

C.AT24C02...................................................4

D.LCD1602...................................................5

3.2 單片機(jī)最小系統(tǒng)..............................................6

3.3 A/D轉(zhuǎn)換模塊.................................................7

3.4 數(shù)據(jù)顯示模塊................................................7

3.5 數(shù)據(jù)存儲(chǔ)....................................................8

3.6 按鍵模塊....................................................8

3.7 報(bào)警模塊....................................................9

3.8 電路原理圖..................................................9

4.軟件設(shè)計(jì).........................................................10

4.1 主程序.....................................................10

4.2 AD轉(zhuǎn)換程序.................................................11

4.3 數(shù)據(jù)存儲(chǔ)程序...............................................11

4.4 1602液晶顯示程序...........................................12

4.5 按鍵驅(qū)動(dòng)程序...............................................12

4.6 中斷程序...................................................13

4.7 部分程序代碼...............................................13

5.仿真與調(diào)試.......................................................14

5.1軟件仿真....................................................14

5.2硬件調(diào)試....................................................16

結(jié)束語.............................................................17

附錄1.............................................................18

附錄2.............................................................19









1. 概述

1.1課題研究的背景與意義

隨著電子技術(shù)的發(fā)展,老式通過人眼估讀的電壓值不能滿足工業(yè)甚至是科技的要求,那這就需要我們?nèi)プ非鬁?zhǔn)確度高,分辨率高,測(cè)量速度快的數(shù)字電壓表,然后通過LED或者是LCD顯示出來。

在電量的測(cè)量中,電壓、電流和頻率是最基本的3個(gè)被測(cè)量,其中電壓量的測(cè)量最為常見,經(jīng)常需要測(cè)量出精度高的多點(diǎn)電壓值,因此多點(diǎn)數(shù)字電壓表變得越來越重要。數(shù)字電壓表(Digital Voltmeter)簡稱DVM,是采用數(shù)字化測(cè)量技術(shù),把連續(xù)的模擬量(直流或交流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。由于數(shù)字儀器具有讀數(shù)準(zhǔn)確、精度高、誤差小、靈敏度高、分辨率高、測(cè)量速度快等特點(diǎn)而備受青睞。



1.2課題設(shè)計(jì)的內(nèi)容

以單片機(jī)為控制器,對(duì)0—5V的模擬電壓進(jìn)行循環(huán)采集,采集的數(shù)據(jù)送LED或LCD顯示,并存入內(nèi)存24WC04。超過界限時(shí)指示燈閃爍并報(bào)警。

編寫下列控制程序:

1).對(duì)0—5V模擬信號(hào)輸入實(shí)行循環(huán)采集,連續(xù)采集16次,取平均值并顯示。

2).設(shè)定采集的上限值,若采集的平均值超過該界限值,則對(duì)應(yīng)的指示燈閃爍10次后一直亮,指示燈閃爍時(shí)喇叭發(fā)聲,以示警告。

3)可按鍵查看以往的電壓采集值并顯示。



2. 設(shè)計(jì)方案

本設(shè)計(jì)選用A/D芯片XPT2046接收電位器上的電壓信號(hào),轉(zhuǎn)換后的數(shù)字信號(hào)輸送到單片機(jī)STC89C52,數(shù)據(jù)經(jīng)過單片機(jī)處理之后通過LCD1602進(jìn)行數(shù)據(jù)顯示,同時(shí),將數(shù)據(jù)寫入AT24C02進(jìn)行數(shù)據(jù)存儲(chǔ),通過按鍵控制可進(jìn)行數(shù)據(jù)回顯。按鍵還可以設(shè)置報(bào)警值,當(dāng)測(cè)得數(shù)據(jù)大于報(bào)警值時(shí),蜂鳴器會(huì)發(fā)出警報(bào)。總體框圖如圖2.1所示。

3. 硬件電路設(shè)計(jì)

3.1 器件選擇

A.STC89C52

本設(shè)計(jì)選用單片機(jī)STC89C52,是宏晶科技推出的新一代超強(qiáng)抗干擾、高速、低功耗的單片機(jī),基于Intel 標(biāo)準(zhǔn)的8052,指令代碼完全兼容傳統(tǒng)的8051 系列單片機(jī),12 時(shí)鐘/機(jī)器周期和6 時(shí)鐘/機(jī)器周期可任意選擇,最新的D 版本內(nèi)集成MAX810 專用復(fù)位電路。

主要特性:

1). 增強(qiáng)型8051單片機(jī),6 時(shí)鐘/機(jī)器周期和12 時(shí)鐘/機(jī)器周期可以任意 選擇,指令代碼完全兼容傳統(tǒng)8051.[1]

2). 工作電壓:5.5V~3.3V(5V單片機(jī))/3.8V~2.0V(3V 單片機(jī))

3).工作頻率范圍:0~40MHz,相當(dāng)于普通8051 的0~80MHz,實(shí)際工作 頻率可達(dá)48MHz

4). 用戶應(yīng)用程序空間為8K字節(jié)

5). 片上集成512 字節(jié)RAM

6). 通用I/O 口(32 個(gè)),復(fù)位后為:P1/P2/P3是準(zhǔn)雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。

7). ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無 需專用仿真器,可通過串口直接下載用戶程 序,數(shù)秒即可完成一片

8). 具有EEPROM 功能

9). 共3 個(gè)16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器T0、T1、T2

10).外部中斷4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可由外部中斷低電平觸發(fā)中斷方式喚醒

11). 通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART

12). 工作溫度范圍:-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí))

B. XPT2046


XPT2046是一種典型的逐次逼近型模數(shù)轉(zhuǎn)換器(SARADC),包含了采樣/保持、模數(shù)轉(zhuǎn)換、串口數(shù)據(jù)輸出等功能。同時(shí)芯片集成有一個(gè)2.5V的內(nèi)部參考電壓源、溫度檢測(cè)電路,工作時(shí)使用外部時(shí)鐘。XPT2046可以單電源供電,電源電壓范圍為2.7V~5.5V。參考電壓值直接決定ADC的輸入范圍,參考電壓可以使用內(nèi)部參考電壓,也可以從外部直接輸入1V~VCC范圍內(nèi)的參考電壓(要求外部參考電壓源輸出阻抗低)。X、Y、Z、VBAT、Temp和AUX模擬信號(hào)經(jīng)過片內(nèi)的控制寄存器選擇后進(jìn)入ADC,ADC可以配置為單端或差分模式。引腳分布如圖3.1所示。


XPT2046通過SPI接口與主控制器進(jìn)行通信,其與主控制器的接口包括以下信號(hào):PENIRQ_N:筆觸中斷信號(hào),當(dāng)設(shè)置了筆觸中斷信號(hào)有效時(shí),每當(dāng)觸摸屏被按下,該引腳被拉為低電平。當(dāng)主控檢測(cè)到該信號(hào)后,可以通過發(fā)控制信號(hào)來禁止筆觸中斷,從而避免在轉(zhuǎn)換過程中誤觸發(fā)控制器中斷。該引腳內(nèi)部連接了一個(gè)50K的上拉電阻。

CS_N:芯片選中信號(hào),當(dāng)CS_N被拉低時(shí),用來控制轉(zhuǎn)換時(shí)序并使能串行輸入/輸出寄存器以移出或移入數(shù)據(jù)。當(dāng)該引腳為高電平時(shí),芯片(ADC)進(jìn)入掉電模式。

DCLK:外部時(shí)鐘輸入,該時(shí)鐘用來驅(qū)動(dòng)SARADC的轉(zhuǎn)換進(jìn)程并驅(qū)動(dòng)數(shù)字IO上的串行數(shù)據(jù)傳輸。

DIN:芯片的數(shù)據(jù)串行輸入腳,當(dāng)CS為低電平時(shí),數(shù)據(jù)在串行時(shí)鐘DCLK的上升沿被鎖存到片上的寄存器。

DOUT:串行數(shù)據(jù)輸出,在串行時(shí)鐘DCLK的下降沿?cái)?shù)據(jù)從此引腳上移出,當(dāng)CS_N引腳為高電平時(shí),該引腳為高阻態(tài)。

BUSY:忙輸出信號(hào),當(dāng)芯片接收完命令并開始轉(zhuǎn)換時(shí),該引腳產(chǎn)生一個(gè)DCLK周期的高電平。當(dāng)該引腳由高點(diǎn)平變?yōu)榈碗娖降臅r(shí)刻,轉(zhuǎn)換結(jié)果的最高位數(shù)據(jù)呈現(xiàn)在DOUT引腳上,主控可以讀取DOUT的值。當(dāng)CS_N引腳為高電平時(shí),BUSY引腳為高阻態(tài)。



C. AT24C02


AT24C02支持I2C,總線數(shù)據(jù)傳送協(xié)議I2C,總線協(xié)議規(guī)定任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器。任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時(shí)鐘和所有起始停止信號(hào)的主器件控制的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)(發(fā)送或接收)的模式,由于A0、A1和A2可以組成000~111八種情況,即通過器件地址輸入端A0、A1和A2可以實(shí)現(xiàn)將最多8個(gè)AT24C02器件連接到總線上,通過進(jìn)行不同的配置進(jìn)行選擇器件。引腳分布如圖3.2所示



器件操作:

時(shí)鐘及數(shù)據(jù)傳輸:SDA 引腳通常被外圍器件拉高。SDA 引腳的數(shù)據(jù)應(yīng)在 SCL 為低時(shí)變化;當(dāng)數(shù)據(jù)在 SCL 為高時(shí)變化,將視為下文所述一個(gè)起始或停止命令。

起始命令:當(dāng) SCL 為高,SDA 由高到低的變化被視為起始命令,必須以起始命令作為任何一次讀/寫操作命令的開始。

停止命令:當(dāng) SCL 為高,SDA 由低到高的變化被視為停止命令,在一個(gè)讀操作后,停止命令會(huì)使 EEPROM 進(jìn)入等待態(tài)低功耗模式。

應(yīng)答:所有的地址和數(shù)據(jù)字節(jié)都是以 8 位為一組串行輸入和輸出的。每收到一組 8 位的數(shù)據(jù)后,EEPROM 都會(huì)在第 9 個(gè)時(shí)鐘周期時(shí)返回應(yīng)答信號(hào)。每當(dāng)主控器件接收到一組 8 位的數(shù)據(jù)后,應(yīng)當(dāng)在第 9 個(gè)時(shí)鐘周期向EEPROM 返回一個(gè)應(yīng)答信號(hào)。收到該應(yīng)答信號(hào)后,EEPROM 會(huì)繼續(xù)輸出下一組 8 位的數(shù)據(jù)。若此時(shí)沒有得到主控器件的應(yīng)答信號(hào),EEPROM 會(huì)停止讀出數(shù)據(jù),直到主控器件返回一個(gè)停止命令來結(jié)束讀周期。

等待模式:24C01/02/04/08/16 特有一個(gè)低功耗的等待模式。可以通過以下方法進(jìn)入該模式:(a)上電 (2)收到停止位并且結(jié)束所有的內(nèi)部操作后。

器件復(fù)位:在協(xié)議中斷、下電或系統(tǒng)復(fù)位后,器件可通過以下步驟復(fù)位:(1)連續(xù)輸入 9 個(gè)時(shí)鐘;(2)在每個(gè)時(shí)鐘周期中確保當(dāng) SCL 為高時(shí) SDA 也為高;(3)建立一個(gè)起始條件。



D. LCD1602

1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。




1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表3.1所示:


3.2 單片機(jī)最小系統(tǒng)

單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng).對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路.電路圖如圖3.3所示。
復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來決定.典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位.

晶振電路:典型的晶振取11.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的場(chǎng)合)/12MHz(產(chǎn)生精確的uS級(jí)時(shí)歇,方便定時(shí)操作)



3.3 A/D轉(zhuǎn)換模塊

利用XPT2046來采集電位器的得電壓信號(hào),經(jīng)轉(zhuǎn)換之后輸送給單片機(jī)。電路圖如圖3.4所示。






3.4 數(shù)據(jù)顯示模塊
1602液晶接收單片機(jī)P0口輸出的數(shù)據(jù)直接進(jìn)行顯示,在1602的V0引腳接上一個(gè)電位器來調(diào)整液晶顯示的對(duì)比度。由于單片機(jī)的P0口進(jìn)行數(shù)據(jù)傳輸需接上拉電阻。電路圖如圖3.5所示。
3.5 數(shù)據(jù)存儲(chǔ)

將芯片 A2、A1、A0 都是接的 GND,也就是說都是 0,因此24C02的 7 位地址實(shí)際上是二進(jìn)制的 0b1010000,也就是 0x50。我們用 I 2 C 的協(xié)議來尋址 0x50,利用IIC通信來讀寫數(shù)據(jù)。電路圖如圖3.6所示。

3.6 按鍵模塊
利用獨(dú)立按鍵來進(jìn)行控制,S0進(jìn)行數(shù)據(jù)回顯,S1、S2是對(duì)警告值進(jìn)行加

減,每次加減0.5V。電路圖如圖3.7所示。
3.7 報(bào)警模塊

當(dāng)測(cè)得的電壓值大于設(shè)定的報(bào)警值時(shí),會(huì)從P2^3引腳輸出一個(gè)1HZ脈沖是小燈閃爍10次,然后輸出一個(gè)低電平,小燈常亮。蜂鳴器采用了有源蜂鳴器,需給端口一定頻率的脈沖,蜂鳴器才會(huì)發(fā)出聲音。電路圖如圖3.8所示。


3.8 電路原理圖

見附錄1。

4. 軟件設(shè)計(jì)

4.1 主程序


主程序主要調(diào)用A/D轉(zhuǎn)換程序、按鍵驅(qū)動(dòng)程序、1602液晶顯示程序、數(shù)據(jù)存儲(chǔ)程序和警報(bào)程序。首先對(duì)系統(tǒng)進(jìn)行初始化,當(dāng)被測(cè)電壓輸入后,調(diào)用A/D轉(zhuǎn)換子程序,轉(zhuǎn)換出來的數(shù)值經(jīng)數(shù)據(jù)存儲(chǔ)程序?qū)懭階T24C02,并通過1602液晶顯示程序進(jìn)行數(shù)據(jù)顯示,同時(shí),與報(bào)警值進(jìn)行比較,當(dāng)大于報(bào)警值時(shí),啟用報(bào)警程序。主程序流程圖如圖4.1所示。




4.2 A/D轉(zhuǎn)換程序

A/D轉(zhuǎn)換程序主要是對(duì)電位器產(chǎn)生的模擬信號(hào)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,首先啟動(dòng)AD芯片,輸入指令后,等待數(shù)據(jù)處理完后,輸出結(jié)果,本次轉(zhuǎn)換完成。子程序流程圖如圖4.2所示。

4.3數(shù)據(jù)存儲(chǔ)程序

數(shù)據(jù)存儲(chǔ)程序主要是對(duì)A/D轉(zhuǎn)換后的數(shù)值進(jìn)行數(shù)據(jù)存儲(chǔ),當(dāng)按鍵控制的時(shí)候可以數(shù)據(jù)回顯。AT24C02用IIC進(jìn)行數(shù)據(jù)通信,首先選擇芯片地址,然后進(jìn)行數(shù)據(jù)讀取,待完成后輸出結(jié)果。程序流程圖如圖11所示。

4.4 1602液晶顯示程序

本設(shè)計(jì)使用1602液晶進(jìn)行數(shù)據(jù)顯示,接收從單片機(jī)傳輸?shù)淖址蛿?shù)據(jù)直接進(jìn)行顯示。首先初始化液晶,輸入數(shù)據(jù)顯示的地址,即在液晶屏上顯示的行與列。再輸入字符型的數(shù)據(jù),液晶即可進(jìn)行數(shù)據(jù)顯示。程序流程圖如圖4.4所示。
4.5按鍵驅(qū)動(dòng)程序


本設(shè)計(jì)使用3個(gè)獨(dú)立按鍵,一個(gè)按鍵用來控制讀取E2PROM中存儲(chǔ)的數(shù)據(jù),然后通過液晶1602進(jìn)行數(shù)據(jù)顯示。另外兩個(gè)按鍵來進(jìn)行報(bào)警值的調(diào)整,S1對(duì)報(bào)警值加5,S2對(duì)數(shù)據(jù)減5,報(bào)警值在1602上立即刷新。按鍵每次按下會(huì)有抖動(dòng),所以進(jìn)行按鍵消抖,這樣按鍵使用更加精準(zhǔn)。程序流程圖如圖4.5所示。


4.6中斷程序
本程序使用定時(shí)器中斷0,中斷優(yōu)先級(jí)為1,定時(shí)2ms,中斷中主要產(chǎn)生一個(gè)1s和200ms的時(shí)間標(biāo)志位、進(jìn)行按鍵的掃描和產(chǎn)生蜂鳴器需要的脈沖。


4.7 部分程序代碼
見附錄2.

5.仿真與調(diào)試
1).軟件仿真

仿真運(yùn)行的時(shí)候,液晶顯示如圖5.1所示。


當(dāng)S0按下并調(diào)整電位器的值得時(shí)候,液晶顯示如圖5.2所示。

2).硬件調(diào)試

當(dāng)接通電源的時(shí)候,液晶顯示如圖5.3所示。

當(dāng)S0按下,并調(diào)整電位器,液晶如圖5.4所示。


當(dāng)按下S2的時(shí)候,報(bào)警值減掉0.5V,并調(diào)整電位器,使其電壓大于報(bào)警值,電路發(fā)出警報(bào),蜂鳴器器報(bào)警,小燈閃爍。如圖5.5所示。

6.結(jié)束語
通過這次課程設(shè)計(jì)有很多收獲,把所學(xué)到的知識(shí)得到了應(yīng)用,對(duì)所學(xué)的知識(shí)有了更深的了解,有了新的體會(huì)。對(duì)于制圖軟件AltiumDesigner、編程軟件keil5掌握的更加熟悉,也發(fā)現(xiàn)了不少的問題,經(jīng)過一系列的努力得以解決,充實(shí)了自己。
主程序:

void main()

{

EA = 1;

AUXR &= 0x7F;

TMOD &= 0xF0;

TL0 = 0xCD;

TH0 = 0xF8;

TF0 = 0;

TR0 = 1;

ET0 = 1;

LcdInit();

while(1)

{

KeyDriver();

if (flag_200ms)

{

flag_200ms = 1;

if (flag_s1)

{

Get_AD_buf();

AD_Display();

}

if (flag_s1 == 0)

{

sdat =E2Read(0x00);

buf[0] =sdat/10+'0';

buf[1] = '.';

buf[2] =sdat%10+'0';

buf[3] = '\0';

LcdWriteCom(0x80+0x40);

LcdWriteData(buf[0]);

LcdWriteData(buf[1]);

LcdWriteData(buf[2]);

}

}

if (pdat >warn)

{

BUZZ = buz;

if (n<10)



Led_1s();

else

LED = 0;

}else

{

n = 0;

LED = 1;

BUZZ = 0;

}

}

}



A/D轉(zhuǎn)換程序:

voidSPI_Write(uchar dat)

{

uchar i;

CLK = 0;

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

{

DIN = dat >>7;  

dat <<= 1;

CLK = 0;

CLK = 1;

}

}

uintSPI_Read(void)

{

uint i, dat=0;

CLK = 0;

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

{

dat <<= 1;

CLK = 1;

CLK = 0;

dat |= DOUT;

}

return dat;

}

uintRead_AD_Data(uchar cmd)

{

uchar i;

uint AD_Value;

CLK = 0;

CS  = 0;

SPI_Write(cmd);

for(i=6; i>0;i--);

CLK = 1;

_nop_();_nop_();

CLK = 0;

_nop_();_nop_();

AD_Value=SPI_Read();

CS = 1;

return AD_Value;

}



1602液晶顯示程序:

voidLcdWriteCom(uchar com)  

{

LCD1602_E = 0;   

LCD1602_RS = 0;   

LCD1602_RW = 0;  

LCD1602_DATAPINS =com;     

Lcd1602_Delay1ms(1);

LCD1602_E = 1;         

Lcd1602_Delay1ms(5);  

LCD1602_E = 0;

}



voidLcdWriteData(uchar dat)

{

LCD1602_E = 0;

LCD1602_RS = 1;

LCD1602_RW = 0;

LCD1602_DATAPINS =dat;

Lcd1602_Delay1ms(1);

LCD1602_E = 1;  

Lcd1602_Delay1ms(5);  

LCD1602_E = 0;

}

void LcdInit()  

{

LcdWriteCom(0x38);

LcdWriteCom(0x0c);

LcdWriteCom(0x06);

LcdWriteCom(0x01);

LcdWriteCom(0x80);

}



E2PROM存儲(chǔ)程序:

voidIIC_Start(void)

{

SDA = 1;

SCL = 1;

somenop;

SDA = 0;

somenop;

SCL = 0;

}

voidIIC_Stop(void)

{

SDA = 0;

SCL = 1;

somenop;

SDA = 1;

}

voidIIC_Ack(unsigned char ackbit)

{

if(ackbit)

SDA = 0;

else

SDA = 1;

somenop;

SCL = 1;

somenop;

SCL = 0;

SDA = 1;

somenop;

}

bitIIC_WaitAck(void)

{

SDA = 1;

somenop;

SCL = 1;

somenop;

if(SDA)   

{   

SCL = 0;

IIC_Stop();

return 0;

}

else  

{

SCL = 0;

return 1;

}

}

voidIIC_SendByte(unsigned char byt)

{

unsigned char i;

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

{   

if(byt&0x80)

{

SDA = 1;

}

else

{

SDA = 0;

}

somenop;

SCL = 1;

byt <<= 1;

somenop;

SCL = 0;

}

}

unsigned charIIC_RecByte(void)

{

unsigned char da;

unsigned char i;

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

{   

SCL = 1;

somenop;

da <<= 1;

if(SDA)

da |= 0x01;

SCL = 0;

somenop;

}

return da;

}

unsigned charE2Read(unsigned char addr)

{

unsigned char str;

IIC_Start();

IIC_SendByte(0xa0);

IIC_WaitAck();

IIC_SendByte(addr);

IIC_WaitAck();

IIC_Start();

IIC_SendByte(0xa1);

IIC_WaitAck();

str =IIC_RecByte();

IIC_WaitAck();

IIC_Stop();

return str;

}

voidE2Write(unsigned char str,unsigned char addr)

{

IIC_Start();

IIC_SendByte(0xa0);

IIC_WaitAck();

IIC_SendByte(addr);

IIC_WaitAck();

IIC_SendByte(str);

IIC_WaitAck();

IIC_Stop();




20.png (667.69 KB, 下載次數(shù): 112)

20.png

19.png (841.69 KB, 下載次數(shù): 120)

19.png

18.png (593.47 KB, 下載次數(shù): 111)

18.png

17.png (176.37 KB, 下載次數(shù): 96)

17.png

16.png (215.24 KB, 下載次數(shù): 116)

16.png

15.png (17.52 KB, 下載次數(shù): 98)

15.png

14.png (12.67 KB, 下載次數(shù): 101)

14.png

13.png (12.02 KB, 下載次數(shù): 108)

13.png

12.png (18.35 KB, 下載次數(shù): 104)

12.png

11.png (41.59 KB, 下載次數(shù): 107)

11.png

10.png (56.42 KB, 下載次數(shù): 107)

10.png

9.png (58.42 KB, 下載次數(shù): 110)

9.png

8.png (70.48 KB, 下載次數(shù): 103)

8.png

7.png (148.07 KB, 下載次數(shù): 112)

7.png

6.png (129.96 KB, 下載次數(shù): 106)

6.png

5.png (258.54 KB, 下載次數(shù): 109)

5.png

4.png (45.37 KB, 下載次數(shù): 105)

4.png

3.png (24.73 KB, 下載次數(shù): 104)

3.png

2.png (51.46 KB, 下載次數(shù): 109)

2.png

1.png (25.87 KB, 下載次數(shù): 116)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1023274 發(fā)表于 2022-5-18 15:44 | 只看該作者
可惜樓主沒有提供Proteus電路圖和KEIL源文件
回復(fù)

使用道具 舉報(bào)

板凳
ID:1040470 發(fā)表于 2022-8-29 16:11 | 只看該作者
博主可以提供一下ad原理圖碼?
回復(fù)

使用道具 舉報(bào)

地板
ID:1086200 發(fā)表于 2023-6-27 16:39 | 只看該作者
你好博主,可以把電壓表設(shè)計(jì)的完整代碼發(fā)給我一下嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:432633 發(fā)表于 2023-10-20 16:01 | 只看該作者
提供Proteus電路圖和KEIL源文件
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区 | 91精品国产91久久久久久 | 欧美激情国产日韩精品一区18 | 一级看片免费视频囗交动图 | 国产精品1区 | 久久成人人人人精品欧 | 国产福利一区二区 | 久久国产一区 | 日韩国产专区 | 夜色www国产精品资源站 | 蜜桃视频在线观看免费视频网站www | 久久久www成人免费无遮挡大片 | h视频在线免费观看 | 国产亚洲精品美女久久久久久久久久 | 999国产精品视频 | 亚洲电影中文字幕 | 国产在线视频一区二区 | 狠狠干美女 | 欧美一区免费 | 欧美影院 | 嫩呦国产一区二区三区av | 国产亚洲精品精品国产亚洲综合 | 国产一区 在线视频 | 亚洲日韩中文字幕一区 | 激情91| 秋霞a级毛片在线看 | 99色综合 | 亚洲第一视频网站 | a级在线观看 | 亚洲成人999| 久久69精品久久久久久国产越南 | 日韩精品久久久久 | 一区二区三区欧美在线观看 | 欧美高清视频一区 | 国产精品成人av | av黄色在线播放 | 久久国产精品视频 | 国产一级免费视频 | 亚洲性视频在线 | 久久久国产一区二区三区 | 日韩精品成人免费观看视频 |