串口模塊詳細講解

目錄

1.串口介紹

2。STC-ISP串口功能介紹

3.接口及引腳定義

4.串口知識點

4.1 硬件電路

4.2 電平標準

4.3 相關術語

4.4 常見通信接口比較

4.5 51單片機的UART

4.6?串口參數及時序圖

4.7 串口模式圖

4.8?串口和中斷系統

4.9?串口相關寄存器

5.串口向電腦發送信息代碼

第一步:

第二步:

第三步:

第四步:

第五步:

第六步:

第七步:

最終代碼:

代碼模塊:

UART.c

UART.h

main.c

6.電腦通過串口控制LED代碼

第一步:

第二步:

第三步:

第四步:

第五步:

第六步:

最終代碼:

代碼模塊:

UART.c

UART.h

main.c

補充:波特率計算


1.串口介紹

串口是一種應用十分廣泛的通訊接口,串口成本低、容易使用、通信線路簡單,可實現兩個設備的互相通信。

單片機的串口可以使單片機與單片機、單片機與電腦、單片機與各式各樣的模塊互相通信,極大的擴展了單片機的應用范圍,增強了單片機系統的硬件實力。

51單片機內部自帶UART(Universal Asynchronous Receiver Transmitter,通用異步收發器),可實現單片機的串口通信。

2。STC-ISP串口功能介紹

向單片機發送數據(下面框),返回(上框)

3.接口及引腳定義

DB9串口傳輸數據(注意使用的電壓是否一致)使用RS232或RS485電平

4.串口知識點

4.1 硬件電路

簡單雙向串口通信有兩根通信線(發送端TXD和接收端RXD) TXD與RXD要交叉連接

當只需單向的數據傳輸時,可以直接一根通信線

當電平標準不一致時,需要加電平轉換芯片

4.2 電平標準

電平標準是數據1和數據0的表達方式,是傳輸線纜中人為規定的電壓與數據的對應關系,串口常用的電平標準有如下三種:

TTL電平:+5V表示1,0V表示0

RS232電平:-3~-15V表示1,+3~+15V表示0

RS485電平:兩線壓差+2~+6V表示1,-2~-6V表示0(差分信號)

4.3 相關術語

全雙工:通信雙方可以在同一時刻互相傳輸數據

半雙工:通信雙方可以互相傳輸數據,但必須分時復用一根數據線

單工:通信只能有一方發送到另一方,不能反向傳輸

異步:通信雙方各自約定通信速率

同步:通信雙方靠一根時鐘線來約定通信速率

總線:連接各個設備的數據傳輸線路(類似于一條馬路,把路邊各住戶連接起來,使住戶可以相互交流)

4.4 常見通信接口比較

4.5 51單片機的UART

STC89C52有1個UART STC89C52的UART有四種工作模式: ?? ?

模式0:同步移位寄存器 ?? ?

模式1:8位UART,波特率可變(常用) ??

?模式2:9位UART,波特率固定 ?? ?

模式3:9位UART,波特率可變

4.6?串口參數及時序圖

波特率:串口通信的速率(發送和接收各數據位的間隔時間)

檢驗位:用于數據驗證

停止位:用于數據幀間隔

4.7 串口模式圖

SBUF:串口數據緩存寄存器,物理上是兩個獨立的寄存器,但占用相同的地址。寫操作時,寫入的是發送寄存器,讀操作時,讀出的是接收寄存器

4.8?串口和中斷系統

4.9?串口相關寄存器

5.串口向電腦發送信息代碼

第一步:

將延遲函數復制過來并導入工程里面

第二步:

配置串口控制寄存器,配置模式1最常用,REN允許接收給1,不允許接收給0(也可以給1外面不給發就行)

第三步:

發送完置1(硬件只負責),但必須軟件復位置0

第四步:

將寄存器配置:

SCON=0x40(串行寄存器配置上面圖紅色字體部分);PCON=0(波特率)

下圖為定時器配置:

這里定時器1,沒有定時器0,所有要把高位修改(不影響高低位配置用“”& |“”這兩個方式)

第五步:

自動重裝:

