基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì) 論文_第1頁
基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì) 論文_第2頁
基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì) 論文_第3頁
基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì) 論文_第4頁
基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì) 論文_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本科畢業(yè)論文畢業(yè)設(shè)計(jì)(論文)題目 出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì) 專業(yè)班級(jí) 計(jì)算機(jī)通信工程08級(jí) 學(xué)號(hào) 姓名 指導(dǎo)教師姓名 指導(dǎo)教師職稱 講師 2011年 12 月 2 日摘 要摘 要:出租車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無論是對(duì)廣大出租車司機(jī)朋友還是乘客來說都是很必要的。因此,汽車計(jì)價(jià)器的研究也是十分有一個(gè)應(yīng)用價(jià)值的。 而采用模擬電路和數(shù)字電路設(shè)計(jì)的計(jì)價(jià)器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試,對(duì)于模式的切換需要用到機(jī)械開關(guān),機(jī)械開關(guān)時(shí)間久了會(huì)造成接觸不良,功能不易實(shí)現(xiàn)。而采用單片機(jī)進(jìn)行

2、的設(shè)計(jì),相對(duì)來說功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎膶?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過軟件編程來完成更多的附加功能。針對(duì)計(jì)費(fèi)模式的切換,通過軟件編程就可以輕易而舉的實(shí)現(xiàn)。避免了機(jī)械開關(guān)帶來的不穩(wěn)定因素。關(guān)鍵詞: 出租車計(jì)價(jià)器; 單片機(jī) ; 控制abstractabstract: taximeter is both passengers and drivers of the transaction criteria, it is the taxi industry an important symbol, a taxi is the most important tools.

3、it relates to the interests of both transactions. has a good performance regardless of the meter is a vast number of taxi drivers or passengers are very necessary. therefore, the car meter is also very much a study of value. the use of analog circuits and digital circuit design of the meter as a who

4、le circuit of a larger scale, using the device, a failure rate is high and difficult to debug, the pattern of switching need to use mechanical switches, mechanical switch will cause a long-time contacts bad, functions not easy to achieve. scm used for the design, a relatively powerful, with less har

5、dware and appropriate software can easily coordinate with each other to achieve the design requirements, flexibility and strong, can be programmed by software to complete more of the additional function. pricing model for the switch, software programming and can easily cite the achievement. to avoid

6、 a mechanical switch the destabilizing factors.keywords: taximeter ; 89 s51 mcu ; control目 錄摘要 .第 1章 引言 .1. 1 出租車計(jì)價(jià)器概述 .1. 2 本設(shè)計(jì)任務(wù) . 1.2.1 設(shè)計(jì)任務(wù) . 1.2.2 設(shè)計(jì)要求 .1. 3 系統(tǒng)主要功能 .第2章 系統(tǒng)主程序設(shè)計(jì) .第3章 定時(shí)中斷程序設(shè)計(jì).第4章 中斷服務(wù)程序設(shè)計(jì).4. 1 里程計(jì)數(shù)中斷服務(wù)程序. 4. 2 中斷等待服務(wù)程序概述.第5章 鍵盤服務(wù)程序設(shè)計(jì) .第6章 顯示子程序服務(wù)程序設(shè)計(jì).第7章 設(shè)計(jì)源程序 .致謝.參考文獻(xiàn).第1章 引 言本

7、次課程設(shè)計(jì)利用單片機(jī)技術(shù)來實(shí)現(xiàn)一臺(tái)多功能出租車計(jì)價(jià)器,具有性能可靠、電路簡(jiǎn)單、成本低等特點(diǎn)。1.1 出租車計(jì)價(jià)器概述計(jì)價(jià)器顯示的營(yíng)運(yùn)金額是營(yíng)運(yùn)里程與價(jià)格的函數(shù)(等候時(shí)間一般折算成一定比例的里程來計(jì)算)。出租車計(jì)價(jià)器通過傳感器與行駛車輛連接。出租汽車的實(shí)際里程通過傳感器的脈沖信號(hào)在計(jì)價(jià)器里折算成一定的計(jì)價(jià)營(yíng)運(yùn)里程。目前市場(chǎng)上出租車計(jì)價(jià)器功能主要有具有數(shù)據(jù)的復(fù)位功能、白天/晚上轉(zhuǎn)換功能、數(shù)據(jù)輸出功能、計(jì)時(shí)計(jì)價(jià)功能等等,但能夠進(jìn)行語音播報(bào)數(shù)據(jù)信息的出租車計(jì)價(jià)器還是比較少見的,針對(duì)這一點(diǎn)我們來設(shè)計(jì)一款多功能出租車計(jì)價(jià)器,在原有功能的基礎(chǔ)上增加單價(jià)輸出、單價(jià)調(diào)整、路程輸出、顯示當(dāng)前的系統(tǒng)時(shí)間、語音播報(bào)數(shù)

