藍橋杯單片機刷題——按鍵設置當前采集距離為距離參數

設計要求

驅動超聲波傳感器,啟動距離測量功能,并將其結果顯示到數碼管上。

按鍵“S5”定義為參數按鍵,按下S5按鍵,設備自動將當前采集的距離數據作為距離參數;

若測量的距離數據超過距離參數,指示燈L1點亮,否則L1熄滅。

距離數據保留小數點后兩位有效數字,數碼管顯示格式如下:

距離為0.40m(數碼管高位顯示標識符U)

備注

單片機IRC振蕩器頻率設置為12MHz。

按鍵模式:BTN;擴展方式:IO模式。

距離參數初始值為0。

代碼

sys.h

#ifndef __SYS_H__
#define __SYS_H__#include <STC15F2K60S2.H>
//sys.c
extern float distance_keep;
extern float distance;
void init74hc138(unsigned char n);
void init();
void led1();
//seg_key.c
extern unsigned char Seg_Buff[8];
void Key_Loop();
void Seg_Loop();
void ui();#endif

main.c

#include "sys.h"
#include "intrins.h"
#define NUM 10
sbit TX=P1^0;
sbit RX=P1^1;
bit flag1=0,flag2=0,flag3=0;
void delay(){//超聲波延時unsigned char i=0;for(i;i<NUM;i++){_nop_();}
}
void Timer1_Init(void)		//100微秒@12.000MHz
{AUXR |= 0x40;			//定時器時鐘1T模式TMOD &= 0x0F;			//設置定時器模式TL1 = 0x50;				//設置定時初始值TH1 = 0xFB;				//設置定時初始值TF1 = 0;				//清除TF1標志TR1 = 1;				//定時器1開始計時ET1 = 1;				//使能定時器1中斷EA=1;
}
void send_wave(){//發送超聲波脈沖unsigned char i=8;while(i--){TX=1;delay();TX=0;}
}
void re_wave(){//接收超聲波并計算距離send_wave();TH0=0;TL0=0;TR0=1;while((RX==1)&&(TF0==0));TR0=0;if(!TF0){distance=(float)(TH0<<8|TL0)*0.017;//cm}else{TF0=0;distance=0.0;}
}
void main(){init();Timer1_Init();TMOD |= 0x01;while(1){if(flag1){flag1=0;Seg_Loop();}if(flag2){flag2=0;Key_Loop();}if(flag3){flag3=0;re_wave();led1();ui();}}
}
void Timer1_Isr(void) interrupt 3
{static unsigned char count1=0;static unsigned char count2=0;static unsigned int count3=0;count1++;count2++;count3++;if(count1==2){count1=0;flag1=1;}if(count2==50){count2=1;flag2=1;}if(count3==1000){count3=0;flag3=1;}
}

sys.c

#include "sys.h"
float distance=0;
float distance_keep=0;
void init74hc138(unsigned char n){P2=(P2&0x1f)|(n<<5);P2&=0x1f;
}
void init(){P0=0x00;init74hc138(5);P0=0xff;init74hc138(4);
}
void led1(){static bit flag=0;if(distance>distance_keep&&!flag){flag=1;P0=0xfe;init74hc138(4);}else if(distance<=distance_keep&&flag){flag=0;P0=0xff;init74hc138(4);}
}

seg_key.c

#include "sys.h"
code unsigned char Seg_Table[]={0xc0,//00xf9,//10xa4,//20xb0,//30x99,//40x92,//50x82,//60xf8,//70x80,//80x90,//90xc1,//U 100xff //熄滅 11
};
unsigned char Seg_Buff[8]={11,11,11,11,11,11,11,11};
unsigned char keyval,keyold,keyup,keydown;
void Key_Loop(){if(P32==0)keyval=5;keydown=keyval&(keyold^keyval);keyup=~keyval&(keyold^keyval);if(keyval==5&&!keyold!=5){distance_keep=distance;}keyold=keyval;keyval=0;
}
void seg(unsigned char addr,num){P0=0xff;init74hc138(7);P0=0x01<<addr;init74hc138(6);P0=Seg_Table[num];if(addr==5) P0&=0x7f;init74hc138(7);
}
void Seg_Loop(){static unsigned char i=0;seg(i,Seg_Buff[i]);i++;if(i==8)i=0;
}
void ui(){Seg_Buff[0]=10;Seg_Buff[1]=11;Seg_Buff[2]=11;Seg_Buff[3]=11;Seg_Buff[4]=11;if(distance>=100)Seg_Buff[5]=(unsigned char)distance/100;elseSeg_Buff[5]=0;if(distance>=10)Seg_Buff[6]=(unsigned char)distance/10%10;elseSeg_Buff[6]=0;if(distance>0)Seg_Buff[7]=(unsigned char)(distance+0.5)%10;elseSeg_Buff[7]=0;
}