第六步:

STC-ISP的串口功能,數據調節到我們這款單片機的適應的數據

第七步:

生成代碼復制過來修改一下配置

發送數據端

調用單項發送完成

模塊化串口設置(完整代碼)

串口初始化和單片機向電腦發送一個字節遞增數據數據

調用

最終代碼:

代碼模塊:

Delay.c和Delay.h可以在小編往期的博客里面找到

UART.c

#include <REGX52.H>/***@brief	串口初識化,4800bps@12.000MHz*@param	無*@retval	無*/
void UART_Init()
{SCON = 0x40;PCON |= 0x80;	TMOD &= 0x0F;			//設置定時器模式TMOD |= 0x20;			//設置定時器模式TL1 = 0xF3;			//設置定時初始值TH1 = 0xF3;			//設置定時重載值ET1 = 0;			//禁止定時器中斷TR1 = 1;			//定時器1開始計時
}/***@brief	串口發送一個字節數據*@param	Byte 要發送的一個字節數據*@retval	無*/
void UART_SendByte(unsigned char Byte)
{SBUF = Byte;while(TI == 0);TI = 0;
}

UART.h

#ifndef __UART_H__
#define __UART_H__void UART_Init();
void UART_SendByte(unsigned char Byte);#endif

main.c

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"unsigned char Sec;void main()
{UART_Init();while(1){UART_SendByte(Sec);Sec++;Delay(1000);}
}

6.電腦通過串口控制LED代碼

第一步:

復制一份一修改(收:要中斷系統,配置寄存器REN置1接收使能)

所有寄存器設置如下配置:

第二步:

配置中斷

中斷配置代碼如下:

第三步:

中斷寄存器修改后總如下,其他不用修改

第四步:

中斷號4:

第五步:

中斷驗證:

接收中斷標志RI

第六步:

函數不能在主函數又在中斷函數里面,調用,向單片機發送數據代碼:第二功能實現:

最終代碼:

代碼模塊:

UART.c

#include <REGX52.H>/***@brief	串口初識化,4800bps@12.000MHz*@param	無*@retval	無*/
void UART_Init()
{SCON = 0x50;PCON |= 0x80;	TMOD &= 0x0F;			//設置定時器模式TMOD |= 0x20;			//設置定時器模式TL1 = 0xF3;			//設置定時初始值TH1 = 0xF3;			//設置定時重載值ET1 = 0;			//禁止定時器中斷TR1 = 1;			//定時器1開始計時EA = 1;ES = 1;
}/***@brief	串口發送一個字節數據*@param	Byte 要發送的一個字節數據*@retval	無*/
void UART_SendByte(unsigned char Byte)
{SBUF = Byte;while(TI == 0);TI = 0;
}/*串口中斷函數模板,要用的時候移到主函數里面
void UART_Routine() interrupt 4
{if(RI == 1){RI = 0;}
}
*/

UART.h

#ifndef __UART_H__
#define __UART_H__void UART_Init();
void UART_SendByte(unsigned char Byte);#endif

main.c

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"void main()
{UART_Init();while(1){}
}void UART_Routine() interrupt 4 //中斷子函數
{if(RI == 1){P2 = ~SBUF;UART_SendByte(SBUF);RI = 0;}
}

補充:波特率計算

我們串口初識化位0xF3(十六進制數字)=243(十進制數字),寄存器每個256會溢出一次,也就是每隔13us會溢出一次,寄存器的溢出率位1/13約等于0.07692MHZ。根據串口模式圖計算 波特率:0.07692/16約等于0.00480769MHZ=4807.69HZ

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

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

相關文章

基于大模型的腰椎管狹窄術前、術中、術后全流程預測與治療方案研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、腰椎管狹窄概述 2.1 定義與分類 2.2 發病原因與機制 2.3 臨床表現與診斷方法 三、大模型技術原理與應用現狀 3.1 大模型的基本原理 3.2 在醫療領域的應用案例 3.3 選擇大模型預測腰椎管狹窄的依據 四、…

【2025年前端高頻場景題系列】使用同一個鏈接,如何實現PC打開是web應用、手機打是-個H5 應用?