8、據(jù)信息等功能。1.2 本設(shè)計(jì)任務(wù)1.2.1 設(shè)計(jì)任務(wù) 設(shè)計(jì)一款基于at89s51單片機(jī),霍爾傳感器的出租車計(jì)價(jià)器。1.2.2 設(shè)計(jì)要求1 不同情況具有不同的收費(fèi)標(biāo)準(zhǔn)。l 白天l 晚上l 途中等待(10min 開始收費(fèi))2能進(jìn)行手動(dòng)修改單價(jià)。3具有數(shù)據(jù)的復(fù)位功能。(1) io 口分配的簡(jiǎn)易要求。l 距離檢測(cè)使用霍爾開關(guān)a44el 白天/晚上收費(fèi)標(biāo)準(zhǔn)的轉(zhuǎn)換開關(guān)l 數(shù)據(jù)的清零開關(guān)l 單價(jià)的調(diào)整(最好使用和按鍵)(2) 數(shù)據(jù)輸出(采用lcm103)。l 單價(jià)輸出 2 位l 路程輸出 2 位l 總金額輸出 3 位4.按鍵。l 啟動(dòng)計(jì)時(shí)開關(guān)l 數(shù)據(jù)復(fù)位(清零)l 白天/晚上轉(zhuǎn)換1.3 系統(tǒng)主要功能 本課程

9、設(shè)計(jì)所設(shè)計(jì)的出租車計(jì)價(jià)器的主要功能有:數(shù)據(jù)的復(fù)位、白天/晚上轉(zhuǎn)換、數(shù)據(jù)輸出、計(jì)時(shí)計(jì)價(jià)、單價(jià)輸出及調(diào)整、路程輸出、語音播報(bào)數(shù)據(jù)信息、實(shí)現(xiàn)在系統(tǒng)掉電的時(shí)候保存單價(jià)和系統(tǒng)時(shí)間等信息等功能。輸出采用8 段數(shù)碼顯示管。本電路設(shè)計(jì)的計(jì)價(jià)器不但能實(shí)現(xiàn)基本的計(jì)價(jià),而且還能根據(jù)白天、黑夜、中途等待來調(diào)節(jié)單價(jià),同時(shí)在不計(jì)價(jià)的時(shí)候還能作為時(shí)鐘為司機(jī)同志提供方便。 第2章 系統(tǒng)主程序設(shè)計(jì)2.1 初始化程序系統(tǒng)上電時(shí),初始化程序?qū)1r5儲(chǔ)存單元清0.2.2 主程序主程序中通過循環(huán)判斷是否等待計(jì)價(jià)和車輪計(jì)數(shù)進(jìn)行總體計(jì)價(jià)的實(shí)現(xiàn)。在等計(jì)價(jià)中,調(diào)用等待計(jì)價(jià)子程序,每4秒調(diào)用計(jì)數(shù)子程序?qū)τ?jì)數(shù)器加1,在車輪計(jì)中,車輪每轉(zhuǎn)過1周調(diào)

10、用計(jì)數(shù)子程序?qū)τ?jì)數(shù)器加1。通過計(jì)數(shù)器中的累加值,判斷數(shù)值并調(diào)用顯示。計(jì)數(shù)子程序是通過對(duì)工作寄存器的循環(huán)累加實(shí)現(xiàn)的。 秒定時(shí)子程序通過2000循環(huán)調(diào)用定時(shí)器的2毫秒定時(shí)實(shí)現(xiàn),對(duì)應(yīng)調(diào)用相應(yīng)子程序。 碼管顯示子程序通過動(dòng)態(tài)掃描實(shí)現(xiàn)。 毫秒定時(shí)是通過軟件延時(shí)來實(shí)現(xiàn)的。系統(tǒng)初始化后,判斷p1.1口,是否等待計(jì)價(jià).若是則進(jìn)入等待計(jì)價(jià)處理,若否,則進(jìn)入下一步,判斷是否進(jìn)行車輪計(jì)數(shù),若沒有進(jìn)行車輪計(jì)數(shù)則返回等待計(jì)價(jià)處理,若進(jìn)行車輪計(jì)數(shù),則由計(jì)數(shù)器加1,然后判斷計(jì)數(shù)器是否加到50,若不到50,則由數(shù)碼管顯示,若到了50則由到50方式處理,最后由數(shù)碼管顯示計(jì)算的價(jià)錢。2.3 主程序流程圖開始初始化是否等待計(jì)價(jià)是否

