單片機(jī)基礎(chǔ)教程
第一節(jié)、機(jī)基礎(chǔ)知識(shí)
一、單片機(jī)概念
1、單片機(jī):在一片集成電路芯片上集成微處理器(CPU)、存儲(chǔ)器(ROM和RAM)、I/O接口電路,從而構(gòu)成了單芯片微型計(jì)算機(jī),即單片機(jī)(single chip Microcomputer)也叫微控制器(MCU)。
CPU( Central Processing Unit ):由運(yùn)算和控制邏輯組成,同時(shí)還包括中斷系統(tǒng)和部分外部特殊功能寄存器;
RAM( Random-Access Memory ):用以存放可以讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);
ROM (Read-Only Memory):用以存放程序、一些原始數(shù)據(jù)和表格;
I/O(input/output)口:四個(gè)8位并行I/O口,既可用作輸入,也可用作輸出;
T/C (timer/counter):兩個(gè)定時(shí)/記數(shù)器,既可以工作在定時(shí)模式,也可以工作在記數(shù)模式;
Intel公司1980年推出了MCS-51系列單片機(jī):集成 8位CPU、4K字節(jié)ROM、128字節(jié)RAM、4個(gè)8位并口、1個(gè)全雙工串行口、2個(gè)16位定時(shí)/計(jì)數(shù)器。尋址范圍64K,并有控制功能較強(qiáng)的布爾處理器。
80C51是MCS-51系列中的一個(gè)典型品種;其它廠商以8051為基核開發(fā)出的CMOS工藝單片機(jī)產(chǎn)品統(tǒng)稱為80C51系列。
主要的80C51單片機(jī)
Intel:80C31、80C51、80C32、80C52、87C52
ATMEL:AT89C51、AT89C52、AT89C2051等;
STC:89C51、89C52、90C51、STC15w
Philips:P80C54、P80C58、P87C54
華邦:W78C54、W78C58、W78E54
Siemens:C501-1R、C513A-H
等公司的許多產(chǎn)品 。
芯片封裝簡介
單片機(jī)用途
凡是與控制或簡單計(jì)算有關(guān)的電子設(shè)備都可以用單片機(jī)來實(shí)現(xiàn),再根據(jù)具體實(shí)際情況選擇不同性能的單片機(jī),如:atmel,stc,pic,avr,凌陽,80C51,arm等
工業(yè)自動(dòng)化:數(shù)據(jù)采集、測(cè)控技術(shù)。
智能儀器儀表:數(shù)字示波器、數(shù)字信號(hào)源、數(shù)字萬用表、感應(yīng)電流表等。
消費(fèi)類電子產(chǎn)品:洗衣機(jī)、電冰箱、空調(diào)機(jī)、電視機(jī)、微波爐、手機(jī)、IC卡、汽車電子設(shè)備等。
通訊方面:調(diào)制解調(diào)器、程控交換技術(shù)、手機(jī)、小靈通等。
武器裝備:飛機(jī)、軍艦、坦克、導(dǎo)彈、航天飛機(jī)、魚雷制導(dǎo)、智能武器等。
- 學(xué)習(xí)51單片機(jī)C語言編程基本知識(shí)
電平特性
數(shù)字電路中只有兩種電平:高和低
單片機(jī)為TTL電平: 高 +5V 低 0V
RS232電平:計(jì)算機(jī)的串口 高 -12V 低+12V
所以計(jì)算機(jī)與單片機(jī)之間通訊時(shí)需要加電平轉(zhuǎn)換芯片max232等其他芯片
二進(jìn)制
數(shù)字電路中的兩種電平特性決定了它使用二進(jìn)制運(yùn)算
十進(jìn)制 | 十六進(jìn)制 | 二進(jìn)制 | 十進(jìn)制 | 十六進(jìn)制 | 二進(jìn)制 |
0 | 0x0 | 0000 | 1 | 0x1 | 0001 |
2 | 0x2 | 0010 | 3 | 0x3 | 0011 |
4 | 0x4 | 0100 | 5 | 0x5 | 0101 |
6 | 0x6 | 0110 | 7 | 0x7 | 0111 |
8 | 0x8 | 1000 | 9 | 0x9 | 1001 |
10 | 0xA | 1010 | 11 | 0xB | 1011 |
12 | 0xC | 1100 | 13 | 0xD | 1101 |
14 | 0xE | 1110 | 15 | 0xF | 1111 |
二進(jìn)制邏輯運(yùn)算
邏輯變量 : 只有兩個(gè):“0”(假)和“1”(真)。
邏輯“與”(邏輯乘)運(yùn)算L=A·B 或者 L=A∧B
“與”的運(yùn)算法則為:
0·0=0 , 0·1=0 ,
1·0=0 , 1·1=1
A·0=0,A·1=A,A·A=A
邏輯“或”(邏輯加)運(yùn)算L=A+B 或者 L=A∨B
“或”的運(yùn)算法則為:
0+0=0 , 0+1=1
1+0=1 , 1+1=1
A+0=A ,A+1=1 ,A+A=A
邏輯“非”(邏輯取反)運(yùn)算L= A
“非”的運(yùn)算法則為:
“異或”
其運(yùn)算規(guī)則是:
C語言基本數(shù)據(jù)類型
基本語法
變量定義
數(shù)據(jù)類型 變量名
int num1;
double num2 = 2;
unsigned short num3;
if()語句
if(條件){分支}
if(條件){分支1}else{分支2}
if(x>=0)
{
y=y/2;
}
else
{
y=y*x;
}
while()語句
while(條件){循環(huán)體}
while(i<10)
{
s+=k;
}
for()語句
for(表達(dá)式1;條件2;表達(dá)式3){循環(huán)體}
for(i=0;x!=y;j++)
{
z/=3;
}
函數(shù)定義
數(shù)據(jù)類型 函數(shù)名(形參列表){函數(shù)體}
int add(int num1,int num2)
{
return num1+num2;
}
三、80C51引腳簡介
1. 電源引腳:Vcc (40腳):電源端,接+5V電源。
Vss(Gnd) (20腳):接地端,接+5V電源地端
2. 外接晶體引腳:XTAL1和XTAL2
89C51內(nèi)部有一個(gè)振蕩器和時(shí)鐘產(chǎn)生電路。
XTAL1(19腳): 片內(nèi)振蕩電路反相放大器輸入
XTAL2(18腳):片內(nèi)振蕩電路反相放大器輸出 當(dāng)采用內(nèi)部時(shí)鐘時(shí),片外連接石 英晶體和微調(diào)電容,產(chǎn)生原始 的振蕩脈沖信號(hào)。
采用外部時(shí)鐘時(shí), XTAL1輸入 外部時(shí)鐘脈沖信號(hào), XTAL2懸空.
3. 控制信號(hào)引腳:RST、ALE、?PSEN、?EA
RST (9腳) : 復(fù)位信號(hào)輸入端,高電平有效。
保持兩個(gè)機(jī)器周期高電平時(shí),完成復(fù)位操作。
ALE/PROG (30腳) :
地址鎖存允許輸出端/編程脈沖輸入端
正常時(shí),連續(xù)輸出振蕩器頻率的1/6正脈沖信號(hào)。
訪問片外存儲(chǔ)器時(shí):
作為鎖存P0口低8位地址的控制信號(hào)。
對(duì)8751片內(nèi) ROM編程寫入時(shí):作為編程脈沖輸入端。
?PSEN (29腳): 外部程序存儲(chǔ)器讀選通輸出信號(hào)
訪問片外ROM時(shí),輸出負(fù)脈沖作為讀ROM選通.
常連接到片外ROM芯片的輸出允許端(OE)作外部ROM的讀選通信號(hào)。
?EA/Vpp (31腳):
外部程序存儲(chǔ)器地址使能輸入/編程電壓輸入端. 平常,接“1”時(shí),CPU訪問片內(nèi)4KB的ROM,當(dāng)?shù)刂烦?KB時(shí),自動(dòng)轉(zhuǎn)向片外ROM中的程序。當(dāng)接“0”時(shí),CPU只訪問片外ROM。 第2功能Vpp 對(duì)8051編程時(shí),編程電壓輸入端。
4. 輸入/輸出端口引腳 P0、P1、P2、P3
4個(gè)8位的并行輸入/輸出端口,共32個(gè)引腳。作為通用輸入/輸出端口
準(zhǔn)雙向口: 作輸入時(shí)要先對(duì)鎖存器寫“1”。默認(rèn)啟動(dòng)初始化為高電平
P0端口(P0.0—P0.7,第39—32腳):
漏極開路的準(zhǔn)雙向口, 內(nèi)部沒有上拉電阻,為搞阻狀態(tài),不能正常輸出高低電平,做I/O時(shí)需要接上拉電阻(10K)
P1端口(P1.0—P1.7,第1—8腳):
內(nèi)部帶上拉電阻的準(zhǔn)雙向口,在做輸入時(shí)要先1
P2端口(P2.0—P2.7,第21—28腳):
內(nèi)部帶上拉電阻的準(zhǔn)雙向口,與P1相似
P3端口(P3.0—P3.7,第10—17腳):
內(nèi)部帶上拉電阻的準(zhǔn)雙向口,做I/O時(shí)與P1相似,另外有第二功能
P3口的第二功能
Proteus 軟件是由英國 Labcenter Electronics 公司開發(fā)的EDA(Electronic Design Automation)工具軟件,已有近20年的歷史,在全球得到了廣泛應(yīng)用。Proteus 軟件的功能強(qiáng)大,它集電路設(shè)計(jì)、制版及仿真等多種功能于一身,不僅能夠?qū)﹄姽?、電子技術(shù)學(xué)科涉及的電路進(jìn)行設(shè)計(jì)與分析,還能夠?qū)ξ⑻幚砥鬟M(jìn)行設(shè)計(jì)和仿真,并且功能齊全,界面多彩,是近年來備受電子設(shè)計(jì)愛好者青睞的一款新型電子線路設(shè)計(jì)與仿真軟件。
在Proteus中,從原理圖設(shè)計(jì)、單片機(jī)編程、系統(tǒng)仿真到PCB設(shè)計(jì)一氣呵成,真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。
主要功能
ISIS——智能原理圖輸入系統(tǒng),系統(tǒng)設(shè)計(jì)與仿真的基本平臺(tái)。
ARES ——高級(jí)PCB( Printed Circuit Board)布線編輯軟件
VSM(虛擬仿真模式)
交互式仿真—— 實(shí)時(shí)直觀地反映電路設(shè)計(jì)的仿真結(jié)果;
基于圖表的仿真(ASF)—— 用來精確分析電路的各種性能,如頻率特性、噪聲特性等。
工具箱中各圖標(biāo)按鈕對(duì)應(yīng)的操作如下
庫元件的分類
1. 大類(Category)
在左側(cè)的“Category”中,共列出了以下幾個(gè)大類
要從庫中拾取一個(gè)元件時(shí),首先要清楚它的分類是位于哪一類,然后在打開的元件拾取對(duì)話框中,選中“Category”中相應(yīng)的大類
2子類(Sub-category)
選取元件所在的大類(Category)后,再選子類(Sub-category),也可以直接選生產(chǎn)廠家(Manufacturer),這樣會(huì)在元件拾取對(duì)話框中間部分的查找結(jié)果(Results)中顯示符合條件的元件列表。從中找到所需的元件,雙擊該元件名稱,元件即被拾取到對(duì)象選擇器中去了。如果要繼續(xù)拾取其他元件,最好使用雙擊元件名稱的辦法,對(duì)話框不會(huì)關(guān)閉。如果只選取一個(gè)元件,可以單擊元件名稱后單擊“OK”按鈕,關(guān)閉對(duì)話框。如果選取大類后,沒有選取子類或生產(chǎn)廠家,則在元件拾取對(duì)話框中的查詢結(jié)果中,會(huì)把此大類下的所有元件按元件名稱首字母的升序排列出來
各子類介紹
1. Analog ICs
模擬集成器件共有8個(gè)子類
2.Capacitors
電容共有23個(gè)分類
3. CMOS 4000 series
CMOS 4000系列數(shù)字電路共有16個(gè)分類
4. Connectors
接頭共有8個(gè)分類
5. Data Converters
數(shù)據(jù)轉(zhuǎn)換器共有4個(gè)分類
6. Debugging Tools
調(diào)試工具數(shù)據(jù)共有3個(gè)分類
7. Diodes
二極管共有8個(gè)分類
8. Inductors
電感共有3個(gè)分類
9. Laplace Primitives
拉普拉斯模型共有7個(gè)分類
10. Memory ICs
存儲(chǔ)器芯片共有7個(gè)分類
11. Microprocessor ICs
微處理器芯片共有13個(gè)分類
12. Modelling Primitives
建模源共有9個(gè)分類
13. Operational Amplifiers
運(yùn)算放大器共有7個(gè)分類
14.Optoelectronics
光電器件共有11個(gè)分類
15.Resistors
電阻共有11個(gè)分類
16.Simulator Primitives
仿真源共有3個(gè)分類
17.Switches and Relays
開關(guān)和繼電器共有4個(gè)分類
18. Switching Devices
開關(guān)器件共有4個(gè)分類
19.Thermionic Valves
熱離子真空管共有4個(gè)分類
20.Transducers
傳感器共有2個(gè)分類
21.Transistors
晶體管共有8個(gè)分類
五.編譯軟件Keil
Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。運(yùn)行Keil軟件需要Windows操作系統(tǒng)。使用C語言編程,那么Keil幾乎就是不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。
Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。
C51 有以下擴(kuò)展關(guān)鍵字(共21個(gè)):
_at_ alien bdata bit code compact data far idata interrupt large pdata _priority_ reentrant sbit sfr sfr16 small _task_ using xdata
常用關(guān)鍵字說明
sfr:sfr用來定義特殊功能寄存器
sfr16:定義一個(gè)16位的特殊功能寄存器
sbit:定義一個(gè)特殊功能寄存器的某一位
bit:定義位變量
code: 指定存儲(chǔ)位置位于程序存儲(chǔ)器
interrupt:聲明中斷服務(wù)程序
using:指定的寄存器組
擴(kuò)展函數(shù)
需要包含intrins.h頭文件
常用函數(shù)
_irol_、_iror_ 對(duì)unsigned int數(shù)循環(huán)左移、右移
_lrol_、_lror_ 對(duì)unsigned long數(shù)循環(huán)左移、右移
_crol_、_cror_對(duì)unsigned char數(shù)循環(huán)左移、右移
六、點(diǎn)亮第一個(gè)LED燈
LED發(fā)光二極管一般壓降為1.7 V 電流3mA即可點(diǎn)亮,因此串聯(lián)1K電阻限流限壓,長腳的為正極。
D1點(diǎn)亮 p1.0設(shè)置為低電平,有電流流過,二極管發(fā)光
D2不亮 p1.1默認(rèn)為高電平,沒有點(diǎn)亮流過,二極管不會(huì)發(fā)光
仿真時(shí) 紅色代表高電平,藍(lán)色代表低電平,灰色代表高阻態(tài)
一、80c51的最小應(yīng)用系統(tǒng)
電源+5v 3V接C6 (104 為10 *104 0.1uF)和C5(10uF)提高抗干擾性
復(fù)位電路外部RST引腳復(fù)位就是從外部向RST引腳施加一定寬度的復(fù)位脈沖,從而實(shí)現(xiàn)單片機(jī)的復(fù)位。將RST復(fù)位管腳拉高并維持至少24個(gè)時(shí)鐘加10us后,單片機(jī)會(huì)進(jìn)入復(fù)位狀態(tài),將RST復(fù)位管腳拉回低電平后,單片機(jī)結(jié)束復(fù)位狀態(tài)并從用戶程序區(qū)的0000H處開始正常工作。
當(dāng)系統(tǒng)上電時(shí),電容充電會(huì)給rst引腳高電平,等電容穩(wěn)定后將沒有電流流過.
振蕩電路 振蕩頻率越高表示單片機(jī)運(yùn)行速度越快,但同時(shí)對(duì)存儲(chǔ)器的速度和印刷電路板的要求也就越高。如同木桶原理。同時(shí)單片機(jī)性能的好壞,不僅與CPU運(yùn)算速度有關(guān),而且與存儲(chǔ)器的速度、外設(shè)速度等都有很大關(guān)系。因此一般選用6~12MHZ。并聯(lián)諧振電路對(duì)電容的值沒有嚴(yán)格要求,但會(huì)影響振蕩器的穩(wěn)定、振蕩器頻率高低、起振快速性等。一般根據(jù)手冊(cè)說明選定.
二、下載程序到stc90c51單片機(jī)
三、單片機(jī)工作的基本時(shí)序
(1) 振蕩周期: 也稱時(shí)鐘周期, 是指為單片機(jī)提供時(shí)鐘脈沖信號(hào)的振蕩源的周期,常用12MHZ,11.0592MHZ。
(2) 狀態(tài)周期: 每個(gè)狀態(tài)周期為時(shí)鐘周期的 2 倍, 是振蕩周期經(jīng)二分頻后得到的。
(3) 機(jī)器周期: 一個(gè)機(jī)器周期包含 6 個(gè)狀態(tài)周期S1~S6, 也就是 12 個(gè)時(shí)鐘周期。 在一個(gè)機(jī)器周期內(nèi), CPU可以完成一個(gè)獨(dú)立的操作。
(4) 指令周期: 它是指CPU完成一條操作所需的全部時(shí)間。 每條指令執(zhí)行時(shí)間都是有一個(gè)或幾個(gè)機(jī)器周期組成。MCS - 51 系統(tǒng)中, 有單周期指令、雙周期指令和四周期指令。
四、簡單的軟件延時(shí)
使用keil查看程序執(zhí)行時(shí)間
延時(shí)100ms函數(shù)
延時(shí)1s閃爍
流水燈設(shè)計(jì)
從上到下每隔500ms依次點(diǎn)亮
P0口上拉電阻
P0口是開路漏極只能輸出低電平,不能正常輸出高電平。所以做I/O時(shí)需要加上拉電阻
每隔500ms依次點(diǎn)亮其中一個(gè)
來回依次循環(huán)點(diǎn)亮一個(gè)led
加減速流水燈
花樣流水燈
利用_crol_、_cror_實(shí)現(xiàn)流水燈
多I/O口的流水燈
第三節(jié)、數(shù)碼管和定時(shí)器
顯示器及其接口
單片機(jī)系統(tǒng)中常用的顯示器有:
發(fā)光二極管LED(Light Emitting Diode)顯示器、液晶LCD(Liquid Crystal Display)顯示器、CRT顯示器等。LED、LCD顯示器有兩種顯示結(jié)構(gòu):段顯示(7段、米字型等)和點(diǎn)陣顯示(5×8、8×8點(diǎn)陣等)。
LED數(shù)碼顯示方式及電路
使用LED顯示器時(shí),要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此為LED顯示器提供的編碼正好是一個(gè)字節(jié)。
靜態(tài)顯示方式
LED顯示器工作方式有兩種:靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線來保持顯示的字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,顯示便于監(jiān)測(cè)和控制。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高。
數(shù)碼管編碼表
動(dòng)態(tài)顯示
動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的。
共陰時(shí)數(shù)碼管位選低電平有效,共陽時(shí)送高電平。
定時(shí)器和計(jì)數(shù)器
定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)和工作原理
一、定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)
定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。TMOD是定時(shí)/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。 加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來源,一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來;一個(gè)是T0或T1引腳輸入的外部脈沖源。每來一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。
可見,由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)器初值才是加1計(jì)數(shù)器的計(jì)數(shù)值。
設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t 。
設(shè)置為計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時(shí),則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。由于檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期。當(dāng)晶振頻率為12MHz時(shí),最高計(jì)數(shù)頻率不超過1/2MHz,即計(jì)數(shù)脈沖的周期要大于2us。
定時(shí)器存儲(chǔ)寄存器
TCON—定時(shí)器控制寄存器的位分配(地址0x88、可位尋址)
TCON——定時(shí)器控制寄存器的位描述
TMOD—定時(shí)器模式寄存器的位分配(地址0x89、不可位尋址)
TMOD——定時(shí)器模式寄存器的位描述
TMOD——定時(shí)器模式寄存器M1/M0工作模式
IE—中斷使能寄存器的位分配(地址0xA8、可位尋址)
IE—中斷使能寄存器的位描述
IP—中斷優(yōu)先級(jí)寄存器的位分配(地址0xB8、可位尋址)
IP—中斷優(yōu)先級(jí)寄存器的位描述
使用定時(shí)器的方法
第一:設(shè)置特殊功能寄存器TMOD,配置好工作模式。
第二:設(shè)置計(jì)數(shù)寄存器TH0和TL0的初值。
第三:設(shè)置IE中斷允許位
第四:設(shè)置TCON,通過TR0置1來讓定時(shí)器開始計(jì)數(shù)。
第五:判斷TCON寄存器的TF0位,監(jiān)測(cè)定時(shí)器溢出情況。
第四節(jié)、按鍵檢測(cè)、中斷系統(tǒng)
一、鍵盤的分類
鍵盤分編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識(shí)別由專用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生鍵編碼號(hào)或鍵值的稱為編碼鍵盤,如計(jì)算機(jī)鍵盤。而靠軟件編程來識(shí)別的稱為非編碼鍵盤;在單片機(jī)組成的各種系統(tǒng)中,用的最多的是非編碼鍵盤。也有用到編碼鍵盤的。
非編碼鍵盤有分為:獨(dú)立鍵盤和行列式(又稱為矩陣式)鍵盤。
獨(dú)立按鍵原理
按鍵檢測(cè)方法
先給I/O口寫入1,輸出高電平,當(dāng)按鍵按下時(shí),讀相應(yīng)端口為0低電平時(shí)表示按鍵按下
P0 = 0xff;//寫入1
if(P0 == 0xfe)
{
//P0.0按鍵按下
}
矩陣按鍵變獨(dú)立按鍵
矩陣鍵盤檢測(cè)使用行列掃描的辦法,當(dāng)keyOut輸出高電平,再給keyIn某列送低電平其他送高電平從而確定列,然后檢測(cè)keyOut那行為低電平確定行,行列確定即可確定那個(gè)按鍵按下。
按鍵在閉合和斷開時(shí),觸點(diǎn)會(huì)存在抖動(dòng)現(xiàn)象:
按鍵消抖方法
2、檢查01的連續(xù)性
單片機(jī)中斷系統(tǒng)
引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請(qǐng)求。CPU暫時(shí)中斷原來的事務(wù)A,轉(zhuǎn)去處理事件B。對(duì)事件B處理完畢后,再回到原來被中斷的地方(即斷點(diǎn)),稱為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))。
隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速I/O設(shè)備的數(shù)據(jù)傳送問題,而且還具有如下優(yōu)點(diǎn):
分時(shí)操作:CPU可以分時(shí)為多個(gè)I/O設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率;
實(shí)時(shí)響應(yīng):CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);
可靠性高:CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。
80C51的中斷系統(tǒng)有5個(gè)中斷源(8052有 6個(gè)) ,2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套 。
(P3.2)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.2引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE0(TCON.1)置1,向CPU申請(qǐng)中斷。
(P3.3)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.3引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE1(TCON.3)置1,向CPU申請(qǐng)中斷。
RI(SCON.0)或TI(SCON.1),串行口中斷請(qǐng)求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)置位TI,向CPU申請(qǐng)中斷。
IT0(TCON.0),外部中斷0觸發(fā)方式控制位。
當(dāng)IT0=0時(shí),為電平觸發(fā)方式。
當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。
IE0(TCON.1),外部中斷0中斷請(qǐng)求標(biāo)志位。
IT1(TCON.2),外部中斷1觸發(fā)方式控制位。
IE1(TCON.3),外部中斷1中斷請(qǐng)求標(biāo)志位。
TF0(TCON.5),定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。
TF1(TCON.7),定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。
中斷允許控制,CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。
EX0(IE.0),外部中斷0允許位;
ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位;
EX1(IE.2),外部中斷0允許位;
ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位;
ES(IE.4),串行口中斷允許位;
EA (IE.7), CPU中斷允許(總允許)位。
80C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的 。
PX0(IP.0),外部中斷0優(yōu)先級(jí)設(shè)定位;
PT0(IP.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;
PX1(IP.2),外部中斷0優(yōu)先級(jí)設(shè)定位;
PT1(IP.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;
PS (IP.4),串行口優(yōu)先級(jí)設(shè)定位;
PT2 (IP.5) ,定時(shí)/計(jì)數(shù)器T2優(yōu)先級(jí)設(shè)定位。
同一優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí),則有中斷優(yōu)先權(quán)排隊(duì)問題。同一優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成,其排列如所示:
80C51單片機(jī)的中斷優(yōu)先級(jí)有三條原則:
- CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。
- 正在進(jìn)行的中斷過程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。
- 正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。
為了實(shí)現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個(gè)用戶不能尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。其中一個(gè)置1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來所有的中斷請(qǐng)求;另一個(gè)置1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,它將阻斷后來所有的低優(yōu)先級(jí)中斷請(qǐng)求。
80C51單片機(jī)中斷處理過程
中斷響應(yīng)條件和時(shí)間
中斷源有中斷請(qǐng)求;
此中斷源的中斷允許位為1;
CPU開中斷(即EA=1)。
以上三條同時(shí)滿足時(shí),CPU才有可能響應(yīng)中斷。
第五節(jié)、串口通信
計(jì)算機(jī)串行通信基礎(chǔ)
隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及,計(jì)算機(jī)的通信功能愈來愈顯得重要。計(jì)算機(jī)通信是指計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。通信有并行通信和串行通信兩種方式。在多微機(jī)系統(tǒng)以及現(xiàn)代測(cè)控系統(tǒng)中信息的交換多采用串行通信方式。
計(jì)算機(jī)通信是將計(jì)算機(jī)技術(shù)和通信技術(shù)的相結(jié)合,完成計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換 ??梢苑譃閮纱箢悾翰⑿型ㄐ排c串行通信。
并行通信:通信時(shí)數(shù)據(jù)的各個(gè)位同時(shí)傳送,可以實(shí)現(xiàn)字節(jié)為單位通信,但是通信線多占用資源多,并行通信控制簡單、傳輸速度快;由于傳輸線較多,長距離傳送時(shí)成本高且接收方的各位同時(shí)接收存在困難。
串行通信:將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個(gè)地傳送。一次只能發(fā)送一位,要發(fā)送8次才能發(fā)送一個(gè)字節(jié)。
串行通信的特點(diǎn):傳輸線少,長距離傳送時(shí)成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的傳送控制比并行通信復(fù)雜。
RS232通信接口
1、載波檢測(cè)DCD
2、接收數(shù)據(jù)RXD
3、發(fā)送數(shù)據(jù)TXD
4、數(shù)據(jù)終端準(zhǔn)備好DTR
5、信號(hào)地線
6、數(shù)據(jù)準(zhǔn)備好DSR
7、請(qǐng)求發(fā)送RTS
8、清除發(fā)送CTS
9、振鈴提示RI
TTL/CMOS電平標(biāo)準(zhǔn):高電平‘1’ >2.x V 低電平'0' <0.x V
232電平標(biāo)準(zhǔn): 高電平‘1’ > -3V ~ -15V 低電平'0' < +3V~ +15V
USB轉(zhuǎn)串口通信
串行通信的基本概念
異步通信與同步通信
1、異步通信
異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。
異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系,但同一字符內(nèi)的各位之間的距離均為“位間隔”的整數(shù)倍。
異步通信的數(shù)據(jù)格式 :
異步通信的特點(diǎn):不要求收發(fā)雙方時(shí)鐘的嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷較小,但每個(gè)字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。
串行通信的錯(cuò)誤校驗(yàn)
1、奇偶校驗(yàn)
在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨的1位為奇偶校驗(yàn)位(1或0)。奇校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和應(yīng)為偶數(shù)。接收字符時(shí),對(duì)“1”的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯(cuò)。
2、代碼和校驗(yàn)
代碼和校驗(yàn)是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時(shí)對(duì)數(shù)據(jù)塊(除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)送方的“校驗(yàn)和”進(jìn)行比較,相符則無差錯(cuò),否則即認(rèn)為傳送過程中出現(xiàn)了差錯(cuò)。
這種校驗(yàn)是通過某種數(shù)學(xué)運(yùn)算實(shí)現(xiàn)有效信息與校驗(yàn)位之間的循環(huán)校驗(yàn),常用于對(duì)磁盤信息的傳輸、存儲(chǔ)區(qū)的完整性校驗(yàn)等。這種校驗(yàn)方法糾錯(cuò)能力強(qiáng),廣泛應(yīng)用于同步通信中。
傳輸速率與傳輸距離
1、傳輸速率
比特率是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps)。如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位、1個(gè)停止位、8個(gè)數(shù)據(jù)位),這時(shí)的比特率為:10位×240個(gè)/秒 = 2400 bps
2、傳輸距離與傳輸速率的關(guān)系
串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時(shí),傳輸距離隨傳輸速率的增加而減小。當(dāng)比特率超過1000 bps 時(shí),最大傳輸距離迅速下降,如9600 bps 時(shí)最大距離下降到只有76m(約250英尺)。
三種基本通信類型
單工通信:只允許一方向另外一方傳送信息,另一方不能回傳信息,比如電視遙控器、收音機(jī)廣播等。
半雙工通信:數(shù)據(jù)可以在雙方之間傳播,同一時(shí)刻只能其中一方發(fā)給另外一方,比如對(duì)講機(jī)就是典型半雙工。
全雙工通信:發(fā)送數(shù)據(jù)的同時(shí)也能夠接收數(shù)據(jù),兩者同步進(jìn)行,比如我們的電話通信。
80C51的串行口
有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H ;接收器是雙緩沖結(jié)構(gòu) ;發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生重疊錯(cuò)誤。
SCON——串行控制寄存器的位分配(地址0x98、可位尋址)
SCON——串行控制寄存器的位描述
SM0和SM1為工作方式選擇位,可選擇四種工作方式:
SM2,多機(jī)通信控制位,主要用于方式2和方式3。當(dāng)接收機(jī)的SM2=1時(shí)可以利用收到的RB8來控制是否激活RI(RB8=0時(shí)不激活RI,收到的信息丟棄;RB8=1時(shí)收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。當(dāng)SM2=0時(shí),不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI(即此時(shí)RB8不具有控制RI激活的功能)。通過控制SM2,可以實(shí)現(xiàn)多機(jī)通信。
在方式0時(shí),SM2必須是0。在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1。REN,允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。
TB8,在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/數(shù)據(jù)幀的標(biāo)志位。
在方式0和方式1中,該位未用。
RB8,在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。在方式1時(shí),若SM2=0,則RB8是接收到的停止位。
TI,發(fā)送中斷標(biāo)志位。在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請(qǐng)。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請(qǐng)。
RI,接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí),由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請(qǐng)。也必須在中斷服務(wù)程序中,用軟件將其清0,取消此中斷申請(qǐng)。
PCON : 電源控制寄存器 (不可位尋址)
SMOD:波特率選擇位。當(dāng)用軟件置位SMOD,即SMOD=1,則使串行通信方式1、2、3的波
特率加倍;SMOD=0,則各工作方式的波特率加倍。復(fù)位時(shí)SMOD=0。
SMOD0:幀錯(cuò)誤檢測(cè)有效 控制位。當(dāng)SMOD0=1,SCON寄存器中的SM0/FE位用于FE(幀錯(cuò)誤檢測(cè))功能;當(dāng)SMOD0=0,SCON寄存器中的SM0/FE位用于SM0功能,和SM1一起指定串行口的工作方式。復(fù)位時(shí)SMOD0=0
串口通信程序的基本步驟
1、配置串口為模式1。
2、配置定時(shí)器T1為模式2,即自動(dòng)重裝模式。
3、根據(jù)波特率計(jì)算TH1和TL1的初值,如果有需要可以使用PCON進(jìn)行波特率加倍。
4、打開定時(shí)器控制寄存器TR1,讓定時(shí)器跑起來。
80C51串行口的工作方式
方式0
方式0時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。
1、方式0輸出
2、方式0輸入
方式1
方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。
方式1輸出
方式1輸入
用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。
方式2和方式3
方式2或方式3時(shí)為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳 。
方式2和方式3時(shí)起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時(shí)為SCON中的TB8,接收時(shí)為RB8),停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。
波特率的計(jì)算
在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來決定。
串行口的四種工作方式對(duì)應(yīng)三種波特率。由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。
方式0的波特率 = fosc/12
方式2的波特率 =(2SMOD/64)· fosc
方式1的波特率 =(2SMOD/32)·(T1溢出率)
方式3的波特率 =(2SMOD/32)·(T1溢出率)
當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。
T1 溢出率 = fosc /{12×[256 -(TH1)]}
在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定。常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。
串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制。具體步驟如下:
確定T1的工作方式(編程TMOD寄存器);
計(jì)算T1的初值,裝載TH1、TL1;
啟動(dòng)T1(編程TCON中的TR1位);
確定串行口控制(編程SCON寄存器);
串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。
第六節(jié)、液晶顯示
1602液晶
工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。
管腳功能
1602采用標(biāo)準(zhǔn)的16腳接口,其中:
第1腳:GND為電源地
第2腳:VCC接5V電源正極
第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度)。
第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。
第5腳:RW為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。
第6腳:E(或EN)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電
源。15腳背光正極,16腳背光負(fù)極。
特性
3.3V或5V工作電壓,對(duì)比度可調(diào)
內(nèi)含復(fù)位電路提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能,有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM,內(nèi)建有192個(gè)5X7點(diǎn)陣的字型的字符發(fā)生器CGROM,8個(gè)可由用戶自定義的5X7的字符發(fā)生器CGRAM,應(yīng)用微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。
操作控制
注:關(guān)于E=H脈沖——開始時(shí)初始化E為0,然后置E為1。
字符集
1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。在單片機(jī)編程中還可以用字符型常量或變量賦值,如'A’。因?yàn)镃GROM儲(chǔ)存的字符代碼與我們PC中的字符代碼是基本一致的,因此我們?cè)谙駾DRAM寫C51字符代碼程序時(shí)甚至可以直接用P1=‘A’這樣的方法。PC在編譯時(shí)就把'A'先轉(zhuǎn)換為41H代碼了。
字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(對(duì)于5X8點(diǎn)陣的字符,可以存放8組,5X10點(diǎn)陣的字符,存放4組),就是CGRAM了。
0x20~0x7F為標(biāo)準(zhǔn)的ASCII碼,0xA0~0xFF為日文字符和希臘文字符,其余字符碼(0x10~0x1F及0x80~0x9F)沒有定義。
1602的16進(jìn)制ASCII碼表地址:讀的時(shí)候,先讀上面那行,再讀左邊那列,如:感嘆號(hào)!的ASCII為0x21,字母B的ASCII為0x42(前面加0x表示十六進(jìn)制)。
8051模擬口接法
第七節(jié)、點(diǎn)陣LED顯示
8*8點(diǎn)陣外型和結(jié)構(gòu)
8X8點(diǎn)陣LED工作原理說明 :8X8點(diǎn)陣共由64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就 會(huì)點(diǎn)亮;因此要實(shí)現(xiàn)一根柱形的亮法,對(duì)應(yīng)的一列為一根豎柱,或者對(duì)應(yīng)的一行為一根橫柱,實(shí)現(xiàn)柱的亮的方法如下:一根豎柱:對(duì)應(yīng)的列置1,而行則采用掃描的方法來實(shí)現(xiàn)。 一根橫柱:對(duì)應(yīng)的行置0,而列則采用掃描的方法來實(shí)現(xiàn)。
第八節(jié)、紅外遙控
信號(hào)調(diào)制原理
基帶信號(hào):從信號(hào)源發(fā)出沒有經(jīng)過調(diào)制的原始信號(hào),特點(diǎn)是頻率較低,信號(hào)頻率從0開始,頻譜較寬。
調(diào)制:就是用待傳送信號(hào)去控制某個(gè)高頻信號(hào)的幅度、相位、頻率等參量變化的過程,即用一個(gè)信號(hào)去裝載另一個(gè)信號(hào)。
紅外遙控發(fā)送接收原理圖
NEC協(xié)議紅外遙控器
NEC數(shù)據(jù)格式:引導(dǎo)碼、用戶碼、用戶碼(或者用戶碼反碼)、按鍵鍵碼和鍵碼反碼,最后一個(gè)停止位。
引導(dǎo)碼:9ms的載波+4.5ms的空閑。
比特值“0”:560us的載波+560us的空閑。
比特值“1”:560us的載波+1.68ms的空閑。
第九節(jié)、AD、DA轉(zhuǎn)化
A/D和D/A的基本概念
模擬量:任何兩個(gè)數(shù)字之間都有無限個(gè)中間值,所以稱之為連續(xù)變化的量,也就是模擬量。
數(shù)字量:數(shù)字間有一定的間隔,不是連續(xù)的,即離散的量稱之為數(shù)字量。
A/D:Analog to Digital Converter,用模數(shù)轉(zhuǎn)換器實(shí)現(xiàn)模擬量到數(shù)字量的轉(zhuǎn)換,簡稱ADC。
D/A:Digital to Analog Converter,用數(shù)模轉(zhuǎn)換器實(shí)現(xiàn)數(shù)字量到模擬量的轉(zhuǎn)換,簡稱DAC。
A/D的主要指標(biāo)
1、ADC的位數(shù):1個(gè)n位的ADC表示這個(gè)ADC共有2的n次方個(gè)刻度。
2、基準(zhǔn)源:也叫做基準(zhǔn)電壓,是ADC的參考基準(zhǔn)。
3、分辨率:數(shù)字量變化一個(gè)最小刻度,模擬信號(hào)的變化量,定義為滿刻度量程與2n-1的比值。
4、INL(積分非線性度)和DNL(差分非線性度)
INL是指ADC器件在所有數(shù)值上對(duì)應(yīng)的模擬值,和真實(shí)值之間誤差最大的那個(gè)點(diǎn)的誤差值,單位是LSB。LSB(Least Significant Bit)是最低有效位的意思,它實(shí)際上對(duì)應(yīng)的就是ADC的分辨率。
DNL是指ADC相鄰兩個(gè)刻度之間最大的差異,單位也是LSB。
5、轉(zhuǎn)換速率:是指ADC每秒能進(jìn)行采樣轉(zhuǎn)換的最大次數(shù),單位是sps。
第十節(jié) 、實(shí)時(shí)時(shí)鐘DS1302
DS1302實(shí)時(shí)時(shí)鐘芯片
DS1302寄存器介紹
DS1302單字節(jié)寫操作時(shí)序
DS1302單字節(jié)讀操作時(shí)序
附錄1
ASCII碼表(見附件)
完整的Word格式文檔51黑下載地址: