通过单片机发送当前超声波测量的距离给串口1显示
(感谢广东某大神的帮助)

#include <stc15f2k60s2.h>
#include <intrins.h>void Timer0Init(void);
void xianshi();
void Send_Wave();
void Delay12us();
void celiang();
void Delay500ms();
void UartInit();
void sendbyte(unsigned char dat);
void sendstring(unsigned char *s);unsigned char display[] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char shuzu[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time, distance;
//unsigned char urdate;sbit TX = P1^0;
sbit RX = P1^1;void main()
{Timer0Init(); EA=1; ET0=1;UartInit(); ES=1;while(1){celiang();xianshi();Delay500ms();Delay500ms();Delay500ms();sendstring("实测距离:");if(distance > 100)sendbyte((distance % 1000 / 100) + 0x30);    //0011 0000if(distance > 10)sendbyte((distance % 100 / 10) + 0x30);sendbyte((distance % 10 / 1) + 0x30);sendstring("cm \r\n");}
}/**************串口*****************/
void sendbyte(unsigned char dat)
{SBUF=dat;while(TI==0);TI=0;
}void sendstring(unsigned char *s)
{while(*s != '\0')       //{sendbyte(*s++);}
}void UartInit(void)        //9600bps @11.0592MHz
{SCON = 0x50;      //8位数据,可变波特率AUXR |= 0x01;      //串口1选择定时器2为波特率发生器AUXR |= 0x04;        //定时器2时钟为Fosc,即1TT2L = 0xE0;       //设定定时初值T2H = 0xFE;        //设定定时初值AUXR |= 0x10;      //启动定时器2
}void zhongduan() interrupt 4
{unsigned char urdate;if(RI==1)       //是否接收完整{RI=0;urdate=SBUF ;sendbyte(urdate);}
}/**************超声波**********/
void send_wave()
{unsigned char i;for(i=0; i<8; i++){TX=1;Delay12us();TX=0;Delay12us();}
}void celiang()
{unsigned int time=0;TMOD &= 0x0f;TL1 = 0x00;        //设置定时初值TH1 = 0x00;        //设置定时初值send_wave();TR1 = 1;       //定时器0开始计时while((RX==1) && (TF1==0));TR1=0;if(TF1==0){time=TH1;time = (time << 8) | TL1;distance = time * 0.017 * 1.085 + 0.5;     //测量距离}else{   TF1=0;      //禁止中断溢出distance=999;}
}void xianshi()
{display[0] = shuzu[distance % 1000 / 100];display[1] = shuzu[distance % 100 / 10];display[2] = shuzu[distance % 10 / 1];display[3]=0xff;display[4]=0xff;display[5]=0xff;display[6]=0xff;display[7]=0xff;
}void Timer0Init(void)  //2毫秒@11.0592MHz
{AUXR |= 0x80;     //定时器时钟1T模式TMOD &= 0xF0;       //设置定时器模式TL0 = 0x9A;       //设置定时初值TH0 = 0xA9;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时
}void shuma() interrupt 1
{unsigned char i;P2=0XE0;P0=0XFF;P2=0X1F;P2=0XC0;P0 = 1 << i;P2=0X1F;P2=0XE0;P0=display[i];P2=0X1F;i++;if(i >= 8)i=0;
}void Delay12us()
{unsigned char i;_nop_();_nop_();i = 33;while(--i);
}void Delay500ms()      //@11.0592MHz
{unsigned char i, j, k;_nop_();_nop_();i = 22;j = 3;k = 227;do{do{while(--k);}while(--j);} while(--i);
}

基于stc15f2k60s2芯片单片机编程(串口+超声波)相关推荐

  1. 基于stc15f2k60s2芯片单片机编程(时钟DS1302)

    **stc15f2k60s2芯片编程(时钟DS1302)** main.c函数 #include <STC15F2K60S2.H> #include <intrins.h> # ...

  2. 基于stc15f2k60s2芯片单片机编程(数码管)

    **蓝桥杯stc15f2k60s2芯片编程(数码管)** ** ** (1)数码管显示01234567 ** ** #include <stc15f2k60s2.h>unsigned ch ...

  3. 基于stc15f2k60s2芯片单片机编程(闹铃)

    用定时器中断写时钟加调节 1)关闭蜂鸣器.继电器等无关外设: 2)设备初始化时钟为 23 时 59 分 50 秒,闹钟提醒时间 0 时 0 分 0 秒. A.时间显示格式 2 3 - 5 9 - 5 ...

  4. 基于stc15f2k60s2芯片单片机编程(秒表)

    用定时器做一个秒表,精确到0.1,S7按下,开始计时,S6按下清零 #include <stc15f2k60s2.h> #include <intrins.h> void Ti ...

  5. 基于stc15f2k60s2芯片单片机编程(EEPROM24C02实验)

    主函数 #include <stc15f2k60s2.h> #include <intrins.h> #include <12.h> void shumaguan( ...

  6. 基于STC15系列单片机的串口中断例程

    #include <STC15F2K60S2.H>#define FOSC 12000000 //晶振频率 #define BAUD 9600 //设置波特率unsigned char r ...

  7. K_A16_001 基于STM32等单片机驱动HX711称重模块 串口与OLED0.96双显示

    K_A16_001 基于STM32等单片机驱动HX711称重模块 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 ...

  8. 基于51单片机的智能超声波四轮遥控小车proteus仿真

    硬件设计 下边讲一下遥控小车,同样是基于51单片机,利用超声波进行测距,利用蓝牙模块实现遥控(仿真里边没有蓝牙,所以采用的是RS485通信模拟) 仿真图: 由LCD1602作为显示器,具有蜂鸣器报警, ...

  9. 基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)

    基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文) 导读:触摸屏能够直观.生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好.触摸屏和单片机通信,需要根据触 ...