11、車輪計(jì)數(shù)計(jì)數(shù)器加1是否計(jì)數(shù)到50到50處理不到50處理數(shù)碼管顯示等待計(jì)價(jià)處理是否否否是是第3章 定時(shí)中斷程序設(shè)計(jì) 3.1 程序概述在定時(shí)中斷服務(wù)程序中,每100ms 產(chǎn)生一次中斷,當(dāng)產(chǎn)生10 次中斷的時(shí)候,也就到了一秒,送數(shù)據(jù)到相應(yīng)的顯示緩沖單元,并調(diào)用顯示子程序?qū)崟r(shí)顯示。3.2定時(shí)中斷程序流程圖開始保護(hù)現(xiàn)場(chǎng)重置計(jì)數(shù)初值否中斷10次?是數(shù)據(jù)送顯示緩沖單元調(diào)用顯示子程序恢復(fù)現(xiàn)場(chǎng)并中斷返回 定時(shí)中斷服務(wù)程序第4章 中斷服務(wù)程序設(shè)計(jì)4.1里程計(jì)數(shù)中斷服務(wù)程序概述每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使單片機(jī)中斷一次,當(dāng)里程計(jì)數(shù)器對(duì)里程脈沖計(jì)滿1000 次時(shí),使微機(jī)進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中。在該程序中,

12、需要完成當(dāng)前行駛里程數(shù)和總額的累加操作,并將結(jié)果存入里程和總額寄存器中4.2中斷等待服務(wù)程序概述當(dāng)在計(jì)數(shù)狀態(tài)下霍爾開關(guān)沒有輸出信號(hào),片內(nèi)的t1 定時(shí)器便被啟動(dòng),每當(dāng)計(jì)時(shí)到達(dá)10分鐘,就對(duì)當(dāng)前金額加上中途等待的單價(jià),以后每十分鐘都自動(dòng)加上中途等待的單價(jià)。當(dāng)中途等待結(jié)束的時(shí)候,也就自動(dòng)切換到正常的計(jì)價(jià)。第5章 鍵盤服務(wù)程序設(shè)計(jì)5.1鍵盤服務(wù)程序概述鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。第6章 顯示子程序服務(wù)程序設(shè)計(jì)6.1顯示子程序服務(wù)程序概述由于是分屏顯示數(shù)據(jù),所以就要用到4 個(gè)顯示子程序,分別是:時(shí)分秒顯

13、示子程序(hms_dis)、金額單價(jià)顯示子程序(cp_dis)、路程單價(jià)顯示子程序(dp_dis)、單價(jià)調(diào)節(jié)子程序(pa_dis)。第7章 設(shè)計(jì)源程序#include#include#include #include #define uchar unsigned char#define uint unsigned int/* ds12887實(shí)時(shí)時(shí)鐘時(shí)間地址設(shè)置 */#define second xbyte 0x6000 /* 秒寄存器地址 */#define sec_alarm xbyte 0x6001#define minute xbyte 0x6002 /* 分寄存器地址 */#defin

14、e min_alarm xbyte 0x6003#define hour xbyte 0x6004 /* 小時(shí)寄存器地址 */#define week xbyte 0x6006 /* 星期寄存器地址 */#define date xbyte 0x6007 /* 日期寄存器地址 */#define month xbyte 0x6008 /* 月寄存器地址 */#define year xbyte 0x6009 /* 年寄存器地址 */#define rega xbyte 0x600a /* a寄存器地址 */#define regb xbyte 0x600b /* b寄存器地址 */#defin

15、e regc xbyte 0x600c /* c寄存器地址 */#define regd xbyte 0x600d /* d寄存器地址 */* rt12864hz漢字圖形點(diǎn)陣液晶地址設(shè)置 */#define w_c_add xbyte0x2070 /* 寫命令字地址 */#define w_d_add xbyte0x2071 /* 寫數(shù)據(jù)地址 */#define r_s_add xbyte0x2072 /* 讀狀態(tài)字地址 */ #define r_d_add xbyte0x2073 /* 讀數(shù)據(jù)地址 */#define com xbyte0x2021 /*8279命令口 */#define d

