模擬電子秤仿真試驗報告_第1頁
模擬電子秤仿真試驗報告_第2頁
模擬電子秤仿真試驗報告_第3頁
模擬電子秤仿真試驗報告_第4頁
模擬電子秤仿真試驗報告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、阿壩師范高等??茖W(xué)校電子信息工程系課程設(shè)計模擬電子秤仿真設(shè)計學(xué)生姓名樊益明專業(yè)名稱計算機控制技術(shù)班級計控班學(xué)號20113079阿壩師范高等??茖W(xué)校電子信息工程系二O三年四月Word資料模擬電子秤設(shè)計報告一、設(shè)計原理及要求設(shè)計原理:電子秤系統(tǒng)設(shè)計框圖大致如圖 1所示:ADC0832 8位2進(jìn)制 模數(shù)轉(zhuǎn)換器;將放大的 電壓信號轉(zhuǎn)化為數(shù)值信 號,方便單片機的處理四個定值電阻加一 個電位器,模擬應(yīng) 變式傳感器, 采集微小的電壓信 號利用差分放大電 路,對采集到的微小電壓放大到05VMM74C922鍵 盤解碼器,方 便了對4x4鍵 盤的掃描。鍵 盤的作用主要 在單價的輸入 上。51單片機:處理和控制單元

2、,整個模擬 仿真的靈魂原件。1、將ADC0832轉(zhuǎn)化來 的數(shù)據(jù)處理后存放在重量(Wight)并用LCD顯示;2、將鍵盤輸入的數(shù)據(jù)賦給單 價(Price); 3、將總價(Total_price )計 算出來,并顯示P: 0 W: 0.0kg總價:0. 0元圖1系統(tǒng)整體設(shè)計框圖設(shè)計要求:1、要求單價由鍵盤輸入;2、重量的精度能夠達(dá)到十分之一千克;3、按鍵有提示音;4、有去皮的功能;二、主要硬件及仿真軟件硬件:(一)、ADC0832ADC0832是一種8位分辨率、雙通道 A/D轉(zhuǎn)換芯片。由于它體積小,兼容性,性價比高而深受單片機愛好者及企業(yè)歡迎。圖2.1為ADC0832在Proteus中的邏輯符號U

3、21234CSVCCCH0CLKCH1DIGNDDO8756ADC0832圖2.1ADC0832 邏輯符號芯片接口說明:CS片選使能,低電平芯片使能;CH0模擬輸入通道0,或作為IN+/-使用。CH1模擬輸入通道1,或作為IN+/-使用。GND芯片參考0電位(地)。DI數(shù)據(jù)信號輸入,選擇通道控制。DO數(shù)據(jù)信號輸出,轉(zhuǎn)換數(shù)據(jù)輸出。CLK芯片時鐘輸入。Vcc/REF電源輸入及參考電壓輸入(復(fù)用)。單片機對ADC0832的控制原理:正常情況下 ADC0832與單片機的接口應(yīng)為 4條數(shù)據(jù)線,分別是 CS、CLK、DO、DI但由于DO 端與DI端在通信時并未同時有效并與單片機的接口是雙向的,所以電路設(shè)計

4、時可以將DO和DI并聯(lián)在一根數(shù)據(jù)線上使用。(見圖 3.6 )當(dāng)ADC0832未工作時其CS輸入端應(yīng)為高電平,此時芯片 禁用,CLK和DO/DI的電平可任意。當(dāng)要進(jìn)行 A/D轉(zhuǎn)換時,須先將 CS使能端置于低電平并且保 持低電平直到轉(zhuǎn)換完全結(jié)束。此時芯片開始轉(zhuǎn)換工作,同時由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號。在第1個時鐘脈沖的下沉之前 DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前 DI端應(yīng)輸入2位數(shù)據(jù)用于選擇通道功能,其功能項見表 1。4wb r* r Tr 1 決豪t_.c= o o/oTo-U=U23ME 4=! BdlA

5、 曰7= rwiux三口二 A.rzicz:O育*wr-w丁亡耳 rwiux: WlQule如表1所示,當(dāng)此2位數(shù)據(jù)為“1 ”、0”時,只對CH0進(jìn)行單通道轉(zhuǎn)換。當(dāng) 2位數(shù)據(jù)為“1”、1 時,只對CH1進(jìn)行單通道轉(zhuǎn)換。當(dāng) 2位數(shù)據(jù)為“0”、0”時,將CH0作為正輸入端IN+ , CH1作為 負(fù)輸入端IN-進(jìn)行輸入。當(dāng)2位數(shù)據(jù)為“0”、1”時,將CH0作為負(fù)輸入端IN-, CH1作為正輸入端IN+進(jìn)行輸入。所以我們利用前 1 2個脈沖來設(shè)置ADC0832的通道選擇,到第 3個脈沖的下沉之 后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數(shù)據(jù)輸出 DO進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個脈沖下

