freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學]簡易自行車數(shù)字里程表設計(編輯修改稿)

2025-02-14 13:20 本頁面
 

【文章內(nèi)容簡介】 外六個保留,鍵盤的作用就是設置輪胎的寬度,和另外的一些參數(shù)值,也可以通過鍵盤來控制程序的運行(本系統(tǒng)未使用) 。4*4 的鍵盤引出的 8 個引腳接單片機的 P0 口。鍵盤掃描原理是按鍵部分由 16個輕觸按鍵按照 4 行 4 列排列,連接到 P0 端口。 將行線所接的單片機的 I/O 口作為輸出端,而列線所接的 I/O 口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。本系統(tǒng)采用的掃描法,具體如下: 判斷鍵盤中有無鍵按下: 將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與 4 根行線相交叉的 4 個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 判斷閉合鍵所在的位置: 在操作 讀狀態(tài) 寫指令 讀數(shù)據(jù) 寫數(shù)據(jù)  輸入 RS=0,RW=1, E=1 RS=0,RW=0, D0~7=指令碼,E=H脈沖 RS=1,RW=1, E=1 RS=1,RW=0, D0~7=數(shù)據(jù),E=H 脈沖    8確認有鍵按下后,即可進入確定具體閉合鍵的過程。方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 [3] 圖 24 鍵盤掃描電路圖 軟件設計(1)系統(tǒng)介紹本系統(tǒng)主要通過 C 語言進行單片機編程,從而實現(xiàn)信號的讀取與顯示,通過 51 單片機的內(nèi)部中斷來實現(xiàn)實時的顯示速度和里程數(shù)。鍵盤掃描,液晶顯示等部分都是通過軟件來控制。(2)系統(tǒng)流程圖程序設本系統(tǒng)的核心部分,系統(tǒng)的各個方面都是通過程序來控制和協(xié)調(diào)。程序的核心部分就是中斷時間到了之后進中斷的各個數(shù)據(jù)的計算。程序開始的時候先初始化 1602的液晶,然后液晶模塊上會提示用戶輸入自行車的輪胎寬度:width (099cm ) ,當用戶輸入完后,這個數(shù)值將被作為自行車的輪胎半徑參加計算。之后程序就初始化中斷模式,之后就進入一個 while 循環(huán),在循環(huán)中接收信號和顯示數(shù)據(jù),如果中斷時間到了,那么進入中斷,從新計算速度跟里程數(shù)。退出中斷后又繼續(xù)顯示新的速度跟里程數(shù)。流程圖如下: 開始初始化液晶模塊Y鍵盤掃描N開中斷中斷時間是否到Y(jié)N重新設置中斷時間計算速度,里程數(shù)顯示速度跟里程圖 25 系統(tǒng)流程圖333 程序代碼 void recv(){if(q!=p) 9{q=p。count++。}} 上面程序是數(shù)據(jù)的采集,其中 sbit p=P3^0。sbit q。因為 p 是接收脈沖的,時刻都在改變,所以用 q 來保存 p 的值,每次當 口發(fā)生跳變的時候,計數(shù)器加一,此處為什么不用高電平或低電平的時候計數(shù)器加一呢?因為光電對管傳過來的電平在高電平或低電平的時間可能不一樣,如果高電平時間過長,那么 檢測到的將一直是高電平或低電平,這樣計數(shù)器就可能一直加一,這樣就導致采集的數(shù)據(jù)不準確。 鍵盤掃描程序 unsigned char Scan_Key(void){char a1,i。unsigned char ptr=0,m,m_ptr。 bit FLAG0。 FLAG0=0。 while(!FLAG0){ //FLAG0=0。 a1=0xf7。 for(i=0。i4。i++) {P0=a1。delay(10)。m=P0。switch( m amp。 0xf0 ){case 0x70: ptr=i*4。 FLAG0=1。 break。case 0xb0: ptr=i*4+1。 FLAG0=1。 10 break。case 0xd0: ptr=i*4+2。 FLAG0=1。 break。case 0xe0: ptr=i*4+3。 FLAG0=1。 break。default: break。} if(FLAG0==1) { break。 } a1=a11 | 0x80。 } if(ptr10) m_ptr=ptr。 if(ptr10)return 39。a39。}return m_ptr。}這里的 FLAG 是標記鍵盤有沒有按下的,ptr 是記錄按下鍵盤的鍵值所對應的數(shù)值。在程序的最后為什么添加個 m_ptr 呢?這是為了滿足,width 能夠在 0100 內(nèi)取值,因為如果 width10 的話,那么只要按一次鍵即可實現(xiàn),如果 width10 的話,就必須輸兩次。在這里,程序中每次都要求用戶輸入兩個數(shù)據(jù),如果第一次輸入是在 09 內(nèi)的,第二次輸入也在 09 的,那么 width 就是一個兩位數(shù);如果第一次輸入在 09 內(nèi)的,第二次輸入大于 10 的,那么程序就認為 width 是 010 的數(shù),數(shù)值就等于第一次輸入的值,在程序中也就是 if(ptr10)return 39。a39。在下面的程序中就會對鍵盤掃描得到的值進行分析,判斷是不是’a’.這樣就實現(xiàn)了鍵盤輸入的 width 可以控制在 099 了。 [3] void Timer() interrupt 1 { TR0=0。 TH0=0x0fe。//重新設定定時時間 TL0=0x0c。 if(m_usetime==5000)//每五秒算一次速度 { 11speed=(*wheel_width*count)/。//計算速度m_usetime=0。count=0。 distance_n+=5*speed。 if(distance_n=100) { distance=(distance+distance_n/)。 distance_n=0。 } } else m_usetime++。 TR0=1。 }在中斷里的任務主要是實時的計算自行車在行駛中的速度和里程數(shù),在本程序中,采用每五秒計算一次速度,因為自行車的速度比較慢,可能在 1 秒內(nèi)光電對管收不到信號,所以這里顯示的速度就是每 5 秒自行車速度的平均值,精確到 。而里程數(shù)是精確到 ,程序中以 distance_n 來提示里程增值是否到達 100,如果到達一百那么里程數(shù)就加 ;但是由于晶振可能有問題,所以這里的定時器總是不是很準確。源程序詳見附錄 1。 124 系統(tǒng)調(diào)試與結(jié)果分析.電路調(diào)試 硬件調(diào)試本電路的硬件部分比較簡單,在調(diào)試過程中,主要是信號采集電路與 1602 液晶模塊的調(diào)試。信號采集電路采用的光電對管在電路焊接中,兩個對管一定要對得很準否則就可能影響信號的采集,本人在調(diào)試光電對管的時候就發(fā)生這樣的情況,由于兩個對管都是直接焊接在開發(fā)板上的,但是在對齊上面有偏差,就導致了信號不能采集。最后用了光電對管的最小模塊系統(tǒng),成功的采集到信號。而 1602 液晶顯示則必須注意調(diào)節(jié)它的背光,否則不能正常顯示。如果電路連接正常,上電后,看到液晶有正常的亮度,但是不能顯示實驗的數(shù)據(jù)時,首先應該考慮到液晶的背光沒有調(diào)節(jié)好,之后才考慮到硬件或軟件的問題。 軟件調(diào)試本系統(tǒng)的核心部分是軟件,因此在前期的工作中主要的工作就是調(diào)試軟件,在proteus 仿真中正常執(zhí)行。下面講下本人在軟件調(diào)試中遇到的各個問題首先是變量的定義問題,大家都知道,在 C 語言中我們習慣的使用 int 型的數(shù)據(jù),但是在單片機軟件的設計中,如果變量很多,就應該避免使用 int 型的,盡量使用 unsigned char 型的,因為單片機的內(nèi)部存儲器有限,用 unsigned char 可以節(jié)省空間。本人開始由于都使用 int 型,導致最后生成的 hex 文件過大。但是,當我們使用的數(shù)據(jù)的值大過 256時,我們就不能使用 unsigned char 類型,否則就會導致數(shù)據(jù)溢出,這時我們就要使用unsigned int 型或 short 型,本人在調(diào)試的時候,當速度小的時候都能夠正常顯示,當速度很大的時候,1602 顯示的數(shù)據(jù)就不對,經(jīng)過對程序的檢查才知道是數(shù)據(jù)類型的定義問題。之后就是程序的流程必須先畫好,程序各個模塊的代碼先寫好,之后再根據(jù)程序的流程圖整合各個模塊的小程序,同時要注意程序的時序問題。 [13].結(jié)果分析本系統(tǒng)使用的是光電對管來進行數(shù)據(jù)采集,光電對管產(chǎn)生的信號非 0 即 1,也就是方波,因為實驗條件有限,因此,本人使用信號發(fā)生器來模擬自行車行駛過程中,光電對管所采集到的信號。1HZ 就表示自行車每秒鐘轉(zhuǎn)一圈。本系統(tǒng)軟件中計算速度的公式是:speed=*width*count/2。width 是通過鍵盤輸入的,count 就是計數(shù)器,因為程序是根據(jù)跳變來計數(shù)的,所以最后除以 2。下表就是不同的 width,不同的頻率所顯示的速度值,以及理論值。測試結(jié)果見表 51。 13 表51 測試數(shù)據(jù)表Width(cm) 波形發(fā)生器頻率(HZ) 1602 顯示的速度(m/s) 理論速度(m/s)10 1 + 10 2 + 10 11 + 10 20 + 10 50 + 30 1 30 2 + 30 11 + 30
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1