16、at xbyte0x2020 /*8279數(shù)據(jù)口 */ #define l 1 /*長(zhǎng)度系數(shù) */#define ti 50 /*分度數(shù) */#define hn 30 /*孔個(gè)數(shù) */ #define low 30 /*最低速度 */uchar xdata key; /*鍵值 */uint idata num=0; /*計(jì)數(shù)值 */ uint xdata a=1,b=0; /*單價(jià) */uint idata len,fa; /*路程 費(fèi)用中間參數(shù)*/uint idata cout; /*低速計(jì)數(shù)*/uint idata h1,h2,m1,m2,s1,s2; /*時(shí)鐘參數(shù)*/ uint ida

17、ta price=10,fate=00,length=0,leng; /*顯示參數(shù)*/uint idata m,n,o,p,q,r,s,t; /*顯示中間參數(shù) */uint idata state=0,clear=1,begin=0,pri,tim,tt=0,cc=0;nn=0;/*幾個(gè)狀態(tài)標(biāo)志位*/ /*設(shè)置,清除,開始計(jì)價(jià),單價(jià)修改,時(shí)間修改,兩位數(shù)監(jiān)視,六位數(shù)監(jiān)視,數(shù)字標(biāo)志*/unsigned char bdata status; /* lcd可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)器,允許位與字節(jié)混合訪問 */sbit busy=status7; /*lcd“忙”線的第7位*/uchar bdata st

18、a_8279; /*8279*/sbit du=sta_82797; /* 8279方式設(shè)置命令字 */unsigned char rflag; unsigned char bdata sta_ds; sbit uip=sta_ds7; uchar ds_h,ds_m,ds_s,ds_t; unsigned char bdata ds_time; unsigned char code no10=0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9;/* 09lcd*/uchar code tab16=0x3f,0x06,0x5b,0x4f,0x66

19、,0x6d,0x7d,0x07,0x7f,0x6f, 0x71,0x7c,0x39,0x73,0x31,0x71;/* 0f的字型編碼*/*lcd顯示數(shù)組 第一行為時(shí)鐘占用*/uchar xdata hz216=0xb5,0xa5,0xbc,0xdb,0xa3,0xba,0x20,0x20,0x20,0x20, /* 單 價(jià) : 空 空 */ 0xa3,0xb0,0xa3,0xb0,0xd4,0xaa; /* n n 元 */ uchar xdata hz316=0xbe,0xe0,0xc0,0xeb,0xa3,0xba,0xa3,0xb0,0xa3,0xb0, /* 距 離 : 空 n */

20、 0xa3,0xb0,0xa3,0xb0,0x4b,0x4d; /* n n k m */uchar xdata hz416=0xbc,0xdb,0xc7,0xae,0xa3,0xba,0xa3,0xb0,0xa3,0xb0, /* 價(jià) 格 : n n */ 0xa3,0xb0,0xa3,0xb0,0xd4,0xaa; /* n n 元 */ uchar xdata hz516=0x20,0x20,0xca,0xe4,0xc8,0xeb,0xc1,0xbd,0xce,0xbb, /* 空 輸 入 兩 位 */ 0xb5,0xa5,0xbc,0xdb,0x20,0x20; /* 單 價(jià) 空 */

21、uchar xdata hz616=0x20,0x20,0x20,0x20,0xa3,0xba,0xa3,0xb0,0xa3,0xb0, /* 空 空 : n n */ 0xd4,0xaa,0xa3,0xaf,0x4b,0x4d; /* 元 / k m */ void initial (void); /*初始化子程序*/void delay(void); /*延時(shí)子程序*/void check_lcd(void); /*lcd設(shè)置子程序*/void show_lcd(uchar *,uchar *,uchar *); /*lcd顯示子程序*/void lcd_busy(void); /*lcd

22、忙狀態(tài)檢測(cè)函數(shù) */void compute(void); /*路程 費(fèi)用數(shù)字位拆分子程序*/void change_pri(void); /*單價(jià)修改子程序*/void change_time(void); /*時(shí)間修改子程序*/void clock(void); /*時(shí)鐘顯示子程序*/void check_ds12887(void); /*時(shí)鐘設(shè)置子程序*/main() /*主函數(shù)*/ uint inf=0; /*第一次標(biāo)志位*/ initial(); show_lcd(hz2,hz3,hz4); while(1) clock(); if(begin=1)/開始計(jì)價(jià) if(inf=0) f

