【正文】
while(key3num) 洛陽理工學院畢業(yè)設計(論文) 44 { if(key3num==1) //調白天單價 ,danjia1 { //display(0,1,0,danjia1)。 key3num=1。 dula=0。 P2=0x80。0x7f。 P2=0x40。 P0=table[lge]。 wela=1。 P0=table[lshi]amp。 wela=1。 dula=1。 delay(4)。 wela=0。 dula=0。 wela=0。 dula=0。 P2=0x01。 lge=licheng0%10。 jge=zongjine0%100/10。 delay(10)。 delay(10)。 } /*void main() { uchar rd。 洛陽理工學院畢業(yè)設計(論文) 40 Data=Read()。 Ack()。 start()。 Ack()。 Ack()。 Scl=0。 //否則 temp 的最低位清 0 if(BitCounter1) {temp1=temp1。 if(Sda) //如果 Sda=1。 // 置 Sda 為輸入方式 do{ Scl=0。 } uchar Read() //讀一個字節(jié)的數(shù)據(jù) ,并返回該字節(jié)值 { uchar temp=0。 Data=temp。0x80)==0x80) Sda=1。 do { temp=Data。 Scl=0。 } void NoAck() { Sda=1。 Scl=1。 Sda=1。 } void stop() { Sda=0。 Sda=0。 } void start() { Scl=1。 _nop_()。 _nop_()。 _nop_()。i) for(j=110。 //中斷調用 uint cc,dd,qufan。 uint key3num,qiehuantemp。 // I2C引腳 sbit Scl=P3^6。 //sbit wela=P3^1 。 // sbit key3=P1^3。 //sbit fangbo=P3^5。 有其他老師和同學,都幫了我不少忙,在此不再贅述。 1. 應嘗試著在不影響整個計價器的功能的前提下把兩個鎖存器74HC573 去掉,這樣會使硬件電路更簡潔,成本也會更低。 4. 有完整的軟件仿真結果和硬件電路,并用 Protel 設計出了系統(tǒng)原理圖,制作了 PCB 板。本次設計聯(lián)調時出現(xiàn)的問題主要有:第一是顯示時存在時序上的沖突,詳見 第三點;第二就是中斷設置時出現(xiàn)混亂,即同時用定時器 0,定時器 1,和外部中斷1 時,后兩者都不再工作(通過編一個方波程序,發(fā)現(xiàn)定時器 1 即 無跳變),解決方法時讓定時器 1 工作在計數(shù)方式代替工作在定時方式,如此不但可以完成相應功能,解決了問題,更重要的是省去一個中斷,簡化了程序設計。 改動如下: 1. 當里程值大于 30(實際對應大于 3 公里)且無進位時,溢出指示燈不亮,總金額 =起步價 +(里程十位數(shù)字 2) *運行單價 +等待單價 *等待時間; 2. 當里程值小于 30(實際對應小于 3 公里),肯定無進 位,溢出指示燈不亮,總金額 =起步價 +等待單價 *等待時間; 3. 有進位,溢出指示燈點亮,表示里程一定大于三公里,只需執(zhí)行總金額 =起步價 +7*運行單價 +(里程十位數(shù)字 +1) *運行單價 +等待單價 *等待洛陽理工學院畢業(yè)設計(論文) 23 時間 即:總金額 =起步價 +(里程十位數(shù)字 +8) *運行單價 +等待單價 *等待時間; 結果分析與性能改進 經過反復調試驗證,基于 STC89C52 單片機控制設計的出租車計價器滿足了所有預設性能指標,具有較好的抗干擾性,價格也較為合理,具有很好的工業(yè)開發(fā)和市場前景。 while(!key)。 按 鍵查詢功能的實現(xiàn) 洛陽理工學院畢業(yè)設計(論文) 22 按鍵查詢比較容易實現(xiàn),只要注意 1. 按鍵結束后注意退出按鍵處理;,即避免顯示一個數(shù)據(jù)后退不出來; 要注意按下去抖和釋放去抖。 AT24C02 的編程與調試 對 AT24C02 編程對我來說是一個比較新知識點,遇到了不少問題, 這里 僅把經驗教訓簡要介紹一下。 洛陽理工學院畢業(yè)設計(論文) 19 K e y 3 = 0 ?白 天 單 價 + 1返 回K e y 3 n u m 為 真K e y 3 n u m = 1 ?K e y n u m = 2 ?K e y 1 = 0 ?NYYNk e y 3 n u m = 0 ?K e y 2 = 0 ?YYN白 天 單 價 1Y顯 示k e y 3 n u m + +開 始N儲 存 白 天 單 價K e y 1 = 0 ?夜 晚 單 價 + 1YK e y 2 = 0 ?YNNK e y 3 n u m = 3 ?N儲 存 夜 晚 單 價K e y 1 = 0 ?等 待 單 價 + 1YK e y 2 = 0 ?夜 晚 單 價 1等 待 單 價 1K e y 3 n u m = 4 ?儲 存 等 待 單 價K e y 1 = 0 ?起 步 單 價 + 1K e y 2 = 0 ?起 步 單 價 1K e y 3 n u m = 5 ?儲 存 起 步 單 價K e y 3 n u m = 0YYYNNNNYNYNNYNNK e y 4 = 0 ?白 天 、 夜 晚 單價 切 換YK e y 0 = 0 ?僅 顯 示 總 金 額與 起 步 價 YNNY圖 35 鍵盤程序 洛陽理工學院畢業(yè)設計(論文) 20 按鍵檢測流程圖 36 所示。如此循環(huán)操作,使每位分時顯示該位應該顯示的字符 [7] 。程序流程圖如圖 34 所示。 用定時器作為基準,可使測試的等待時間更為精確(可以精確到 uS級);且每隔 5 秒比較一次,能有效減小誤判率,避免把汽車低速行駛誤認為靜止等待處理。計數(shù)初值可有以下公式獲得: X=(65536t)**10^6/12。程序流程如圖 31 所示。另外,在主程序模塊中還需要設置啟動 /清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化??刂骑@示時先給 高電平,使通道打開,接著送字碼,然后把 電平拉低,使字碼保持??;之后打開 (送高電平),緊接著送位碼,控制要顯示的位,然后把 拉低,數(shù)據(jù)被保持。 由真值表可以看出,當 OE 為高電平時,無論 LE與 D 端為何電平狀態(tài),其輸出均為高阻態(tài),此時芯片處于不可控狀態(tài)。 OE11D22D33D44D55D66D77D88D9GND10 LE 118Q 127Q 136Q 145Q 154Q 163Q 172Q 181Q 19V C C 2074 H C 5 73GNDP 1. 6 圖 26 74HC573 的引腳分布 OE :為三態(tài)允許輸入端 (低電平有效 ),也可稱作輸出允許端; 1D8D 為數(shù)據(jù)輸入端; 1Q8Q 為數(shù)據(jù)輸出端; LE 為鎖存允許端。由于溢出指示是采用發(fā)光二極管是否點亮表示,故必須選好參數(shù)以確保發(fā)光二極管正常工作。 所以在實際編程時一定要注意鍵盤的去抖動。電路原理如圖 25 所示。 (2)主控器的讀數(shù)據(jù)格式 : 與寫數(shù)據(jù)的不同之處在于數(shù)據(jù)發(fā)送結束和停止位之間加一個非應答位,表示數(shù)據(jù)發(fā)送結束,格式為當 SCL 為高時 SDA 傳送 1,并持續(xù) 以上。 事實上 AT24C02 為典型的支持 I2C 總線的器件,對其進行編程時需遵守 I2C 總線的時序要求,以及 I2C 委員會 對各種 I2C 芯片的地址分配規(guī)則。 AT24C02 芯片引腳配置如圖 24 所示。 其原理如圖 23 所示 。當施加的磁場達到工作點時,觸發(fā)器輸出高電平,三極管導通, OC 門輸出端輸出低電壓,這種狀態(tài)為開;當觸發(fā)器輸出低電平時,三極管截止,OC 門輸出高電壓,這種狀態(tài)為關 [4] 。本設計利用P0口的 I/O 功能 [2] 。外接 12M 的晶振和兩個 30pF 電容組成系統(tǒng)的內部時鐘電路,其中電容主要起到濾波、微調以及利用其充放電過程幫助單片機晶振啟振的作用 [1] 。復位電路和晶振電路,以及 P0 口接入的 10K 的上拉電阻便構成了 STC89C52 單片機 工作所需的最簡外圍電路。 獨立鍵盤可以調整單價等相關數(shù)據(jù),當按下某按鍵,會給單片機相應端口一低電平信號,單片機會 通過循環(huán)掃描檢測到此信號,并根據(jù)預先設置好的程序做出相應的處理;調整好的數(shù)據(jù)存儲到 EEPROM 中,掉電后可以使該數(shù)據(jù)不丟失,下次得電后直接從 EEPROMAT24C02 中讀到單片機,并通過數(shù)碼管實時顯示。(默認起步價為 5 元 /3 公里,里程單價白天為 元 /公里,夜晚為 元 /公里,等待計時單價為 1 元 /1 分鐘) 為提高計時、計價精度,確保乘客對自己消費的知情權,出租車計價器應做到里程數(shù)精確到 公里,同時為減少司機朋友來回調整單價以及停車后需重設單價的麻煩,計價器應具有掉電保持功能,即當重新啟動后維持原有數(shù)值(包括總金額、等待時間、行駛里程、單價)不變,直至強制按下清零鍵,計價器顯示起步價(剛起 步時對應總金額)、運行單價,為下一次計價做準備。從起步開始,當汽車行駛里程未滿 3 公里時,均按起步價計算。 2. 要求單價可調,里程精確到 公里,并要求對等待時間進行計時。 事實上,當今許多硬件的開發(fā)都已開始用 C 語言編程,如各種單片機、DSP、 ARM 等,用 C 語言進行工業(yè)控制也已成為一種趨勢,為了更好的適應當今社會形勢,為了更好的面對挑戰(zhàn)、把握機遇,此次畢業(yè)設計決定嘗試用 C語言編程完成。 2. 寄存器分配、不同存儲器的尋址及數(shù)據(jù)類型等細節(jié)完全由編輯器自動處理。 作為與自動化技術和電子密切相關的理工科學生,掌握單片機是最簡單也最基礎的要求。 4. 通信方面。 2. 智能儀器儀表。 關鍵詞 : STC89C52, 霍爾傳感器 A44E , I2C總線,動態(tài)顯示 洛陽理工學院畢業(yè)設計(論文) II Design of Taximeter Based on STC89C52 ABSTRACT With the rapid development of city constriction, the taxi industry which symbolizes the cityscape also has an accelerated progress. Nowadays the automatic taximeter has been widely used in taxi industry in many cites. Therefore, the development of automatic taximeter is doomed. Although automatic taximeter is not spread in some towns, there is no doubt that it would be popularized. Thus, in future the business of automatic taximeter is still potential. One typical application of single chip puter is automatic taximeter. The hardware of this design is posed of single chip puter and peripheral circuits which consist of Detection Unit, Processing Unit and Human Computer Interaction Unit. The Detection Unit is based on Halleffect sensor. The Processing Unit contains STC89C52 and AT24C02. Human Computer Interaction Unit is posed of keyboard and LED. The