測評結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76548.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76548.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76548.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KV Cache大模型推理加速功能

KV Cache KV Cache是大模型標配的推理加速功能&#xff0c;也是推理過程中&#xff0c;顯存資源巨大開銷的元兇之一。在模型推理時&#xff0c;KV Cache在顯存占用量可達30%以上。 目前大部分針對KV Cache的優化工作&#xff0c;主要集中在工程上。比如著名的VLLM&#xff0c…

Windows 圖形顯示驅動開發-WDDM 2.0功能_上下文監視

功能概述 上下文監視機制是GPU與CPU協同計算的核心同步技術&#xff0c;通過受監視圍欄&#xff08;Monitored Fence&#xff09;實現跨硬件單元的高效協調。其核心目標是解決以下場景的同步需求&#xff1a; GPU引擎間同步&#xff1a;例如在多渲染管線中&#xff0c;后處理…

基于YOLOv8的機場跑道異物檢測識別系統:提升航空安全的新一代解決方案(主頁有源碼)

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??? ????????? ?? 1. 機場跑道異物檢測領域概述 機場跑道異物(Foreign Object Debris, FOD)是指存在于機場跑道、滑行道等關…

網絡協議學習

最近在適配ESP32的網絡驅動&#xff0c;借此機會先學習一下網絡通信協議。 以太網幀、IP包及TCP與UDP的報文格式一文讀懂網絡報問中的檢驗和&#xff08;checksum&#xff09;—— 原理舉例代碼 提問騰訊元寶提示詞&#xff1a; TCP窗口是干什么的擁塞窗口是什么的

fit 轉 gpx

新增 fit 轉 gpx 功能 https://fittools.cc/home/fit2gpx

C++ I/O 性能優化指南

在高性能計算和大規模數據處理中&#xff0c;I/O 性能優化是提升系統整體效率的關鍵環節。C 作為一種高性能編程語言&#xff0c;提供了豐富的工具和機制來優化 I/O 操作。本文將詳細介紹在 Linux 環境下&#xff0c;如何通過代碼層面的優化、系統調用的選擇以及多線程技術等手…

Python中內置的數據結構類型詳析(內置數據容器)

目錄 1. 元組&#xff08;Tuple&#xff09;??2. 列表&#xff08;List&#xff09;?3. 字典&#xff08;Dict&#xff09;4. 集合&#xff08;Set&#xff09;??5. 字符串&#xff08;Str&#xff09;6. 隊列&#xff08;Queue&#xff09;與棧&#xff08;Stack&#xf…

Socket多路復用網絡編程應用總結

Socket多路復用網絡編程應用總結 概述 ? 傳統I/O模型的局限性&#xff1a;傳統阻塞式I/O模型每次僅在一個文件描述符&#xff08;File Descriptor, FD&#xff09;上執行I/O操作&#xff0c;導致程序需等待單個操作完成&#xff0c;無法高效處理多連接場景&#xff08;如高并…

安卓開發提示Android Gradle plugin錯誤

The project is using an incompatible version (AGP 8.9.1) of the Android Gradle plugin. Latest supported version is AGP 8.8.0-alpha05 See Android Studio & AGP compatibility options. 改模塊級 build.gradle&#xff08;如果有獨立配置&#xff09;&#xff1a;…

【C++初階】--- vector容器功能模擬實現

1.什么是vector&#xff1f; 在 C 里&#xff0c;std::vector 是標準模板庫&#xff08;STL&#xff09;提供的一個非常實用的容器類&#xff0c;它可以看作是動態數組 2.成員變量 iterator _start;&#xff1a;指向 vector 中第一個元素的指針。 iterator _finish;&#x…

