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

正文內(nèi)容

基于單片機(jī)的出租車計價器的設(shè)計(參考版)

2024-09-02 12:00本頁面
  

【正文】 LcdPos(time_pos[pos]+1,pos 3 ?1:0)。 EX0 = 0。amp。 if(!(P1 amp。i 100。amp。 } } 33 else if(!(P1 amp。amp。 if(!(P2 amp。i 100。amp。 } } else if(!(P2 amp。 DS1302_Reset()。 config_ok == 0) { config_ok = 1。 0x80) amp。i++)。 config_ok == 0) //ENTER { for(i = 0。 0x80) amp。 if(pos == 1) pos = 0。 config_ok == 0) { pos。 0x10) amp。i++)。 config_ok == 0) //PREVIOUS 32 { for(i = 0。 0x10) amp。 if(pos == 1) pos = 2。 config_ok == 0) { pos++。 0x08) amp。i++)。 config_ok == 0) //NEXT { for(i = 0。 0x08) amp。 time[pos] = IntToBcd(result)。 result == 1) result = 59。 else if((pos == 5 || pos == 6) amp。amp。//判斷潤平年 if(result == 0) result = month_day[time[2] 1]。amp。 result == 0) result = 12。 else if(pos == 2 amp。amp。 config_ok == 0) { result = BcdToInt(time[pos]) 1。 0x40) amp。i++)。 config_ok == 0) // { for(i = 0。 0x40) amp。 } else。//判斷潤平年 if(result == month_day[time[2] 1] + 1) result = 1。amp。 result == 13) result = 1。 else if(pos == 2 amp。amp。amp。amp。amp。 config_ok == 0) { result = BcdToInt(time[pos]) + 1。 0x20) amp。i++)。 config_ok == 0) //++ { for(i = 0。 0x20) amp。 static uchar pos。 char result。 } } } } static void INT0_ser(void) interrupt 0 { pulse_count ++。i 7。 } } } else { if(time[6] != time_tmp[6]) { Run_Show_Time(time_tmp)。 mileage_count_old = mileage_count_new。amp。 } mileage_count_old = mileage_count_new。 } money[0] += 1。 if(money[1] 99) { money[0] += 1。i mileage_count_new。 first_3_km 2) { Show_Mileage()。 if(mileage_count_new != mileage_count_old amp。 //全速狀態(tài)下,把等待時間清0 } pulse_count_tmp = pulse_count。 P1 |= 0x01。 P1 amp。 Show_Wait_Time(time_count)。 else 。amp。 Money_Show(money)。 money[1] %= 100。 first_3_km 2)//由等待時間換算公里數(shù) ,10s 折合為 1km(1m) { money[1] += 40。 //等待計時加 1 if(time_count % 100 == 0 amp。 P1 |= 0x02。 P1 amp。i++) time[i] = time_tmp[i]。 for(i = 0。 } else if(pause == 0) { INT0_init()。 Show_Mileage()。 Money_Show(money)。 WriteString( ,0,1)。 money[1] = 0。 } first_3_km = 0。i 7。 if(time[6] != time_tmp[6]) { Run_Show_Time(time_tmp)。 P1 |= 0x02。 0x04)) { P1 amp。 DS1302_GetData(time_tmp)。 Show_Mileage()。 Money_Show(money)。 pulse_count_tmp = pulse_count。 System_init()。 EA = 1。 IT1 = 1。 EA = 1。 IT0 = 1。temp++)。 for(temp=0。 P1= 0xff。 ClrLcd()。 WriteString(set time over...,0,0)。 //等待配置時間結(jié)束標(biāo)志 ClrLcd()。 INT1_init()。 LcdPos(5,0)。 config_ok = 0。 ClrLcd()。 WriteInt(BcdToInt(time_data[6]),1,2,10,1)。 WriteInt(BcdToInt(time_data[4]),1,2, 4,1)。 WriteInt(BcdToInt(time_data[2]),1,2, 7,0)。,9,1)。 WriteChar(39。:39。,9,0)。 WriteChar(39。/39。 WriteInt(BcdToInt(time_data[6]),1,2,14,0)。 WriteInt(BcdToInt(time_data[4]),1,2, 8,0)。 } void Run_Show_Time(uchar time_data[7]) { WriteInt(BcdToInt(time_data[2]),1,2, 1,0)。 } void Money_Show(uint money[2]) { WriteDecimal(money[0],0,3,1)。, 10,1)。 WriteChar(39。s39。 WriteString(km,14,1)。.39。 WriteInt(pulse_count % 200 / 10,0,0,13,1)。,6,1)。 WriteChar(39。.39。,13,0)。 WriteChar(39。:39。, 3,0)。 //運(yùn)行起來后,將在 LCD 上一直出現(xiàn)的 void Run_BackGround(void) { WriteChar(39。 void Show_Mileage(void)。 void Money_Show(uint money[2])。 void Time_Show(uchar time_data[7])。 void Delay(uint)。 22 void INT0_init(void)。 //保存時間的數(shù)組 uint money[2]={6,0}。 //保存等待計時的變量,單位為秒, 元 uint mileage_count_new = 0,mileage_count_old = 0。 //脈沖計數(shù)器 uint pulse_count_tmp = 0。 //當(dāng)前儀表的運(yùn)行狀態(tài), 0全速(計里程), 1低速(計時間) bit pause = 0。 //計價器價格各位在液晶上的顯示位置 bit config_ok = 0。 //保存單價的數(shù)組, [0]里程單價整數(shù)位, [1]里程單價小數(shù)位 uchar code time_pos[7] = {4,1,7,10,4,7,10}。 這次的畢業(yè)設(shè)計讓我明白了:在以后的學(xué)習(xí)和工作中一定要把理論和實際結(jié)合起來,不能只會理論而不會實際,那是不現(xiàn)實的,只有實際的做了,你才會知道自己究竟掌握了多少東西,永遠(yuǎn)不要做一個眼高手低的人。 19 6 總結(jié) 通過這次的論文設(shè)計,使我將理論與實際真正結(jié)合了起來,這次的設(shè)計不但讓我對單片 機(jī)有了更深刻的認(rèn)識,而且還學(xué)到了其他一些芯片的很多知識,對 Proteus ISIS 仿真軟件也能較好的運(yùn)用。計時用 DS1302 作為時間基準(zhǔn)來計時, N 鍵和 P 鍵為調(diào)節(jié)時間的導(dǎo)航鍵, +鍵和 鍵可以調(diào)節(jié)時間和日期, E/C 鍵切換顯示模式。 仿真結(jié)果 分析 以 上是出租車計價器具體計價的四種情況,其他情況與此相類似。 出租車暫停計費(fèi)時 圖 53 出租車 暫停計費(fèi)時 出租車正在行駛的過程中,按下 PAUSE 鍵,將會停止計費(fèi)。 15 主程序流程圖如下圖所示: 圖 43 主程序流程圖 主程序見附錄 單片機(jī)液晶初始化操作 液晶顯示年月日時分秒 進(jìn)行時間日期的調(diào)整 Time set over鍵是否按下 日期、時間調(diào)整按鍵是否按下 時間設(shè)定 OK,進(jìn)入計費(fèi)模式 出租車是否高速行駛 進(jìn)入按里程收費(fèi)模式 是否按下暫停鍵 進(jìn)入計時收費(fèi)模式 暫停計費(fèi) N N Y Y Y Y N N 16 5 Proteus ISIS 仿真結(jié)果 出租車停止行駛時 圖 51 出租車停止時 當(dāng)頻率選擇在 10Hz 以下的情況時,出租車停止行駛,按一下 按鍵 E/C,切換至計費(fèi)模式, LOW 燈點(diǎn)亮,采用計 時 收費(fèi), 100s 按照 1km 收費(fèi), 1km 收費(fèi) 元,起步價為 6 元(含 3km)。 計價管理程序主要包括 PWM 管 理程序、里程計量程序、時間管理程序、費(fèi)用管理程序、用戶界面控制程序等部分。 4. 液晶驅(qū)動程序 主程序的實現(xiàn)是用 LCD 驅(qū) 動,系統(tǒng)初始化時涉及的硬件、鍵盤的控制,根據(jù)按鍵來啟動或者停止里程的測量,然后調(diào)用用戶界面程序定時更新日期和時間的顯示,及時的更新價格、里程、費(fèi)用等一些信息顯示,文本、圖形 顯示等功能。初次之外還要對各接口芯片初始化,對中斷向量的設(shè)計,開中斷和循環(huán)等待的工作。 Pause 鍵是暫停計費(fèi)的按鍵,當(dāng)出租車正在行駛的過程中,也就是說計價器正在計價的時候,按下該按鍵,計費(fèi)就會停止。 當(dāng)選擇 50Hz, 150Hz, 211Hz 時,表示出租車分別行駛在中速,高速,超高速的行駛狀態(tài)下,這是計價器的收費(fèi)為計價收 費(fèi),起步價為 6 元(含 3km),行駛 1km收費(fèi) 元。 計價器總體設(shè)計圖 圖 41 計價器設(shè)計原理框圖 單 片 機(jī) 顯示電路 設(shè)置電路 時鐘電路 復(fù)位設(shè)置 獨(dú)立按鍵 輸入脈沖 13 圖 42 計價器設(shè)計原理圖 原理圖功能分析: 本設(shè)計一共采用了四個頻率開關(guān),每個開關(guān)對應(yīng)的頻率分別為 5Hz,50Hz,150Hz,211Hz,這些頻率是采用 系統(tǒng)中 的頻率來 模擬的 霍爾 傳感器脈沖。與此相比,單片機(jī)的功能就強(qiáng)大很多,只需用較少的硬件和少量的軟件就可以實現(xiàn)較復(fù)雜的設(shè)計要求,還可以添加更多的其他功能,靈活性很強(qiáng),計費(fèi)模式切換通過軟件就可輕易實現(xiàn),避免了因機(jī)械開關(guān)的老化而造成的潛在危險。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1