23、ate=20; /第一次加上起價(jià)費(fèi) inf=1; if(state=0) /不是設(shè)置狀態(tài) if(num=low) /大于最低速度 cout=0; /低速計(jì)數(shù)清零 price=a*10+b; /單價(jià) len+=num*l/hn; /本次路程加上上次剩余 if(len/ti=0) /達(dá)到千位 leng=len/ti; /千位增加 len%=ti; /去除千位 fa=leng*price; /臨時(shí)費(fèi)用 length+=leng; /全部路程 leng=0; fate+=fa; /全部費(fèi)用 else if(cout)=60)/低速計(jì)數(shù) length+; fate+=(10*a+b); cout=0;

24、compute(); /將數(shù)字按位拆分 用以顯示 show_lcd(hz2,hz3,hz4); else /設(shè)置狀態(tài) 調(diào)用修改子程序 if(pri=1) change_pri(); if(tim=1) change_time(); if(clear=1) /清零 length=0; fate=0; inf=0; com=0xd1; /* 清除led顯示*/ compute(); show_lcd(hz2,hz3,hz4); if(pri=1) change_pri(); if(tim=1) change_time(); /while(1)/main /*以下是子程序代碼(包括中斷)*/void

25、 keybord(void) interrupt 0 using 1 /*按鍵中斷服務(wù)程序*/ uchar keyboard=0; ex0=0; /關(guān)中斷 com=0x50; keyboard=dat; keyboard &=0x0f; /* 保留低四位 */ switch(keyboard) /鍵值轉(zhuǎn)換為可用數(shù)據(jù) 并且修改相應(yīng)標(biāo)志位 case 0x0: key=0; tt+;nn=1;cc+; break; case 0x1: key=1; tt+;nn=1;cc+; break; case 0x2: key=2; tt+;nn=1;cc+; break; case 0x3: key=3;

26、tt+;nn=1;cc+; break; case 0x4: key=4; tt+;nn=1;cc+; break; case 0x5: key=5; tt+;nn=1;cc+; break; case 0x6: key=6; tt+;nn=1;cc+; break; case 0x7: key=7; tt+;nn=1;cc+; break; case 0x8: key=8; tt+;nn=1;cc+; break; case 0x9: key=9; tt+;nn=1;cc+; break; case 0x0b: key=11; begin=1;clear=0;nn=0;break; /*b

27、begin*/ case 0x0c: key=12; clear=1;begin=0;nn=0;break; /*c clear*/ case 0x0d: key=13; state=1;pri=1;tim=0;nn=0;break; /*d set price*/ case 0x0e: key=14; state=1;tim=1;pri=0;nn=0;break; /*e set time*/ default: key=15; nn=0;break; /*f finish*/ keyboard=tabkeyboard; /按鍵后 在led上顯示 if(pri=1) if(nn=0) /字母

28、是功能鍵 在第一位上顯示 com=0x80+8; else /數(shù)字 在后面依次顯示 com=0x80+4+tt; if(tim=1) if(nn=0) com=0x80+8; else com=0x80+1+cc; dat=keyboard; ex0=1; /開中斷void clockserve() interrupt 2 using 2 /*時(shí)鐘中斷服務(wù)程序*/ unsigned char temp2;cout+: /低速計(jì)數(shù)加一ex1=0; /關(guān)中斷rflag=1;sta_ds=rega; /取數(shù)據(jù) (小時(shí)、分鐘、秒)while(uip);ds_h=hour;ds_m=minute;ds_

