找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2796|回复: 2
打印 上一主题 下一主题
收起左侧

红外线测距报警程序以及如何将其添加到测距程序中

[复制链接]
跳转到指定楼层
楼主
200黑币
#define INT8U unsigned char
#define INT16U unsigned int
#define INT32U unsigned long
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#include <math.h>
#include <ADC0832.C>
sbit DS    =P3^5;
sbit SH_CP =P3^6;
sbit ST_CP =P3^7;
#define M_C   1388
#define B_C   -5
#define K_C   2
#define M_F   3085.7
#define M_P   -1.1962
code INT8U SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
INT8U Disp_Buff[] ={0,0,0};
extern INT8U GeT_CHx_AD_Value(INT8U ch);
void delay_ms(INT16U x){INT8U t;while(x--) for(t = 0; t<120; t++);}
void Serial_Input_595(INT8U dat)
{
    INT8U i;
    for(i = 0; i < 8; i++)
    {   if (dat & 0x80) DS = 1; else DS = 0;
        dat <<= 1;
        SH_CP = 0; _nop_();_nop_();
        SH_CP = 1; _nop_();_nop_();
    }
    SH_CP = 0;
}
void Parallel_output_595()
{
    ST_CP= 0; _nop_();
    ST_CP= 1; _nop_();
    ST_CP= 0; _nop_();
}
float Get_Distance()
{
    INT8U i; float AD_Sum = 0.0;
    for (i = 0; i < 10; i++) AD_Sum+= Get_CHx_AD_Value(0);
    return M_C / (AD_Sum / 10.0 + B_C) - K_C;
}
void DEC_TO_3DIGIT(INT16U d)
{
    Disp_Buff[0] = 0; Disp_Buff[1] = 0; Disp_Buff[2] = 0;
    while (d >= 100){ d -= 100;++Disp_Buff[2]; }
    while (d >= 10) { d -= 10; ++Disp_Buff[1]; }
    Disp_Buff[0] = d;
}
void main()
{
    float d;
    delay_ms(700);
    while (1)
    {   d = Get_Distance();
      
        DEC_TO_3DIGIT((INT16U)(d*10));
        Serial_Input_595(SEG_CODE[Disp_Buff[0]]);
        Serial_Input_595(SEG_CODE[Disp_Buff[1]] & 0x7F);
        Serial_Input_595(SEG_CODE[Disp_Buff[2]]);
        Parallel_Output_595();
    }
}


20200605182621.png (69.95 KB, 下载次数: 73)

20200605182621.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:767423 发表于 2020-6-6 10:34 | 只看该作者
这个不就是程序吗。直接在KEIL开发环境编译后下载到芯片中运行。float Get_Distance()这个就是测距的函数,测传感器输出电压(10次求平均)然后换算成距离输出。
回复

使用道具 举报

板凳
ID:560467 发表于 2020-6-6 16:02 | 只看该作者
直接加到测距函数里面就好了,限制一下距离就好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表