6、沉開始由 DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位 DATA7,隨后每一個脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第 11個脈沖時發(fā)出最低位數(shù)據(jù) DATA0,一個字節(jié)的數(shù)據(jù)輸出完成。也正是從 此位開始輸出下一個相反字節(jié)的數(shù)據(jù),即從第11個字節(jié)的下沉輸出 DATD0。隨后輸出8位數(shù)據(jù),到第19個脈沖時數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D轉(zhuǎn)換的結(jié)束。最后將 CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。更詳細(xì)的時序說明請見圖2.2 (圖2.2為ADC0832的時序圖)。人口CCS32 Timi/igtLecic壯野tlirSJCT inj-15(Hllat! DOO 110*KJ II 11 U 14II 牲!

7、0LfmRRRRRRRRRRmmAOUTPLl MTUPOU T fPK P PKAtLED門肚|:ntMTTTIMEIMSBi(二)、LCD12232VSR Flr EAT1圖2.2ADC0832 時序圖LSI DWATRt;TILTlUSfLCD4HDM32GS12-B呂 Hj o t oj 皂 o t oj co v g g z LU _!j AA 二HpLULU 比 OCJGOOGCZ) CJ | Qi co m卜HW48W三|二卜|*|密yw圖2.3LCD12232邏輯符號管腳說明VDD :邏輯電源正GND(VSS):邏輯電源地VO(VEE) : LCD驅(qū)動電源RESET :復(fù)位端。

8、E1 :讀寫使能。E2 :同E1引腳。/RD :讀允許,低電平有效。/WR :寫允許,低電平有效。R/W :讀寫選擇A0 :數(shù)據(jù)/指令選擇 高電平:數(shù)據(jù) D0-D7將送入顯示RAM ; 低電平:數(shù)據(jù) D0-D7將送入指令執(zhí)行器執(zhí)行。D0-D7 :數(shù)據(jù)輸入輸出引腳。圖2.4為LCD的時序圖圖2.4LCD12232 時序圖圖2.5為顯示存儲器(DDRAM )與地址的對應(yīng)關(guān)系(顯示設(shè)定為1/32DUTY,顯示起始行為10th)Line Add th*Chw Output EjuhI* Cwi OutputAtidrv&s OATAD i e p 1 a v PatternDL02-08OAocStj

9、rtPoint3 Page111713M151617IB191AW1CIDLA LCDo=0Ml01033C5064f440戦4A鉀Ten*.0123XTAL1XTAL2PO.O/ADOPO.1/AD1P0-2/AD2 P0 3D3 P0.4/AD4 P0.5/AD5 PO.&fAD5nHU./fAUfPSEN 創(chuàng)工 EAP2J0/ASP21/A9 P2.2/A10 P2 3I/A11 P2A/A12 P2 5/A13 P26/A14 P27/A15P3.0/RXD P31JTXD P3J2INT0 P3 3HNT1PJ.4.11 UKd-s/l 1P36/V P3.7/RD1_ rATB3C

10、5i三圖2.6 AT89C51 邏輯符號AT89C51 是一種帶 4K 字節(jié) FLASH 存儲器(FPEROM Flash Programmable and ErasableRead Only Memory )的低電壓、高性能 CMOS 8位微處理器,俗稱單片機。 AT89C2051是一種 帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用 ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能 8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2

11、051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供 了一種靈活性高且價廉的方案。AT89C51 提供以下標(biāo)準(zhǔn)功能: 4k字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部 RAM,32個I/O 口線,兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時 鐘電路。同時,AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式???閑方式停止 CPU的工作,但允許 RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方 式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。仿真軟件:(一)、Proteus它不

12、僅具有其它 EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具,在這里完全能夠滿足我們對電子秤的仿真需要。(二)、Keil C51Keil C51是51系列兼容單片機 C語言軟件開發(fā)系統(tǒng),與匯編相比, C語言在功能上、結(jié)構(gòu) 性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,因為我們在此次模擬仿真中使用 C語言編程,所以 Keil幾乎就是我們的不二之選。三、設(shè)計步驟(一)、軟件設(shè)計1、延時函數(shù)delay ()的編寫(Delay.c):在這個 C文件中,只有一