面試情境與問題引入 哈嘍大家伙,我是布魯伊。在前端開發面試中,面試官經常會拋出一些看似簡單卻能考察多方面能力的問題。"如何實現同一個鏈接在PC端和移動端展示不同應用?"就是這樣一個典型問題。為什么面試官喜歡問這個問題?因為它能同時考察候選人的設備適配…

醫療實時操作系統方案:手術機器人的微秒級運動控制

一、引言 手術機器人作為現代醫療技術的重要突破&#xff0c;正不斷推動著外科手術向精準化、微創化和智能化的方向發展。直覺外科&#xff08;Intuitive Surgical&#xff09;作為手術機器人領域的領軍企業&#xff0c;其達芬奇手術機器人系統已被廣泛應用于全球眾多醫療機構…

數據結構基礎--藍橋杯備考

1.優缺點總述 STL中各容器對比圖 各類線性數據結構優缺點 1.數組 1.優點 1.簡單&#xff0c;容易理解 2.訪問快捷&#xff0c;只需要用下標就可以 3.有某些應用場景直接對應&#xff0c;例如二維數組對應平面 2.缺點 刪除和插入數據非常耗時 2.鏈表 1.優點 插入和刪…

運用數組和矩陣對數據進行存取和運算——NumPy模塊 之六

目錄 NumPy模塊介紹 3.6.1 數組之間的運算 3.6.2 算術運算 3.6.3 比較運算 3.6.4 邏輯運算 3.6.5 矩陣運算 3.6.6 廣播運算 3.6.7 聚合運算 3.6.8 三角函數與指數對數運算 3.6.9 位運算 3.6.10 條件運算 3.6.11 數組的統計運算 3.6.12 關鍵問題:數組之間的運算對數組的維度有要…

JGL066生活垃圾滾筒篩分選機實驗裝置

JGL066生活垃圾滾筒篩分選機實驗裝置 一.實驗目的 本實驗對生活垃圾滾筒分選機進行垃圾分選的實驗。通過實驗達到以下目的&#xff1a; 1.了解分選的原理、方法和影響分選效果的主要因素。 2.確定分選的適宜條件。 二.技術指標 1.生活垃圾分選機處理量分為0.5~2t/h。 2.運動參數…

Excelize 開源基礎庫發布 2.9.1 版本更新

Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎庫&#xff0c;基于 ECMA-376&#xff0c;ISO/IEC 29500 國際標準。可以使用它來讀取、寫入由 Excel、WPS、OpenOffice 等辦公軟件創建的電子表格文檔。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文檔格式&#xf…

xss-labs靶場基礎8-10關(記錄學習)

前言&#xff1a; 內容&#xff1a; 第八關 關卡資源網站&#xff0c;html編碼網站&#xff08;兩個網站&#xff0c;一個是實體編號轉義&#xff08;只對特殊字符有效&#xff0c;字母無效&#xff09;、實體符號轉義&#xff09; 在線Html實體編碼解碼-HTML Entity Encodi…

Kafka topic 中的 partition 數據傾斜問題

在 Kafka 中&#xff0c;如果一個 Topic 有多個 Partition&#xff0c;但這些 Partition 中的消息數量或流量分布不均衡&#xff0c;就會出現 數據傾斜&#xff08;Data Skew&#xff09; 的問題。 ? 什么是數據傾斜&#xff1f; 數據傾斜指的是&#xff1a; 某些 Partitio…

Retrofit vs Feign: 介紹、對比及示例

1. 介紹 Retrofit Retrofit 是 Square 公司開發的一個類型安全的 HTTP 客戶端庫&#xff0c;主要用于 Android 和 Java 應用。它將 HTTP API 轉換為 Java 接口&#xff0c;通過注解來描述 HTTP 請求。 主要特點: 基于注解的 API 定義支持同步和異步調用支持多種數據格式轉換…

SpringBoot整合MyBatis-Plus:零XML實現高效CRUD