分布式鎖在秒殺場景中的Python實現與CAP權衡

目錄 一、分布式鎖的前世今生 二、秒殺系統的 “硬核” 挑戰 三、Python 實現分布式鎖的 “實戰演練” Redis 實現:快準狠 ZooKeeper 實現:穩如老狗 數據庫實現:老實本分 四、CAP 理論的 “三角戀” 五、性能優化的 “錦囊妙計” 鎖粒度控制:粗細有道 超時機制:別…

企業級開發SpringBoost玩轉Elasticsearch

案例 Spring Boot 提供了 spring-data-elasticsearch 模塊&#xff0c;可以方便地集成 Elasticsearch。 下面我們將詳細講解如何在 Spring Boot 中使用 Elasticsearch 8&#xff0c;并提供示例代碼。 1. 添加依賴: 首先&#xff0c;需要在 pom.xml 文件中添加 spring-data-e…

磐石云智能語音客服系統——技術革新引領服務新體驗

在人工智能技術飛速發展的今天&#xff0c;企業對于智能化客戶服務的需求日益增長。磐石云智能語音客服系統憑借其前沿技術架構與深度場景適配能力&#xff0c;正在重新定義人機交互的邊界。本文將深入解析該系統如何通過技術創新實現服務效率與體驗的雙重突破。 一、意圖識別…

OpenGL學習筆記(assimp封裝、深度測試、模板測試)

目錄 模型加載Assimp網格模型及導入 深度測試深度值精度深度緩沖的可視化深度沖突 模板測試物體輪廓 GitHub主頁&#xff1a;https://github.com/sdpyy1 OpenGL學習倉庫:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdpyy1/CppL…

通過AWS EKS 生成并部署容器化應用

今天給大家分享一個實戰例子&#xff0c;如何在EKS上創建容器化應用并通過ALB來發布。先介紹一下幾個基本概念&#xff1a; IAM, OpenID Connect (OIDC) 2014 年&#xff0c;AWS Identity and Access Management 增加了使用 OpenID Connect (OIDC) 的聯合身份支持。此功能允許…

入侵檢測snort功能概述

1. 數據包嗅探與日志記錄 網絡流量監控&#xff1a;實時捕獲和分析網絡數據包&#xff08;支持以太網、無線等&#xff09;。 日志記錄&#xff1a;將數據包以二進制格式&#xff08;pcap&#xff09;或文本格式存儲&#xff0c;供后續分析。 2. 協議分析與解碼 深度協議解析…

【Easylive】定時任務-每日數據統計和臨時文件清理

【Easylive】項目常見問題解答&#xff08;自用&持續更新中…&#xff09; 匯總版 這個定時任務系統主要包含兩個核心功能&#xff1a;每日數據統計和臨時文件清理。下面我將詳細解析這兩個定時任務的實現邏輯和技術要點&#xff1a; Component Slf4j public class SysTas…

藍橋杯 15g

班級活動 問題描述 小明的老師準備組織一次班級活動。班上一共有 nn 名 (nn 為偶數) 同學&#xff0c;老師想把所有的同學進行分組&#xff0c;每兩名同學一組。為了公平&#xff0c;老師給每名同學隨機分配了一個 nn 以內的正整數作為 idid&#xff0c;第 ii 名同學的 idid 為…

如何使用AI輔助開發R語言

R語言是一種用于統計計算和圖形生成的編程語言和軟件環境&#xff0c;很多學術研究和數據分析的科學家和統計學家更青睞于它。但對與沒有編程基礎的初學者而言&#xff0c;R語言也是有一定使用難度的。不過現在有了通義靈碼輔助編寫R語言代碼&#xff0c;我們完全可以用自然語言…

CISCO組建RIP V2路由網絡

1.實驗準備&#xff1a; 2.具體配置&#xff1a; 2.1根據分配好的IP地址配置靜態IP&#xff1a; 2.1.1PC配置&#xff1a; PC0&#xff1a; PC1&#xff1a; PC2&#xff1a; 2.1.2路由器配置&#xff1a; R0&#xff1a; Router>en Router#conf t Enter configuration…