最新文章

  1. 自动驾驶与汽车安全电子技术
  2. MySQL 5.7.2 发布,增强性能和可扩展性
  3. Kubernetes安装之证书验证
  4. 2011年给力新作——《数据库系统工程师考试案例梳理、真题透解与强化训练》...
  5. ssh 连接服务器_使用 SSH Key 访问服务器
  6. 集成学习(ensemble learning)(二)
  7. IT人不要一辈子靠技术生存(转)
  8. 优化服务器犯法吗,服务器稳定性对于SEO优化有什么影响
  9. 题目458-小光棍数
  10. websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
  11. rp文件转换成html,Axure产品原型在手机上运行的方法
  12. 13种常用按钮、文本框、表单等CSS样式
  13. 微信公众号维护用服务器吗,微信公众号商城开发必须用服务器吗?
  14. 最新BT面板静态文件镜像库v7.1.1
  15. qq飞车手游服务器维护中,QQ飞车手游3月28日停机维护到几点_QQ飞车手游3.28停机维护时间_玩游戏网...
  16. 关于职业规划的座谈会
  17. MySql主键和唯一索引的区别
  18. AD8232 单导心率监测仪
  19. 《影响中国大数据产业进程100人》 刘冬冬: 数据如何来支持新的商业战争
  20. 当Proteus 8 Professional运行程序的时候出现有些器件不可用

热门文章

  1. python语言程序设计实践教程答案上海交通大学陈东_《C语言程序设计》蔺德军 主著【摘要 书评 在线阅读】-苏宁易购图书...
  2. linux 镜像源配置
  3. 数据结构 计算机网络,考研数据结构和计算机网络怎么复习?
  4. WPF 使用VLC播放rtsp网络视频流
  5. linux虚拟网口不同vlan,Openwrt创建虚拟网口(macvlan)
  6. linux 挂载常见错误,mount常见的错误。
  7. 简单入门编写html登录界面
  8. C#中使用SHA1算法对密码进行加密
  9. 阿里云备案要几天时间?
  10. Micro:bit 趣味学习套件 图形化编程开发板STEM创客教育