13、個函數(shù)void delay(uint x),該函數(shù)的作用 是,延時100*x (微秒)。2、ADC0832的驅(qū)動代碼編寫(ADC0832.C ):在這個C文件中,只有一個函數(shù) uchar ReadADC(),它的返回值為 8位2進(jìn)制數(shù),表示的 放大后的電壓值。圖3.1為uchar ReadADC()的程序設(shè)計流程圖dat =dat2輸出輸出datl0x00結(jié)束圖3.1程序設(shè)計流程圖3、MM74C922 的驅(qū)動代碼編寫(MM74C922.C ):在這個 C文件中,有三個函數(shù):、uchar Get_key(),作用是獲得 MM74C922 轉(zhuǎn)化的4位二進(jìn)制,并轉(zhuǎn)化為十進(jìn)制;、void Beep()

14、,是蜂鳴器的驅(qū)動程序;、void Juge_key()判斷按鍵值,并作出相應(yīng)操作圖3.2為void Juge_key()的程序設(shè)計流程圖uchar Get_key()獲得MM74C922?;?位二進(jìn)制,并轉(zhuǎn)化為十進(jìn)制bb=Get_key();switch(b)0912141115、 4、 7輸出09歸零確認(rèn)去皮顯示時間、特 效、小數(shù)點()結(jié)束圖3.2程序設(shè)計流程圖4、LCD12232 的驅(qū)動代碼編寫(LCD12232.C):在這個C文件中,主要包含了兩個顯示函數(shù)、void LCDshow010(ui nt *a,ui nt b)這個函數(shù)主要是實現(xiàn)LCD第一行的顯示,顯示“ P : 0 W 0

15、.0kg ”字樣。、void LCDshow230(uint c)這個函數(shù)主要是實現(xiàn)LCD第二行的顯示,顯示“總價:0.0元”字樣。5、Ma in文件的編寫(Mai n.c):在這個C文件中,主要包含了 main ()函數(shù),它的功能是調(diào)用其他 C文件中的函數(shù),因此, 在寫ma in ()函數(shù)時,應(yīng)當(dāng)先做其他文件的調(diào)用聲明,如下:#i ncludeFo nt.h; /存放取模數(shù)據(jù)的頭文件#i ncludeDelay.c 延時函數(shù)#i ncludeLCD12232.cLCD12232的驅(qū)動程序#in cludeADC0832.c/ADC0832的驅(qū)動程序#i ncludeMM74C922.c /M

16、M74C922的驅(qū)動程序圖3.3為main()的程序設(shè)計流程圖LCD的復(fù)位操作,為 LCD將電壓信號與重量建立等式關(guān)系weight=2*adcdata*1.960-Levelweight-3;LCD的第一行顯示LCDshow010(p,weight);計算出總價Total_price=Price*WeightLCD第二行顯示LCDshow230(Total_price)按鍵掃描函數(shù)Juge_key()圖3.3程序設(shè)計流程圖(二)、硬件電路搭建1、模擬應(yīng)變式傳感器單臂電橋的搭建:由于Proteus沒有測重量的應(yīng)變式傳感器器件,所以在這里我們用四個電阻和一個電位器來模擬傳感器的工作原理。采用如圖3

17、.4所示電路圖連接:圖3.4模擬傳感器電橋其中、R2 =R4 0i I ; R Rv! - R 350 1 ;圖中所示Uo為傳感器采集到的電壓信號,Rv1=1.5? , R3 =348.5 ?,所以 U。的變化范圍為 05mV2、微小電壓信號差分放大電路的搭建:在實際應(yīng)用中,此種放大電路能夠有效的降低噪聲對正常信號的影響。在本次模擬中能夠有效的完成1000倍的放大,將最大 05mV的電壓信號放大為最大 05V。連接電路圖如圖 3.5所示:具體推套方式如下:U3 U4_ 5 u2RV7RV2Rv6Rv2U3 - U4Rv7 Rv2 Rv6 , , Ul -U2R.V2Rv7 = Rv6;U3 U

