第一篇:我縣出租車計價器檢定工作有序進行
我縣出租車計價器檢定工作有序進行近日,我縣出租車計價器檢定工作進入高峰期。為優質高效地完成調價及本機檢定任務,工作人員不但主動放棄了周六周日的休息時間,而且每天提前近半個小時開始工作,極大地方便了出租車的運營。
由于計劃周詳,指揮得當,技術高超,保障有力,整個工作進展平穩有序,出租車駕駛員及出租車公司都非常滿意。
截止到11月18日,已有近425臺出租車計價器完成合格檢定。預計12月中旬前將順利完成本年度的計價器檢定工作。(范明飛)
第二篇:出租車計價器
基于單片機的出租車計價器設計
摘要
出租車計價器的數字系統的設計正是基于一些專用的芯片,才發揮其有效特性,從而實現出租車的計價功能。此數字系統主要分為三個單元,即里程計數及顯示單元、價格計數及顯示單元、脈沖產生。本設計是一個基于單片機AT89C51的出租車自動計費設計,附有復位電路,時鐘電路等。關鍵詞:出租車計費器;單片機;控制
Abstract Taximeter design digital system is based on some special chip, to play their effective characteristics, thus realizing the taxi valuation function.This system is mainly divided into there modules, namely the mileage counting and display unit, and display unit price counting, pulsing.The design is based on a single chip AT89C51taxis design, a reset circuit, clock circuit.Keywords:taximeter,a single-chip microcomputer,control
1引言
1.1 設計目的
近幾年來,出租汽車行業在各地得以蓬勃發展,但采用模擬電路和數字電路設計的計價器整體電路的規模較大,用到的器件多,造成故障率高,難調試。而采用單片機進行的設計,相對來說功能強大,用較少的硬件和適當的軟件相互配合可以很容易地實現設計要求,且靈活性強。
1.2 功能要求
(1)用前4位數碼管實時顯示里程數,單位為千米,最后一位為小數位;用后4位數碼管時時顯示金額數,單位為元,最后一位為小數位。
(2)規定出租車里程小于2千米收費5元,超過2千米收費為8*(way-20)/5。
1.3 設計方法
本設計采用AT89C51單片機為主控器,并用頻率信號發生器模擬車速,利用AT89C51的定時器工作在方式1下定時實現對出租車的計價設計,輸出采用共陰極的集成8位7段數碼顯示管。設計方案及原理
2.1 設計方案
采用AT89C51單片機為主控器,并用頻率信號發生器模擬車速,利用AT89C51的定時器/定時器T1工作在方式1下定時實現對出租車的計價設計,輸出采用共陰極的集成8位7段數碼顯示管。本電路設計的計價器不但能實現基本的計價,而且
單片機原理及系統課程設計報告
還能根據里程來調節單價。
2.2 設計原理
出租車計價是根據車所行駛的路程以及乘客乘車的里程綜合決定的。出租車行駛總路程可以通過車輪的周長乘車輪旋轉圈數得到。即可計算得到車輪旋轉幾周出租車能行駛一公里的路程。通過計數接收到的脈沖個數,計算出當前所行駛的路程。同時,通過數碼管顯示當前的行駛里程和需支付的車費。出租車計價器用于記錄里程、起步公里數與價格的關系。模擬出租車計價器能根據總里程數、起步公里數的情況作出相應報價等。這個系統以AT89C51單片機為主控器,單片機的計數器/定時器T1工作在方式1下來對外部脈沖計數,最后通過集成的8位7段LED數碼管顯示里程數和價錢。總體模塊框圖如圖1所示。
總金額顯示單價顯示AT89C51脈沖產生動態掃描數碼管顯示
圖1 總體框圖 硬件設計
對于AT89C51的計數器/定時器T1,通過對寄存器TCON的設置,即使它的M1M0=01,計數器/定時器T1工作在方式1下,構成16位計數器/定時器。此時TH0、TL0都是8位加法計數器。此設計中,T1為計數工作方式,計數范圍為1~2^16=1~65536(個外部脈沖)。當計數溢出時則置位并申請中斷,進入中斷服務 執行中斷程序。
通過74HC138接P20、P21、P22輸出來對8位7段的智能掃描LED進行段選,并且通過P1口對LED進行位選,最后將結果顯示在LED上。硬件設計圖如圖2所示。
74HC138是三八譯碼器,在工作之前,使74HC138的使能端有效,再使74HC138的A、B、C接P20、P21、P22的輸出達到對LED位選線的控制,使相應的位顯示相應的結果。硬件總設計圖如圖2所示。
第三篇:出租車計價器設計范文
平頂山工業職業技術學院
目錄
目錄......................................................................................................................................................1 前言......................................................................................................................................................2 第一章 系統工作原理........................................................................................................................2 1.1 功能說明..............................................................................................................................2 1.2 基本原理..............................................................................................................................2 第二章 硬件設計...............................................................................................................................3 2.1 單片機最小系統單元..........................................................................................................3 2.2 A44E霍爾傳感器檢測單元................................................................................................4 2.3 AT24C01存儲單元..............................................................................................................6 2.4 鍵盤調整單元......................................................................................................................7 2.5 顯示單元..............................................................................................................................8 第三章 軟件設計...............................................................................................................................8 3.1 系統主程序..........................................................................................................................8 3.2 中斷程序..............................................................................................................................9 3.2.1 里程計數中斷程序...................................................................................................9 3.2.2 中途等待中斷程序.................................................................................................10 3.3 計算程序............................................................................................................................10 3.4 顯示程序............................................................................................................................10 3.5 鍵盤程序............................................................................................................................10 第四章 總結.....................................................................................................................................11 參考文獻............................................................................................................................................12
平頂山工業職業技術學院
算出行駛公里數,再根據從EEPROM中讀取的價格等相關數據進行金額的計算,計算好的金額、里程和單價都實時地顯示在數碼管上。獨立鍵盤可以調節價格等相關數據,按下相應的按鈕,產生信號交由單片機處理并實時顯示出來,調節好的數據存儲到EEPROM中,掉電后可以使調好的數據不丟失,下次得電后直接從EEPROM讀到單片機,系統結構圖如圖1。
圖1 系統結構圖
第二章 硬件設計
2.1 單片機最小系統單元
主控機系統采用了Atmel 公司生產的 AT89S52單片機,它含有256 字節數據存儲器,內置8K 的電可擦除FLASH ROM,可重復編程,大小滿足主控機軟件系統設計,所以不必再擴展程序存儲器。復位電路和晶振電路是AT89S52 工作所需
平頂山工業職業技術學院 的最簡外圍電路。單片機最小系統電路圖如圖2所示。
圖2 單片機最小系統圖
AT89S52 的復位端是一個史密特觸發輸入,高電平有效。RST端若由低電平上升到高電平并持續2個周期,系統將實現一次復位操作。在復位電路中,按一下復位開關就使在RST端出現一段時間的高電平,外接11.0592M 晶振和兩個30pF 電容組成系統的內部時鐘電路。
2.2 A44E霍爾傳感器檢測單元
A44E 屬于開關型的霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出的信號符合TTL電平標準,可以直接接到單片機的IO 端口上,而且其最高檢測頻率可達到1MHZ。
A44E 集成霍耳開關由穩壓器A、霍耳電勢發生器(即硅霍耳片)B、差分放大器C、施密特觸發器D和OC門輸出E五個基本部分組成。
在輸入端輸入電壓Vcc,經穩壓器穩壓后加在霍爾電勢發生器的兩端,根據霍爾效應原理,當霍爾片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產生霍爾電勢差VH輸出,該VH信號經放大器放大后送至施密特觸發器整形,使其成為方波輸送到OC門輸出。當施加的磁場達到工作點(即Bop)時,觸發器輸出高電壓(相對于地電位),使三極管導通,此時OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態為關。這樣兩次電壓變換,使霍爾開關完成了一次開關動作。A44E霍爾傳感器原理如圖3所示。
平頂山工業職業技術學院
圖3 A44E霍爾傳感器原理
里程計算是通過安裝在車輪上的霍爾傳感器檢測到的脈沖信號,送到單片機產生中斷,單片機再根據程序設定,計算出里程。其原理如圖4所示。
圖4 傳感器測距示意圖
本系統選擇了將A44E的脈沖輸出口接到P3.3口外部中斷1作為信號的輸入端(這樣可以減少程序設計的麻煩),車輪每轉一圈(設車輪的周長是1米),霍爾開關就檢測并輸出信號,引起單片機的中斷,對脈沖計數,當計數達到1000次時,即1公里,單片機就控制將金額自動增加,如圖5。
圖5 A44E霍爾元件接線圖
平頂山工業職業技術學院
2.3 AT24C01存儲單元
存儲單元的作用是在電源斷開的時候,存儲當前設定的單價信息。AT24C01 是Ateml公司的1KB的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5V,額定電流為1mA,靜態電流10uA(5.5V),芯片內的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。AT24C02芯片引腳配置如圖6所示。
存儲單元電路連接如圖7所示。
圖 7 存儲單元電路原理圖
圖中R4、R5 是上拉電阻,其作用是減少AT24C01 的靜態功耗。由于AT24C01的數據線和地址線是復用的,采用串口的方式傳送數據,所以只用兩根線SCL(時鐘脈沖)和SDA(數據/地址)與單片機P2.2和P2.3口連接,進行傳送數據。
平頂山工業職業技術學院
每當設定一次單價,系統就自動調用存儲程序,將單價信息保存在芯片內;當系統重新上電的時候,自動調用讀存儲器程序,將存儲器內的單價等信息,讀到緩存單元中,供主程序使用。
2.4 鍵盤調整單元
當單價等信息需要進行修改時,就要用到鍵盤進行修改。由于調節信息不多,故采用4個獨立鍵盤即可,分別實現清零、切換、增大、減小和功能等作用。電路原理如圖8所示。
圖8 鍵盤調整單元接線圖
S1:接P1.0口,對上一次的計費進行清零,為下次載客準備
S2:接P1.1口,實現白天和夜晚單價的切換;當功能鍵S4按下時,S2可對數據進行增大。
S3:接P1.2口,當功能鍵S4按下時,S3可對數據進行減小。
S4:接P1.3口,按1次,進入調整白天單價;按2次,進入調整夜晚單價;按3次,進入調整等待單價;按4次,進入調整起步價;按5次,返回。
平頂山工業職業技術學院
2.5 顯示單元
顯示單元由7個8段共陽數碼管組成,采用動態掃描進行顯示。前三個數碼管分別接P3.0、P3.1和P3.2,用于顯示總金額;中間兩個分別接P3.4和P3.5,用于顯示里程;后邊兩個分別接P3.6和P3.7,用于顯示單價。電路如圖9所示。
圖9 數碼管顯示圖
第三章 軟件設計
3.1 系統主程序
在主程序模塊中,需要完成對各參量和接口的初始化、出租車起價和單價的初始化以及中斷、計算、循環等工作。另外,在主程序模塊中還需要設置啟動/清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序將根據各標志寄存器的內容,分別完成啟動、清除、計程和計價等不同的操作。當汽車運行起來時,就啟動計價,根據里程寄存器中的內容計算和判斷行駛里程是否已超過起步價公里數。若已超過,則根據里程值、每公里的單價數和起步價數來計算出當前的總金額,并將結果存于總金額寄存器中;中途等待時,無脈沖輸入,不產生中斷,當時間超過等待設定值時,開始進行計時,并把等待價格加到總金額里,然后將總金額、里程和單價送數碼管顯示出來。程序流程如圖10所示。
平頂山工業職業技術學院
圖10 主程序流程圖
圖11 計算程序流程圖
3.2 中斷程序
3.2.1 里程計數中斷程序
每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,當里程計數器對里程脈沖計滿1000次時,進入里程計數中斷服務程序中,里程變量加一。主函數中總金額也相應地變化。
101112-
第四篇:出租車計價器 硬件課程設計
硬件課程設計報告
題目:出租車計價器
目錄
1. 引言....................................................................................................................................錯誤!未定義書簽。
1.1設計目的................................................................................................................錯誤!未定義書簽。1.2設計任務................................................................................................................錯誤!未定義書簽。1.3設計思路................................................................................................................錯誤!未定義書簽。
2.需求分析.............................................................................................................................錯誤!未定義書簽。
2.1芯片原理................................................................................................................錯誤!未定義書簽。2.1.1可編程計數器/定時器8253/8254原理.............................................................錯誤!未定義書簽。2.1.2可編程外圍接口芯片8255原理.......................................................................錯誤!未定義書簽。2.1.3 12864液晶顯示器ST7920原理........................................................................錯誤!未定義書簽。2.2硬件設計................................................................................................................錯誤!未定義書簽。2.3軟件設計................................................................................................................錯誤!未定義書簽。2.3.1功能模塊圖.........................................................................................................錯誤!未定義書簽。2.3.2程序流程圖.........................................................................................................錯誤!未定義書簽。2.3.3模塊流程圖.........................................................................................................錯誤!未定義書簽。
3.詳細設計.............................................................................................................................錯誤!未定義書簽。
3.1程序模塊分析........................................................................................................錯誤!未定義書簽。3.1.1初始化模塊程序分析.........................................................................................錯誤!未定義書簽。3.1.2判斷開關程序模塊分析.....................................................................................錯誤!未定義書簽。3.1.3圈數統計模塊程序分析.....................................................................................錯誤!未定義書簽。3.1.4計算里程模塊程序分析.....................................................................................錯誤!未定義書簽。3.1.5顯示模塊程序分析.............................................................................................錯誤!未定義書簽。3.1.6結束模塊程序分析.............................................................................................錯誤!未定義書簽。3.2程序代碼................................................................................................................錯誤!未定義書簽。
4.5.6.程序結果.............................................................................................................................錯誤!未定義書簽。分析與測試.........................................................................................................................錯誤!未定義書簽。體會.....................................................................................................................................錯誤!未定義書簽。
附錄A:參考文獻.....................................................................................................................錯誤!未定義書簽。
一、引言
1.1設計目的
現在各大城市出租車已經成為了一種重要的交通工具,當然出租車的收費問題也成了人們關注的焦點,那么怎么樣才能實現一種合理的收費方式讓大家都認可呢?在這種要求下,出租車自動計價器就走進了人們的生活,當然這就要求有一種合理公正的計價器收費方式。這不僅關系到出租車計價器的市場,也影響這出租車的市場,這就要求我們設計出更好的計價器來滿足人們的需求。
本設計是關于出租車計價器的設計。在本次設計中,我以計價器的基本功能作為設計的重點。為了完成上述設計,我們采用了8254、8255等芯片,用計算機匯編語言進行軟件功能的實現。
1.2設計任務
1.實現一個出租車計價器,可以顯示起步價。2.一個鍵來控制是否到達終點,是否計價要清零。3.基于路程的出租車計價方式。
1.3設計思路
利用直流電機來模仿出租車輪子的轉動來計算出租車行進的路程。將直流電機的直流端與滑動變阻器相連,通過人工控制滑動變阻器來模擬出租車的行進;并將計數端與8253CLK0端相連,GATE0接高電平,工作方式為方式二。直流電機每轉1000圈,8253輸出一個高電平,假設出租車已經走了1公里。同時將8253OUT0接入8255方便CPU讀取。再將8255與ST7920顯示器相連,CPU通過控制8255來控制顯示,一旦8255從8253讀入一個高電平,則公里數加一,同時價格相應增加。另有一個開關連入8255,用以判斷出租車計價器是否啟動。
二、需求分析
2.1芯片原理
本節主要在介紹本次設計所用到的芯片的原理,共有可編程計數器/定時器8253/8254、可編程外圍接口芯片8255和12864液晶顯示器ST7920原理三種芯片。
2.1.1可編程計數器/定時器8253/8254原理
圖2-1 8254內部結構圖
從圖2-1可見,8254內部包含數據總線緩沖器、讀/寫控制邏輯、控制字寄存器和3個結構完全相同的計數器,這3個計數器分別稱為計數器0、計數器1和計數器2。
圖2-2 8254管腳圖
A1、A0:地址輸入線,用來控制8253內部的4個端口,即3個計數器和1個控制字寄存器與CPU系統地址線相連。
CLK0-2:時鐘脈沖輸入端,用于輸入定時脈沖或計數脈沖信號。CLK可以是系統的時鐘脈沖,也可以由系統時鐘分頻或者其他脈沖源提供。當用于定時時,這個脈沖必須是均勻的、連續的、周期精確的,而用于計數時,這個脈沖可以是不均勻的、斷續的、周期不定的。
GATE0-2:門控輸入端,用于外部控制計數器的啟動計數和停止計數的操
作。兩個或兩個以上計數器連用時,可用此信號同步,也可用于與外部某信號的同步。
OUT0-2:計數輸出,當計數器從初值開始完成計數操作進,OUT引腳輸出相應的信號。
8253的方式控制字
圖2-3 8254控制字圖
本設計中8254的功能
只是用通道1,采用方式三。采用二進制計數,輸入0FFFH。先輸入低字節,再輸入高字節。當8254從0FFFFH遞減到159FH時(即轉了60000圈時),8254向總線發信號使程序向下進行。
2.1.2可編程外圍接口芯片8255原理
內部結構如圖所示,由以下4個部分組成:
圖2-4 8255內部結構圖
(1)輸入/輸出端口A、B、C。這三個端口均可看作是I/O端口,但它們的結構和功能也稍有不同。A口和B口是一個獨立的8位I/O口。C口:可以看作是一個獨立的8位I/O口;也可以看作是兩個獨立的4位I/O口。
(2)A組和B組控制電路。這是兩組根據CPU命令控制8255A工作方式的電路,這些控制電路內部設有控制寄存器,可以根據CPU送來的編程命令來控制8255A的工作方式,也可以根據編程命令來對C口的指定位進行置/復位的操作。A組控制電路用來控制A口及C口的高4位;B組控制電路用來控制B口及C口的低4位
(3)讀/寫控制邏輯。(同上:它負責管理8255A的數據傳輸過程。它接收CS*及RD*、WR*、RESET,還有來自系統地址總線的口地址選擇信號A0和A1。將這些信號組合后,得到對A組控制部件和B組控制部件的控制命令,并將命令發給這兩個部件,以完成對數據、狀態信息和控制信息的傳輸。)
(4)數據總緩沖器。(同上:它是8位的雙向的三態緩沖器。作為8255A與系統總線連接的界面,輸入/輸出的數據,CPU的編程命令以及外設通過8255A傳送的工作狀態等信息,都是通過它來傳輸的。)
如圖所示8255A的芯片引腳信號。除了電源和地以外,其他信號可以分為兩組:
圖2-5 8255管腳圖
1.和外設一邊相連的: PA7-PA0:A組數據信號
PB7-PB0:B組數據信號 PC7-PC0:C組數據信號 2.和CPU一邊相連的:
RESET:復位信號,低電平有效。當RESET信號來到時,所有內部寄存器就被清除,同時,3個數據端口被自動設為輸入端口。
D7-D0:它們是8255A的數據線,和系統數據總線相連。
CS*:芯片選擇信號,低電平有效。在一個系統中,一般根據全部接口芯片來分配若干較低位地址(比如A5、A4、A3)來組成各種芯片選擇碼,當這幾位地址組成某一個代碼時,譯碼器便往8255A的CS*端輸出一個低電平,于是8255A被選中。只有當 CS*有效時,讀信號RD*和寫信號WR*才對8255A有效。
RD*:芯片讀出信號低電平有效。WR*:芯片寫入信號低電平有效。8255的方式控制字格式
圖2-6 8255控制字圖
本設計中8255的功能
8255PA0-PA7和PC0-PC2與ST7920相連,控制輸出。PB0與8253的OUT1相連,讀入8253OUT1 的數據。PB1與開關K0相連,讀入K0的數值用于確定是否開啟計價器。
2.1.3可編程外圍接口芯片8255原理
ST7920控制器系列中文圖形液晶模塊的軟件特性主要由ST7920控制驅動器決定。ST7920同時作為控制器和驅動器,它可提供33路com輸出和64路seg輸出。在驅動器ST7921的配合下,最多可以驅動256×32點陣液晶。
ST7920是臺灣矽創電子公司生產的中文圖形控制芯片,它是一種內置12864漢字圖形點陣的液晶顯示控制模塊,用于顯示漢字及圖形。該芯片共內置8192
個中文漢字(16×16點陣)、128個字符的ASCII字符庫(8×16點陣)及64×2256點陣顯示RAM(GDRAM)。
為了能夠簡單、有效地顯示漢字和圖形,該模塊內部設計有2MB的中文字型CGROM和64×256點陣的GDRAM繪圖區域;同時,該模塊還提供有4組可編程控制的16×16點陣造字空間;除此之外,為了適應多種微處理器和單片機接口的需要,該模塊還提供了4位并行、8位并行、2線串行以及3線串行等多種接口方式。利用上述功能可方便地實現漢字、ASCII碼、點陣圖形、自造字體的同屏顯示,所有這些功能(包括顯示RAM、字符產生器以及液晶驅動電路和控制器)都包含在集成電路芯片里,因此,只要一個最基本的微處理系統就可以通過ST7920芯片來控制其它的芯片
圖2-7 ST7920外觀尺寸圖
本設計中ST7920的功能
用于顯示出租車行駛路程與應收費用。
2.2硬件設計
其中,8253GATE1連+5V高電平,直流電機連0~+5V,8253連280h~287h,8255連288h~28fh。8255PA0-PA7連ST7920顯示器D0-D7,PC0連DI,PC1連RW,PC2連E。開關K0連8255PB0。8253CLK1連直流電機計數端。
0~+5V直流電機D0-D7計數ST7920顯示屏DIRWE+5VGATE1CLK1PA0-PA7+5VPC0PC1PC2開關K0PB0+5V8253CS8255CS280H-288H289H-28FH總線圖2-8硬件連接圖
實際連接圖如下圖所示
圖2-9硬件實際連接圖
2.3軟件設計 2.3.1功能模塊圖
本節先給出一個程序的功能模塊圖。
出租車計價器系統計價器開關功能模塊讀入直流電機轉圈數模塊ST7920顯示功能模塊根據里程計算價格模塊
圖2-10軟件功能模塊圖
2.3.2程序流程圖
本節先給出一個程序的整體流程圖。
開始結束8253初始化液晶顯示屏初始化8255初始化是計價器是否開始工作通過8255讀入b0否是否有鍵盤輸入否液晶顯示屏初始化是液晶顯示屏調用顯示價格功能從直流電機讀入輸入圈數將更改過的路程在顯示器中顯示出來讀到一定圈數走的路程加一比較路程是否大于3公里是價格為(路程-3)*2+7 元將儲存的顯示字符串內路程價格改為目前路程價格否價格為7元
圖2-11軟件程序流程圖
2.3.3模塊流程圖
如果對整個程序進行細分則可以分為初始化模塊,判斷開關模塊,圈數統計模塊,計算里程模塊、結束模塊和顯示模塊。其中初始化模塊是8253芯片、8255芯片和顯示屏的初始化。判斷開關模塊是對8255的b0端是否有高電平進行判斷。
圈數統計模塊是對直流電機傳入8253中高電平的數量進行圈數統計。計算里程模塊是對里程及價格進行計算的模塊。結束模塊是程序結束的操作與方法。顯示模塊是控制顯示屏顯示計算模塊的結果。
初始化模塊顯示模塊調用關判斷開關模塊開結束模塊圈數統計模塊計算里程模塊調用顯示模塊圖2-12軟件模塊流程圖
三、詳細設計
3.1程序模塊分析
我們將按模塊分析程序的功能并給出模塊內的功能流程圖。
3.1.1初始化模塊分析
在初始化模塊中,我們定義了需要使用的8255和8254的接口,需要使用的變量如JSS,要輸出的字符串等,初始化了DS,完成了8255的初始化以及顯示屏的初始化。其流程圖為
開始圖3-1初始化模塊流程圖
3.1.2判斷開關模塊分析
以上為判斷開關模塊,在判斷開關模塊中,系統讀入8255PB0的電平,如果是高電平則程序繼續進行,如果是低電平則程序調用chushi函數,用屏幕顯示“空車歡迎乘坐”,并繼續度8255PB0直到有高電平為止。其流程圖如下所示:
8255PB0是否為高電平是圈數統計模塊否Chushi函數計數變量和對應的字符串置零顯示 空車 歡迎乘坐 調用顯示模塊
圖3-2判斷開關模塊流程圖
3.1.3圈數統計模塊分析
在圈數統計模塊中,我們將直流電機計數端連入8254CLK1中(8253采用方式三),在CLK1中讀所記的數,從0FFFFH向下計,一直計到159FH,即轉了6000圈后,進入程序的下一段。其流程圖如下所示:
讀8254計數值否是否到159FH以下是重新將8254計數初值設為0FFFFH計算里程模塊
圖3-3圈數統計模塊流程圖
3.1.4計算里程模塊分析
我們用地址JSS里表示已經走過的公里,即8254傳過來的高電平,同時我們采用價格公式來計算價格,將其里程和價格對應的中文字碼表存入要顯示的字符串中。我們用地址JSS里表示已經走過的公里,即8254傳過來的高電平,同時我們采用價格公式來計算價格,將其里程和價格對應的中文字碼表存入要顯示的字符串中。
計算公式為: 價格=(里程-3)* 2……(里程>3)
價格= 7…………………..(里程<=3)并調用顯示模塊來顯示這些字碼其流程圖如下所示:
圈數統計模塊計數值JSS加一并十進制化里程數加一里程數是否是大于3是價格為(里程-3)*2調用顯示模塊否價格為7
圖3-4計算里程模塊流程圖
3.1.5顯示模塊分析
在顯示模塊中,我們使用ST7920顯示我們要顯示的兩行字符串。我們采取先顯示第一行,再顯示第二行的方法,只是用ST7920的中間兩行。
調整顯示屏指針指向第二行調整顯示屏指針指向第三行調整字符串指針指向第一個字調整字符串指針指向第九個字輸出輸出延時延時
圖3-5顯示模塊流程圖
3.1.6結束模塊分析
結束模塊在程序的尾部在結束模塊中,我們規定只要在鍵盤上按任意一個鍵就會結束整個程序。如果無鍵按下,則程序自動跳轉到程序頭部。其程序流程圖如下圖所示:
調用DOS中斷是否有鍵按下是結束否判斷開關模塊
圖3-6結束模塊流程圖
3.2程序代碼
IO8253A
EQU 280H IO8253B
EQU 281H IO8253C
EQU 283H
DATA
SEGMENT HZ DW 0C2B7H,0B3CCH,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0B9ABH,0C0EFH
DW BCDBH,0B8F1H,0A3B0H,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0D4AAH;存放原始輸出 HZ_TAB DW 0C2B7H,0B3CCH,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0B9ABH,0C0EFH
DW 0BCDBH,0B8F1H,0A3B0H,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0D4AAH;存放要輸出的值 HZ_BG DW 0BFD5H,0B3B5H,0A2A0H,0A2A0H,0BBB6H,0D3ADH,0B3CBH,0D7F8H
DW 0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H;存放“空車歡迎乘坐”
HZ_ADR DB ?
;存放顯示行起始端口地址 JSS
DW 0000H DII
DW 0000H GAO
DW 0000H ZHE
DW 0000H NUMBER
DW 0A3B0H,0A3B1H,0A3B2H,0A3B3H,0A3B4H,0A3B5H,0A3B6H,0A3B7H,0A3B8H,0A3B9H DATA
ENDS IO_ADDRESS
EQU 288H
CODE SEGMENT ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX
MOV DX,IO_ADDRESS ADD DX,3 MOV AL,82H OUT DX,AL
;8255初始化 MOV AL,0FFH MOV DX,300H OUT DX, AL CALL CLEAR
;LCD 清除
LLL:
MOV DX,IO_ADDRESS ADD DX,1 IN AL,DX
;判斷開關是否打開 AND AL,01H CMP AL,01H JZ F0 CALL CHUSHI JMP LLL F0: MOV AL,01110110B MOV DX,IO8253C OUT DX,AL
;8254初始化 MOV AL,0FFH MOV DX,IO8253B OUT DX,AL MOV AL,0FFH
;設置計數初值0FFFFH OUT DX,AL F1: MOV AL,01000000B
MOV DX,IO8253C OUT DX,AL MOV DX,IO8253B
IN AL,DX MOV AH,AL IN AL,DX XCHG AH,AL CMP AX,159FH
;查看是否下降到159FH JA F1
;不滿足條件繼續讀值
MOV AL,01110110B
;重置8253 MOV DX,IO8253C OUT DX,AL MOV AL,0FFH MOV DX,IO8253B OUT DX,AL MOV AL,0FFH OUT DX,AL
CALL DISP
;調顯示子程序
CALL DDSP
CALL DELAY PUSH DX
MOV AH,06H MOV DL,0FFH INT 21H POP DX
JZ LLL
MOV AH,4CH
;退出
INT 21H L1:
JMP
START;L1
CHUSHI PROC NEAR
LEA SI, HZ_TAB LEA DI,HZ MOV CX,0FH F3: ADD SI,2 ADD DI,2 MOV AX,[DI] MOV [SI],AX LOOP F3
;重置HZ_TAB
MOV AX,0000H LEA BX,JSS MOV [BX],AX LEA BX, HZ_BG MOV CH,2
CALL LCD_DISP LEA BX, HZ_BG MOV CH,3
;顯示“空車歡迎乘坐” CALL LCD_DISP RET CHUSHI ENDP
DDSP
PROC NEAR
LEA DI,HZ_TAB LEA BX,JSS LEA SI,NUMBER MOV AX,WORD PTR[BX]
MOV BP,AX AND BP,00FFH ADD BP,BP
MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+6],DX
;將JSS中低八位傳入HZ_TAB MOV BP,AX AND BP,0FF00H ROR BP,8 ADD BP,BP MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+4],DX
LEA BX, HZ_TAB
MOV CH,2
息
CALL LCD_DISP LEA DI,HZ_TAB LEA BX,JSS LEA SI,NUMBER MOV AX,WORD PTR[BX] CMP AX,0003H
JBE L3 CALL BJ LEA BX,JSS JMP L4
L3:MOV BP,0007H
ADD BP,BP MOV DX,WORD PTR[BP+SI ] MOV WORD PTR[DI+24],DX JMP L4 L4:
LEA BX, HZ_TAB
MOV CH,3
CALL LCD_DISP RET DDSP
ENDP
BJ
PROC NEAR
LEA DI,HZ_TAB LEA BX,JSS LEA SI,NUMBER MOV AX,WORD PTR[BX] CMP AL,03H
;將JSS中高八位傳入HZ_TAB
;顯示第2行信;比較路程與3的大小;路程比3小的情況
;顯示第3行信息
JAE BJ1 SUB AH,01H ADD AL,0AH SUB AL,03H AAS
;路程減三并十進制化 JMP BJ2 BJ1:
SUB AX,0003H BJ2: MOV CX,AX AND AX,00FFH ADD AL,AL AAA ADD AX,07H AAA
LEA BX,DII MOV [BX],AX;DII MOV BP,AX AND BP,00FFH ADD BP,BP MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+24],DX
MOV AX,CX SHR AX,8 AND AX,00FFH ADD AL,AL
AAA LEA BX,GAO MOV [BX],AX;GAO LEA BX,DII MOV DX,[BX];DII AND AX,00FFH AND DX,0FF00H SHR DX,8 AND DX,00FFH ADD AL,DL
AAA LEA BX,ZHE MOV [BX],AX;ZHE MOV BP,AX AND BP,00FFH ADD BP,BP MOV DX,WORD PTR[BP+SI]
;路程加七并十進制化;先計算個位
;十位相加
;再加進位
MOV WORD PTR[DI+22],DX
;再計算十位 LEA BX,ZHE MOV DX,[BX] LEA BX,GAO MOV AX,[BX] AND DX,0FF00H AND AX,0FF00H SHR AX,8 SHR DX,8 ADD DL,AL
;百位加進位 AAA MOV BP,DX AND BP,00FFH ADD BP,BP MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+20],DX
;最后計算百位 RET BJ ENDP
DISP
PROC NEAR
;顯示子程序
PUSH DX
LEA BX, JSS
MOV AX,WORD PTR[BX]
ADD AL,01H
CMP AL,09H
;判斷是否<=9
JLE NUM
;若是則為'0'-'9',ASCII碼加30H
MOV AL,00H
ADD AH,01H
CMP AH,0AH
JZ L2 NUM:
MOV WORD PTR[BX],AX
ADD AL,30H
ADD AH,30H
MOV DL,AH
MOV DH,AL
MOV AH,02H
;屏幕顯示
INT 21H
MOV DL,DH
MOV AH,02H
;屏幕顯示
INT 21H
MOV DL,0DH
;加回車符
INT 21H
MOV DL,0AH
;加換行符
INT 21H
POP DX
RET
;子程序返回 DISP ENDP L2: MOV AH,4CH
;退出
INT 21H
CLEAR
PROC
MOV AL,0CH
CLEAR
FUNCUP
;
;
;
FUNCUP
LCD_DISP
;
址
DISP_SEC:
NEXT:
CONTINUE:
MOV DX, IO_ADDRESS OUT DX,AL
;設置CLEAR命令 CALL CMD_SETUP
;啟動LCD執行命令 RET
ENDP
PROC MOV AL, 0FH
;LCD功能設置命令 OUT DX, AL CALL CMD_SETUP MOV AL, 34H
;LCD顯示狀態命令 OUT DX, AL CALL CMD_SETUP RET
ENDP PROC LEA BX, HZ_TAB CMP CH, 2 JZ DISP_SEC MOV BYTE PTR HZ_ADR, 88H
;第三行起始端口地ADD BX,16
;指向第二行信息 JMP NEXT MOV BYTE PTR HZ_ADR,90H MOV CL,8
PUSH CX MOV AL,HZ_ADR MOV DX, IO_ADDRESS OUT DX, AL CALL CMD_SETUP
;設定DDRAM地址命令 MOV AX,[BX] PUSH AX MOV AL,AH
;先送漢字編碼高位 MOV DX,IO_ADDRESS OUT DX,AL CALL DATA_SETUP
;輸出漢字編碼高字節
CALL DELAY
;延遲
POP AX
MOV DX,IO_ADDRESS
OUT DX, AL
CALL DATA_SETUP
;輸出漢字編碼低字節
CALL DELAY
INC BX
INC BX
;修改顯示內碼緩沖區指針
INC BYTE PTR HZ_ADR
;修改LCD顯示端口地址
POP CX
DEC CL
JNZ CONTINUE
RET LCD_DISP
ENDP CMD_SETUP
PROC
MOV DX,IO_ADDRESS
制端口
ADD DX,2
NOP
MOV AL,00000000B
(LCD I端=0,W端=0)
OUT DX, AL
CALL DELAY
NOP
MOV AL,00000100B
=1)
OUT DX, AL
NOP
CALL DELAY
MOV AL, 00000000B
0)
OUT DX, AL
CALL DELAY
RET CMD_SETUP
ENDP DATA_SETUP
PROC
MOV DX,IO_ADDRESS
口
ADD DX,2
MOV AL,00000001B
(LCD I端=1)
OUT DX, AL
NOP
CALL DELAY
;指向8255端口控
;PC1置0,PC0置0
;PC2置1(LCD E端
;PC2置0,(LCD E端置
;指向8255控制端
;PC1置0,PC0=1
MOV AL,00000101B
;PC2置1(LCD E端=1)
OUT DX, AL
NOP
CALL DELAY
MOV AL, 00000001B
;PC2置0,(LCD E端=0)
OUT DX, AL
NOP
CALL DELAY
RET DATA_SETUP
ENDP DELAY
PROC
PUSH CX
PUSH DX
MOV CX, 0FFFH X1:
LOOP
X1
POP DX
POP CX
RET DELAY
ENDP
CODE ENDS
END START
四、程序結果
我們利用8254、8255、ST7920顯示屏、直流電機等制作出了一個出租車計價器有專用鍵可以表示是否空車,同時利用直流電機模擬車輪運動,通過路程計算價格,成果如下圖所示:
圖4-1程序結果圖
五、分析與測試
程序中,我遇到的最大的難題就是如何完成正確的十進制計算,因為所有的計算指令都是十六進制的,雖然有的計算里有類似AAA這樣的調整指令,但是很多時候就不一定記得起來加上。同時由于需要根據數字來查表對應相應的字符碼,而且我是建立一個從零到九的數組,而由于計算錯誤導致經常出現亂碼,而且比較難找到相應的錯誤。而且有些計算沒有十進制轉換指令,需要自己編寫。
同時我認為我利用提前存儲變量來表示走過的路程比利用堆棧要好,因為堆棧容易記混,而變量有獨特的名字,利于記憶與調用。而且易于清零、增減。
六、心得體會
這次課程設計中,令我印象最為深刻的就是我們應該有一種堅持的精神,有時候幾個小時都沒有成果,找不到BUG。顯示的就是有問題,這時候我們應該有一種堅持下去的毅力,積極詢問老師同學,問題的解決就很快了。
同時我發現編程習慣非常重要,應該有一個提前的規劃,不能想到哪寫到哪,這樣的話,后期的DEBUG會非常麻煩,因為自己也看不懂自己的代碼,我們都應該有規范化的代碼意識,這樣的編程能力才能上升。
參考文獻
[1]周荷琴,吳秀清,《微型計算機原理與接口技術》,合肥:中國科學技術大學出版社 2008。[2] 曹國清,《數字電路與邏輯設計》,徐州:中國礦業大學出版社 2003。[3] 8255芯片原理:http://baike.baidu.com/link?url=KHojvZzBGmo26_6iYGTdrdqH6PxQbM1Hnnc8hWQNPIp60L7TWG5LZu_ppSkXo5maU5M4APs4qCGSudiqZ0bdl_ [4]ST7920芯片原理:http://wenku.baidu.com/view/0dafd9232f60ddccda38a0fa.html訪問時間2013/10/15 [5]ST7920中文字碼表:http://wenku.baidu.com/view/d4abe628647d27284b735127.html訪問時間:2013/10/15
第五篇:出租車計價器畢業論文附錄
北京信息科技大學
畢業設計(論文)附錄
題 目:
學 院: 專 業:
學生姓名: 班級/學號 指導老師/督導老師:
起止時間:2012 年 月 日 至 2012 年 月 日
目錄
附件1 原理圖············································共 1 頁
附件2 PCB圖 ··········································· 共 1頁
附件3 程序代碼 ········································· 共 19 頁
附件4 外文資料翻譯 ····································· 共 11 頁
原理圖
PCB圖
程序代碼
#include
uchar table2[]=“0123456789abcdef”;
sbit lcdwr=P2^6;sbit lcdrs=P2^5;sbit lcden=P2^7;sbit beep=P2^4;sbit sclk=P3^7;sbit io=P3^6;sbit rst=P3^5;sbit scl=P3^0;sbit sda=P3^1;
uchar model;//模式標志位
uchar yue,ri,xq,shi,fen,miao;//月,日,星期,時,分,秒 uchar qibu=50,danjia=5;uint zongjia,lucheng,zzongjia,zlucheng;uchar xiugai;//修改時間和起步價單價標志 uint zj;uint zlc;uchar zu;//組數 uint count;//定時器中的數
uint waitmiao,waitfen;//等待時間 uint count1,count2;//外部中斷中的數 uchar xsfen,xsmiao;//行駛時間 uchar wait;//等待標志 uint speed;//速度標志
uchar cycount;//速度采樣值
void delayms(uint x){ uint i,j;for(i=x;i>0;i--)
for(j=110;j>0;j--);} void delay(){;;} /****************************** 1602液晶部分
******************************/ void yjwrite_com(uchar com){ lcdrs=0;P0=com;delayms(5);lcden=1;delayms(5);lcden=0;} void yjwrite_date(uchar date){ lcdrs=1;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;} void yjinit(){ lcdwr=0;lcden=0;yjwrite_com(0x38);
yjwrite_com(0x0c);yjwrite_com(0x06);yjwrite_com(0x01);//顯示清0,指針清0 } /*************************************************************************************** DS1302時間部分
***************************************************************************************/ void write_byte(uchar com,uchar date)//向DS1302模地址寫數據 { uchar i;rst=0;sclk=0;rst=1;for(i=0;i<8;i++){
if(com&0x01)io=1;
else io=0;
com>>=1;
sclk=0;
delayms(1);
sclk=1;} sclk=0;for(i=0;i<8;i++){
if(date&0x01)io=1;
else io=0;
date>>=1;
sclk=0;
delayms(1);
sclk=1;} sclk=0;rst=0;} uchar read_byte(uchar com){ uchar i,date;rst=0;sclk=0;rst=1;for(i=0;i<8;i++){
if(com&0x01)io=1;else io=0;
com>>=1;
sclk=0;
delayms(1);
sclk=1;} for(i=0;i<8;i++){
if(io)date|=0x80;
date>>=1;
sclk=1;
delayms(1);
sclk=0;} sclk=0;rst=0;return date;} void ds1302init(){ sclk=0;rst=0;write_byte(0x8e,0);//寫保護寄存器,最高位WP=1,寫保護,WP=0,不寫保護 // write_byte(0x90,0);//充電控制寄存器(此處為不充電)
write_byte(0x90,0xa5);//充電控制寄存器,設置為充電狀態 } /*void reset_1302(){ write_byte(0x8e,0);write_byte(0x80,0);//秒
write_byte(0x82,0x43);//分
write_byte(0x84,0x13);//時
write_byte(0x86,0x14);//日
write_byte(0x88,0x10);//月
write_byte(0x8a,0x05);//星期
write_byte(0x8c,0x11);//年
write_byte(0x8e,0x80);//寫保護
} */
/****************************************************************************** AT24C02存儲與讀取部分
******************************************************************************/ void start1(){ sda=1;delay();scl=1;delay();sda=0;delay();} void stop1(){ sda=0;delay();scl=1;delay();sda=1;delay();} void respons(){ uchar i;scl=1;delay();while((sda==1)&(i<250))i++;scl=0;delay();} void init(){ sda=1;delay();scl=1;delay();} void write_byte1(uchar date){ uchar i,temp;temp=date;for(i=0;i<8;i++){
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();} scl=0;delay();sda=1;delay();} uint read_byte1(){ uchar i,k;scl=0;delay();sda=1;delay();for(i=0;i<8;i++){
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();} return k;} void write_add(uchar address,uint date){ start1();write_byte1(0xa0);respons();write_byte1(address);respons();write_byte1(date);respons();stop1();} uint read_add(uchar address){ uchar date;start1();write_byte1(0xa0);respons();write_byte1(address);respons();start1();write_byte1(0xa1);respons();date=read_byte1();stop1();return date;} /***************************************************************************************** 鍵盤檢測
*****************************************************************************************/ uchar key_scan(){ uchar k=0,temp;static uchar key_up=1;P1=0xff;temp=P1;if(temp!=0xff&&key_up){
delayms(10);
key_up=0;
temp=P1;
if(temp!=0xff)
{
temp=P1;
switch(temp)
{
case 0xfe:k=1;break;
case 0xfd:k=2;break;
case 0xfb:k=3;break;
case 0xf7:k=4;break;
case 0xef:k=5;break;
case 0xdf:k=6;break;
case 0xbf:k=7;break;
case 0x7f:k=8;break;
}
} } temp=P1;if(temp==0xff){
key_up=1;} return k;} void display_time();/**************************************************************************************** 時間起步價和單價調整部分
****************************************************************************************/ void tiaoshi(){ uchar i;uchar t=0,n=1;write_byte(0x8e,0);//寫保護寄存器,最高位WP=1,寫保護,WP=0,不寫保護
yue=read_byte(0x89);ri=read_byte(0x87);xq=read_byte(0x8b);shi=read_byte(0x85);fen=read_byte(0x83);miao=read_byte(0x81);yue=(yue/16)*10+yue%16;ri=(ri/16)*10+ri%16;xq=(xq/16)*10+xq%16;shi=(shi/16)*10+shi%16;fen=(fen/16)*10+fen%16;miao=(miao/16)*10+miao%16;t=key_scan();if(t==6){ n++;if(n==10){
n=0;
xiugai=0;} } if(t==8){n=0;xiugai=0;} while(n){ t=key_scan();if(t==8){n=0;xiugai=0;} if(t==6){
n++;
if(n==10)
{
n=0;
xiugai=0;
goto a;
}
} switch(n){
case 1:
yjwrite_com(0x80);yjwrite_com(0x0f);delayms(5);
switch(t)
{
case 2:
yue++;
if(yue==13)yue=1;
write_byte(0x88,((yue/10)*16+yue%10));//
break;
case 3:
月
;
;
yue--;
if(yue==-1)yue=12;
write_byte(0x88,((yue/10)*16+yue%10));
break;
}
yjwrite_com(0x80);yjwrite_date(table2[yue/10]);yjwrite_date(table2[yue%10])
break;
case 2:
yjwrite_com(0x80+3);yjwrite_com(0x0f);delayms(5);
switch(t)
{
case 2:
ri++;
if(ri==32)ri=0;
write_byte(0x86,((ri/10)*16+ri%10));//日
break;
case 3:
ri--;
if(ri==-1)ri=31;
write_byte(0x86,((ri/10)*16+ri%10));
break;
}
yjwrite_com(0x80+3);yjwrite_date(table2[ri/10]);yjwrite_date(table2[ri%10])
break;case 3: yjwrite_com(0x80+6);yjwrite_com(0x0f);delayms(5);switch(t){
case 2:
xq++;
if(xq==8)xq=1;
write_byte(0x8a,((xq/10)*16+xq%10));//星期
break;
case 3:
xq--;
if(xq==-1)xq=7;
write_byte(0x84,((xq/10)*16+xq%10));
break;} yjwrite_com(0x80+5);yjwrite_date('-');yjwrite_date(table2[xq%10]);
break;
case 4:
yjwrite_com(0x80+0x40);yjwrite_com(0x0f);delayms(5);
switch(t)
{
case 2:
shi++;
if(shi==24)shi=0;
write_byte(0x84,((shi/10)*16+shi%10));
break;
case 3:
shi--;
if(shi==-1)shi=23;
write_byte(0x84,((shi/10)*16+shi%10));
break;
}
yjwrite_com(0x80+0x40);yjwrite_date(table2[shi/10]);yjwrite_date(table2[shi%10]);
break;
case 5:
yjwrite_com(0x80+0x43);yjwrite_com(0x0f);delayms(5);
switch(t)
{
case 2:
fen++;
if(fen==60)fen=0;
write_byte(0x82,((fen/10)*16+fen%10));//分
break;
case 3:
fen--;
if(fen==-1)fen=59;
write_byte(0x82,((fen/10)*16+fen%10));//分
break;
}
yjwrite_com(0x80+0x40+3);yjwrite_date(table2[fen/10]);yjwrite_date(table2[fen%10]);
break;
case 6:
yjwrite_com(0x80+0x46);yjwrite_com(0x0f);delayms(5);
switch(t)
{
case 2:
miao=0;
write_byte(0x80,((miao/10)*16+miao%10));//秒
break;
case 3:
miao=0;
write_byte(0x80,((miao/10)*16+miao%10));//秒
break;
}
yjwrite_com(0x80+0x40+6);yjwrite_date(table2[miao/10]);yjwrite_date(table2[miao%10]);
break;
case 7: //起步價調整
yjwrite_com(0x80+11);yjwrite_com(0x0f);
qibu=read_add(2);
switch(t)
{
case 2:qibu++;write_add(2,qibu);break;
case 3:qibu--;write_add(2,qibu);if(qibu==-1)qibu=0;break;
}
yjwrite_com(0x80+11);
//顯示起步價
yjwrite_date(table2[qibu/100]);
yjwrite_date(table2[qibu%100/10]);
yjwrite_date('.');
yjwrite_date(table2[qibu%10]);
break;
case 8: //單價調整
yjwrite_com(0x80+0x40+11);yjwrite_com(0x0f);
danjia=read_add(0);
t=key_scan();
switch(t)
{
case 2:danjia++;write_add(0,danjia);break;
case 3:danjia--;write_add(0,danjia);if(danjia==-1)danjia=0;break;
}
yjwrite_com(0x80+0x40+11);
//顯示單價
yjwrite_date(table2[danjia/100]);
yjwrite_date(table2[danjia%100/10]);
yjwrite_date('.');
yjwrite_date(table2[danjia%10]);
break;
case 9:zu=0;yjwrite_com(0x01);write_add(250,zu);
yjwrite_com(0x80);
yjwrite_date('C');yjwrite_date('l');yjwrite_date('e');yjwrite_date('a');
yjwrite_date('r');yjwrite_date('.');yjwrite_date('.');
for(i=3;i<247;i++)
{
write_add(i,0);
delayms(5);
}
yjwrite_com(0x80+0x40);yjwrite_date('O');yjwrite_date('K');
break;
} // display_time();} a: xiugai=0;write_byte(0x8e,0x80);//ds1302寫保護
yjwrite_com(0x0c);//1602液晶取消光標閃爍 } /*********************************************** 按鍵處理函數
***********************************************/ void key_do(){ uchar num1,num2;uchar key=0;key=key_scan();switch(key){
case 1:model++;if(model==3)model=0;break;
case 4:
//啟動按鍵
TR0=1;
EX0=1;
count=0;count1=0;lucheng=0;zongjia=0,count2=0;
waitmiao=0;
waitfen=0;
xsfen=0;
xsmiao=0;
break;
case 5:
//停止按鍵
TR0=0;
EX0=0;
num1=lucheng/256;
write_add((7+zu*2),num1);
num2=lucheng%256;
delayms(5);
write_add((8+zu*2),num2);
num1=zongjia/256;
delayms(5);
write_add((127+zu*2),num1);
num2=zongjia%256;
delayms(5);
write_add((128+zu*2),num2);
delayms(5);
zu++;
if(zu==60)zu=0;
write_add(250,zu);
zzongjia=zzongjia+zongjia;
num1=zzongjia/256;
write_add(5,num1);
delayms(5);
num2=zzongjia%256;
write_add(6,num2);
delayms(5);
zlucheng=zlucheng+lucheng;//計算出累計的總路程
num1=zlucheng/256;//當總路程超過255時,一個字節就存儲不下了,需要分成兩個字節存儲
write_add(3,num1);
num2=zlucheng%256;//分離出總路程的低位字節
delayms(7);
write_add(4,num2);//存儲總路程的低位字節
break;
case 6:xiugai=!xiugai;break;
case 7:
wait=!wait;
if(wait==1)EX0=0;
else EX0=1;
break;
case 8:model=0;xiugai=0;break;} } void chaxun(){ static uchar n=0;uchar key=0,num,num1,a=0;num=read_add(3);//讀取總路程的高位
num1=read_add(4);//讀取總路程的高位
zlucheng=num*256+num1;num=read_add(5);//讀取總總價的高位 num1=read_add(6);//讀取總總價的高位 zzongjia=num*256+num1;yjwrite_com(0x80);yjwrite_date(table2[qibu/100]);//顯示起步價 yjwrite_date(table2[qibu%100/10]);yjwrite_date('.');yjwrite_date(table2[qibu%10]);yjwrite_com(0x80+8);
//顯示單價 yjwrite_date(table2[danjia/100]);yjwrite_date(table2[danjia%100/10]);yjwrite_date('.');yjwrite_date(table2[danjia%10]);yjwrite_com(0x80+0x40);yjwrite_date(table2[zlucheng/1000]);//顯示總路程 yjwrite_date(table2[zlucheng%1000/100]);yjwrite_date(table2[zlucheng%1000%100/10]);yjwrite_date('.');yjwrite_date(table2[zlucheng%10]);yjwrite_date('k');yjwrite_date('m');yjwrite_com(0x80+0x40+8);
//顯示總總價 yjwrite_date(0x5c);//顯示人民幣的符號 yjwrite_date(table2[zzongjia/1000]);yjwrite_date(table2[zzongjia%1000/100]);yjwrite_date(table2[zzongjia%1000%100/10]);yjwrite_date('.');yjwrite_date(table2[zzongjia%10]);
key=key_scan();switch(key){ case 1:a=0;model=0;break;case 2:a=1;n++;if(n==60)n=0;break;case 3:a=1;n--;if(n==-1)n=59;break;case 8:a=0;model=0;break;} while(a){ key=key_scan();switch(key){
case 1:a=0;model++;break;
case 2:n++;if(n==60)n=0;break;
case 3:n--;if(n==-1)n=59;break;
case 8:a=0;break;
}
if(key==2||key==3)
{
yjwrite_com(0x01);
num=read_add(7+2*n);//讀取總路程的高位
num1=read_add(8+2*n);//讀取總路程的高位
zlc=num*256+num1;
num=read_add(127+2*n);//讀取總總價的高位
num1=read_add(128+2*n);//讀取總總價的高位
zj=num*256+num1;
yjwrite_com(0x80);
//顯示組數
yjwrite_date(table2[(n+1)/10]);
yjwrite_date(table2[(n+1)%10]);
yjwrite_com(0x80+0x40);
//顯示路程
yjwrite_date(table2[zlc/100]);
yjwrite_date(table2[zlc%100/10]);
yjwrite_date('.');
yjwrite_date(table2[zlc%10]);
yjwrite_date('k');
yjwrite_date('m');
yjwrite_com(0x80+0x40+8);
//顯示總價
yjwrite_date(0x5c);
yjwrite_date(table2[zj/100]);
yjwrite_date(table2[zj%100/10]);
yjwrite_date('.');
yjwrite_date(table2[zj%10]);
} } } void display_time(){ uchar i;uchar time[11];yue=read_byte(0x89);ri=read_byte(0x87);xq=read_byte(0x8b);shi=read_byte(0x85);fen=read_byte(0x83);miao=read_byte(0x81);time[0]=yue/16;//提取月的第一位數據,讀出來的時間是16進制的,所以對16取模
time[1]=yue%16;//提取月的第二位數據 time[2]=ri/16;time[3]=ri%16;time[4]=xq%16;time[5]=shi/16;time[6]=shi%16;time[7]=fen/16;time[8]=fen%16;time[9]=miao/16;time[10]=miao%16;yjwrite_com(0x80);for(i=0;i<2;i++){ yjwrite_date(table2[time[i]]);} yjwrite_date('-');for(i=2;i<4;i++){ yjwrite_date(table2[time[i]]);} yjwrite_date('-');yjwrite_date(table2[time[4]]);yjwrite_com(0x80+11);
//顯示起步價 yjwrite_date(table2[qibu/100]);yjwrite_date(table2[qibu%100/10]);yjwrite_date('.');yjwrite_date(table2[qibu%10]);yjwrite_com(0x80+0x40+11);
//顯示單價 yjwrite_date(table2[danjia/100]);yjwrite_date(table2[danjia%100/10]);yjwrite_date('.');yjwrite_date(table2[danjia%10]);yjwrite_com(0x80+0x40);for(i=5;i<7;i++){ yjwrite_date(table2[time[i]]);} yjwrite_date(':');for(i=7;i<9;i++){ yjwrite_date(table2[time[i]]);} yjwrite_date(':');for(i=9;i<11;i++){
yjwrite_date(table2[time[i]]);}
} void main(){ uchar fristtime=0,fristtime1=0,fristtime2=0;ds1302init();//ds1302初始化
init();//24c02初始化
yjinit();//1602液晶初始化 // reset_1302();danjia=read_add(0);qibu=read_add(2);TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;IT0=1;zu=read_add(250);PT0=1;while(1){
key_do();
switch(model)
{
case 0:
fristtime1=0;
fristtime2=0;
if(fristtime==0)
{
yjwrite_com(0x01);
fristtime=1;
}
if(lucheng>30)
zongjia=(qibu*10+(danjia*(lucheng-30)))/10;
else
zongjia=qibu;
yjwrite_com(0x80);
//顯示行駛時間
yjwrite_date(table2[xsfen/10]);
yjwrite_date(table2[xsfen%10]);
yjwrite_date('-');
yjwrite_date(table2[xsmiao/10]);
//
yjwrite_date(table2[xsmiao%10]);yjwrite_date(' ');yjwrite_date(table2[waitfen/10]);//顯示等待時間
yjwrite_date(table2[waitfen%10]);yjwrite_date('-');yjwrite_date(table2[waitmiao/10]);yjwrite_date(table2[waitmiao%10]);yjwrite_date(' ');yjwrite_date(table2[speed/100]);//顯示速度
yjwrite_date(table2[speed%100/10]);yjwrite_date('.');yjwrite_date(table2[speed%10]);if(speed>650)beep=0;else beep=1;yjwrite_com(0x80+0x40);
//顯示路程的yjwrite_date(table2[lucheng/100]);yjwrite_date(table2[lucheng%100/10]);yjwrite_date('.');yjwrite_date(table2[lucheng%10]);yjwrite_date('k');yjwrite_date('m');yjwrite_date(' ');yjwrite_date(table2[(zu+1)/10]);//顯示當前組數
yjwrite_date(table2[(zu+1)%10]);yjwrite_date(' ');yjwrite_com(0x80+0x40+10);
//顯示總價
yjwrite_date(0x5c);yjwrite_date(table2[zongjia/1000]);yjwrite_date(table2[zongjia%1000/100]);yjwrite_date(table2[zongjia%1000%100/10]);yjwrite_date('.');yjwrite_date(table2[zongjia%10]);break;case 1: fristtime=0;fristtime2=0;if(fristtime1==0){
yjwrite_com(0x01);
fristtime1=1;} display_time();if(xiugai==1){
tiaoshi();
}
break;
case 2:
fristtime=0;
fristtime1=0;
if(fristtime2==0){yjwrite_com(0x01);fristtime2=1;}
chaxun();
break;
}
}
} void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;count1++;if(count1==20){
speed=cycount*9;
cycount=0;
count1=0;
xsmiao++;
if(wait==1)
{
waitmiao++;
if(waitmiao==60){waitmiao=0;waitfen++;}
}
if(xsmiao==60)
{
xsmiao=0;
xsfen++;
}
} } void ex0()interrupt 0 { count++;cycount++;if(count==12){
} count=0;count2++;} lucheng=count2*1;
外文資料翻譯
ABSTRACT In this paper, a multi-channel taximeter that is able to deal with more than one passenger simultaneously is proposed.In order to demonstrate the theory of operation of the proposed system, a complete design for an experimental three-channel taximeter(whose prototype has been built under grant from the Egyptian Academy for Scientific and Technological Research)is presented.System location, outline, block diagrams as well as detailed circuit diagrams for the experimental taximeter are also included.1.INTRODUCTION Transporting people in the morning from their homes to their works and back in the afternoon has become a big problem in big cities especially in undeveloped countries.As a partial solution of this problem, the authorities in some countries had, unofficially, left the taxicab drivers to carry different passengers to different places at the Same time.For example, a taxicab with four seats may carry four different passengers without any relation between them except that their way of travelling is the same.Accordingly, it has become very difficult to rely on the present conventional single-channel taximeter to determine the fare required from each passenger separately.Accordingly, an unfair financial relation was created between the taxicab driver, owner, passengers and the state taxation department.Under these circumstances, taxicab drivers force the passengers to pay more than what they should pay.In some cases passengers had to pay double fare they should pay.With the present conventional single-channel taximeter, taxicab owners are not able to determine the daily income of their taxicab.In some cases(a taxicab with four seats)they may only get one quarter of the income of the taxicab(collected by the taxicab driver).From which they should pay the salary of the taxicab driver as well as the cost of fuel, minor and major repairs in addition to the car depreciation.As a matter of fact the position of the taxicab owners is not so bad as it seems.A general agreement has been reached between the taxicab drivers and owners such that the drivers should guarantee a fixed daily income to the owners as well as the paying for the cost of fuel as well as the minor repaires.Even though the taxicab drivers still share the large portion ofthe income of the taxicab.Also with the presence of the single-channel taximeter, it has become very difficult for the state taxation department to know the yearly income of the taxicab and accordingly it has become very difficult to estimate the taxes to be paid by the taxicab owners.In order to face this problem, the state taxation department had to impose a fixed estimated taxes for each seat of the taxicab whatever the income of the taxicab.In this paper, we introduced a multichannel taximeter that can deal with more than one passenger simultaneously.I t should be pointed out that by the term passenger we mean a one person or a group of related persons.I t should also be pointed out that our proposed multi-channel taximeter is not, simply, a multi display readouts.As a matter of fact it contains logic circuits that automatically changes the fare per killometer of travelling distance or per minutes of 'waiting time according to the number of passengers hiring the taxicab.In the following part and as an example, we will present a complete design for a three-channel taximeter.Block diagrams as well as detailed circuit diagrams of the experimental three-channel taximeter are also included.A prototype has been built under grant from the Egyptian Academy for Scientific and Technological Research.2.AN EXPERIMENTAL THREECHANNEL TAXIMETER Theory of operation of our experimental device to work as an electronic digital taximeter is based on t h e fact thathe speedometer cable rotates one revolution for each meter of travelling distance.Accordingly, if the speedometer cable is coupled with a speed sensor that generates a single pulse for each meter of travelling distance, then our taximeter could be three up counter modules associated with a speed sensor unit.However, our experimental taximeter is not simply a three display readouts.As a matter offact it contains logic circuits that automatically changes the fare per kilometer of travelling distance or per minutes of waiting time according to the number of passengers hiring the taxicab.The device may be splitted into two main parts: The first is the speed sensor unit which may be located anywhere in the taxicab such that an easy coupling to the speedometer cable can be achieved.The second unit contains the main electronic circuit, the displayand control panel.The unit should be located somewhere in front of both the driver and the passengers.A possible components locations is shown in Figure 1.A.Speed Sensor Unit The main function of this unit is to supply train of pulses whose frequency is proportional to the angular rotation of the wheels.A possible form of a speed sensor is shown in Figure 2.If may consist of a tj.pica1 permanent magnet sine wave generator with its output connected to a pulse shapping circuit(two general purpose silicon diodes, 1K ohms resistor and a schmit trigger inverter).In order to find some way to detect the movement of the taxicab, the output of the sine wave generator is rectified through a general purpose silicon diode Dl then smoothed by a 1000 F capacitor.The output voltage at terminal Q is then limited to the value of 4.7 volts by using a Ik ohms resistor as well as a zener diode ZD.The level of the voltage at terminal Q would be high whenever the taxicab is moving and will be zero otherwise.This voltage can be used for the automatic switching from distance fare to time fare.B.Main Electronic and Display Unit A suggested shape for the main electronic and display unit is shown in Figure 3.The control and display panel contains all ' controls necessary for operating the taximeter as well as four readout displays.The first channel will give the sum of money required from the first passenger, while the second and third readouts are for the second and third passengers, respectively.The fourth readout will give the total income of the taxicab.The contents of the last readout should be nonvolatile and be able to be retained even during parking the taxicab.The channel rotary selector switchs 1 , 2 and 3 have fully clockwise/anticlockwise positions.In the fully anticlockwise position, the counter of the corresponding readout is blancked and disabled.In the fully clockwise position, the counter is unblanked, cleared to zero and enabled to be ready for counting the sum of money required from the first, second and third passengers, respectively.Pushing the total sum pushbutton 4 unblanks the fourth readout enabling any person to retain the readout corresponding to the total income.After the release of the pushbutton, the fourth readout will be blanked again.This unit also contains the main electronic circuit which will be fully described in the following section.3.DESCRIBTION OF THE MAIN ELECTRONIC CIRCUIT The general block diagram of the main electronic circuit is shown in Figure 4.It consists of five subcircuits designated by the symboles CTI up to CT4supporting circuits, these are: The number of passenger deticition circuit CTI, travelling distance scaling circuit CT2, waiting time scaling circuit CT3, circuit CT4 which generates clock pulses for the display circuit.A.Number of Passengers Detection Circuit CT1 As shown from the general block diagram, the circuit CTI has three inputs I, 2 and 3 as well as three outputs J, K and L.The function of the circuit is to supply a high level voltage at terminals J, K or L if and only if one, two or three passengers are hiring the taxicab, respectively.The term passenger, here, means one person or a group of related persons.When a passenger is getting into the cab, we simply turn on a free readout display by turning the corresponding rotary selector switch to a fully clockwise direction.This will automatically disconnect the corresponding terminal I, 2 or 3 from ground.The logical relation between various input terminals I, 2 and 3 and the output terminals J, K and L is shown in Table 1.As a combinational circuit we start the design by deriving a set of boolean functions.A possible simplified boolean functions that gives minimum number of inputs to gates may be obtained from Table I.A possible logical diagram that is based on the above derived expressions is shown in Figure 5.It consists of two inverters, four 2-input AND, to3-input AND two 3-input OR gates B.Tavelling Distance Scaling Circuit CT2 As shown from the block diagram of Figure 4, the circuit CT2 has four input J, K, L and E and one output M.The function of the circuit is to supply a single pulse at the output M for a certain number of pulses generated at the output of the speed sensor(certain number of meters travelled by the taxicab), according to the number of passengers hiring the car.A suggested fare per kilometer of travelling distance is shown in colomn two of Table 2.the circuit, in this case, should supply a single pulse at the output M for every 100, 125 or 143 pulses generated at the input terminal E according to the level of voltage at input terminale 3, K or L, respectively.Our circuit could be, as shown in Figure 5, three decade counters, connected as a three digit frequency divider whose dividing ratios 100, 125 and 143 are automatically selected by the voltage level at terminals J, K and L, respectively.A possible circuit diagram that may verify the above function is shown in Figure 6.It consists of three decade counters type 7490, one BCD-to decimal decoder type 7445, three 4-input AND, one 3-input ANDone 2-input AND two 3-input OR gates.C.Time Scaling Circuit CT3 As shown in the block diagram, the time scalingcircuit will have four inputs J, K, L and F and one output N.The function of this circuit and accordingto colomn three of Table 2(fare per 2 minuts of waiting time)is to supply a single pulse at the output N for every 120, 240 or 360 pulses supplied at the input terminal F from the I Hz clock according to level of voltage at inputs J, K and L, respectively.Time scaling circuit would be similar to the distance scaling circuit but with different diving ratios.A Possible circuit diagram is shown in figure 7.It consists, in this case, of three decade counter type 7490, two 3-input AND, one 5-input AND, one 2-input AND one 3-input OR gates.D.Circuit CT4 Which Generates Clock Pulses for Display Circuit The function of this circuit is to supply one, two or three pulses at the output terminal R for each pulse generated at any of the terminals N or M, according to the voltage level at the input terminals J, K or L, respectively.The output P will receive a pulse for each pulse generated at any of the input terminals N or M.This function can be performed by the circuit shown in Figure 8, it consists of one ripple counter type 7493, one half of a dual JK masterslave flip-flops circuit type 7476, three inverters, three 2-input AND, one 3-input AND, one 2-input OR and one 3-input OR gates.When a pulse is generated at either input terminals N or M, a high level voltage will be generated at the output Q of the flip-flop.This will g a t e t h e I Khz signal to be connected to the input A of the ripple counter as well as to the output terminal R.When one, two or three pulses are counted by the ripple counter, according to the level of voltage at the input terminals J, K and L, respectively, a high is generated to reset the counter and change the state of the flip-flopsuch that Q becomes low.Hence, the 1 KHz signal is disabled to reach the outputerminal R or the input A of the ripple counter.In order to ensure the proper function of the circuit, the flip-flop should be cleared whenever a new channel is operated.This has been achieved by the input 5 and will be explained later when describing the function of the channels rotary selector switchs.E.Display Circuit As shown in Figure 2, the display panel would contain three 4-digit displays that give the sum of money required from each passenger separately as well as a one six-digit display that gives the total income of the taxicab.A possible wiring diagram for the display circuit is shown in Figure 9.Rotating any of the rotary selector switches to fully clockwise direction will supply the corresponding display by5 volts through terminals 1, 2 and 3, respectively.The corresponding display will be unblanked by supplying a low level of voltage through terminals A, C and G, respectively.Keeping terminals 8, D and H, respectively, at low level will keep them reset to zero.The corresponding display is then enabled by removing the low voltage from terminals B, D, and H, respectively, to be ready for counting the sum of money required from the corresponding passenger starting from zero.The counting pulses for these three displays are supplied through terminal P.The total sum display will be enabled whenever any of the three displays is enabled(this is done by a 3-input OR gate as shown in Figure 8).Retaining the contents of the last display will be done by unblanking it by supplying a low level of voltage to terminal I as shown in Figure 10 b.F.Changing Over Between Time and Distance Fares In the following part, two different methods for changing over between time andistance fares are suggested: The first is to switch to time fare whenever the distance fare is less than the time fare.Hence, a simple look to fares table(Table 2)can show that time fare should be used whenever the taxicab moves with speed less than 50 m/min.A possible circuit that can perform this switching action is shown in Figure IO c.It contains one rpm limit switch and a one inverter as well as two 2-input AND gates.The contacts of the limit switch are normally closed and will be opened whenever the angular speed of the speedometer cablexceeds 50 rmp.The second alternation is to connect the input of the inverter in Figure 10 c.to the output terminal Q of the speedometer circuit, Figure 2.In this case, the switching into time fare will be done whenever the taxicab is at stand still.G.Function of the Rotary Selector Switches The voltage levels that should be supplied by the terminals of the rotary selector switches in order to ensure proper operation by the electronic circuit are given in Table 3.Connection of three rotary selector switches each witb four decks of five poles each, that satisfy the logic function of Table 3, is shown in Figure 10 a.Rotating any of the three switches into fully clockwise direction will pass through five positions.The function of the rotary selector switches can be described starting from the first position passing through variousteps until reaching the final position as follows: Initial position: In this position a low voltage level is applied to terminals I, 2 and 3, this will disconnect the 5 volts supply from the three first displays, set the three inputs of the number of passenger detection circuit CTI to low level.A low voltage level is applied to terminals 8, D and H, this is to ensure that the total income display is disabled.Voltage levels at terminals A, C, G and S are at no care condition.Step I: Rotating any of the rotary selector switches one step toward clockwise direction will supply 5 volts to the corresponding display, provides a high level voltage at terminals 1, 2 or 3 indicating that one passenger have entered the taxicab.A high level voltage should be applied to terminals A, C or G in order to ensure that the corresponding display is still blanked.Other terminals B, D, H and S are kept unchanged.Step 2: Rotating the rotary selector switch one step further, will change the state of voltages at terminal A, C or G to be at low level and unblanks the corresponding display.States of voltages at terminals I, 2, 3 and S are remained unchanged.Terminals B, D and H should be remained at low level to ensure that the corresponding readout is cleared to zero while unblanking the display.二、中文翻譯
摘要
本文提出了一種出租車多通道計價的方案,能同時處理一個以上乘客的情形。為了從理論上說明本方案,提出了一個實驗上的三通道型的士的完整設計(其原型是根據埃及科學和技術研究學院的研究而建成得)。.導言
在不發達的國家,早上把人們從他們家送到工作的地方,然后下午送回來已成為一個大問題,尤其是在大城市。
作為解決這個問題的一個部分,在某些國家出租車用來解決這個問題,送人們從一個地方到另外一個地方。例如,出租車的四個席位可攜帶四個不同的沒有任何關系的乘客,除了他們的路線是相同的。
因此,依靠目前的傳統的單車道計價以確定所需的票價,把每個乘客的計費分開,這已成為一個非常困難的問題。因此,在出租車司機,車主,乘客和國家稅務部門之間存在著不公平的財政關系。
在這種情況下,出租車司機強迫乘客支付多于他們所應付的。在某些情況下乘客支付了他們應付車費的雙倍。
本常規單頻道計程車,出租車司機不能夠確定出租車日常收入。在某些情況下(出租車的4個席位),他們可能只有出租車四分之一的收入(大部分的出租車司機)。從這些支付工資的出租車司機以及作為燃料費用外,還要維修以及汽車折舊等費用。事實上,出租車業主并非似乎如此糟糕。一項在出租車司機和車主之間的協議已經達成,司機應保證每天固定收入,以及向業主支付燃料以及維修的費用。即使如此,還是有的出租車司機的很大一部分份額之收入的出租車。現在還存在的單聲道計價,已經變得非常,國家稅務部門也知道這種困難 每年估計出租車業主的收入支出,以及應支付的稅務也很困難。
為了應對這一問題,國家稅務部已實行固定估計稅,每個座位的出租車不論收入。在本文中,我們介紹了多通道的士計程表,可處理超過一名乘客同時進行的情況。我應該指出,我所說的長期旅客指一個人或一組相關的人。我同時也應指出,我們提出的多渠道的計價,不是簡單地說,一個多顯示讀數。作為一個先進的事項,事實上它包含邏輯電路,可以自動計算變化的車費以及每公里行走距離或每分鐘的候車時間按照乘客人數雇用出租車。在下面的部分,我舉出一個例子,我們將介紹一個完整的三通道計價。框圖以及詳細的電路圖,實驗三通道計價功能也包括在內。原型下已建成 埃及贈款科學學院 和技術研究。.實驗THREECHANNEL 出租車計價器理論的運作我們的實驗裝置從事電子數字計價依據。事實上速度電纜旋轉1 圈的每米距離行駛。因此,如果車速電纜耦合與速度傳感器,產生一個單脈沖每平方米的旅行距離,那么,我們的的士可以三倍于反模塊相與速度傳感器的單位。然而,我們的實驗是計價而不僅僅是只顯示三個讀數。事實上,它包含邏輯電路,可以根據每公里的行駛距離或每分鐘等候時間按照乘客人數雇用出租車來自動改變車費。該裝置可能會分成兩個主要部分組成:第一是速度傳感器,這個傳感器可位于任何地方,在出租車內進行這樣一個簡單的耦合車速電纜是可以實現的。
單位包含了主要的電子電路,顯示器以及控制面板。該單位應位于前排的司機和乘客之間。
A. 速度傳感器
其主要職能是本單位提供脈沖的培訓,這個脈沖的頻率會于旋轉角度相適合。一種可能的形式一個速度傳感器。如果可以包含正弦波發生器的輸出連接到脈沖整形電路的永磁器件(2通用芯片二極管,1000歐姆的電阻和施密特觸發逆變器)。
為了找到某種方式來檢測出租車的運動,正弦波發生器的輸出是糾正通過一個通用的硅二極管延胡索乙然后平滑的1000年F電容。那個輸出電壓在終端Q是當時限于價值4.7伏特用益歐姆的電阻以及一個齊納二極管ZD。出租車的終端電壓在終端Q將高電壓降為零。這電壓可作為改變出租車從距離計費到時間計費方式的開關電壓。
主要的電子和顯示單元
一個建議是主要形式的電子和顯示單元。控制和顯示器面板包含所有'控制所必需的經營的士以及四個可讀顯示器。第一頻道將給出從第一乘客,第二乘客,第三乘客分別應付的費用,第四個會給出總收入給予出租車。最后讀出的數據會包括停車的費用等等費用。頻道選擇器開關1,第2和第3個,按順時針/逆時針的立場。在充分逆時針的立場,反相應的讀出是未標明和殘疾人。以順時針方向則是未定義的,清除為零,對于第一第二第三的乘客分別計費。第四號推進總鈕第四次讀出,使任何人保留讀出相應的總收入。經過釋放按鈕,第四次讀出將再次保留。這個單位還包含主要電子電路將在下一節充分描述。描述的主要電子電路
它由五個部分指定的電腦符號與電話系統整合成為4個支撐電路,它們是:判斷乘客數量電路CT1,旅行距離電路CT2,等待時間電路CT3,時鐘脈沖顯示電路CT4。
乘客人數檢測電路CT1如圖所示的一般框圖,該電路電腦與電話系統整合有三個輸出:1,2和3相對應于三個輸出J,K和L。
這個循環電路函數包含高電壓的終端 J,K或L,如果有1個或者2,3個乘客分別租用出租車。這個組里的任意乘客都是一組相關的人。當一個乘客進入出租車后,我們只是表示這樣一種情況,自由讀出顯示在談到相應的旋轉選擇開關,以一個完全順時針方向。這將自動斷開相應的終端1,2或3個從地面。邏輯關系各種輸入端子之間第1,第2和第3個輸出端J,K和L是列于表1。作為一個組合電路,我們開始設計產生了一系列布爾函數。
一種可能的邏輯圖的基礎上,它包括兩個變頻器,4個2輸入和3輸入以及2個3輸入或門。B.行駛距離標量環路CT2,電路CT2有4個輸入J,K,L及E和1個輸出M,輸出功能的電路是供應單脈沖的輸出M的某一些脈沖產生的輸出的速度傳感器(出租車行駛了一定得距離),根據乘客的人數租用的汽車。我們建議票價按每公里行駛距離顯示在兩個表格2里面。
表2 這個環路,在這種情況下,應提供單脈沖的輸出M的每100,125或143脈沖所產生的輸入端根據級別的電壓輸入終端3,K或L。
我們的電路按圖5顯示,三個十年的計數器,作為一個三位數分頻器的分比率100,125和143個自動選定的電壓一級終端J,K和L分別。一種可能的線路圖可被驗證,它包括三個十年的計數器7490,一個聲BCD-以杜威解碼器輸入7445,3個4輸入和1個3輸入以及1個2輸入和2個3輸入或門。
時間縮放電路CT3.時間縮放電路含有4個輸入端 J,K,L及F和一個輸出端N,這個電路的函數根據表格2的意思(車費每2分鐘的等待時間)是在J,K和L分別供應單脈沖到輸出端N時,提供單脈沖的輸出N。時間縮放電路將類似于距離標量環路,但是有不同的行駛比率。它包括3個十進制計數器7490,2個3輸入與門和一個5輸入與門,1個2輸入與門和一個3輸入或門。
電路產生時鐘脈沖的顯示電路CT4 這條電路的作用根據電壓電平在輸入終端J、K或者L,分別供應1,2或者脈沖在每脈沖的輸出終端R引起在任何終端N或M。無論輸入端N或者M中的誰發送脈沖,都只有一個脈沖能被輸出端P接收。它由一個反向計數器7493構成,其中一半是雙JK主從觸發器電路,型號為7476,包括三個變頻器,三個2輸入與門,一個3輸入與門,1 2輸入或門以及一個3輸入或門。當脈沖引起在輸入的終端N或M,觸發器的輸入Q上將產生高級電壓。這個門信號將被連接到計數器的輸入A并且連接到輸出終端R。當第一,第二或第三個脈沖由漣波計數器開始計數,J,K,L端會分別根據電壓的大小來使產生重置或者翻轉來改變狀態,然后Q端變為輸出低電壓。因此,1 KHz信號沒有能力到達輸出端R或是計數器的輸入端A。為了確保電路的函數準確無誤,當切換到新頻道時,觸發器要清零。對于功能選擇開關旋轉渠道的描述,稍后會以一個成功的5輸入門函數來解釋。顯示電路
該顯示面板將包含三個4位數顯示器,這樣可以給出每個乘客應付車費的總和,一個六位數顯示器可以給出出租車的總收入。以順時針方向旋轉所選擇的開關將提供相應的顯示,這可以通過5伏電壓來分別控制1,第2和3終端。對應的顯示通過供應低級電壓通過終端A、C和G,分別。保持終端D和H在低級狀態下重置為零對應的顯示分別通過終端B,D,H而改變低壓狀態,并準備好從對應的乘客那里計算出相應的計數款額,計數脈沖這三個顯示器通過終端提供總額。計數器還將通過終端P為3個顯示器提供脈沖只要這三個顯示器中任意一個是正常的,那么總額將被顯示出來。
時間和距離變化時車費的改變
在下面的部分,兩種不同的方法使得時間和距離改變從而導致車費發生變化,有如下建議:首先是當以路程計價的費用低于以時間計費的費用時,采用時間計費。從此,一個簡單的票價表顯示當出租車移動速度小于50米/分時應該采用時間計費方式。一種可能的電路可以執行此開關行動如圖10c,它包含一個轉速限位開關和一個反轉器以及兩個2輸入與門。接觸的限位開關通常是封閉,只有當角速度超過50RMP的時候才會打開。第二個改變將中斷連接到圖10C的輸入端,輸出端Q連接速度的電路。在這種情況下,只要出租車的狀態保持靜止,那么計費開關就會處于關閉狀態。
功能選擇旋轉開關
功能選擇開關旋轉的電壓應提供的該終端的旋轉選擇開關,以確保正常運行的電子電路列于表3。每5個桿就有4個板連接著3個旋轉選擇開關,每個符合邏輯功能表3,旋轉任何三個切換到完全順時針方向將通過5個職位。功能的旋轉選擇開關可以說是從第一的位置通過直到達到最后的立場如下:
初始位置:在這個位置上的低電壓電平適用于第一第二和第三終端,浙江斷開來自三個中一個顯示器的5伏特電壓供應,設置三個顯示器,乘客檢測電路并與電路系統整合到較低的水平。終端D,H采用低電壓,這是為了確保顯示的總收入選項已被禁用。
步驟1:以順時針方向旋轉任何旋轉選擇開關一格將提供5伏特電壓到相應的顯示,提供一個高等級的電壓終端1,2或3,這表明一名乘客已經進入了出租車。終端C,G應為高電平,以確保相應的顯示仍然是籠罩。其他端口,如D,H端口保持不變。
步驟2:旋轉旋轉選擇開關1,然后將在終端A,C或G上改變電壓使其處于低電壓狀態,并會產生相應的顯示。終端1,2,3以及S上的電壓狀態保持不變。終端B,D和H應保持在較低水平,以確保當顯示為無數據時相應的讀出清除為零。