电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

超声波测距+温度+报警的单片机代码_51单片机超声波测距C语言程序

作者:佚名    文章来源:本站原创    点击数:    更新时间:2023/8/6

可以测当前距离,当超过阈值距离时,蜂蜜器报警,并且实时显示温度数据,51单片机超声波测距C语言程序

制作出来的实物图如下:

源代码资料下载 : www.dzkfw.com.cn/Soft/mcu/92.html

 
单片机超声波测距 

单片机超声波测距 

单片机超声波测距实验 
51单片机超声波测距C语言程序部分代码如下:

#include
#include 
#define uchar unsigned char
#define uint unsigned int
int num=0;
unsigned char table[]={"0123456789"};//显示的数值
//   1602的引脚定义
sbit RW=P2^5; 
sbit RS=P2^6;  
sbit E=P2^7;   
//报警引脚定义
sbit feng=P2^4;
sbit led=P1^2;
sbit key1=P1^0;
sbit key2=P1^1;
int numm=0,nnum=0;
void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
bit flag;           //温度变量
uint temp;
sbit ds=P1^3;  //温度引脚
//超声波位定义
sbit Trig = P2^1;
sbit Echo = P2^0;
uint time=0;
unsigned long S=0;
bit flagg=0;
void delay2(uchar p)
        {
          uchar l,k;
           for(l=p;l>0;l--)
              for(k=110;k>0;k--);
        }
void delay(uchar z)
{
    while(z--);
}
//温度初始化函数                        
void ds_reste()          
{
        ds=1;
        delay(5);
        ds=0;
        delay(80);
        ds=1;
        delay(14);
        if(ds==0)                 //判断ds总线被拉低
        flag=1;
        else 
        flag=0;
        delay(20);
}
//读一位字节
bit ds_read_byte()        
{
         bit dat;
         ds=0;                
         _nop_();
         _nop_();
         ds=1;
         _nop_();
         dat=ds;         
         delay(10);
         return dat;
}
//读一位字节
uchar ds_read()        
{
        uchar i,j,k;
      for(i=0;i<8;i++)
        {
        j=ds_read_byte();
        k=(j<<7)|(k>>1);
        }
         return k;
}
//写入数据
void ds_write(uchar dat)
{
         uchar i;
         for(i=0;i<8;i++)
    {
         ds=0;
         _nop_();
         ds=dat&0x01;
         delay(6);
         ds=1;
         dat=dat>>1;
        }
         delay(6);
}
//读取温度
uint read_temp()          
{
        uchar a,b;
        ds_reste();
        ds_write(0xcc);
        ds_write(0xbe);
        a=ds_read();
        b=ds_read(); 
        temp=b;
        temp=temp<<8;
        temp=temp|a;
        temp=temp*0.0625*10+0.5;                 
        return temp;
} 
//写入命令1602
void write_com(uchar com)           
{
        RS=0;
        RW=0;
        E=0;
        P0=com;           
        delay2(5);
        E=1;
        delay2(5);
        E=0;
}
//写入数据 1602
void write_data(uchar date)        
{
        RS=1;
        RW=0;
        E=0;
        P0=date;                
        delay2(5);
        E=1;
        delay2(5);
        E=0;
}
//1602初始化显示
void init()                                 
{
    RS=0;
        write_com(0x38);
         write_com(0x0c);
         write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
//温度在1602上显示出来
void display(uint tempp)           
{  
         write_com(0x80+0x0b);                         
         write_data(table[tempp/100]);         
         delay2(0);
         write_com(0x80+0x0c);
         write_data(table[tempp%100/10]);           
         delay2(0);        
            write_com(0x80+0x0d);
         write_data('.');                           
         delay2(0);
            write_com(0x80+0x0e);
         write_data(table[tempp%100%10]);
         delay2(0);                                                         
         write_com(0x80+0x0f);
         write_data('C');                                    
         delay2(0);
         write_com(0x80+0x09);
         write_data('T');                                    
         delay2(0);
         write_com(0x80+0x0a);
         write_data(':');                                  
         delay2(0);
}

全部代码到页面下载 www.dzkfw.com.cn/Soft/mcu/92.html
Tags:超声波测距,51单片机,单片机,温度  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 相关文章列表
    基于51单片机的SHT11温湿度测量仪设计(源码+仿真+文档)
    基于51单片机的恒温控制器系统 protues+keil c
    51单片机数码管显示程序, 共阴数码管显示程序 数码管原理(显示
    七段数码管显示原理研究_数码管显示0~9对应的段码
    单片机C语言编程入门教程  流水灯程序示例
    51单片机学习笔记直流电机驱动(PWM)C语言程序
    MCU-51单片机直流电机驱动(PWM)51单片机驱动直流电机
    基于51单片机—多功能秒表,多功能计时器C语言程序
    STC89C52单片机数字电流表电压表源码与电路图  51单片机电流电压
    自学stm32单片机四个步骤,实用又高效!
    先学51还是先学STM32?STM32和51单片机的区别
    单片机最小系统介绍及电路设计 STM32单片机最小系统
    什么是PIC单片机
    51单片机和STM32单片机的结构有什么不同
    51单片机、AVR单片机和PIC单片机的IO口操作
    关于51单片机IO引脚的驱动能力与上拉电阻
    为什么51单片机的晶振一般使用11.0592? 51单片机常用波特率初值表
    51单片机寄存器功能一览表
    单片机写延时程序的几种方法
    自学单片机编程之中断与时钟程序
    哈佛结构与冯·诺伊曼结构区别以及X86体系
    单片机万年历:公历日期与农历日期的相互转换程序
    AVR定时器1的CTC模式设置
    单片机超声波视觉识别系统的测量软件开发,超声波测距
    51单片机“呼吸灯”程序
    LCD1602的单片机驱动详解
    单片机时钟电路原理
    51单片机入门之静态数码管电路设计
    基于stc89c52的4*4矩阵键盘输入数码管,一个小计算器
    单片机红外遥控器设计
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询