藍橋杯----大模板

? ? ?在寫大模板之前,先講一個函System_Init(),用于系統初始化關閉所有LED與外設,關閉所有LED就是傳入0xff數據打開鎖存器,關閉外設就是傳入0x00打開鎖存器。

? ? 現在所有底層已經提供給大家了,先提供最簡單版本的大模板,考前大家一定要把這個代碼記熟。書寫.h文件后代碼可直接運行!

? ? 好了,藍橋杯更新到這里就告一段落了,接下來是省賽題的代碼,不會每一個都講,只會講一些可能存在的難點。

1、Key底層

#include <STC15F2K60S2.H>unsigned char Key_Read(void)
{unsigned char Key_Num = 0;   //一定記得賦初始值0//	AUXR &= ~0x10;           //關閉定時器二(有串口時加上)//掃描第一列P44 = 0;P42 = 1;P35 = 1;//P34 = 1;        //有頻率采樣時必須注釋if(P33 == 0) Key_Num = 4;if(P32 == 0) Key_Num = 5;if(P31 == 0) Key_Num = 6;if(P30 == 0) Key_Num = 7;//掃描第二列P44 = 1;P42 = 0;P35 = 1;//P34 = 1;if(P33 == 0) Key_Num = 8;if(P32 == 0) Key_Num = 9;if(P31 == 0) Key_Num = 10;if(P30 == 0) Key_Num = 11;//掃描第三列P44 = 1;P42 = 1;P35 = 0;//P34 = 1;if(P33 == 0) Key_Num = 12;if(P32 == 0) Key_Num = 13;if(P31 == 0) Key_Num = 14;if(P30 == 0) Key_Num = 15;//	P44 = 1;
//	P42 = 1;
//	P35 = 1;
//	P34 = 0;
//	
//	if(P33 == 0) Key_Num = 16;
//	if(P32 == 0) Key_Num = 17;
//	if(P31 == 0) Key_Num = 18;
//	if(P30 == 0) Key_Num = 19;//  AUXR |= 0x10;           //打開定時器二(有串口時加上)P3 = 0xff;return Key_Num;
}

2、Seg底層