29、s=second;temp2=regc;rflag=0;ex1=1; /開中斷void timer(void) interrupt 3 using 3 /*定時(shí)器中斷服務(wù)程序*/ tr1=0; tr0=0; /關(guān)定時(shí)器 關(guān)中斷 num=th0*256+tl0; /取計(jì)數(shù)值 th0=0; /計(jì)時(shí)器清零 tl0=0; th1=-(50000/256); /重新賦定時(shí)常數(shù) tl1=-(50000%256); tr1=1; tr0=1; /開定時(shí)器 開中斷void initial(void) /*初始化子程序*/ com=0xd1; /* led設(shè)置 : 清除顯示*/ acc=dat; if(acc1

30、); /* p奇偶標(biāo)志。若值為1的位數(shù)為奇數(shù),則p置位,否則清除 */ com=0x00; /* 8字符顯示左入口 */ com=0x34; /* 34次分頻*/ tmod=0x15; /定時(shí)/計(jì)數(shù)器置標(biāo)志位 th0=0; tl0=0; /計(jì)數(shù)器清零 th1=-(50000/256); tl1=-(50000%256); /定時(shí)常數(shù)賦初值 tr0=1; tr1=1; /開定時(shí)器 計(jì)數(shù)器 ea=1; /開中斷 ex0=1; ex1=1; et1=1; check_ds12887(); /時(shí)鐘初始化 void delay(void) /*延時(shí)子程序*/ unsigned char i,j; for

31、(i=0;i100;i+) for(j=0;j150;j+) ; ; void check_lcd(void) /*lcd設(shè)置子程序*/ uint i; lcd_busy();w_c_add=0x30;/* 功能設(shè)置:8位數(shù)據(jù) */for(i=0;i255;i+)lcd_busy();w_c_add=0x0c; /* 顯示狀態(tài):整體顯示,游標(biāo)位置無效*/lcd_busy();w_c_add=0x01;/* 清除顯示:將ddram填滿“20h”,并且設(shè)定ddram的地址計(jì)數(shù)器到“00”*/lcd_busy();w_c_add=0x02;/* 地址歸位:設(shè)定ddram的地址計(jì)數(shù)器到“00”,將游標(biāo)

32、移到開頭原點(diǎn)位置 */void show_lcd (uchar *b1,uchar *c1,uchar *d1) /*lcd顯示子程序*/unsigned char add;unsigned char i; check_lcd(); lcd_busy();add=0x90; /* 設(shè)置顯示坐標(biāo),90h對(duì)應(yīng)字符的第二行第一列 */ lcd_busy();w_c_add=add; /* 送命令 */for(i=0;i8;i+) lcd_busy(); w_d_add=b12*i; lcd_busy(); w_d_add=b12*i+1; add=0x88; /* 設(shè)置顯示坐標(biāo),88h對(duì)應(yīng)字符的第三

33、行第一列 */ lcd_busy();w_c_add=add; /* 送命令 */for(i=0;i8;i+) lcd_busy(); w_d_add=c12*i; lcd_busy(); w_d_add=c12*i+1; add=0x98; /* 設(shè)置顯示坐標(biāo),98h對(duì)應(yīng)字符的第四行第一列 */ lcd_busy();w_c_add=add; /* 送命令 */for(i=0;i8;i+) lcd_busy(); w_d_add=d12*i; lcd_busy(); w_d_add=d12*i+1; delay(); clock();void lcd_busy(void) /*lcd忙狀態(tài)檢

34、測(cè)函數(shù) */do status=r_s_add; /* 讀狀態(tài)字地址的第7位 */while(busy);void compute(void) /*路程 費(fèi)用數(shù)字位拆分子程序*/ uint f1,l1; f1=fate; l1=length; p=l1%10; /*數(shù)字位拆分*路程*/ l1/=10; o=l1%10; l1/=10; n=l1%10; l1/=10; m=l1%10; t=f1%10; /*數(shù)字位拆分*價(jià)錢*/ f1/=10; s=f1%10; f1/=10; r=f1%10; f1/=10; q=f1%10; hz211=hz213=0xb0; /*清零*/ hz39=hz

35、311=hz313=0xb0; hz49=hz411=hz413=0xb0; hz211+=a; /*賦值*/ hz213+=b; hz37+=m; hz39+=n; hz311+=o; hz313+=p; hz47+=q; hz49+=r; hz411+=s; hz413+=t; if(cout%500=0) /分頻顯示 show_lcd(hz2,hz3,hz4); /*顯示*/ void change_pri() /*單價(jià)修改子程序*/ show_lcd(hz2,hz5,hz6); if(key=15) /15 完成設(shè)置 com=0xd1; /* led清除顯示*/ pri=0; state=0; tt=0; hz211=hz67; hz213=hz69; show_lcd(hz2,hz3,hz4); /保存設(shè)置結(jié)果并顯示 else if(nn) /如果是數(shù)字進(jìn)行設(shè)置 if(tt=1) a=key; if(tt=2)b=key;tt=0; /單價(jià) 兩位 hz67=0xb0; hz67+=a; hz69=0xb0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論