嵌入式學習--江協51單片機day4

昨天周五沒有學習,因為中午沒有睡覺,下午和晚上擠不出整塊的時間。周日有考試今天也沒有學很多啊,但以后周末會是學一天,另一天休息和寫周總結。

今天學了串口通信和LED點陣屏,硬件原理是真的很迷,一但想搞的明白就學的很慢,還怪焦慮的,但是感覺知道那么回事就行,主要還是記住要如何設置就行吧

串口通信

串口初始化的代碼可以去軟件里面生成,但是注意中間的一些設置,按照視頻的設置實現不了,看彈幕還是挺有用的。

串口為UART,四種模式,我們通常使用模式一(SCON控制)

這圖是串口的工作原理,一般帶t的代表發送為transmit,帶r的代表接受為receive

SBUF是串口數據緩存寄存器

數據顯示在軟件中有兩種顯示模式:HEX/文本。HEX是原始數據就是二進制,十六進制之類的,文本是asc編碼

串口向電腦發送數據

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
unsigned char Sec;
void UART_Init(void)		//4800bps@11.0592MHz
{PCON &= 0x8F;		//波特率不倍速SCON = 0x40;		//8位數據,可變波特率TMOD &= 0x0F;		//清除定時器1模式位TMOD |= 0x20;		//設定定時器1為8位自動重裝方式TL1 = 0xFA;		//設定定時初值TH1 = 0xFA;		//設定定時器重裝值ET1 = 0;		//禁止定時器1中斷TR1 = 1;		//啟動定時器1
}
/*** @brief  串口發送一個字節數據* @param  Byte要發送的字節數據* @retval */
void UART_SendByte(unsigned char Byte)
{SBUF=Byte;while(TI=0);TI=0;
}
void main()
{UART_Init();while(1){UART_SendByte(Sec);Sec++;Delay(1000);}}

電腦通過串口控制LED

因為用到了中斷系統,所以在初始化要額外設置

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
#include <REGX52.H>
/*** @brief  串口初始化* @param  * @retval */
void UART_Init(void)		//4800bps@11.0592MHz
{PCON &= 0x8F;		//波特率不倍速SCON = 0x50;		//8位數據,可變波特率TMOD &= 0x0F;		//清除定時器1模式位TMOD |= 0x20;		//設定定時器1為8位自動重裝方式TL1 = 0xFA;		//設定定時初值TH1 = 0xFA;		//設定定時器重裝值ET1 = 0;		//禁止定時器1中斷TR1 = 1;		//啟動定時器1EA=1;ES=1;
}
/*** @brief  串口發送一個字節數據* @param  Byte要發送的字節數據* @retval */
void UART_SendByte(unsigned char Byte)
{SBUF=Byte;while(TI=0);TI=0;//TI,RI需要軟件置零
}
/*串口中斷函數模板
void UART_Routine()  interrupt 4
{if(RI==1){RI=0;}
}
*/unsigned char Sec;
void main()
{UART_Init();while(1){UART_SendByte(Sec);Sec++;Delay(1000);}}
void UART_Routine()  interrupt 4
{if(RI==1){P2=SBUF;UART_SendByte(SBUF);RI=0;}
}

LED點陣屏

這是LED點陣屏的工作原理,D端需要通過74H595寫入

SER是要寫入的數據? SRLCK 置一下沉一位? RCLK 當寫滿8位輸出D端

(SER=Byte&(0x80>>i)用來將Byte的每一位取出)

LED點陣屏顯示圖形

#include <REGX52.H>
#include "Delay.h"
sbit RCK=P3^5;//RCLK
sbit SCK=P3^6;//SRCLK
sbit SER=P3^4;#define MATRIX_LED_PORT   P0/*** @brief  74HC595寫入一個字節* @param  * @retval */
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){SER=Byte&(0x80>>i);SCK=1;SCK=0;}	RCK=1;RCK=0;
}
/*** @brief  LED點陣屏顯示一列數據* @param  Column 0-7 0在最左邊* @param  Data   00-FF* @retval */
void MatrixLED_ShowColumn(unsigned char Column,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT=~(0x80>>Column);Delay(1);MATRIX_LED_PORT=0xFF;
}void main()
{SCK=0;RCK=0;while(1){MatrixLED_ShowColumn(0,0x00);MatrixLED_ShowColumn(1,0x00);MatrixLED_ShowColumn(2,0x01);MatrixLED_ShowColumn(3,0x02);MatrixLED_ShowColumn(4,0x1C);MatrixLED_ShowColumn(5,0x3E);MatrixLED_ShowColumn(6,0x7B);MatrixLED_ShowColumn(7,0x58);}}