18、4 =1 2皿Ui -U2Rv2U3_R7 甩甩U3u4UOUO U4 UoU5-UoR7R5R7R5R5R7R5R6 * &18*U3 - U4UOU O=R7 R5 R5 R7 R5.上 (1邊也)空U1 - U2Rv 2 R7根據(jù)以上推套,我們要實現(xiàn)1000倍的放大,則只需確定rV2、rV7、r7、r5四個電阻的阻值即可。本次設(shè)計中我們?nèi)V2 =11、民7 =1851、R7 =10K、R5 =20K,只需調(diào)節(jié)圖3.53、ADC0832與51單片機及LCD的連接電路:關(guān)于ADC0832與單片機的連接方法在前面已經(jīng)提過,在此不贅述了,我們選用CH0作為信號輸入通道;關(guān)于AT89C51的:P

19、1.0 P1.2 口分別接ADC0832的片選使能端 CS、時鐘信號端 CLK、數(shù)據(jù)輸出端 DIO,其 中P1.6接MM74C922的輸入提示端 DA,P1.7接蜂鳴器;D.V A nibXTXLiXTAL2ZZFfREHTFSEM ALE 曰FIDF1.1F12PtZIFl.* 1*1 P1IJ6 Fl .70也U2ClLK DIBO:w1貶舊0*黑.7 aaaiaaa !戶王SASEI11P口 ue 壬-g a z z 2 2 2P3JJTWT5psjHrrrpza.moP3jmF3J&WRra-mr圖3.6 ADC0832與51單片機及LCD的連接電路P0端口接上拉電阻作 LCD的D0

20、D7數(shù)據(jù)輸入端;P2.0 P2.7依次接LCD的數(shù)據(jù)指令控制端 A0、LCD前半部分使能端 E0、LCD后半部分 使能端E1、LCD讀寫控制端 RW以及MM74C922的四位數(shù)據(jù)傳輸斷 A、B、C、D。(具體連接如圖3.6)4、鍵盤解碼器 MM74C922以及4*4鍵盤的連接電路:關(guān)于MM74C922的電路連接如圖 3.7所示C4MM74C022CZL.J=L f ci I 言 T OJ irO M- LO CO h- IlLLJ il 丄 Daaylljijj 左 口二匸口二匚二 allur ld lu示:丄卜卜I導(dǎo)|衆(zhòng)|斗斗曇圖曇I三目I邑I昱罔軍I二k圖4.6應(yīng)當(dāng)注意的是:在使用了去皮功

21、能后,應(yīng)當(dāng)做歸零操作。4、按鍵有提示音:此項功能只需要增加一個蜂鳴器(接單片機P1.7腳)在編寫按鍵掃描程序中,在每一個case語句后添加上蜂鳴器的驅(qū)動程序即可。當(dāng)有按鍵按下時,就會調(diào)用蜂鳴器的驅(qū)動序,促使蜂鳴器發(fā)出“滴”的一聲。附錄I:圖一:所有電路連接的全局圖Word資料I Iqr%.I T, | 11MM-CKZgtVlC1 iHr- r=TKiIcdxii.rvLfHfr_-J=Lf廠.-J=LrtiTLC*Tn附錄H:附所有程序源代碼:CMl 01 L圖一応*|N-.ii4xvU.F;.*;fFFZMf 阿h:* ! i.i:|Jmj*t:J 1 JMTT:T.P.gJliJI:!.

22、T:i Td-rFont.h/ 存放取模數(shù)據(jù)的頭文件0x22,0x00,0xE2,0x3F,0x22,0x40,0x22,0x40,0x22,0x40,0Word 資料#define uchar unsigned char#define uint unsigned intuint code number16=0x00,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,0x2

23、0,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,0x00,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,

24、0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*5,5*/0x00,0x00,0xE0,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

25、,0x88,0x22,0x70,0x1C,0x00,0x00,/*8,8*/0x00,0x00,0xE0,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,0x00,0x00,0x00,0x00,0x00,/* ,10*/0x08,0x20,0xF8,0x3F,0x00,0x24,0x00,0x02,0x80,0x2D,0x80,0x30,0x80,0x20,0x00,0x00,/*k,11*

26、/0x00,0x00,0x00,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,x20,0x40,0x20,0x78,0x00,0x00,/* 元 ,14*/;uint

27、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,0x3C,0x00,0x07,0xF8,0x00,0x00,0x07,0x08,0x3C,0xF8,0x03,0x00,0x00,/*W,2*/0x00,0x00,0x00,0x33,0x00,0

28、x00,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,0x73,0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00,/* 總 ,4*/0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,0x07,0x00,0x40,0x80,0x20,0x6

