标题:
数码管显示的GP2D12仿真测距警报器单片机仿真和程序
[打印本页]
作者:
hehehe大
时间:
2017-6-28 17:08
标题:
数码管显示的GP2D12仿真测距警报器单片机仿真和程序
数码管显示的GP2D12仿真测距警报器,距离在30cm以内时输出报警声音
0.png
(20.71 KB, 下载次数: 50)
下载附件
2017-6-28 18:03 上传
0.png
(50.38 KB, 下载次数: 63)
下载附件
2017-6-28 18:03 上传
单片机源程序如下:
//-----------------------------------------------------------------
// 名称: 数码管显示的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)
2017-6-28 17:08 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1