LED點陣屏顯示動畫

這個就是幀流動,用循環實現,點陣圖有軟件可以生成,再就是注意邊界了

#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"
unsigned char code Animation[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00,0x10,0x1F,0x11,0x03,0x14,0x18,0x10,0x00,0x04,0xFC,0x04,0x80,0x64,0x1C,0x04,0x00,0x10,0x1F,0x10,0x00,0x00,0x10,0x1F,0x10,0x00,0xF8,0x04,0x04,0x04,0x04,0xF8,0x00,0x10,0x1F,0x0C,0x03,0x00,0x10,0x1F,0x10,0x04,0xFC,0x04,0x00,0xE0,0x18,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
void main()
{	unsigned char i=0,Offset=0,Count=0;MatrixLED_Init();while(1){for(i=0;i<8;i++){MatrixLED_ShowColumn(i,Animation[i+Offset]);}Count++;if(Count>10){Count=0;Offset++;if(Offset>40){Offset=0;}}}}

累是必然的。

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

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

相關文章

Spring Cloud 以Gateway實現限流(自定義返回內容)

前言 Spring Cloud Gateway自帶RequestRateLimiterGatewayFilterFactory限流方案&#xff0c;可基于Redis和RedisRateLimiter實現默認算法為令牌桶的請求限流。作為自帶的該限流方案&#xff0c;其可與Spring生態的其它各項組件無縫集成&#xff0c;并且自身實現也相對完善/好用…

容器填充函數fill和memset對比總結

文章目錄 1、fill() 按元素填充2、memset() 按字節填充3、對比 1、fill() 按元素填充 用于將容器或數組的指定范圍內的元素賦值為指定值&#xff08;按元素類型填充&#xff09;。屬于 C STL 算法&#xff08;<algorithm> 頭文件&#xff09;。 // 從起始地址到結束地址…

【Linux實踐系列】:進程間通信:萬字詳解共享內存實現通信

&#x1f525; 本文專欄&#xff1a;Linux Linux實踐項目 &#x1f338;作者主頁&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客勵志語錄&#xff1a; 人生就像一場馬拉松&#xff0c;重要的不是起點&#xff0c;而是堅持到終點的勇氣 ★★★ 本文前置知識&#xff1a; …

CogView4 文本生成圖像

CogView4 文本生成圖像 flyfish 基于 CogView4Pipeline 的圖像生成程序&#xff0c;其主要目的是依據 JSON 文件里的文本提示信息來生成圖像&#xff0c;并且把生成的圖像保存到指定文件夾。 JSON 文件格式 [{"prompt": "your first prompt"},{"pr…

路由重發布

路由重發布 實驗目標&#xff1a; 掌握路由重發布的配置方法和技巧&#xff1b; 掌握通過路由重發布方式實現網絡的連通性&#xff1b; 熟悉route-pt路由器的使用方法&#xff1b; 實驗背景&#xff1a;假設學校的某個分區需要配置簡單的rip協議路由信息&#xff0c;而主校…

機器人領域和心理學領域 恐怖谷 是什么

機器人領域和心理學領域 恐怖谷 是什么 恐怖谷是一個在機器人領域和心理學領域備受關注的概念,由日本機器人專家森政弘于1970年提出。 含義 當機器人與人類的相似度達到一定程度時,人類對它們的情感反應會突然從積極變為消極,產生一種毛骨悚然、厭惡恐懼的感覺。這種情感…

Go-GJSON 組件,解鎖 JSON 讀取新姿勢

現在的通義靈碼不但全面支持 Qwen3&#xff0c;還支持配置自己的 MCP 工具&#xff0c;還沒體驗過的小伙伴&#xff0c;馬上配置起來啦~ https://click.aliyun.com/m/1000403618/ 在 Go 語言開發領域&#xff0c;json 數據處理是極為常見的任務。Go 標準庫提供了 encoding/jso…

數據分析_數據預處理

1 數據預處理流程 ①數據清洗:處理數據缺失、數據重復、數據異常等問題,提升數據質量. ②數據轉換:涵蓋基本數據轉換、語義數據轉換、衍生數據轉換和隱私數據轉換,適配分析需求. ③數據集成:整合多源數據. 2 數據清洗 2.1 數據缺失 2.1.1 數值型數據缺失 數值型列的部分數值不…

vue +xlsx+exceljs 導出excel文檔

實現功能&#xff1a;分標題行導出數據過多&#xff0c;一個sheet表里表格條數有限制&#xff0c;需要分sheet顯示。 步驟1:安裝插件包 npm install exceljs npm install xlsx 步驟2&#xff1a;引用包 import XLSX from xlsx; import ExcelJS from exceljs; 步驟3&am…

ThinkPad T440P如何從U盤安裝Ubuntu24.04系統

首先制作一個安裝 U 盤。我使用的工具是 Rufus &#xff0c;它的官網是 rufus.ie &#xff0c;去下載最新版就可以了。直接打開這個工具&#xff0c;選擇自己從ubuntu官網下載Get Ubuntu | Download | Ubuntu的iso鏡像制作U盤安裝包即可。 其次安裝之前&#xff0c;還要對 Thi…

第十七次博客打卡

今天學習的內容是動態規劃算法。 動態規劃算法&#xff08;Dynamic Programming&#xff0c;簡稱 DP&#xff09;是一種通過將復雜問題分解為更小的子問題來求解的算法思想。它主要用于解決具有重疊子問題和最優子結構特性的問題。 一、動態規劃的基本概念 1. 最優子結構 一個復…

視覺革命來襲!ComfyUI-LTXVideo 讓視頻創作更高效

探索LTX-Video 支持的ComfyUI 在數字化視頻創作領域&#xff0c;視頻制作效果的提升對創作者來說無疑是一項重要的突破。LTX-Video支持的ComfyUI便是這樣一款提供自定義節點的工具集&#xff0c;它專為改善視頻質量、提升生成速度而開發。接下來&#xff0c;我們將詳細介紹其功…

Java版ERP管理系統源碼(springboot+VUE+Uniapp)

ERP系統是企業資源計劃&#xff08;Enterprise Resource Planning&#xff09;系統的縮寫&#xff0c;它是一種集成的軟件解決方案&#xff0c;用于協調和管理企業內各種關鍵業務流程和功能&#xff0c;如財務、供應鏈、生產、人力資源等。它的目標是幫助企業實現資源的高效利用…

CenOS7切換使用界面

永久切換 在開始修改之前&#xff0c;我們首先需要查看當前的啟動模式。可以通過以下命令來實現&#xff1a; systemctl get-default執行此命令后&#xff0c;系統會返回當前的默認啟動模式&#xff0c;例如graphical.target表示當前默認啟動為圖形界面模式。 獲取root權限&…

Dify使用總結

最近完成了一個Dify的項目簡單進行總結下搭建服務按照官方文檔操作就行就不寫了。 進入首頁之后由以下組成&#xff1a; 探索、工作室、知識庫、工具 探索&#xff1a; 可以展示自己創建的所有應用&#xff0c;一個應用就是一個APP&#xff0c;可以進行測試使用 工作室包含…

計網學習筆記———網絡

&#x1f33f;網絡是泛化的概念 網絡是泛化的概念 &#x1f342;泛化理解 網絡的概念在生活中無處不在舉例&#xff1a;社交網絡、電話網路、電網、計算機網絡 &#x1f33f;網絡的定義 定義&#xff1a; 離散的個體通過通訊手段連成群體&#xff0c;實現資源的共享與交流、個…

《Python星球日記》 第53天:卷積神經網絡(CNN)入門

名人說&#xff1a;路漫漫其修遠兮&#xff0c;吾將上下而求索。—— 屈原《離騷》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄 一、圖像表示與通道概念1. 數字圖像的本質2. RGB顏色模型3. 圖像預處理 二、卷積…

SpringBoot2集成xxl-job詳解

官方教程 搭建調度中心 Github Gitee 注&#xff1a;版本3.x開始要求Jdk17&#xff1b;版本2.x及以下支持Jdk1.8。如對Jdk版本有訴求&#xff0c;可選擇接入不同版本 clone源代碼執行xxl-job\doc\db\tables_xxl_job.sql # # XXL-JOB v2.4.1 # Copyright (c) 2015-present, x…

HashMap中put()方法的執行流程

HashMap 是 Java 中最常用的數據結構之一&#xff0c;用于存儲鍵值對。其 put() 方法是向哈希表中插入或更新鍵值對的核心操作。本文將詳細解析 put() 方法的執行過程&#xff0c;涵蓋哈希值計算、桶定位、沖突處理和擴容等步驟。 一、put() 方法的執行過程 put() 方法通過一系…

【Oracle認證】MySQL 8.0 OCP 認證考試英文版(MySQL30 周年版)

文章目錄 1、MySQL OCP考試介紹2、考試注冊流程3、考試復習題庫 Oracle 為慶祝 MySQL 30 周年&#xff0c;截止到2025.07.31 之前。所有人均可以免費考取原價245美元 &#xff08;約1500&#xff09;的MySQL OCP 認證。 1、MySQL OCP考試介紹 OCP考試 OCP認證是Oracle公司推…