当前位置: 首页 > news >正文

蓝桥杯单片机刷题——按键控制距离显示精度

设计要求

驱动超声波传感器,启动距离测量功能,并将其结果显示到数码管上,距离数据单位为m。

按键“S4”定义为“切换”按键,通过此按键切换距离的显示精度(一位或两位小数)。切换顺序如图所示。

数码管显示格式如下图所示(数码管高位显示固定标识符“S”):

       距离数据精度为两位小数

                        距离数据精度为一位小数

备注

单片机IRC振荡器频率设置为12MHz。

按键模式:BTN;扩展方式:IO模式。

上电测量的距离数据显示精度为两位小数字。

代码

sys.h

#ifndef __SYS_H__
#define __SYS_H__

#include <STC15F2K60S2.H>
//sys.c
extern unsigned char UI;
extern float distance;
void init74hc138(unsigned char n);
void init();
//seg_key.c
void Key_Loop();
void Seg_Loop();
void seg_ui();

#endif

main.c

#include "sys.h"
#include "intrins.h"
#define NUM 10
#define FNUM 8
sbit RX=P1^1;
sbit TX=P1^0;
bit flag1=0;
bit flag2=0;
bit flag3=0;
void Timer0_Isr(void) interrupt 1
{
	static unsigned char count1=0,count2=0;
	static unsigned int count3=0;
	count1++;count2++;count3++;
	if(count1==2){
		count1=0;
		flag1=1;
	}
	if(count2==50){
		count2=0;
		flag2=1;
	}
	if(count3==1000){
		count3=0;
		flag3=1;
	}
}
void Timer0_Init(void)		//100微秒@12.000MHz
{
	AUXR &= 0x7F;			//定时器时钟12T模式
	TMOD &= 0xF0;			//设置定时器模式
	TL0 = 0x9C;				//设置定时初始值
	TH0 = 0xFF;				//设置定时初始值
	TF0 = 0;				//清除TF0标志
	TR0 = 1;				//定时器0开始计时
	ET0 = 1;				//使能定时器0中断
	EA = 1;
}
void delay(){
	unsigned char i=NUM;
	while(i--){
		_nop_();
	}
}
void send_wave(){
	unsigned char i=FNUM;
	while(i--){
		TX=1;
		delay();
		TX=0;
	}
}
void re_wave(){
	send_wave();
	TH1=0;
	TL1=0;
	TR1=1;
	while((RX==1)&&(TF1==0));
	TR1=0;
	if(!TF1){
		distance=(float)(TH1<<8|TL1)*0.017;
	}else{
		TF1=0;
		distance=0.0;
	}
}
void main(){
	init();
	Timer0_Init();
	TMOD|=0x10;
	while(1){
		if(flag1){
			flag1=0;
			Seg_Loop();
		}
		if(flag2){
			flag2=0;
			Key_Loop();
			seg_ui();
		}
		if(flag3){
			flag3=0;
			re_wave();
			seg_ui();
		}
	}
}

sys.c

seg_key.c

测评结果

相关文章:

  • Android studio | From Zero To One ——手机弹幕
  • 算法 模版
  • 408 计算机网络 知识点记忆(8)
  • 数据可视化 —— 堆形图应用(大全)
  • 在windows服务器使用Nginx反向代理云端的python实现的web应用
  • 极简cnn-based手写数字识别程序
  • 生成验证码图片
  • shell编程之条件语句
  • 从原始新闻数据中筛选出 正文内容超过 1024 个词(token) 的新闻,并将其保存到新文件中。
  • Linux __命令和权限
  • 两个树莓派如何通过wifi direct传输视频并显示
  • 二分查找4:35. 搜索插入位置
  • AI 笔记 - 开源轻量级人脸检测项目
  • 内联函数通常定义在头文件中的原因详解
  • STL之无序关联式容器针对于自定义类型的操作
  • 使用克魔助手查看iOS 应用程序使用历史记录和耗能历史记录
  • 数字政府网络架构建设方案
  • 创新驱动:智慧养老综合实训室内的前沿技术应用
  • Asp.NET Core WebApi IOptions<T>详解
  • Linux关于git上传大文件的解决方案:使用Git LFS
  • 网站建设需要域名吗?/成都营销型网站制作
  • 网站运营与维护是什么/新闻摘抄大全
  • 做免费网站教程/福建seo排名培训
  • 阿里巴巴上做网站要多少钱/搜狗网站收录
  • 济南腾飞网络网站建设/如何优化网站排名
  • 垂直型b2c网站有哪些/网站接广告