前言 作為一名開發者&#xff0c;數據庫操作是我們日常工作中不可或缺的部分。傳統的MyBatis雖然強大&#xff0c;但需要編寫大量XML映射文件&#xff0c;這在快速開發的今天顯得效率不足。MyBatis-Plus&#xff08;簡稱MP&#xff09;作為MyBatis的增強工具&#xff0c;在保留…

SpringCloud之Gateway基礎認識-服務網關

0、Gateway基本知識 Gateway 是在 Spring 生態系統之上構建的 API 網關服務&#xff0c;基于 Spring &#xff0c;Spring Boot 和 Project Reactor 等技術。 Gateway 旨在提供一種簡單而有效的方式來對 API 進行路由&#xff0c;以及提供一些強大的過濾器功能&#xff0c;例如…

Redis掃盲

Redis 緩存中間件 基礎篇 鍵值數據庫 key Value 是NoSql數據庫 非結構化、無關聯的、非SQL、BASE&#xff08;無法滿足ACID&#xff09; 命令執行是單線程&#xff0c;符合原子性。 低延遲、速度塊&#xff08;基于內存&#xff0c;IO多路復用&#xff0c;良好的編碼&am…

【FMMT】基于模糊多模態變壓器模型的個性化情感分析

遇到很難的文獻看不懂,不應該感到氣餒,應該激動,因為外審估計也看不太懂,那么學明白了可以嚇唬他 缺陷一:輸入依賴性與上下文建模不足?? ??缺陷描述??: 傳統自注意力機制缺乏因果關系,難以捕捉序列歷史背景多模態數據間的復雜依賴關系未被充分建模CNN/RNN類模型在…

Qt Creator 配置 Android 編譯環境

Qt Creator 配置 Android 編譯環境 環境配置流程下載JDK修改Qt Creator默認android配置文件修改sdk_definitions.json配置修改的內容 Qt Creator配置 異常處理刪除提示占用編譯報錯連接安卓機調試APP閃退無法進入 debug 斷點 環境 Qt Creator 版本 qtcreator-16.0.1Win10 嗯, …

使用聊天模型和提示模板構建一個簡單的 LLM 應用程序

官方教程 官方案例 在上面的鏈接注冊后&#xff0c;請確保設置您的環境變量以開始記錄追蹤 export LANGSMITH_TRACING"true" export LANGSMITH_API_KEY"..."或者&#xff0c;如果在筆記本中&#xff0c;您可以使用以下命令設置它們 import getpass imp…

React vs Vue:點擊外部事件處理的對比與實現

React vs Vue&#xff1a;點擊外部事件處理的對比與實現 在 Web 應用中&#xff0c;“點擊外部事件監聽”是一種常見需求&#xff0c;典型應用如&#xff1a;點擊彈窗外部關閉彈窗、點擊下拉菜單外關閉菜單。雖然在 React 和 Vue 中實現的原理類似——都是通過監聽 document 的…

3335. 字符串轉換后的長度 I

3335. 字符串轉換后的長度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大質數mod 10**97# 創建一個長度為26的數組cnt&#xff0c;對應26個小寫字母cnt [0]*26# 計算出s中26個字符分別有多少個for ch in s:cnt[ord(ch)-ord(a)] 1f…

Java詳解LeetCode 熱題 100(15):LeetCode 189. 輪轉數組(Rotate Array)詳解

文章目錄 1. 題目描述2. 理解題目3. 解法一&#xff1a;使用額外數組3.1 思路3.2 Java代碼實現3.3 代碼詳解3.4 復雜度分析3.5 適用場景 4. 解法二&#xff1a;環狀替換法&#xff08;原地算法&#xff09;4.1 思路4.2 Java代碼實現4.3 代碼詳解4.4 復雜度分析4.5 陷阱與注意事…

數據治理域——日志數據采集設計

摘要 本文主要介紹了Web頁面端日志采集的設計。首先闡述了頁面瀏覽日志采集&#xff0c;包括客戶端日志采集的實現方式、采集內容及技術亮點。接著介紹了無線客戶端端日志采集&#xff0c;包括UserTrack的核心設計、移動端與瀏覽器端采集差異以及典型應用場景崩潰分析。最后探…