29、0,0x90,0x1F,0x0C,0x00,0x03,0x00,0x0C,0x00,0x90,0xFF,0x20,0x00,0x40,0x00,0x40,0x00,0x00,0x00,/* 價 ,6*/0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* : ,8*/Delay.c/ 延時函數(shù)void delay(uint x)/*100us 延時函數(shù) */uint i;while(x-)for(i=100; i0; i-);LCD12232.c/LCD12232的使用函數(shù)sfr D

30、ATAport=0x80;/ 定義 LCD12232 數(shù)據(jù)口 (0x80 表示 P0口)sbit lcda0=P2A0; 寫(數(shù)據(jù) /指令)(1/0)選擇sbit lcde 仁 P2Y;/LCD 左邊使能sbit lcde2=P2A2;/LCD 右邊使能sbit lcdrw=P2A3;/ (讀 /寫)(1/0 )狀態(tài)選擇for(i=0;i61;i+)LCDdata(0,0x00);sbit lcdbusy=P0A7;忙狀態(tài)檢測位(即數(shù)據(jù)口最高位)void LCDcmd(uchar temp)delay(2);lcde2=0;lcda0=0;/寫指令模式LCDdata(1,0x00);lcdrw

31、=0;/寫使能lcde1=1;/控制器使能/*LCD 初始化 */lcde2=1;void LCDrst()DATAport=temp;/寫指令LCDcmd(0xE2);/ 復(fù)位lcde1=0;/寫完后,禁止控制器LCDcmd(0xAE);/ 關(guān)顯示lcde2=0;LCDcmd(0xA4);/ 正常驅(qū)動模式LCDcmd(0xA9);/ 占空比為 1/32 (即 32 行液晶顯示驅(qū)/*寫數(shù)據(jù) */動)void LCDdata(bit lcde,uchar temp)LCDcmd(0xA1);/ 設(shè)定列驅(qū)動與液晶列數(shù)據(jù)口連接方式delay(2);LCDcmd(0xEE);/ 正常讀寫模式(讀 /寫

32、數(shù)據(jù)后列地址lcde1=0;/禁止控制器+1)lcde2=0;LCDclr(0);/擦除 0 頁lcda0=1;/寫數(shù)據(jù)模式LCDclr(1);/擦除 1 頁lcdrw=0;/寫使能LCDclr(2);/擦除 2 頁lcde1=lcde;/(lcde=0/1)( 左/右 )控LCDclr(3);/擦除 3 頁制器使能LCDcmd(0xAF);/ 開顯示lcde2=lcde;DATAport=temp;/寫數(shù)據(jù)/*寫 LCD 字符串 */lcde1=0;/寫完后,禁止主控制/*寫指令 */器void LCDshow010(uint *a,uint b)lcde2=0;uint i,j;for(j

33、=0;j2;j+)/*LCD 清屏 */LCDcmd(0xB8|j);void LCDclr(uint Page)/第 j 頁顯示unsigned char i;LCDcmd(0x00);LCDcmd(0xB8|Page);/設(shè)置主控/設(shè)置列開始地址制器頁地址for(i=0; i16;i+)LCDcmd(0x00);/寫前半部分,顯示P:”lcde1=0;/禁止控制器for(i=0;i61;i+)/設(shè)置主控制器列地址LCDdata(0,tem0i*2+j%2);if(a1=0)for(i=0; i8;i+)/ 寫前半部分,如果十位為 0,空格占位LCDdata(0,number10i*2+j%

34、2);elsefor(i=0; i8;i+)/寫前半部分 ,顯示單價的十位LCDdata(0,numbera1i*2+j%2);for(i=0; i8;i+)/寫前半部分,顯示單價的個位LCDdata(0,numbera0i*2+j%2);for(i=0; i8;i+)/寫前半部分,空格占位LCDdata(0,number10i*2+j%2);for(i=0; i8;i+)/寫前半部分,空格占位LCDdata(0,number10i*2+j%2);for(i=0; i8;i+)/寫前半部分,空格占位LCDdata(0,number10i*2+j%2);for(i=0; i5;i+)/寫后半部分

35、,顯示 “W: ”LCDdata(0,tem2i*2+j%2);for(i=5; i16;i+)/寫后半部分 ,越界處理LCDdata(1,tem2i*2+j%2);if(b/100=0)for(i=0; i8;i+)/寫后半部分,如果十位為 0,空格占位LCDdata(1,number10i*2+j%2);elsefor(i=0; i8;i+)/寫后半部分 ,顯示重量的十位LCDdata(1,numberb/100i*2+j%2);for(i=0; i8;i+)/寫后半部分 ,顯示重量的個位LCDdata(1,number(b/10)%10i*2+j%2);for(i=0; i8;i+)/寫