#include <STC15F2K60S2.H>idata unsigned char duanselect[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};void Seg_Disp(unsigned char wei,duan,point)
{unsigned char temp;//段選消影P0 = 0xff;temp = P2 & 0x1f;temp = temp | 0xe0;P2 = temp;temp = P2 & 0x1f;P2 = temp;//先位選P0 = 0x01<<wei;temp = P2 & 0x1f;temp = temp | 0xc0;P2 = temp;temp = P2 & 0x1f;P2 = temp;//再段選P0 = duanselect[duan];if(point)  //判斷小數點P0 = P0 & 0x7f;temp = P2 & 0x1f;temp = temp | 0xe0;P2 = temp;temp = P2 & 0x1f;P2 = temp;}

3、LED底層

#include <STC15F2K60S2.H>idata unsigned char temp_1 = 0x00;
idata unsigned char temp_old_1 = 0xff;
void LED_Disp(unsigned char *LED_Buf)
{unsigned char temp;temp_1 = 0x00;temp_1 = (LED_Buf[0]<<0) | (LED_Buf[1]<<1) |(LED_Buf[2]<<2) |(LED_Buf[3]<<3) |(LED_Buf[4]<<4) |(LED_Buf[5]<<5) |(LED_Buf[6]<<6) |(LED_Buf[7]<<7);if(temp_1 != temp_old_1){P0 = ~temp_1;    //一定記得取反temp = P2 & 0x1f;temp = temp | 0x80;P2 = temp;temp = P2 & 0x1f;P2 = temp;temp_old_1 = temp_1;}
}

4、.h文件書寫格式


/*
#ifndef __LED_H__
#define __LED_H__void LED_Disp(unsigned char *LED_Buf);
#endif
*//*
#ifndef __KEY_H__
#define __KEY_H__unsigned char Key_Read(void);
#endif
*//*
#ifndef __SEG_H__
#define __SEG_H__void Seg_Disp(unsigned char wei,duan,point);
#endif
*/

5、main函數

#include <STC15F2K60S2.H>
#include "Seg.h"
#include "LED.h"
#include "Key.h"idata unsigned char Seg_Slow_Down;  //數碼管延時變量
idata unsigned char Key_Slow_Down;  //按鍵延時變量
idata unsigned char Seg_Buf[8]={10,10,10,10,10,10,10,10};  //數碼管顯示內容
idata unsigned char Seg_Scan;   //數碼管掃描
idata unsigned char LED_Buf[8]={0,0,0,0,0,0,0,0};    //LED亮滅數據
idata unsigned char Key_Val,Key_Down,Key_Up,Key_Old;  //按鍵參數void System_Init()  //系統初始化
{unsigned char temp;//關閉所有LEDP0 = 0xff;temp = P2 & 0x1f;temp = temp | 0x80;P2 = temp;temp = P2 & 0x1f;P2 = temp;//關閉外設P0 = 0x00;temp = P2 & 0x1f;temp = temp | 0xa0;P2 = temp;temp = P2 & 0x1f;P2 = temp;}//定時器一初始化,自己加上EA = 1;ET1 = 1;
void Timer1_Init(void)		//1毫秒@12.000MHz
{AUXR &= 0xBF;			//定時器時鐘12T模式TMOD &= 0x0F;			//設置定時器模式TL1 = 0x18;				//設置定時初始值TH1 = 0xFC;				//設置定時初始值TF1 = 0;				//清除TF1標志TR1 = 1;				//定時器1開始計時EA = 1;                 //打開總中斷ET1 = 1;                //打開定時器一中斷允許位
}void Key_Proc()   //按鍵處理函數
{if(Key_Slow_Down <20) return;  //按鍵減速Key_Slow_Down = 0;Key_Val = Key_Read();     //讀取鍵碼值Key_Down = Key_Val & (Key_Old ^ Key_Val);  //判斷按下Key_Up =  ~Key_Val & (Key_Old ^ Key_Val);  //判斷松開Key_Old = Key_Val;       //判斷長按switch(Key_Down){}
}void Seg_Proc()   //數碼管處理函數
{if(Seg_Slow_Down <100) return;  //減速Seg_Slow_Down = 0;}void LED_Proc()  //LED處理函數
{}void main()
{System_Init();Timer1_Init();while(1){Key_Proc();Seg_Proc();LED_Proc();}}//定時器一中斷打開---中斷標志位3
void Timer1_Routine() interrupt 3
{Seg_Slow_Down++;Key_Slow_Down++;if(++Seg_Scan == 8) Seg_Scan = 0;if(Seg_Buf[Seg_Scan] > 20)  //判斷帶小數點的數據Seg_Disp(Seg_Scan,Seg_Buf[Seg_Scan]-',',1);elseSeg_Disp(Seg_Scan,Seg_Buf[Seg_Scan],0);LED_Disp(LED_Buf);         //LED掃描
}

?

結語:少年不懼歲月長,彼方尚有榮光在!保持謙卑的態度學習!

?

?

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

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

相關文章

科技寫作改革我見:取消參考文獻,以點讀率取代引證率!

科技寫作改革我見&#xff1a;綜述應取消參考文獻&#xff0c;學術成就評估以點讀下載率取代參考文獻引證率&#xff01;李升偉 張君飛 韓若蘭引言在當今信息爆炸的時代&#xff0c;科技寫作作為知識傳播的核心載體&#xff0c;其形式與評價體系正面臨前所未有的挑戰。傳統…

【Altium designer】快速建立原理圖工程的步驟

快速建立原理圖工程的步驟產品規格書分析 整理產品需求&#xff0c;明確主控芯片、外圍接口類型、總線頻率、電源需求及隔離要求、PCB尺寸等關鍵信息。使用文本清單列出所有需求&#xff0c;確保無遺漏。硬件需求架構圖繪制 根據需求說明書和收集的信息&#xff0c;使用VISIO繪…

Origin2025b安裝包免費,附Origin 2025安裝教程

老規矩先放鏈接&#xff1a;origin2025b安裝包 有位小粉絲問我有沒有Origin2025b的安裝包&#xff0c;有的兄弟有的&#xff0c;只有你想不到&#xff0c;沒有小兔找不到的軟件。 這個origin是OriginLab公司開發的一個科學繪圖、數據分析的軟件&#xff0c;Origin支持各種各樣…

【C++語法】輸出的設置 iomanip 與 std::ios 中的流操縱符

文章目錄【C語法】輸出的設置 iomanip 與 std::ios 中的流操縱符1. iomanip 中的流操縱方法1.1 位寬操作類1.1.1 std::setw(x)1.1.2 std::setfill(c)1.1.3 std::left1.1.4 std::right1.1.5 std::internal1.2 小數操作類1.2.1 std::fixed1.2.2 std::setprecision(x)1.2.3 std::s…

go語言學習筆記-Map

map 是一種無序的基于 key-value 的數據結構&#xff0c;Go 語言中的 map 是引用類型&#xff0c;必須初始化 才能使用。 Go 語言中 map 的定義語法如下map[KeyType]ValueType常見兩種創建方法1 使用map初始化var scoreMap make(map[string]int, 8) scoreMap["陳翔"…

芯片安全標準驅動庫,筑牢芯片功能安全基石

隨著整車控制器功能日益復雜&#xff0c;為滿足越發嚴格的功能安全認證要求&#xff0c;項目開發人員需要采取相應的安全措施對系統中電子元器件的單點故障&#xff08;Singel Point Fault&#xff09;和潛在故障&#xff08;Latent Fault&#xff09;進行檢測和管理&#xff0…

rn相關ScrollView

一&#xff1a;ScrollView的style和contentContainerStyle二&#xff1a;flex:1,和flexGrow:1用處內容將縱向空間占滿

Spark Core 3.3.2 略講~

?博客主頁&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客內容》&#xff1a;大數據、Java、測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識 &#x1f4e2;博客專欄&#xff1a; https://blog.csdn.net/m0_63815035/…

智能家居Agent:物聯網設備的統一控制與管理

智能家居Agent&#xff1a;物聯網設備的統一控制與管理 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0c;每一個特性都是我放飛的…

漢高攜手SAP推出AI驅動的退換貨與爭議管理解決方案

2025年8月12日&#xff0c;SAP宣布與全球知名的膠黏劑、密封劑及消費品制造商漢高&#xff08;Henkel AG & Co. KGaA&#xff09;聯合開發了一套基于SAP AI Services的定制化解決方案&#xff0c;用于優化退換貨及爭議管理流程。該方案旨在通過人工智能自動化索賠相關文件的…

[SC]SystemC中的SC_FORK和SC_JOIN用法詳細介紹

SystemC中的SC_FORK和SC_JOIN用法詳細介紹 摘要:SystemC是一個開源的C++庫(由Accellera和IEEE標準化,IEEE 1666-2011),用于系統級建模、硬件描述和仿真。它擴展了C++以支持硬件概念,如模塊(sc_module)、端口(sc_port)、信號(sc_signal)和進程(SC_METHOD、S…

工作流調度(草稿)

串行回復當我加上第三條分支&#xff0c;此時的輸出就很混亂了&#xff0c;按理來說最后輸出的第二波輸出反而先結束了&#xff0c;調用LLM結果的第一波輸出最后才輸出&#xff0c;這是為什么&#xff1f;當我把LLM節點改為一個不耗時的節點的時候&#xff1a;初步猜測&#xf…

AI不再停留在概念階段,而是在各行業核心業務場景產生實際價值。隨著大模型、邊緣計算等技術的突破,AI應用將向實時化、自主化、普惠化方向深度演進。

一、金融領域&#xff1a;智能風控與欺詐檢測案例&#xff1a;某銀行使用AI實時攔截信用卡欺詐交易&#xff0c;每年減少損失$2400萬python# 使用XGBoost構建欺詐檢測模型&#xff08;Python&#xff09; import pandas as pd from xgboost import XGBClassifier from sklearn.…

GStreamer中解復用器(Demuxer)

在 GStreamer 中,解復用器(Demuxer) 用于分離容器格式(如 MP4、MKV、AVI 等)中的 視頻、音頻、字幕等流。不同的容器格式需要不同的 Demuxer 元素。 一、常見的 GStreamer Demuxer 元素 1. MP4 / QuickTime 格式 qtdemux 用于解析 MP4(.mp4)、MOV(.mov) 等基于 Quic…

MySQL 存儲過程終止執行的方法

在 MySQL 存儲過程&#xff08;PROCEDURE&#xff09;開發中&#xff0c;我們常常遇到這樣的需求&#xff1a; 在執行過程中&#xff0c;如果某些條件不滿足&#xff0c;就要立即終止剩余邏輯&#xff0c;避免無效或錯誤的操作。不同于 Java、Python 等編程語言直接 return 退出…

鯤鵬arm服務器安裝neo4j社區版,實現圖書庫自然語言檢索基礎

我在dify實施中&#xff0c;發現采用自然語言進行數據庫檢索效果還不錯&#xff0c;我就想起來了圖數據庫的自然語言檢索&#xff0c;以前圖書庫的算法我不熟悉&#xff0c;這次打算采用這種方式完成。我才用但是鯤鵬920&#xff0c;泰山服務器&#xff0c;2280主機&#xff0c…

小八的學習日記 -- 為什么kafka吞吐量大

1. 「順序讀寫」—— 像開高速公路一樣爽&#xff01;????傳統硬盤的痛點&#xff1a;?? 普通硬盤&#xff08;HDD&#xff09;像在熱鬧的菜市場找東西&#xff0c;磁頭要來回移動&#xff08;尋道&#xff09;&#xff0c;隨機讀寫特別慢。??Kafka 的妙招&#xff1a;…

5G NTN 衛星測試產品

5G NTN 衛星測試產品非地面網絡測試解決方案衛星射頻節點測試測量相控陣天線應對衛星基礎設施測試挑戰適用于 5G NTN 衛星測試的高性能解決方案衛星基礎設施測試解決方案的優勢5G NTN 衛星測試產品FSW 信號與頻譜分析儀R&SSMW200A 矢量信號發生器非地面網絡測試解決方案 透…

Redis 內存大頁(Transparent Huge Pages, THP)與寫時復制(COW)性能全解:原理、源碼、調優與架構進階

Redis 內存大頁&#xff08;Transparent Huge Pages, THP&#xff09;與寫時復制&#xff08;COW&#xff09;性能全解&#xff1a;原理、源碼、調優與架構進階 Redis 性能瓶頸常見于持久化時 fork 操作的延遲&#xff0c;但系統級“內存大頁”&#xff08;THP&#xff09;配置…

爬蟲與數據分析入門:從中國大學排名爬取到數據可視化全流程

在數據驅動的時代&#xff0c;掌握爬蟲技術獲取數據、運用數據分析工具處理數據并通過可視化呈現結果&#xff0c;已成為一項重要技能。本文以 “中國大學排名爬取與分析” 為例&#xff0c;帶你走進爬蟲與數據分析的世界&#xff0c;了解相關基礎知識與實操流程。 一、爬蟲基…