設計功能:
(1): 顯示器顯示當前單價,當前里程,當前費用
(2): 分時計費( 白天,晚上標準不同,等待時間計費 )
(3): 定時器編程產生脈沖用于模擬車輛行走,一個脈沖代表兩米
(4): 使用按鍵控制計費開始和計費結束( 計費結束保持顯示車費等信息 )
小白不知道怎么發送圖片,但本人親測可用!
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (86 KB, 下載次數: 34)
下載附件
2021-11-14 03:20 上傳
2個單片機實現 一個芯片發脈沖 一個芯片統計
單片機源程序如下:
- //--- 頭文件 ---//
- #include "LCD1602.H"
- #include "Single_Key.h"
- #include "INT.H"
- #include "T0.H"
- //--- 引腳聲明 ---//
- sbit Wait = P2^3; //等待時間引腳
- //--- 變量定義 ---//
- uchar Price = 0; //汽車單公里價格
- //--- 聲明 ---//
- void main()
- {
- /************************ 程序初始化 *****************************/
- LcdInit(); //LCD顯示屏初始化
- Inint_T0; //定時器初始化
- INT0_Falling;
- EX0 = 0; //關閉外部計數中斷
- /************************ 主程序循環 *****************************/
- while(1)
- {
- KeyTest_1();KeyTest_2(); //檢測是白天還是夜晚
- KeyTest_3();KeyTest_4(); //是否開始計數
- FirstLine_ClearOFF_Char(Price:,0 );
- LcdIDisplay_Num ( First_Line , Clear_OFF,6,Price); //單價
- if( Price == 5 )
- LcdIDisplay_Char ( First_Line , Clear_OFF, 7, " " ); //防止顯示溢出
- FirstLine_ClearOFF_Char( km:,10 ); //公里
- LcdIDisplay_Num ( First_Line , Clear_OFF,13, KM );
- SecondLine_ClearOFF_Char(NOW Price:,0 );
- LcdIDisplay_Num ( Second_Line , Clear_OFF,10, Price * KM + Wait_Count ); //總價
- if( Single_KEY_Flag_1 == 1 )
- {
- Single_KEY_Flag_1 = 0;
- Price = 5;
- }
- if( Single_KEY_Flag_2 == 1 )
- {
- Single_KEY_Flag_2 = 0;
- Price = 10;
- }
- if( Single_KEY_Flag_3 == 1 )
- {
- Single_KEY_Flag_3 = 0;
- EX0 = 1; //開啟外部計數中斷
- KM_COUNT = 0; KM = 0;
- Price = 5;
- }
- if( Single_KEY_Flag_4 == 1 )
- {
- Single_KEY_Flag_4 = 0;
- EX0 = 0; //關閉外部計數中斷
- Price = 5;
- }
- if( Wait == 0 )
- {
- Enable_T0; //開啟定時器
- }
- else
- {
- DisEnable_T0; //關閉定時器
- Inint_T0; //初始化定時器
- }
- }
- }
復制代碼
仿真代碼51hei附件下載:
出租車計價器仿真.7z
(95.35 KB, 下載次數: 77)
2021-11-14 03:34 上傳
點擊文件名下載附件
全部資料 下載積分: 黑幣 -5
|