![模擬電子秤仿真實(shí)驗(yàn)報(bào)告_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/f015d922-2622-4891-a084-ef66ec4e988b/f015d922-2622-4891-a084-ef66ec4e988b1.gif)
![模擬電子秤仿真實(shí)驗(yàn)報(bào)告_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/f015d922-2622-4891-a084-ef66ec4e988b/f015d922-2622-4891-a084-ef66ec4e988b2.gif)
![模擬電子秤仿真實(shí)驗(yàn)報(bào)告_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/f015d922-2622-4891-a084-ef66ec4e988b/f015d922-2622-4891-a084-ef66ec4e988b3.gif)
![模擬電子秤仿真實(shí)驗(yàn)報(bào)告_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/f015d922-2622-4891-a084-ef66ec4e988b/f015d922-2622-4891-a084-ef66ec4e988b4.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.阿壩師范高等專科學(xué)校電子信息工程系課程設(shè)計(jì)模擬電子秤仿真設(shè)計(jì)學(xué)生姓名樊益明專業(yè)名稱計(jì)算機(jī)控制技術(shù)班級(jí)計(jì)控班學(xué)號(hào)20113079阿壩師范高等??茖W(xué)校電子信息工程系二一三年四月'.模擬電子秤設(shè)計(jì)報(bào)告一、設(shè)計(jì)原理及要求設(shè)計(jì)原理:電子秤系統(tǒng)設(shè)計(jì)框圖大致如圖1 所示:四個(gè)定值電阻加一利用差分放大電個(gè)電位器,模擬應(yīng)路,對(duì)采集到的微小變式傳感器 , 電壓放大到 05V 采集微小的電壓信號(hào)ADC0832:8 位 2 進(jìn)制模數(shù)轉(zhuǎn)換器;將放大的電壓信號(hào)轉(zhuǎn)化為數(shù)值信號(hào),方便單片機(jī)的處理MM74C922:鍵盤(pán)解碼器,方便了對(duì) 4x4 鍵盤(pán)的掃描。鍵盤(pán)的作用主要在單價(jià)的輸入上。51 單片機(jī) :處理和控制單元,
2、整個(gè)模擬仿真的靈魂原件。 1、將 ADC0832 轉(zhuǎn)化來(lái)的數(shù)據(jù)處理后存放在重量( Wight )并用LCD 顯示; 2、將鍵盤(pán)輸入的數(shù)據(jù)賦給單價(jià)( Price); 3、將總價(jià)( Total_price )計(jì)算出來(lái),并顯示圖 1 系統(tǒng)整體設(shè)計(jì)框圖設(shè)計(jì)要求:1、要求單價(jià)由鍵盤(pán)輸入;2、重量的精度能夠達(dá)到十分之一千克;'.3、按鍵有提示音;4、有去皮的功能;二、主要硬件及仿真軟件硬件:(一)、 ADC0832ADC0832是一種8 位分辨率、雙通道A/D 轉(zhuǎn)換芯片。由于它體積小,兼容性,性價(jià)比高而深受單片機(jī)愛(ài)好者及企業(yè)歡迎。圖2.1 為 ADC0832 在 Proteus 中的邏輯符號(hào)圖 2
3、.1 ADC0832 邏輯符號(hào)芯片接口說(shuō)明:CS 片選使能,低電平芯片使能;CH0 模擬輸入通道0,或作為IN+/- 使用。CH1 模擬輸入通道1,或作為IN+/- 使用。GND 芯片參考 0 電位(地)。DI 數(shù)據(jù)信號(hào)輸入,選擇通道控制。DO 數(shù)據(jù)信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。CLK 芯片時(shí)鐘輸入。Vcc/REF 電源輸入及參考電壓輸入(復(fù)用)。單片機(jī)對(duì) ADC0832 的控制原理:正常情況下ADC0832 與單片機(jī)的接口應(yīng)為4 條數(shù)據(jù)線,分別是CS、CLK 、 DO、 DI 但由于 DO端與 DI 端在通信時(shí)并未同時(shí)有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時(shí)可以將DO 和 DI 并聯(lián)在一根數(shù)據(jù)
4、線上使用。(見(jiàn)圖3.6)當(dāng) ADC0832 未工作時(shí)其CS 輸入端應(yīng)為高電平,此時(shí)芯片禁用, CLK 和DO/DI 的電平可任意。當(dāng)要進(jìn)行A/D 轉(zhuǎn)換時(shí),須先將CS 使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時(shí)芯片開(kāi)始轉(zhuǎn)換工作,同時(shí)由處理器向芯片時(shí)鐘輸入端CLK 輸入時(shí)鐘脈沖, DO/DI 端則使用DI 端輸入通道功能選擇的數(shù)據(jù)信號(hào)。在第1 個(gè)時(shí)鐘脈沖的下沉之前DI 端必須是高電平,表示啟始信號(hào)。在第2、 3 個(gè)脈沖下沉之前DI 端應(yīng)輸入2 位數(shù)據(jù)用于選擇通道功能,其功能項(xiàng)見(jiàn)表1。'.表 1如表 1 所示,當(dāng)此2 位數(shù)據(jù)為“ 1”、“ 0”時(shí),只對(duì)CH0 進(jìn)行單通道轉(zhuǎn)換。當(dāng)2
5、位數(shù)據(jù)為“ 1”、“ 1”時(shí),只對(duì) CH1 進(jìn)行單通道轉(zhuǎn)換。當(dāng)2 位數(shù)據(jù)為“ 0”、“ 0”時(shí),將 CH0 作為正輸入端 IN+ , CH1 作為負(fù)輸入端 IN- 進(jìn)行輸入。當(dāng)2位數(shù)據(jù)為“ 0”、“ 1”時(shí),將 CH0 作為負(fù)輸入端IN- , CH1 作為正輸入端 IN+ 進(jìn)行輸入。所以我們利用前1 2個(gè)脈沖來(lái)設(shè)置 ADC0832 的通道選擇,到第 3 個(gè)脈沖的下沉之后 DI 端的輸入電平就失去輸入作用,此后DO/DI 端則開(kāi)始利用數(shù)據(jù)輸出 DO 進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4 個(gè)脈沖下沉開(kāi)始由DO 端輸出轉(zhuǎn)換數(shù)據(jù)最高位 DATA7 ,隨后每一個(gè)脈沖下沉 DO 端輸出下一位數(shù)據(jù)。直到第11 個(gè)脈沖
6、時(shí)發(fā)出最低位數(shù)據(jù)DATA0 ,一個(gè)字節(jié)的數(shù)據(jù)輸出完成。也正是從此位開(kāi)始輸出下一個(gè)相反字節(jié)的數(shù)據(jù),即從第11 個(gè)字節(jié)的下沉輸出DATD0 。隨后輸出 8 位數(shù)據(jù),到第19 個(gè)脈沖時(shí)數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D 轉(zhuǎn)換的結(jié)束。最后將 CS 置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。更詳細(xì)的時(shí)序說(shuō)明請(qǐng)見(jiàn)圖2.2(圖 2.2為ADC0832 的時(shí)序圖)。圖 2.2 ADC0832 時(shí)序圖(二)、 LCD12232'.圖2.3LCD12232 邏輯符號(hào)管腳說(shuō)明 :VDD :邏輯電源正GND(VSS) : 邏輯電源地VO(VEE) : LCD 驅(qū)動(dòng)電源RESET :復(fù)位端。E1 :讀
7、寫(xiě)使能。E2 :同 E1 引腳。/RD :讀允許,低電平有效。/WR :寫(xiě)允許,低電平有效。R/W :讀寫(xiě)選擇A0 :數(shù)據(jù) /指令選擇高電平:數(shù)據(jù)D0-D7 將送入顯示RAM ;低電平:數(shù)據(jù)D0-D7 將送入指令執(zhí)行器執(zhí)行。D0-D7 :數(shù)據(jù)輸入輸出引腳。圖 2.4為 LCD 的時(shí)序圖圖 2.4LCD12232 時(shí)序圖'.圖 2.5為顯示存儲(chǔ)器( DDRAM )與地址的對(duì)應(yīng)關(guān)系(顯示設(shè)定為 1/32DUTY ,顯示起始行為 10th)圖 2.5(三)、 AT89C51在 Protues 中 AT89C51 的邏輯符號(hào)如圖2.6 所示:圖 2.6AT89C51 邏輯符號(hào)'.AT8
8、9C51 是一種帶4K 字節(jié) FLASH 存儲(chǔ)器( FPEROM Flash Programmable and Erasable ReadOnly Memory )的低電壓、高性能CMOS 8 位微處理器,俗稱單片機(jī)。AT89C2051 是一種帶2K 字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000 次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51 指令集和輸出管腳相兼容。由于將多功能8 位 CPU 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的 AT89C51 是一種高效微控制器, AT89C2051是它的一種精簡(jiǎn)版本。AT89
9、C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51提供以下標(biāo)準(zhǔn)功能:4k 字節(jié) Flash 閃速存儲(chǔ)器,128 字節(jié)內(nèi)部RAM , 32 個(gè) I/O 口線,兩個(gè)16 位定時(shí) /計(jì)數(shù)器,一個(gè)5 向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51 可降至0Hz 的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU 的工作,但允許RAM ,定時(shí) /計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存 RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。仿真軟件:(一) 、 Proteus它不僅具有其它E
10、DA 工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具,在這里完全能夠滿足我們對(duì)電子秤的仿真需要。(二)、 Keil C51KeilC51 是 51 系列兼容單片機(jī)C 語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C 語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil 提供了包括C 編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,因?yàn)槲覀冊(cè)诖舜文M仿真中使用 C 語(yǔ)言編程,所以 Keil 幾乎就是我們的不二之選。三、設(shè)計(jì)步驟(一)、軟件設(shè)計(jì)1、延時(shí)函數(shù) delay()的編寫(xiě)( Delay.c):在這個(gè)C 文件中,只有
11、一個(gè)函數(shù)void delay(uint x) ,該函數(shù)的作用是,延時(shí)100*x (微秒)。2、 ADC0832 的驅(qū)動(dòng)代碼編寫(xiě)( ADC0832.c):在這個(gè) C 文件中,只有一個(gè)函數(shù)uchar ReadADC() ,它的返回值為8 位 2 進(jìn)制數(shù),表示的放大后的電壓值。圖 3.1 為 uchar ReadADC() 的程序設(shè)計(jì)流程圖'.開(kāi)始各種賦值語(yǔ)句,作讀取數(shù)據(jù)時(shí)的初始化dat1=(dat1<<1)|ADC_DIO;讀取第 411,共8 個(gè)正向數(shù)據(jù)dat2=dat2|(uchar)ADC_DIO<<i);讀取第 1118,共 8 個(gè)反向數(shù)據(jù)Ydat1=dat
12、2N輸出輸出dat10x00結(jié)束圖 3.1程序設(shè)計(jì)流程圖3、 MM74C922 的驅(qū)動(dòng)代碼編寫(xiě)( MM74C922.c ):在這個(gè)C 文件中,有三個(gè)函數(shù):、 ucharGet_key() ,作用是獲得MM74C922轉(zhuǎn)化的4 位二進(jìn)制,并轉(zhuǎn)化為十進(jìn)制;、 voidBeep() ,是蜂鳴器的驅(qū)動(dòng)程序;、 void Juge_key( )判斷按鍵值,并作出相應(yīng)操作圖 3.2 為 void Juge_key( ) 的程序設(shè)計(jì)流程圖'.開(kāi)始uchar Get_key()獲得MM74C922轉(zhuǎn)化的 4 位二進(jìn)制,并轉(zhuǎn)化為十進(jìn)制bb=Get_key();switch(b)09121411輸出歸零確
13、認(rèn)去皮09結(jié)束15 、4、7顯示時(shí)間、特效、小數(shù)點(diǎn)(。)圖 3.2程序設(shè)計(jì)流程圖4、 LCD12232 的驅(qū)動(dòng)代碼編寫(xiě)( LCD12232.c ):在這個(gè) C 文件中,主要包含了兩個(gè)顯示函數(shù)、 void LCDshow010(uint *a,uint b)這個(gè)函數(shù)主要是實(shí)現(xiàn)LCD 第一行的顯示,顯示“P: 0 W 0.0kg ”字樣。、 void LCDshow230(uint c)這個(gè)函數(shù)主要是實(shí)現(xiàn)LCD 第二行的顯示,顯示“總價(jià):0.0 元”字樣。5、 Main 文件的編寫(xiě)( Main.c ):在這個(gè)C 文件中,主要包含了main()函數(shù),它的功能是調(diào)用其他C 文件中的函數(shù),因此,在寫(xiě) m
14、ain()函數(shù)時(shí),應(yīng)當(dāng)先做其他文件的調(diào)用聲明,如下:#include"Font.h" / 存放取模數(shù)據(jù)的頭文件#include"Delay.c"/ 延時(shí)函數(shù)#include"LCD12232.c"/LCD12232的驅(qū)動(dòng)程序#include"ADC0832.c"/ADC0832的驅(qū)動(dòng)程序#include"MM74C922.c" /MM74C922的驅(qū)動(dòng)程序圖 3.3 為 main( )的程序設(shè)計(jì)流程圖'.開(kāi)始LCD的復(fù)位操作,為L(zhǎng)CD的顯示做準(zhǔn)備,LCDrst();獲得 ADC的返回值a
15、dcdata=ReadADC();將電壓信號(hào)與重量建立等式關(guān)系weight=2*adcdata*1.960-Levelweight-3;LCD的第一行顯示LCDshow010(p,weight);計(jì)算出總價(jià)Total_price=Price*WeightLCD第二行顯示LCDshow230(Total_price);按鍵掃描函數(shù)Juge_key( )圖 3.3程序設(shè)計(jì)流程圖(二)、硬件電路搭建1、模擬應(yīng)變式傳感器單臂電橋的搭建:'.由于Proteus 沒(méi)有測(cè)重量的應(yīng)變式傳感器器件,所以在這里我們用四個(gè)電阻和一個(gè)電位器來(lái)模擬傳感器的工作原理。采用如圖3.4 所示電路圖連接:U o圖 3.
16、4模擬傳感器電橋其中、 R2 R4 100 ; R1 RV 1 R3 350 ;圖中所示 U o 為傳感器采集到的電壓信號(hào), Rv1 =1.5? , R3 =348.5? ,所以 U o 的變化范圍為 05mV2、微小電壓信號(hào)差分放大電路的搭建:在實(shí)際應(yīng)用中,此種放大電路能夠有效的降低噪聲對(duì)正常信號(hào)的影響。在本次模擬中能夠有效的完成1000 倍的放大,將最大05mV 的電壓信號(hào)放大為最大05V 。連接電路圖如圖3.5 所示:具體推套方式如下:u3 u4u1u2RV 7RV 2RV 6RV 2u3u4RV 7RV 2RV6 ;u1u2RV 2RV 7RV 6;u3u41 2RV7u1u2RV 2
17、u3u5R7R5R5u3u4uOuOu4uOu5 uOR7R5R7R5R5R7 R5R6R8R8u3u4uOuOR7R5R5R7R5'.uO(1 2RV7)R5u1 u2RV 2R7根據(jù)以上推套,我們要實(shí)現(xiàn)1000倍的放大,則只需確定RV2 、 RV7、 R7、 R5四個(gè)電阻的阻值即可。本次設(shè)計(jì)中我們?nèi)V 21K、 RV7 185K 、 R7 10K 、 R520 K,只需調(diào)節(jié)RV 2和 RV7 、 RV6 即可達(dá)到1000 倍,應(yīng)當(dāng)注意的是: RV 7 、 RV 6 的調(diào)節(jié)幅度應(yīng)該始終保持一樣。U1U3U5UoU4U5U2圖 3.53、 ADC0832 與 51 單片機(jī)及LCD 的
18、連接電路:關(guān)于 ADC0832 與單片機(jī)的連接方法在前面已經(jīng)提過(guò),在此不贅述了,我們選用CH0 作為信號(hào)輸入通道;關(guān)于 AT89C51 的:P1.0 P1.2 口分別接ADC0832 的片選使能端CS、時(shí)鐘信號(hào)端CLK 、數(shù)據(jù)輸出端DIO ,其中P1.6 接 MM74C922 的輸入提示端DA , P1.7 接蜂鳴器;'.圖 3.6 ADC0832 與 51 單片機(jī)及 LCD 的連接電路P0 端口接上拉電阻作LCD 的 D0 D7 數(shù)據(jù)輸入端;P2.0 P2.7 依次接LCD 的數(shù)據(jù)指令控制端A0 、 LCD 前半部分使能端E0、 LCD 后半部分使能端 E1、 LCD 讀寫(xiě)控制端RW
19、 以及 MM74C922 的四位數(shù)據(jù)傳輸斷A 、 B 、C、 D。(具體連接如圖3.6)4、鍵盤(pán)解碼器MM74C922以及 4*4 鍵盤(pán)的連接電路:關(guān)于 MM74C922 的電路連接如圖3.7 所示圖 3.7MM74C922 與矩陣式鍵盤(pán)的連接電路圖四、設(shè)計(jì)結(jié)論1、單價(jià)能夠由鍵盤(pán)輸入:當(dāng)開(kāi)啟仿真時(shí),在沒(méi)有調(diào)節(jié)模擬傳感器的前提下,LCD 的顯示如圖4.1 所示'.圖 4.1當(dāng)有重物時(shí), LCD 的顯示如圖4.2 所示,重量的顯示范圍理論上為0.099.9kg圖 4.2這時(shí),我們可以在鍵盤(pán)上按下重物的單價(jià),Price的輸入理論范圍為099 元 /kg ,例如:我們輸入單價(jià)“ 15”, LC
20、D的顯示如圖4.3 所示:圖 4.3這時(shí),我們只需要按下“確定”鍵,就可以得到總價(jià)了,LCD的顯示如圖4.4 所示:圖 4.4應(yīng)當(dāng)注意的是:、在每次使用前都應(yīng)當(dāng)按一下“歸零”鍵,來(lái)防止前次使用時(shí)使用過(guò)去皮功能;、在單價(jià)的輸入程序中,當(dāng)你按下了兩位數(shù)后,數(shù)字鍵就應(yīng)失效了,不能繼續(xù)輸入,若想重新輸入,則按下“歸零”鍵即可,例如:輸入“15”,若我們按下1 和 5 后繼續(xù)按7,則第三次按'.鍵是無(wú)效的,不會(huì)顯示在LCD 上;、且,我們?cè)趯?xiě)程序中應(yīng)當(dāng)加入防止重鍵的功能;、若單價(jià)只有一位數(shù) , 則 lCD 只顯示一位數(shù),不會(huì)出現(xiàn)“01”的情況,后面的重量、總價(jià)原理相同;2、重量的精度能夠達(dá)到十分
21、之一千克:理論上是達(dá)到要求了,但是由于我們用的是一個(gè)電位器來(lái)模擬傳感器的電阻變化,而這個(gè)電位器只能 1%的增加,而這1%換算到電壓的改變就為0.05mV,算上電壓與重量的關(guān)系1mV對(duì)應(yīng) 15kg ,則電位器每增加1%重量就應(yīng)該增加0.75kg 左右。如圖4.5a 和圖 4.5b 所示圖 4.5a 為當(dāng)電位器調(diào)節(jié)到60%的時(shí)候,采集到的重量為48.0kg ;圖 4.5b 為當(dāng)電位器調(diào)節(jié)到65%的時(shí)候,采集到的重量為51.8kg ;weightweight 65weight 60=3.8kg所以、平均變化為0.76kg圖 4.5a圖 4.5b3、去皮的功能:例,在圖4.5b 的顯示情況下我們使用“
22、去皮”的功能即按下“去皮”鍵,LCD的顯示如圖4.6所示:圖 4.6應(yīng)當(dāng)注意的是:在使用了去皮功能后,應(yīng)當(dāng)做歸零操作。4、按鍵有提示音:'.此項(xiàng)功能只需要增加一個(gè)蜂鳴器(接單片機(jī)P1.7 腳)在編寫(xiě)按鍵掃描程序中,在每一個(gè)case語(yǔ)句后添加上蜂鳴器的驅(qū)動(dòng)程序即可。當(dāng)有按鍵按下時(shí),就會(huì)調(diào)用蜂鳴器的驅(qū)動(dòng)序,促使蜂鳴器發(fā)出“滴”的一聲。附錄:圖一:所有電路連接的全局圖圖一附錄:附所有程序源代碼:'.Font.h/ 存放取模數(shù)據(jù)的頭文件#define uchar unsigned char#define uint unsigned intuint code number16=0x00,
23、0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00,/*"0",0*/0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"1",1*/0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00,/*"2",2*/0x00,0x0
24、0,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00,/*"3",3*/0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00,/*"4",4*/0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*"5",5*/0x00,0x00,0
25、xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00,/*"6",6*/0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00,/*"7",7*/0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00,/*"8",8*/0x00,0x00,0xE0
26、,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00,/*"9",9*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,/*" ",10*/0x08,0x20,0xF8,0x3F,0x00,0x24,0x00,0x02,0x80,0x2D,0x80,0x30,0x80,0x20,0x00,0x00,/*"k",11*/0x00,0x00,0x00
27、,0x6B,0x80,0x94,0x80,0x94,0x80,0x94,0x80,0x93,0x80,0x60,0x00,0x00,/*"g",*/0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",13*/0x20,0x80,0x20,0x40,0x22,0x20,0x22,0x10,0x22,0x0C,0xE2,0x03,0x22,0x00,0x22,0x00,0x22,0x00,0xE2,0x3F,0x22,0x40,0x22,0
28、x40,0x22,0x40,0x20,0x40,0x20,0x78,0x00,0x00,/*" 元",14*/;uint code tem16=0x08,0x20,0xF8,0x3F,0x08,0x21,0x08,0x01,0x08,0x01,0x08,0x01,0xF0,0x00,0x00,0x00,/*"P",0*/0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" : ",1*/0xF8,0x03,0x08,0x3
29、C,0x00,0x07,0xF8,0x00,0x00,0x07,0x08,0x3C,0xF8,0x03,0x00,0x00,/*"W",2*/0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" : ",3*/0x00,0x40,0x00,0x30,0x00,0x00,0xF1,0x03,0x12,0x39,0x14,0x41,0x10,0x41,0x10,0x45,0x10,0x59,0x14,0x41,0x12,0x41,0xF1,0x7
30、3,0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00,/*" 總 ",4*/0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,0x07,0x00,0x40,0x80,0x20,0x60,0x90,0x1F,0x0C,0x00,0x03,0x00,0x0C,0x00,0x90,0xFF,0x20,0x00,0x40,0x00,0x40,0x00,0x00,0x00,/*" 價(jià) ",6*/0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
31、x00,0x00,0x00,0x00,0x00,/*" :",8*/ Delay.c/ 延時(shí)函數(shù)void delay(uint x)/*100us延時(shí)函數(shù) */uint i;while(x-)for(i=100; i>0; i-); LCD12232.c/LCD12232 的使用函數(shù)sfr DATAport=0x80;/ 定義 LCD12232 數(shù)據(jù)口 (0x80 表示P0口)sbit lcda0=P20;/ 寫(xiě)(數(shù)據(jù) /指令)( 1/0)選擇 sbit lcde1=P21;/LCD 左邊使能sbit lcde2=P22;/LCD 右邊使能sbit lcdrw=P23
32、;/ (讀 /寫(xiě))( 1/0)狀態(tài)選擇sbit lcdbusy=P07;/ 忙狀態(tài)檢測(cè)位(即數(shù)據(jù)口最高位)void LCDcmd(uchar temp)delay(2);lcde1=0;/禁止控制器lcde2=0;lcda0=0;/寫(xiě)指令模式lcdrw=0;/寫(xiě)使能lcde1=1;/控制器使能lcde2=1;DATAport=temp;/寫(xiě)指令lcde1=0;/寫(xiě)完后,禁止控制器lcde2=0;/* 寫(xiě)數(shù)據(jù) */void LCDdata(bit lcde,uchar temp)delay(2);lcde1=0;/禁止控制器lcde2=0;lcda0=1;/寫(xiě)數(shù)據(jù)模式lcdrw=0;/寫(xiě)使能lc
33、de1=lcde;/(lcde=0/1)( 左 / 右 ) 控制器使能lcde2=lcde;DATAport=temp;/寫(xiě)數(shù)據(jù)lcde1=0;/寫(xiě)完后,禁止主控制器lcde2=0;/*LCD 清屏 */void LCDclr(uint Page)'.unsigned char i;LCDcmd(0xB8|Page);/設(shè)置主控制器頁(yè)地址LCDcmd(0x00);/設(shè)置主控制器列地址for(i=0;i<61;i+)LCDdata(0,0x00);for(i=0;i<61;i+)LCDdata(1,0x00);/*LCD 初始化 */void LCDrst()LCDcmd(0
34、xE2);/ 復(fù)位LCDcmd(0xAE);/ 關(guān)顯示LCDcmd(0xA4);/ 正常驅(qū)動(dòng)模式LCDcmd(0xA9);/ 占空比為1/32(即32 行液晶顯示驅(qū)動(dòng))LCDcmd(0xA1);/ 設(shè)定列驅(qū)動(dòng)與液晶列數(shù)據(jù)口連接方式 LCDcmd(0xEE);/ 正常讀寫(xiě)模式(讀 / 寫(xiě)數(shù)據(jù)后列地址+1)LCDclr(0);/擦除 0 頁(yè)LCDclr(1);/擦除 1 頁(yè)LCDclr(2);/擦除 2 頁(yè)LCDclr(3);/擦除 3 頁(yè)LCDcmd(0xAF);/ 開(kāi)顯示/*寫(xiě) LCD 字符串 */*寫(xiě)指令 */void LCDshow010(uint *a,uint b)uint i,j;f
35、or(j=0;j<2;j+)LCDcmd(0xB8|j);/第 j 頁(yè)顯示LCDcmd(0x00);/設(shè)置列開(kāi)始地址for(i=0; i<16;i+)/寫(xiě)前半部分 ,顯示 “P:”LCDdata(0,tem0i*2+j%2);if(a1=0)for(i=0; i<8;i+)/寫(xiě)前半部分,如果十位為0,空格占位LCDdata(0,number10i*2+j%2);elsefor(i=0; i<8;i+)/寫(xiě)前半部分 ,顯示單價(jià)的十位LCDdata(0,numbera1i*2+j%2);for(i=0; i<8;i+)/寫(xiě)前半部分,顯示單價(jià)的個(gè)位LCDdata(0,n
36、umbera0i*2+j%2);for(i=0; i<8;i+)/寫(xiě)前半部分,空格占位LCDdata(0,number10i*2+j%2);for(i=0; i<8;i+)/寫(xiě)前半部分,空格占位LCDdata(0,number10i*2+j%2);for(i=0; i<8;i+)/寫(xiě)前半部分,空格占位LCDdata(0,number10i*2+j%2);for(i=0; i<5;i+)/寫(xiě)后半部分,顯示“W:”LCDdata(0,tem2i*2+j%2);for(i=5; i<16;i+)/寫(xiě)后半部分 ,越界處理LCDdata(1,tem2i*2+j%2);if(
37、b/100=0)for(i=0; i<8;i+)/寫(xiě)后半部分,如果十位為0,空格占位LCDdata(1,number10i*2+j%2);elsefor(i=0; i<8;i+)/寫(xiě)后半部分,顯示重量的十位LCDdata(1,numberb/100i*2+j%2);for(i=0; i<8;i+)/寫(xiě)后半部分 ,顯示重量的個(gè)位LCDdata(1,number(b/10)%10i*2+j%2);for(i=0; i<8;i+)/寫(xiě)后半部分,顯示小數(shù)點(diǎn)LCDdata(1,number13i*2+j%2);for(i=0; i<8;i+)/寫(xiě)后半部分,顯示重量的小數(shù)位L
38、CDdata(1,numberb%10i*2+j%2);for(i=0; i<16;i+)/寫(xiě)后半部分 顯示 “kg符”號(hào)LCDdata(1,number11i*2+j%2);void LCDshow230(uint c)uint i,j;for(j=2;j<4;j+)LCDcmd(0xB8|j);/第 j 頁(yè)顯示'.LCDcmd(0x00);/設(shè)置列開(kāi)始地址for(i=0; i<40;i+)/寫(xiě)前半部分 ,顯示 “總價(jià): ”LCDdata(0,tem4i*2+j%2);if(c/10000=0)for(i=0; i<8;i+)/ 寫(xiě)前半部分,如果千位為0,千位
39、空格占位LCDdata(0,number10i*2+j%2);elsefor(i=0; i<8;i+)/寫(xiě)前半部分 ,顯示總價(jià)的千位LCDdata(0,numberc/10000i*2+j%2);if(c/1000=0)for(i=0; i<8;i+)/ 寫(xiě)前半部分,在千,百位都為0 的情況下,百位空格占位LCDdata(0,number10i*2+j%2);elsefor(i=0; i<8;i+)/寫(xiě)前半部分 ,顯示總價(jià)的百位LCDdata(0,number(c/1000)%10i*2+j%2);if(c/100=0)for(i=0; i<5;i+)/寫(xiě)前半部分,在千
40、、百、十位都為0 的情況下,十位空格占位LCDdata(0,number10i*2+j%2);for(i=5; i<8;i+)/ 寫(xiě)后半部分,顯示空格占位,因?yàn)榇嬖谠浇鏛CDdata(1,number10i*2+j%2);elsefor(i=0; i<5;i+)/寫(xiě)前半部分,顯示總價(jià)的十位LCDdata(0,number(c/100)%10i*2+j%2);for(i=5; i<8;i+)/ 寫(xiě)后半部分,顯示總價(jià)的十位,因?yàn)榇嬖谠浇鏛CDdata(1,number(c/100)%10i*2+j%2);for(i=0; i<8;i+)/寫(xiě)后半部分,顯示總價(jià)的個(gè)位LCDda
41、ta(1,number(c/10)%10i*2+j%2);for(i=0; i<8;i+)/寫(xiě)后半部分,顯示小數(shù)點(diǎn)LCDdata(1,number13i*2+j%2);for(i=0; i<8;i+)/寫(xiě)后半部分,顯示總價(jià)的小數(shù)位LCDdata(1,numberc%10i*2+j%2);for(i=0; i<16;i+)/寫(xiě)后半部分,顯示“元 ”符號(hào)LCDdata(1,number14i*2+j%2); ADC0832.c/ADC0832 的使用函數(shù)sbit ADC_CS =P10;sbit ADC_CLK=P11;sbit ADC_DIO =P12;uchar ReadAD
42、C() /把模擬電壓值轉(zhuǎn)換成8 位二進(jìn)制數(shù)并返回uchar i,dat1=1,dat2=0;ADC_CS=0;ADC_CLK=0;ADC_DIO=1;_nop_();_nop_();ADC_CLK=1;_nop_();_nop_();ADC_CLK=0;ADC_DIO=1; _nop_();_nop_(); ADC_CLK=1;_nop_();_nop_();ADC_CLK=0;ADC_DIO=0; _nop_();_nop_(); ADC_CLK=1;_nop_();_nop_();ADC_CLK=0;ADC_DIO=1; _nop_();_nop_(); for(i=0;i<8;i+
43、)ADC_CLK=1;_nop_();_nop_();ADC_CLK=0;_nop_();_nop_();dat1=(dat1<<1)|ADC_DIO;for(i=0;i<8;i+)dat2=dat2|(uchar)ADC_DIO<<i);ADC_CLK=1;_nop_();_nop_();ADC_CLK=0;_nop_();_nop_();'.ADC_CS=1;return (dat1=dat2)?dat1:0x00; MM74C922.c /MM74C922的使用函數(shù)sbit DA=P16;sbit BEEP=P17;uchar Get_key()uint a=16;if(DA)a=P2/16;return a;void Beep()uchar i;for(i=0;i<100;i+)delay(1);BEEP=BEEP;BEEP=1;void Juge_key(uint *c,uint e,uint f,uint *g,uint *h) uint i,b=Get_key();switch(b)case 0:if(c1!=0)break;for(i=1;i>0;i-)ci=ci-1;ci=1;while(DA);Beep(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年技術(shù)開(kāi)發(fā)合同模板(31篇)
- 2025年上海商業(yè)地產(chǎn)租賃合同解析
- 2025年個(gè)體工商戶委托加工合同
- 2025年臨時(shí)教員聘用合同范例
- 2025年房產(chǎn)擔(dān)保個(gè)人借款策劃協(xié)議書(shū)
- 2025年公共設(shè)施維護(hù)工程標(biāo)準(zhǔn)采購(gòu)協(xié)議
- 2025年人力資源雇傭管理協(xié)議
- 2025年電子美容儀項(xiàng)目提案報(bào)告范稿
- 2025年二手房買(mǎi)賣(mài)合同廢止示例
- 2025年標(biāo)準(zhǔn)射頻天線租賃合同文本
- 歷史-遼寧省協(xié)作體2024-2025學(xué)年度高三上學(xué)期期末考試試題試題和答案
- 2025年銀行安保年度工作計(jì)劃
- 臨床藥師進(jìn)修匯報(bào)總結(jié)
- 2025年浙江嘉興桐鄉(xiāng)市水務(wù)集團(tuán)限公司招聘10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年市青年企業(yè)家商會(huì)工作計(jì)劃
- 食品企業(yè)如何做好蟲(chóng)鼠害防控集
- 環(huán)保工程信息化施工方案
- 狂犬病暴露后預(yù)防處置
- 心律失常性心肌病
- 醫(yī)療器械代表年終總結(jié)
- 內(nèi)審和管理評(píng)審培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論