|
數(shù)碼管顯示的GP2D12仿真測距警報器,距離在30cm以內(nèi)時輸出報警聲音
單片機(jī)源程序如下:
- //-----------------------------------------------------------------
- // 名稱: 數(shù)碼管顯示的GP2D12仿真測距警報器
- //-----------------------------------------------------------------
- // 說明: 程序運(yùn)行時,數(shù)碼管顯示當(dāng)前距離,當(dāng)距離小于30CM時輸出報警聲音.
- //
- //-----------------------------------------------------------------
- #include <pic.h>
- #include <math.h>
- #define INT8U unsigned char
- #define INT16U unsigned int
- #define _XTAL_FREQ 1000000
- //595引腳定義
- #define ST_CP RB0 //輸出鎖存器控制脈沖
- #define DS RB1 //串行數(shù)據(jù)輸入
- #define SH_CP RB2 //移位時鐘脈沖
- //蜂鳴器控制引腳定義
- #define BEEP RE2
- //線性化系數(shù)(先實測8個距離的輸出電壓數(shù)據(jù),再通過EXCEL表格公式計算得到)
- #define M_C 6106 //分別標(biāo)定m',b',k'
- #define B_C -9
- #define K_C 3
- //乘冪擬合曲線系數(shù)(通過EXCEL添加乘冪趨勢線得到公式系數(shù))
- #define M_F 15517
- #define M_P -1.1887
- //數(shù)碼管段碼表
- const INT8U SEG_CODE[] =
- { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
- //距離顯示緩沖(小數(shù)位,個位,十位)
- INT8U Disp_Buff[] = {0,0,0};
- //------------------------------------------------------------------
- // 報警程序
- //------------------------------------------------------------------
- void Alarm()
- {
- for(INT8U i = 0; i < 200; i++) { BEEP = ~BEEP; __delay_us(180); }
- }
-
- //-----------------------------------------------------------------
- // 串行輸入子程序
- //-----------------------------------------------------------------
- void Serial_Input_595(INT8U dat)
- {
-
- }
- //-----------------------------------------------------------------
- // 并行輸出子程序
- //-----------------------------------------------------------------
- void Parallel_Output_595()
- {
- }
- //-----------------------------------------------------------------
- // 對通道AN0進(jìn)行模數(shù)轉(zhuǎn)換
- //-----------------------------------------------------------------
- INT16U ADC_Convert()
- {
- }
- //-----------------------------------------------------------------
- // 進(jìn)行連續(xù)采樣,然后根據(jù)采樣平均值及計算公式得到距離
- //-----------------------------------------------------------------
- float Get_Distance()
- {
- }
- //-----------------------------------------------------------------
- // 將3位整數(shù)分解位為3個數(shù)位
- //-----------------------------------------------------------------
- void DEC_TO_3DIGIT(INT16U d, INT8U *a1, INT8U *b1, INT8U *c1)
- {
- }
- //------------------------------------------------------------------
- // 主程序
- //------------------------------------------------------------------
- void main()
- {
- float d;
- TRISE2 = 0; //報警器輸出
- TRISB0 = TRISB1 = TRISB2 = 0; //RB端口設(shè)為輸出,控制74HC595
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
數(shù)碼管顯示的GP2D12仿真測距警報器.zip
(20.74 KB, 下載次數(shù): 73)
2017-6-28 17:08 上傳
點(diǎn)擊文件名下載附件
|
|