36、后半部分,顯示小數(shù)點LCDdata(1,number13i*2+j%2);for(i=0; i8;i+)/寫后半部分,顯示重量的小數(shù)位LCDdata(1,numberb%10i*2+j%2);for(i=0; i16;i+)/寫后半部分顯示kg ”符號LCDdata(1, number11i*2+j%2);void LCDshow230(uint c)uint i,j;for(j=2;j4;j+)LCDcmd(0xB8|j);/第 j 頁顯示LCDcmd(0x00);/設(shè)置列開始地址for(i=0; i40;i+)/寫前半部分 ,顯示 “總價: ”LCDdata(0,tem4i*2+j%2);

37、if(c/10000=0)for(i=0; i8;i+)/寫前半部分,如果千位為0 ,千位空格占位LCDdata(0,number10i*2+j%2);elsefor(i=0; i8;i+)/寫前半部分 ,顯示總價的千位LCDdata(0,numberc/10000i*2+j%2);if(c/1000=0)for(i=0; i8;i+)/ 寫前半部分,在千,百位都為0 的情況下,百位空格占位LCDdata(0,number10i*2+j%2);elsefor(i=0; i8;i+)/寫前半部分 ,顯示總價的百位LCDdata(0,number(c/1000)%10i*2+j%2);if(c/1

38、00=0)for(i=0; i5;i+)/寫前半部分,在千、百、十位都為 0 的情況下,十位空格占位LCDdata(0,number10i*2+j%2);for(i=5; i8;i+)/ 寫后半部分,顯示空格占位,因為存在越界LCDdata(1,number10i*2+j%2);elsefor(i=0; i5;i+)/寫前半部分,顯示總價的十位LCDdata(0,number(c/100)%10i*2+j%2);for(i=5; i8;i+)/ 寫后半部分,顯示總價的十位,因為存在越界LCDdata(1,number(c/100)%10i*2+j%2);for(i=0; i8;i+)/寫后半部

39、分,顯示總價的個位LCDdata(1,number(c/10)%10i*2+j%2);for(i=0; i8;i+) /寫后半部分,顯示小數(shù)點LCDdata(1,number13i*2+j%2);for(i=0; i8;i+) /寫后半部分,顯示總價的小數(shù)位LCDdata(1,numberc%10i*2+j%2);for(i=0; i16;i+) /寫后半部分,顯示 “元 ”符號LCDdata(1,number14i*2+j%2);ADC_CLK=0;uchar ReadADC() /把模擬電壓值轉(zhuǎn)換成 8 位二進(jìn)制數(shù)并返_nop_();_nop_();_nop_();_nop_();_nop

40、_();_nop_();ADC0832.c/ADC0832 的使用函數(shù)sbit ADC_CS =PMO;sbit ADC_CLK=P1A1;sbit ADC_DIO =P1A2;uchar i,dat1=1,dat2=O;ADC_CS=O;ADC_CLK=O;ADC_DIO=1;_nop_();_nop_();ADC_CLK=1;_nop_();_nop_();ADC_CLK=O;ADC_DIO=1;ADC_CLK=1;_nop_();_nop_();ADC_CLK=O;ADC_DIO=O;ADC_CLK=1;_nop_();_nop_();ADC_CLK=O;ADC_DIO=1;for(i=

41、O;i8;i+) ADC_CLK=1;_nop_();_nop_();ADC_CLK=O;_nop_();_nop_();dat1=(dat11)|ADC_DIO;for(i=O;i8;i+) dat2=dat2|(uchar)ADC_DIOi);ADC_CLK=1;_nop_();_nop_();_nop_();_nop_();ADC_CS=1;return (dat1=dat2)?dat1:OxOO;MM74C922.c /MM74C922的使用函數(shù)sbit DA=P1A6;sbit BEEP=P1A7;uchar Get_key()uint a=16;if(DA)a=P2/16;return a;void Beep()uchar i;for(i=O;iO;i-)ci=ci-1;ci=1;while(DA);Beep();break;case1:if(c1!=O)break;for(i=1;iO;i-)ci=ci-1;ci=2;while(DA);Beep();break;case2:if(c1!=O)break;for(i=1;iO;i-)ci=ci-1;ci=3;while(DA);Beep();break;case 3:Beep();break;case4:if(c1!=0)break;for(i=1;i0;i-)ci=ci-1;ci=4;whil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論