一、系統方案 1、本設計采用52單片機作為主控器。 2、霍爾測速送到液晶1602。 3、蜂鳴器報警。
1.jpg (4.71 KB, 下載次數: 34)
下載附件
2023-11-29 19:51 上傳
二、硬件設計 原理圖如下:
2.jpg (39.66 KB, 下載次數: 42)
下載附件
2023-11-29 19:52 上傳
三、單片機軟件設計 - 1、首先是系統初始化
- void lcd_init()//***液晶初始化函數****
- {
-
- write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據
- write_1602com(0x0c);//開顯示不顯示光標
- write_1602com(0x06);//整屏不移動,光標自動右移
- write_1602com(0x01);//清顯示
- }
- 2、液晶顯示程序
- /********液晶寫入指令函數與寫入數據函數,以后可調用**************/
- void write_1602com(uchar com)//****液晶寫入指令函數****
- {
- RS=0;//數據/指令選擇置為指令
- rw=0; //讀寫選擇置為寫
- P0=com;//送入數據
- delay(1);
- EN=1;//拉高使能端,為制造有效的下降沿做準備
- delay(1);
- EN=0;//en由高變低,產生下降沿,液晶執行命令
- }
- void write_1602dat(uchar dat)//***液晶寫入數據函數****
- {
- RS=1;//數據/指令選擇置為數據
- rw=0; //讀寫選擇置為寫
- P0=dat;//送入數據
- delay(1);
- EN=1; //en置高電平,為制造下降沿做準備
- delay(1);
- EN=0; //en由高變低,產生下降沿,液晶執行命令
- }
- 3、按鍵程序
- /*********************************************************/
- // 按鍵掃描
- /*********************************************************/
- void key()
- {
- if(k1==0) //按下按下
- {
- delay(10);//延時消除按鍵抖動
- if(k1==0) //再次判斷按鍵是否按下
- {
- while(!k1); //判斷按鍵是否釋放
- MAX++;
- if(MAX==10000) MAX=9999;
- }
- }
- if(k2==0)//加
- {
- delay(10);
- if(k2==0)
- {
- while(!k2);
- if(MAX>1) MAX--;
-
- }
- }
- }
- 4、核心算法程序
- /*******************T2中斷函數函數********************/
- void T2_time() interrupt 5
- {
-
- TF2 = 0;
- time++; //累計中斷 的次數
- if(time==20) //1秒到
- {
- TR0=0; //關閉計數
- time=0; //1秒時間清零,等待下一秒
- flag=1; //置1告訴主程序
-
- }
- }
復制代碼 四、 proteus仿真設計Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。
|