数码管显示的GP2D12仿真测距警报器,距离在30cm以内时输出报警声音
单片机源程序如下:
- //-----------------------------------------------------------------
- // 名称: 数码管显示的GP2D12仿真测距警报器
- //-----------------------------------------------------------------
- // 说明: 程序运行时,数码管显示当前距离,当距离小于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 //串行数据输入
- #define SH_CP RB2 //移位时钟脉冲
- //蜂鸣器控制引脚定义
- #define BEEP RE2
- //线性化系数(先实测8个距离的输出电压数据,再通过EXCEL表格公式计算得到)
- #define M_C 6106 //分别标定m',b',k'
- #define B_C -9
- #define K_C 3
- //乘幂拟合曲线系数(通过EXCEL添加乘幂趋势线得到公式系数)
- #define M_F 15517
- #define M_P -1.1887
- //数码管段码表
- const INT8U SEG_CODE[] =
- { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
- //距离显示缓冲(小数位,个位,十位)
- 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进行模数转换
- //-----------------------------------------------------------------
- INT16U ADC_Convert()
- {
- }
- //-----------------------------------------------------------------
- // 进行连续采样,然后根据采样平均值及计算公式得到距离
- //-----------------------------------------------------------------
- float Get_Distance()
- {
- }
- //-----------------------------------------------------------------
- // 将3位整数分解位为3个数位
- //-----------------------------------------------------------------
- void DEC_TO_3DIGIT(INT16U d, INT8U *a1, INT8U *b1, INT8U *c1)
- {
- }
- //------------------------------------------------------------------
- // 主程序
- //------------------------------------------------------------------
- void main()
- {
- float d;
- TRISE2 = 0; //报警器输出
- TRISB0 = TRISB1 = TRISB2 = 0; //RB端口设为输出,控制74HC595
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
数码管显示的GP2D12仿真测距警报器.zip
(20.74 KB, 下载次数: 73)
|