51單片機入門

来源:https://www.cnblogs.com/left23333/archive/2022/06/06/16347771.html
-Advertisement-
Play Games

基本元器件原理及功能 常用元器件 CAP 電容 RES 電阻 CRYSTAL 晶振 7SEG 數位管 sounder 蜂鳴器 BUTTON LED-BIBY 發光二極體 二極體PN結,P陽極N陰極,電流方向P極流向N極 共陰極高電平亮,共陽極低電平亮 數位管 dp g f e d c b a 0 0 ...


基本元器件原理及功能

常用元器件

CAP 電容
RES 電阻
CRYSTAL 晶振
7SEG 數位管
sounder 蜂鳴器
BUTTON
LED-BIBY

發光二極體

二極體PN結,P陽極N陰極,電流方向P極流向N極
共陰極高電平亮,共陽極低電平亮

數位管

dp  g   f   e   d   c   b   a  
0   0   1   1   1   1   1   1   //0x3F顯示0

共陰com口接地高電平亮,共陽極com口接電,低電平亮

LED數位管的顯示方式

1.靜態顯示
公共端直接接地(共陰極)或接電源(共陽極),每個數位管的段選線對應一組I/O介面,每個數位管一直顯示
2.動態顯示
所有數位管的段選線與一組I/O介面線並聯,公共端由一根I/O線控制,逐個顯示

按鍵

按鍵按下不會立刻改變電平,延時10ms-20ms再獲取電平消除抖動

獨立式按鍵:
每個鍵獨占跟並口線,處理簡單直接判斷並口線

行列鍵盤(矩陣鍵盤):
鍵位分佈在行列交叉點上,占用並口線少,鍵位越多越明顯

行列鍵盤按鍵編碼:
高位為1,低位為0,按鍵按下時高位為0。再將其取反再檢測即可知道是哪一個按鍵

H3  H2  H1  H0  L3  L2  L1  L0
1   1   1   1   0   0   0   0   //0xf0,
1   1   1   0   0   0   0   0   //當位於H0,L0的按鍵按下時,H0變為低電平
0   0   0   0   1   1   1   0   //0xf0取反,按鍵按下時L0變低電平

行和列編碼相加就等於鍵值
鍵值= 0xe0+0x0e;

定時計數器

51單片機有T0、T1兩個定時/計數器,52多一個T2
由加法計數器(16位)、方式寄存器TMOD、控制寄存器TCON和內部匯流排組成

初值X=最大計數值M - 計數值N
計數方式工作時,引腳T0(P3.4)或T1(P3.5)上的輸入脈衝計數

定時/計數器由一下特殊功能寄存器組成:
(T0)TH0, TL0, (T1)TH1, TL1, TMOD, TCON

TMOD  D7   D6   D5   D4  |  D3   D2   D1   D0
(89H) GATE C/T  M1   M0  |  GATE C/T  M1   M0
           定時器1        |     定時器0

M1,  M0  工作方式選擇位  
0    0     方式0, 13位定時/計數器         X=8192-N/(12/fosc)  
0    1     方式1, 16位定時/計數器         X=65536-N/(12/fosc)  
1    0     方式2, 8位自動重置定時/計數器   X=256-N/(12/fosc)  
1    1     方式3, 兩個8位定時/計數器(只有T0有)  

C/T: 定時或計數方式選擇位,1位計數方式,0位定時
GATE:門控位,用於控制定時/計數器的啟動是否受外部中斷請求信號影響

TCON   D7   D6   D5   D4   D3   D2   D1   D0  
(88H)  TF1  TR1  TF0  TR0  IE1  IT1  IE0  IT0  

TF1 T1的標誌位,當定時/計數器溢出時標誌位置1  
TR1 T1的啟動和停止,1啟動0停止  
TF0,TR0 控制T0,效果同上  
IE1  IT1  IE0  IT0 外部中斷  

串列口控制寄存器SCON

CS-51單片機1個全雙工串列非同步通信介面。發送接收共用SBUF寄存器,串列口控制寄存器SCON,電源控制寄存器PCON

波特率(bps)=一個字元的二進位位數*字元/秒
ex: 每秒傳送200個字元,每個字元1位起始位、8位數據位、1位校驗位和1位停止位。波特率為2200bps

SCON   D7   D6   D5   D4   D3   D2   D1   D0  
98H    SM0  SM1  SM2  REN  TB8  RB8  TI   RI  

SM0, SM1  串口工作方式選擇  
0    0     方式0,移位寄存器方式       波特率 fosc/12  
0    1     方式1,8位非同步通信方式      波特率可變  
1    0     方式2,9位非同步通信方式      fosc/32或fosc/64  
1    1     方式3,9位非同步通信方式      波特率可變  

SM2多設備通信,REN是否允許接收,TB8、RB8在9位非同步通信時用到,TI給0表示允許發送、RI給0表示允許接收

 ex:
 SCON=0x50; //0101 0000

對於方式1和方式3:T1的初值=256-fosc2SMOD/(12波特率*32)

TXD: 發送數據端
RXD: 接收數據端

通信晶振頻率為11.0592MHz

中斷系統

中斷源及中斷請求

1.外部中斷 ~INT0 和 ~INT1
外部引腳P3.2和P3.3輸入,兩種觸發方式:電平觸發及邊沿觸發。由特殊功能寄存器TCON管理

TCON   D7   D6   D5   D4   D3   D2   D1   D0
(88H)  TF1  TR1  TF0  TR0  IE1  IT1  IE0  IT0  

IT0(IT1): 外部中斷0(或1)觸發方式控制位,0電平觸發方式,1邊沿觸發方式  
IE0(IE1):外部中斷請求標誌位

ex:
邊沿觸發方式時,當機器周期採樣P3.2(P3.3)引腳為高電平,下一個周期為低電平,IE0(IE1)置1,向cpu請求中斷,cpu相應後硬體自動清0
電平觸發方式時,若引腳為高電平,IE0(IE1)清0,低電平置1,cpu響應後不能由硬體自動清0。為避免多次中斷情況,只有在中斷服務程式返回前使引腳為高電平,通常外接電路實現

2.定時/計數器T0和T1中斷
當定時計數器溢出時,硬體置TF0(TF1)為1,cpu響應中斷後硬體自動清0

3.串口中斷
串列口發送標誌位TI和接收標誌位RI,任意一個為1,都請求中斷,由軟體清0

中斷允許與中斷屏蔽

IE     D7   D6   D5   D4   D3   D2   D1   D0

(A8H) EA ET2 ES ET1 EX1 ET0 EX0

EA: 中斷允許控制位。0屏蔽,1開放(下同)
ET2:定時/計數器T2溢出中斷允許位(c52)
ES:串列口中斷允許位
ET1:T1溢出中斷允許位
EX1: 外部中斷INT1中斷允許位
ET0:T0
EX0: INT0

中斷優先權控制

IP     D7   D6   D5   D4   D3   D2   D1   D0

(B8H) PT2 PS PT1 PX1 PT0 PX0

PT2:定時/計數器T2溢出中斷優先順序控制位(c52),1高優先順序,0低優先順序(下同)
PS:串列口中斷優先順序控制位
PT1:T1
PX1: 外部中斷INT1
PT0:T0
PX0: INT0

當優先順序相同,預設優先順序(由高到低)

外部中斷0,入口編號0
定時/計數器0,1
外部中斷1,2
定時計數器1,3
串列口,4
定時/計數器2,5

中斷過程中不能被同級或低優先順序中斷,低優先順序可能被高優先順序中斷

指令位RETI或訪問IE、IP的指令時,不會響應中斷

51單片機與DAC的介面

D/A轉換器是把輸入的數字量轉換為與之成正比的模擬量的器件,輸入數字量,輸出模擬量
如輸入的數字量為D, 輸出的模擬量為V0, 則有:
V0=D*VREF
其中:VREF為基準電壓, D為二進位轉換為十進位的數


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用戶 在系統里,用戶是一個核心概念。它代表了一個人的唯一身份標識,除了與角色、團隊、組織架構等有關,甚至還會影響到在同一個界面不同的用戶操作流程與顯示內容都會發生變化,再複雜一點的話,或許在同一個系統內的一個用戶進入到不同產品後的身份也會變化 用戶與角色 用戶可以擁有一個或多個角色,讓角色作為許可權組 ...
  • 當服務端啟動後,但是telnet其監聽的埠卻失敗了。或者當服務端運行了一段時間後,突然其監聽的埠telnet不通了。當類似這樣情況出現時,要如何排查問題所在了? ...
  • 以下代碼實現自定義Button,繼承WinForm的Button,新增了邊框、圓角設置的相關屬性。 public class ZhmButton : Button { private int borderSize = 0; // 邊框 private Color borderColor = Colo ...
  • Linux軟體軟體安裝命令 sudo apt-get update//更新源,檢查更新 sudo apt-get upgrade; sudo apt-get dist-upgrade sudo apt-get install//從源中安裝軟體 sudo apt-get remove 刪除包 gnom ...
  • 為什麼要使用Vite 在瀏覽器中提供ES模塊之前,開發人員沒有以模塊化方式編寫JavaScript的本機機制。這就是為什麼我們都很熟悉“捆綁”的概念:使用工具來抓取、處理和連接源模塊到可以在瀏覽器中運行的文件中。 隨著時間的推移,我們看到了webpack、Rollup和Parcel等工具,它們極大地 ...
  • 英文原文:https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/cpusets.html Copyright (C) 2004 BULL SA. Written by [email protected] Portions Cop ...
  • 一 、通過雲開發平臺快速創建初始化應用 1.創建相關應用模版請參考鏈接:基於Vue的極簡生成器 — Vuepress 2.完成創建後就可以在github中查看到新增的vuepress倉庫 二 、 本地編寫 Vue文檔風格的技術文檔/博客 1.將應用模版克隆到本地 首先假定你已經安裝了Git、node ...
  • 本文參考書:操作系統真像還原、電腦組成原理(微課版) 所謂記憶體管理包含: 物理記憶體 虛擬地址空間 以上就是記憶體管理中所要管理的資源。那麼記憶體管理的第一步就應該是整理出這兩種資源。 物理記憶體要分為兩部分: ①內核記憶體 ②用戶記憶體 在內核態下也經常會有一些記憶體申請,比如申請個pcb、頁表等等。內核態和 ...
一周排行
    -Advertisement-
    Play Games
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...
  • 1. JUnit 最佳實踐指南 原文: https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ 我假設您瞭解 JUnit 的基礎知識。 如果您沒有基礎知識,請首先閱讀(已針 ...