




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計第
6
章
單片機常用接口電路設(shè)計6.1顯示器接口原理及應(yīng)用6.1.1
LED
顯示器6.1.2點陣顯示屏6.1.3
LCD
顯示器6.26.2.16.2.26.2.36.3鍵盤接口原理及應(yīng)用鍵盤工作原理獨立式按鍵的應(yīng)用矩陣式按鍵的應(yīng)用D/A,A/D
接口電路6.3.1
AT89S51
與
DAC0832
芯片接口設(shè)計6.3.2
AT89S51
與
ADC0809
接口設(shè)計
1第
6
章
單片機常用接口電路設(shè)計教知識重點1.LED
顯示接口2.LCD
液晶顯示和接口
4.矩陣式按鍵接口6.ADC0809
的功能及應(yīng)用3.獨立式按鍵接口5.A/D
轉(zhuǎn)換和
D/A
轉(zhuǎn)換的概念7.DAC0832
的功能及應(yīng)用知識難點1.LED
動態(tài)顯示接口2.LCD
液晶顯示和接口3.矩陣式按鍵接口4.
ADC0809
工作過程
5.DAC0832
雙緩沖方式
從工作任務(wù)入手,讓學生逐步熟悉各種顯示器件和鍵盤的工作原理、接口,推薦教學方式
A/D
和
D/A
轉(zhuǎn)換器的應(yīng)用及編程方法。建議學時學推薦學習方法12
學時1.從簡單任務(wù)入手,學習
LED
數(shù)碼管時可以先回憶發(fā)光二極管的控制,再擴展到
8
個連在一起的發(fā)光二極管即數(shù)碼管。學習數(shù)碼管接口時可以先接
1
個數(shù)碼管再擴展到多個數(shù)碼管。2.類比法,LED數(shù)碼管的動態(tài)顯示和LED大屏幕顯示的原理相似,可以
2單片機原理及應(yīng)用技術(shù)
教學導航單片機原理及應(yīng)用技術(shù)
第
6
章
單片機常用接口電路設(shè)計比較學習。3.先通過任務(wù)制作,了解數(shù)模(D/A)之間的轉(zhuǎn)換現(xiàn)象及結(jié)果。收集訓練過程中出現(xiàn)的問題及疑問,從而引入理論知識,最后再回到任務(wù)中,之前的問題及疑問便迎刃而解。1.LED
動態(tài)顯示接口3.獨立式按鍵接口2.LCD
液晶顯示和接口
4.矩陣式按鍵接口必須掌握理論知識
5.ADC0809
與單片機之間的硬件連接及軟件編程
6.DAC0832
與單片機之間的硬件連接及軟件編程必須掌握的技能簡單顯示器件和鍵盤接口的應(yīng)用,
A/D
和
D/A
轉(zhuǎn)換器的應(yīng)用
3單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計6.1顯示器接口原理及應(yīng)用在單片機應(yīng)用系統(tǒng)中,顯示器是最常用的輸出設(shè)備。常用的顯示器有:數(shù)碼管(LED)、液晶顯示器(LCD)和熒光屏顯示器。其中以數(shù)碼管顯示最便宜,而且它的配置靈活,與單片機接口簡單,廣泛應(yīng)用于單片機系統(tǒng)中。6.1.1LED
顯示器
1.結(jié)構(gòu)及顯示原理
LED
顯示器是單片機應(yīng)用系統(tǒng)中常用的顯示器件。它是由若干個發(fā)光二極管組成的,
當發(fā)光二極管導通時,相應(yīng)的一個點或一個筆畫發(fā)亮.控制不同組合二極管導通,就能顯示出各種字符。如表6.l
所示。常用的
LED
顯示器是
7
段數(shù)碼管,這種顯示器有共陽極和共陰極兩種。如圖
6.1
所示,共陰極數(shù)碼管公共端接地,共陽極數(shù)
4單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計5碼管公共端接電源。每段發(fā)光二極管需要
5~l0mA
的驅(qū)動電流才能正常發(fā)光,一般需加限流電阻控制電流的大小。表
6.17
段
LED
字形碼顯示字符
0
1
2
3
4
5
6
7
8
9
A
B共陰字碼
0x3F
0x06
0x5B
0x4F
0x66
0x6D
0x7D
0x07
0x7F
0x6F
0x77
0x7C共陽字碼
0xC0
0xF9
0xA4
0xB0
0x99
0x92
0x82
0xF8
0x80
0x90
0x88
0x83顯示字符
C
D
E
F
H
L
P
R
U
-
.
熄滅共陰字碼
0x39
0x5E
0x79
0x71
0x76
0x38
0x73
0x31
0x3E
0x40
0x80
0x00共陽字碼
0xC6
0xA1
0x86
0x8E
0x89
0xC7
0x8C
0xCE
0xC1
0xBF
0x7F
0xFF單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計圖
6.17
段數(shù)碼管結(jié)構(gòu)圖
6單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
小問答
問:對于同一個字符,共陽極和共陰極的字型編碼之間有什么關(guān)系?
答:從表
6.1
中可以看出,當顯示字符“1”時,共陽極的字型碼為
0xF9,而共陰極的字型碼為
0x06,所以對于同一個字符,共陰和共陽碼的關(guān)系為取反。
問:如何判斷數(shù)碼管的結(jié)構(gòu)是共陽極還是共陰極?如何用萬用表測試數(shù)碼管的極性及好壞?
答:根據(jù)圖
6.1,通過判斷任意段與公共端連接的二極管的極性就可以判斷出是共陽極還是共陰極數(shù)碼管。假設(shè)數(shù)碼管是共陽極的,那么將萬用表的表內(nèi)電源正極(黑表筆)與數(shù)碼管的
com
端相接.然后用萬用表的表內(nèi)電源負極(紅表筆)逐個接觸數(shù)碼管的各段,數(shù)碼管的各段將逐個點亮,則數(shù)碼管是共陽極的;如果數(shù)碼管的段均不亮,則說明數(shù)碼管是共陰極的。也可將萬用表的紅黑表筆交換連接后測試。如果數(shù)碼管只有部分段點亮,而另一部分不亮,說明數(shù)碼管已經(jīng)損壞。
7單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計2.應(yīng)用舉例
數(shù)碼管的顯示方法可以分為兩種,即靜態(tài)顯示和動態(tài)顯示。
1)
LED
靜態(tài)顯示
靜態(tài)顯示就是當要顯示某個數(shù)字時,可以通過給
LED
的數(shù)據(jù)引腳設(shè)置相應(yīng)的高低電平即可實現(xiàn)顯示相應(yīng)數(shù)據(jù)。例如:有一個共陰的數(shù)碼管,只要給它的
abcdef
腳提供高電平,g
腳提供低電平即可顯示數(shù)字
0。這種照示方法電路簡單,程序也十分的簡潔。但是這種顯示方法占用的
I/O
端口較多,當顯示的位數(shù)在一位以上,一般都不采用這種顯示方法。
例如,一個
2
位靜態(tài)顯示電路,如圖
6.2
所示。由于顯示器中各位相互獨立,而且各位的顯示字符完全取決于對應(yīng)口的輸出數(shù)據(jù),如果數(shù)據(jù)不改變那么顯示器的顯示亮度將不會受影響,所以靜態(tài)顯示器的亮度都較高。但是從圖
6.2
中可以看出它需要
2
個
8
位的數(shù)據(jù)總線。這對于單片機來說占用了較多的
I/O
端口。所以顯示位數(shù)過多時,就不會采用靜態(tài)顯示這種辦法。
8單片機原理及應(yīng)用技術(shù)圖
6.2第
6
章
單片機常用接口電路設(shè)計
2
位數(shù)碼管靜態(tài)顯示電路
91.5單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
2)
LED
動態(tài)顯示
另一種顯示方法就是動態(tài)顯示。所謂動態(tài)顯示就是將要顯示的數(shù)按顯示數(shù)的順序在各個數(shù)碼管上一位一位地顯示,它利用人眼的視覺暫留效應(yīng)使人感覺不到是一位一位顯示的,而是一起顯示的。2位數(shù)碼管動態(tài)顯示的電路如圖
6.3
所示,它將每個顯示器的段代碼連在一起,所以同樣顯示的是
2
位,但是動態(tài)顯示的段代碼數(shù)據(jù)數(shù)卻只要
8
根。各位數(shù)碼管的公共端,也稱為“位選端”,由
P2.0,
P2.1控制。動態(tài)顯示時,數(shù)碼管的數(shù)目還可以再擴展。
10單片機原理及應(yīng)用技術(shù)圖
6.3第
6
章
單片機常用接口電路設(shè)計
2
位數(shù)碼管動態(tài)顯示電路
11單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
例
6.1
編制
2
個數(shù)碼管上穩(wěn)定顯示“01”2
個字符的動態(tài)顯示程序。2
位數(shù)碼管動態(tài)顯示“01”的程序如下。
//********************************************************************************
//程序:ex6_1.c
//功能:2
位
LED
數(shù)碼管動態(tài)掃描顯示
//********************************************************************************#include
<reg51.h>
sbit
COM0=P2^0;
sbit
COM1=P2^1;/*包含頭文件
REG51.H*///定義
P2.0
引腳位名稱為
COM0位選端//定義
P2.1
引腳位名稱為
COM1位選端unsigned
char
const
LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9
共陽極字形碼表
//********************************************************************************
//函數(shù)名:Delay
//函數(shù)功能:軟件延時函數(shù)
//形式參數(shù):unsigned
int
cnt
//********************************************************************************void
Delay(unsigned
int
cnt){
12單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計13
while(--cnt);}
//********************************************************************************
//函數(shù)名:main
//函數(shù)功能:主函數(shù)
//********************************************************************************main(){while(1)
{P3=LED[0];COM0=1;Delay(1000);COM0=0;P3=LED[1];COM1=1;Delay(1000);COM1=0;
//顯示字符碼碼表值送
P3//選中個位
//延時//關(guān)閉個位
//顯示字符碼碼表值送
P3//選中十位
//延時//關(guān)閉十位}}單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計屏和視頻顯示屏。與圖像顯示屏相比,圖文顯示屏的特點在于無論是單色還是彩色顯示屏都沒有顏色上的灰度差別,因此圖文顯示屏體現(xiàn)不出色彩的豐富性,而視頻顯示屏不僅能夠顯示運動、清晰和全彩色的圖像,還能夠播放電視和計算機信號。雖然這三者有一些區(qū)別,但它們最基礎(chǔ)的顯示
14控制原理都是相同的。
小問答
問:在
LED
數(shù)碼管動態(tài)顯示程序中,如果把延時
50ms
函數(shù)修改為延時
ls,
LED
數(shù)碼管顯示會有什么變化?為什么?
6
個數(shù)碼管上
由于人的眼睛存在“視覺駐留效應(yīng)”,必須保證每位數(shù)碼管顯示間斷的時間間
隔小于眼睛的駐留時間,才可以給人一種穩(wěn)定顯示的視覺效果。如果延時時間太
長,每位數(shù)碼管閃動頻率太慢,就不能產(chǎn)生穩(wěn)定顯示效果。
LED
點陣顯示屏是通過
PC
機將要顯示的漢字字模提取出來,發(fā)給單片機,然后顯示在點陣屏上,主要適用于室內(nèi)外漢字顯示。
LED
點陣顯示屏按照顯示的內(nèi)容可以分為圖文顯示屏、圖像顯示單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
2.LED
點陣顯示屏結(jié)構(gòu)及原理
LED
點陣顯示屏是把很多
LED
發(fā)光管按矩陣方式排列在一起,通過對每一個
LED
進行發(fā)光控制,來完成各種字符或圖形顯示的。最常見的LED
點陣顯示模塊有
5×7(5列
7行)、
7×9(7列
9行)、
8×8(8列
8
行)結(jié)構(gòu)。
圖
6.4
LED
點陣屏內(nèi)部等效電路
15單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
LED
點陣由一個一個的點(LED
發(fā)光管)組成,總點數(shù)為行數(shù)與列數(shù)的積,引腳數(shù)為行數(shù)與列數(shù)之和。
以
8×8
的
LED
點陣屏為例,其內(nèi)部等效電路如圖
6.4
所示。它由
8
列
8
行共
64
個
LED
構(gòu)成,對外有
16
個引腳,其中列線
8
根(Col0~Col7),行線
8
根(Row0~Row7)。
從圖
6.4
可以知道,要點亮跨接在某行某列上的發(fā)光管,要在對應(yīng)的行線輸出高電平,對應(yīng)的列線輸出低電平。如果在短時間內(nèi)依次點亮多個發(fā)光管,就可以看到多個發(fā)光管穩(wěn)定的點亮,就可以用這種動態(tài)的方式來顯示數(shù)字、字母和其它圖形符號。例如需要顯示“本”字,8×8
LED
點陣需要點亮的的位置和編碼數(shù)據(jù)如圖
6.5所示。
點陣的顯示過程是先給第
0
行送高電平,然后給
8
列送11101111;延時
2ms;再給第
1
行送高電平,然后給
8
列送
00000001,延時
2ms;……直到最后一行,不斷循環(huán)。
16單片機原理及應(yīng)用技術(shù)圖
6.5
第
6
章
單片機常用接口電路設(shè)計“本”字
8×8
LED
點陣編碼示意圖
17單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
3.
LED
點陣屏與單片機的接口
用單片機控制一個
8×8
的
LED
點陣屏為例,需要用到兩個并行端口,一個端口控制行線,一個端口控制列線。
如果顯示過程以行掃描的方式進行,掃描顯示過程是每次顯示一行
8
個
LED
發(fā)光管,顯示時間稱為行周期,
8
行掃描顯示完成后重新開始一輪掃描,這個時間段稱為場周期。行與行之間的延時
1~2ms。掃描頻率一般在
50Hz,應(yīng)保證掃描所有
8
行的時間和在
20
ms
以內(nèi)。
4.綜合應(yīng)用
例
6.2
LED
點陣的應(yīng)用電路圖,如圖
6.6
所示。編制程序驅(qū)動LED
點陣實現(xiàn)循環(huán)顯示數(shù)字
0~9
循環(huán)顯示。
18單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計圖
6.6
原理圖19單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計//********************************************************************************//程序:ex6_2.c//功能:LED
點陣實現(xiàn)循環(huán)顯示數(shù)字
0~9
控制程序(Keil
uVision4+Proteus
7.8
仿真通過)//********************************************************************************/*包含頭文件
reg51.h*/
/*宏定義后方便書寫*/
/*宏定義后方便書寫*/#include
<reg51.h>#define
uchar
unsigned
char#define
uint
unsigned
intvoid
Delay(uint
j)
{
uint
i;
for(;j>0;j--)
{for(i=0;i<50;i++);//大約延時
5ms
}
}void
main(){
uint
i,j,k,m;
20第
6
章
單片機常用接口電路設(shè)計單片機原理及應(yīng)用技術(shù)
uchar
w;uchar
code
DigitsTable[]={0xFF,0xC1,0x9C,0xBE,0xBE,0x9C,0xC1,0xFF,
//0123456780xFF,0xF7,0xC7,0xF7,0xF7,0xF7,0xF7,0xFF,
//0xFF,0xE1,0x9E,0xFD,0xF3,0x8F,0x80,0xFF,
//0xFF,0xE1,0x9E,0xF1,0xFE,0xBE,0xC1,0xFF,
//0xFF,0xF9,0xF5,0xCD,0x80,0xFD,0xFD,0xFF,
//0xFF,0xC0,0xDF,0xA1,0x9E,0xBE,0xC1,0xFF,
//0xFF,0xE1,0x9E,0x81,0xBE,0xBE,0xC1,0xFF,
//0xFF,0x80,0xFD,0xFB,0xF7,0xF7,0xEF,0xFF,
//0xFF,0xC1,0xBE,0xBD,0x80,0xBE,0xC1,0xFF,
//0xFF,0xC1,0xBE,0xBE,0xC0,0xBC,0xC3,0xFF};
//9while(1)
{for(k=0;k<10;k++)
{
for(m=0;m<200;m++)//顯示字符個數(shù)控制
(0~9,共
10
個)//每個字符掃描
200
次,字符顯示時間{
21單片機原理及應(yīng)用技術(shù)
w=0x01;
j=k*8;
for(i=0;i<8;i++)
{
P0=w;第
6
章
單片機常用接口電路設(shè)計//行掃描碼,從第
0
行開始//字符編碼數(shù)組下標
//每個字符有
8
個編碼(8
行),分
8
次送出//掃描碼送
P0
口選中某行P2=DigitsTable[j];Delay(2);//列線送出字符編碼//延時顯示w<<=1;j++;//行掃描碼變換,指向下一行//指向數(shù)組下一個編碼}}}}
}
小經(jīng)驗
在實際應(yīng)用時,在每條列線上需串接一個
300Ω
左右的限流電阻。同時,為提高單片機端口帶負載的能力,通常在端口和外接負載之間增加一個緩沖驅(qū)動器。在圖
6.6中,Pl
口通過
74LS245
(8路同相三態(tài)雙向總線收發(fā)器)與
LED
連接,提高了
P1
口輸出的電流,既保證了
LED
的亮度,又保護了單片機端口引腳。
22單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計6.1.3LCD
顯示器
1.結(jié)構(gòu)種類
液晶顯示器簡稱
LCD,它是利用液晶經(jīng)過處理后能改變光線的傳輸方向的特性實現(xiàn)顯示信息的。
LCD
具有體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點,正廣泛應(yīng)用于便攜式儀器儀表、智能儀器、消費類電子產(chǎn)品等領(lǐng)域。
液晶顯示是通過液晶顯示模塊實現(xiàn)的。液晶顯示模塊(LCDModule)是一種將液晶顯示器、控制器和驅(qū)動器裝配在一起的組件。按其功能可分為三類:筆段式液晶顯示器、字符點陣式顯示器和圖形點陣液晶顯示器。前兩種可顯示數(shù)字、字符和符號等,而圖形點陣式顯示器還可以顯示漢字和任意圖形,達到圖文并茂的效果。本書將只對應(yīng)用廣泛、使用比較簡單的字符點陣式液晶顯示器做介紹。
23單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
小資料
液晶顯示器的特點如下。
(1)低壓微功耗。工作電壓
3~5
V,工作電流為幾
μA,因此它成為便攜式和手持儀器儀表首選的顯示屏幕。
(2)平板型結(jié)構(gòu)。安裝時占用體積小,減小了設(shè)備體積。
(3)被動顯示。液晶本身不發(fā)光,而是靠調(diào)制外界光進行顯示,因此適合人的視覺習慣,不會使人眼睛疲勞。
(4)顯示信息量大。像素小,在相同面積上可容納更多信息。
(5)易于彩色化。
(6)沒有電磁輻射。在顯示期間不會產(chǎn)生電磁輻射,有利于人體健康。
(7)壽命長。LCD
器件本身無老化問題,因此壽命極長。
24單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
2.字符型液晶顯示模塊
RT-1602C
RT-1602C
字符型液晶模塊是兩行
16
個字的
5×7
點陣圖形來顯示字符的液晶顯示器。它的外觀形狀如圖
6.7
所示。
RT-1602C
采用標準的
16
針接口。各引腳情況如表
6.2
所示。
表
6.2
RT-1602C
引腳名稱
第
1
腳
第
2
腳
第
3
腳
第
4
腳
第
5
腳
第
6
腳第
7
~14
腳
第
15
腳
第
1
6
腳
引腳功能定義
VSS,電源地。
VDD,+5V
電源。
VL,液晶顯示偏壓信號。
RS,數(shù)據(jù)/命令寄存器選擇端,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。R/W
,讀/寫信號選擇端,高電平時進行讀操作,低電平時進行寫操作。當
RS
和
R/W
共同為低電平時可以寫入指令或者顯示地址;當
RS
為低電平。R/W
為高電平時可以讀忙信號;當
RS
為高電平,R/W
為低電平時可以寫入數(shù)據(jù)。
E
端為使能端,當
E
端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
D0~D7
為
8
位雙向數(shù)據(jù)線。
BLA,背光源正極。
BLK,背光源負極。
25單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
圖
6.7
RT-1602C
字符型液晶模塊外形圖
小提示
如果需要背光控制,可以采用單片機的I/O端口控制A,K端來實現(xiàn),控制方法與控制發(fā)光二極管的方法完全相同。
26單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計27
3.指令格式和指令功能
液晶顯示模塊
RT-1602C
的控制器采用
HD44780,控制器
HD44780內(nèi)有多個寄存器,通過
RS
和
R/W引腳共同決定選擇哪一個寄存器,選擇情況如表
6.3
所示。表
6.3HD44780
內(nèi)部寄存器選擇表RS
0
0
1
1R/W
0
1
0
1寄存器及操作指令寄存器寫入忙標志和地址計數(shù)器讀出數(shù)據(jù)寄存器寫入數(shù)據(jù)寄存器讀出總共有
11
條指令,它們的格式和功能如下。1)清屏命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
0D2
0D1
0D0
1單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計功能:(1)清除液晶顯示器,即將
DDRAM
的內(nèi)容全部填入"空白"的
ASCII碼
20H;(2)光標歸位,即將光標撤回液晶顯示屏的左上方;(3)將地址計數(shù)器(AC)的值設(shè)為
0。2)
光標歸位命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
0D2
0D1
1D0
x功能:(1)把光標撤回到顯示器的左上方;(2)把地址計數(shù)器(AC)的值設(shè)置為
0;(3)保持
DDRAM
的內(nèi)容不變。
28第
6
章
單片機常用接口電路設(shè)計29單片機原理及應(yīng)用技術(shù)3)
進入模式設(shè)置命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
0
D21
D1I/DD0
S功能:設(shè)定每次寫入
1
位數(shù)據(jù)后光標的移位方向,并且設(shè)定每次寫入的一個字符是否移動。參數(shù)設(shè)定的情況如下所示:位名設(shè)置I/D
S
0=寫入新數(shù)據(jù)后光標右移0=寫入新數(shù)據(jù)后顯示屏不移動
1=寫入新數(shù)據(jù)后光標左移1=寫入新數(shù)據(jù)后顯示屏整體右移
1
個字符
4)
顯示開關(guān)控制命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
1D2
DD1
CD0
B單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計功能:控制顯示器開/關(guān)、光標顯示/關(guān)閉以及光標是否閃爍。參數(shù)設(shè)定的情況如下:位名設(shè)置BCD
0=顯示功能關(guān)
0=無光標0=光標不閃爍1=顯示功能開
1=有光標
1=光標閃爍
5)
設(shè)定顯示屏或光標移動方向命令格式:RS
0R/W
0D7
0D6
0D5
0
D41
D3S/C
D2R/LD1
xD0
x功能:使光標移位或使整個顯示屏幕移位。參數(shù)設(shè)定的情況如下:S/C
0
0R/L
0
1
設(shè)定情況光標左移
1
格,且
AC
值減
1光標右移
1
格,且
AC
值加
1
30單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計311101顯示器上字符全部左移一格,但光標不動顯示器上字符全部右移一格,但光標不動
6)
功能設(shè)定命令格式:RS
0R/W
0D7
0D6
0D5
1D4DLD3
ND2
FD1
xD0
x功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下:位名設(shè)置
DL
NF0=數(shù)據(jù)總線為
4
位0=顯示
1
行0=5×7
點陣/每字符
1=數(shù)據(jù)總線為
8
位
1=顯示
2
行1=5×10
點陣/每字符
7)
設(shè)定
CGRAM
地址命令格式:RSR/WD7D6D5D4D3D2D1D00001CGRAM
的地址(6
位)單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計功能:設(shè)定用戶自定義的
CGRAM
地址,對用戶自定義的
CGRAM
訪問時,要先設(shè)定
CGRAM
地址,地址范圍為
0~63。8)
設(shè)定
DDRAM
地址命令格式:RSR/WD7D6D5D4D3D2D1D0001DDRAM
的地址(7
位)功能:設(shè)定當前顯示緩沖區(qū)的DDRAM地址,對DDRAM訪問時,要先設(shè)定DDRAM地址,地址范圍為
0~127。9)
讀取忙信號或
AC
地址命令格式:RSR/WD7D6D5D4D3D2D1D001BFAC
內(nèi)容(7
位)功能:(1)讀取忙碌信號
BF
的內(nèi)容,BF=1
表示液晶顯示器忙,暫時無法接
32單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計收單片機送來的數(shù)據(jù)或指令;
當
BF=0
時,液晶顯示器可以接收單片機送來的數(shù)據(jù)或指令;(2)讀取地址計數(shù)器(AC)的內(nèi)容。10)
數(shù)據(jù)寫入
DDRAM
或
CGRAM
命令格式:RSR/WD7D6D5D4D3D2D1D010要寫入的數(shù)據(jù)
D7~D0功能:(1)將字符碼寫入
DDRAM,以使液晶顯示屏顯示出相對應(yīng)的字符;(2)將使用者自己設(shè)計的圖形存入
CGRAM。11)
從
CGRAM
或
DDRAM
讀出數(shù)據(jù)的命令格式:RSR/WD7D6D5D4D3D2D1D011要讀出的數(shù)據(jù)
D7~D0功能:讀取
DDRAM
或
CGRAM
中的內(nèi)容。
33單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
小經(jīng)驗
字符型液晶顯示模塊比較通用,接口格式也比較統(tǒng)一,主要
是因為各制造商所采用的模塊控制器都是
HD44780
及其兼容產(chǎn)
品,不管顯示屏的尺寸如何,操作指令及其形成的模塊接口信號
定義都是兼容的。所以學會使用一種字符型液晶顯示模塊,就會
通曉所有的字符型液晶顯示模塊。
4.LCD
顯示器初始化
LCD
使用之前必須對它初始化,初始化可以通過復位完成,也可以在復位后完成,初始化過程如下。
1)清屏
2)功能設(shè)置
3)開/關(guān)顯示設(shè)置
4)輸入方式設(shè)置
5.綜合應(yīng)用
LCD
點陣顯示模塊的應(yīng)用電路圖,如圖
6.8
所示。
34單片機原理及應(yīng)用技術(shù)圖
6.8
第
6
章
單片機常用接口電路設(shè)計LCD
點陣顯示模塊的應(yīng)用電路
35單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
編程驅(qū)動
LCD
顯示器在第一行顯示字符串“Microcontroller”、第二行顯示字符串“LCD1602
Test
ok!”。
//********************************************************************************
//程序:ex6_3.c
//功能:1602
顯示程序(Keil
uVision4+Proteus
7.8
仿真通過)
//********************************************************************************#include<reg51.h>#define
uchar
unsigned
char#define
uint
unsigned
intsbit
LCD_RS=P2^0;sbit
LCD_RW=P2^1;sbit
EN=P2^2;sbit
BUSY=P3^7;
/*包含頭文件
reg51.h
*/
/*宏定義后方便書寫*/
/*宏定義后方便書寫*///定義
P2.0
引腳位名稱為
LCD_RS//定義
P2.1
引腳位名稱為
LCD_RW//定義
P2.2
引腳位名稱為
EN//定義
P3.7
引腳位名稱為
BUSYuchar
code
word1[]={"Microcontroller"};uchar
code
word2[]={"LCD1602
Test
ok!"};
36//顯示字符串//顯示字符串單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計37//********************************************************************************//函數(shù)名:Delay//函數(shù)功能:軟件延時函數(shù)//********************************************************************************void
Delay(){uint
i,j;
for(i=0;i<200;i++)
for(j=0;j<200;j++);//定義無符號字符型變量
i
和
j//雙重
for
循環(huán)語句實現(xiàn)軟件延時//循環(huán)體為空循環(huán)}//********************************************************************************//函數(shù)名:LCD_CheckBusy//函數(shù)功能:判斷
LCD
的忙碌狀態(tài)函數(shù)//********************************************************************************void
LCD_CheckBusy(){P3=0xff;do{LCD_RS=0;單片機原理及應(yīng)用技術(shù)
LCD_RW=1;
EN=0;
EN=1;
}
while(BUSY==1);第
6
章
單片機常用接口電路設(shè)計//LCD
忙,繼續(xù)查詢,否則退出
EN=0;}//********************************************************************************//函數(shù)名:LCD_WriteData//函數(shù)功能:寫數(shù)據(jù)函數(shù)//形式參數(shù):uchar
dat//********************************************************************************void
LCD_WriteData(uchar
dat){
LCD_CheckBusy();
EN=0;P3=dat;LCD_RS=1;//數(shù)據(jù)送端口//數(shù)據(jù)寄存器
38單片機原理及應(yīng)用技術(shù)
LCD_RW=0;
EN=1;
第
6
章
單片機常用接口電路設(shè)計//寫入數(shù)據(jù)寄存器
//執(zhí)行允許
(E
端由高電平跳變到低電平)
EN=0;}//********************************************************************************//函數(shù)名:LCD_WriteCommand//函數(shù)功能:寫指令函數(shù)//形式參數(shù):uchar
cmd//********************************************************************************void
LCD_WriteCommand(uchar
cmd){LCD_CheckBusy();EN=0;P3=cmd;LCD_RS=0;LCD_RW=0;EN=1;//指令送端口//指令寄存器//寫入
LCD
指令寄存器//執(zhí)行允許
(E
端由高電平跳變到低電平)EN=0;
39單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計}//********************************************************************************//函數(shù)名:LCD_Init//函數(shù)功能:LCD1602
初始化函數(shù)//********************************************************************************void
LCD_Init(){LCD_WriteCommand(0x38);LCD_WriteCommand(0x0f);LCD_WriteCommand(0x06);LCD_WriteCommand(0x01);//設(shè)置
8
位格式,2
行,5x7//整體顯示,光標,閃爍//設(shè)定輸入方式,增量不移位//清除屏幕顯示}//********************************************************************************//函數(shù)名:LCD_WriteString//函數(shù)功能:LCD1602
顯示字符函數(shù)//形式參數(shù):uchar
addr_start,
uchar
*p//********************************************************************************void
LCD_WriteString(uchar
addr_start,
uchar
*p)
40單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計{LCD_WriteCommand(addr_start);
while
(*p
!=
'\0')//行起始地址//字符串結(jié)束標志'\0'{LCD_WriteData(*p++);//取字符送出顯示
Delay();
}}//********************************************************************************//函數(shù)名:main//函數(shù)功能:主函數(shù)//********************************************************************************main(){LCD_Init();LCD_WriteString(0x80,word1);LCD_WriteString(0xc0,word2);LCD_WriteCommand(0x0c);while(1);//初始化//顯示字符串
1
//顯示字符串
2//整體顯示,關(guān)光標,不閃爍
//等待}
41單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計6.2鍵盤接口原理及應(yīng)用
鍵盤是由若干個按鍵組成的開關(guān)矩陣,它是最簡單的單片機輸入設(shè)備,通過鍵盤輸入數(shù)據(jù)或命令,實現(xiàn)簡單的人機對話。鍵盤上閉合鍵的識別是由專用硬件實現(xiàn)的,稱為編碼鍵盤,靠軟件實現(xiàn)的稱為非編碼鍵盤。6.2.1鍵盤工作原理
1.鍵輸入原理
在單片機應(yīng)用系統(tǒng)中,除了復位按鍵有專門的復位電路以及專一的復位功能外,其他的按鍵或鍵盤都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù),這些按鍵不只是簡單的電平輸入。
當所設(shè)定的功能鍵或數(shù)字鍵按下時,計算機應(yīng)用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能。鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。對
42單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計某些應(yīng)用系統(tǒng),例如智能儀器儀表,鍵輸入程序是整個應(yīng)用程序的重要部分。對于一組或一個按鍵,需要通過接口電路與
CPU
相連。CPU
可以采用查詢或中斷方式了解有無按鍵輸入并檢查是哪一個按鍵按下,并將該按鍵號送入累加器
ACC
中,然后通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完又返回到原始狀態(tài)。
小資料
按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點式開關(guān)按
鍵,如機械式開關(guān)、導電橡膠式開關(guān)等;另一類是無觸點開
關(guān)按鍵,如電氣式按鍵、磁感應(yīng)按鍵等。前者造價低,后者
壽命長。按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩
類。這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方
法。編碼鍵盤主要用硬件來實現(xiàn)對按鍵的識別,硬件結(jié)構(gòu)復
雜;非編碼鍵盤主要由軟件來實現(xiàn)按鍵的定義與識別,硬件
結(jié)構(gòu)簡單,軟件編程量大;這里將要介紹的獨立式按鍵和矩
陣式鍵盤都是非編碼鍵盤。
43單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
2.鍵輸入接口與軟件應(yīng)解決的問題
鍵輸入接口與軟件應(yīng)可靠快速地實現(xiàn)鍵信息輸入與執(zhí)行鍵功能任務(wù)。為此,應(yīng)解決以下問題。
1)鍵開關(guān)狀態(tài)的可靠輸入
目前,無論是按鍵或鍵盤大部分都是利用機械觸點的合、斷作用。機械觸點在閉合及斷開瞬間由于彈性作用的影響,在閉合及斷開瞬問均有抖動過程,從而使電壓信號也出現(xiàn)抖動,如圖
6.9
所示。抖動時間長短與開關(guān)機械特性有關(guān),一般為
5~l0ms。
按鍵的穩(wěn)定閉合時間,由操作人員的接鍵動作所確定,一般為十分之幾到幾秒之間。為了保證
CPU
對鍵的一次閉合僅做一次鍵輸入處理,必須去除抖動影響。
通常去除抖動影響的方法有硬、軟件兩種。在硬件上是采取在鍵輸出端加
RS
觸發(fā)器成雙穩(wěn)態(tài)電路構(gòu)成去抖動電路,如圖
6.10
所示。圖中兩個與非門構(gòu)成一個
RS
觸發(fā)器。當按鍵未按下時,輸出為“l(fā)”;當鍵按下時,輸出為“0”。此時即使按鍵因抖動而產(chǎn)生瞬時斷開(抖動跳開
b),只要按鍵不返回原始狀態(tài)
a,雙穩(wěn)態(tài)電路的狀態(tài)不改變,輸出保持為“0”,不會產(chǎn)生抖動的波形,這就是說,即
44單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計使
b
點的電壓波形是抖動的,但經(jīng)雙穩(wěn)態(tài)電路之后,其輸出波形為正規(guī)的矩形波。圖
6.9
閉合及斷開電壓波動圖
6.10
雙穩(wěn)態(tài)消抖電路
如果按鍵較多,則常用軟件方法去抖動,即檢測出鍵閉合后執(zhí)行一個延時程序產(chǎn)生
5~l0ms
的延時,等前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給
5~l0ms
的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序,從而去除了抖動影響。
2)對按鍵進行編碼以給定鍵值或直接給出鍵號
任何一組按鍵或鍵盤都要通過
I/O
線查詢按鍵的開關(guān)狀態(tài)。根據(jù)不同的鍵盤結(jié)構(gòu),采用不同的編碼方法。但無論有無編碼,以及
45單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計采用什么編碼,最后都要轉(zhuǎn)換成為與累加器中數(shù)值相對應(yīng)的鍵值,以實現(xiàn)按鍵功能程序的散轉(zhuǎn)轉(zhuǎn)移,因此一個完善的鍵盤控制程序應(yīng)能完成下述任務(wù)。
(1)檢測有無按鍵按下,有按鍵按下后,在無硬件去抖電路時,
應(yīng)用軟件延時方法除去抖動影響。
(2)可靠的邏輯處理辦法,如
n
鍵鎖定,即只處理一個鍵,其
間任何按下又松開的鍵不產(chǎn)影響,不管一次按鍵持續(xù)有多長時
間,僅執(zhí)行一次按鍵功能程序。
(3)輸出確定的鍵號以滿足散轉(zhuǎn)指令的要求。
3.按鍵盤掃描子程序的調(diào)用方式分類
當按鍵按下時,則通過執(zhí)行鍵盤掃描子程序找出按鍵的位置,并對按鍵進行識別。CPU
調(diào)用鍵盤掃描子程序的方式有程序控制方式、定時方式和中斷方式
3
種。
1)程序控制方式
在主程序中按一定的間隔設(shè)置調(diào)用鍵盤掃描子程序的命令。使CPU
在執(zhí)行主程序的過程中不斷地對鍵盤進行掃描。
46單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
2)定時方式
在主程序中設(shè)置定時器為中斷工作方式,鍵盤掃描子程序作為定時器的中斷服務(wù)程序,每產(chǎn)生一次定時器中斷調(diào)用一次鍵盤掃描子程序,達到定時掃描鍵盤的目的。
3)中斷方式
在中斷方式中,按鍵按下時所產(chǎn)生的信號一方面送入單片機的端口,另一方面通過組合電路送入單片機的外部中斷輸入端。當按鍵按下時,向
CPU
發(fā)出中斷請求,調(diào)用鍵盤掃描子程序。6.2.2獨立式按鍵的應(yīng)用
獨立式按鍵是指直接用
I/O
口線構(gòu)成的單個按健電路。每個獨立式按鍵單獨占用一根
I/O
口線,每根
I/O
口線的工作狀態(tài)不會影響其他
I/O
口線的工作狀態(tài),這是一種最簡單易懂的按鍵結(jié)構(gòu)。
1.獨立式按鍵結(jié)構(gòu)
獨立式按鍵電路結(jié)構(gòu)如圖
6.11
所示。
47單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計圖
6.11
獨立式按鍵電路
48單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計獨立式按鍵電路配置靈活,硬件結(jié)構(gòu)簡單,但每個按鍵必須占用一根
I/O
口線,在按鍵數(shù)量較多時,I/O
口線浪費較大。故只在按鍵數(shù)量較少時采用這種按鍵電路。
2.獨立式按鍵的軟件編制
例
6.4
編制程序?qū)D
6.11
所示電路掃描按鍵,并將鍵值通過連接在
P2
口的數(shù)碼管顯示出來。
//********************************************************************************
//程序:ex6_4.c
//功能:獨立式按鍵掃描程序(Keil
uVision4+Proteus
7.8
仿真通過)
//********************************************************************************#include
<reg52.h>sbit
SW0=P1^0;sbit
SW1=P1^1;sbit
SW2=P1^2;sbit
SW3=P1^3;sbit
SW4=P1^4;sbit
SW5=P1^5;/*包含頭文件
reg52.h
*///定義
P1.0
引腳位名稱為
SW0//定義
P1.0
引腳位名稱為
SW1//定義
P1.0
引腳位名稱為
SW2//定義
P1.0
引腳位名稱為
SW3//定義
P1.0
引腳位名稱為
SW4//定義
P1.0
引腳位名稱為
SW5
49單片機原理及應(yīng)用技術(shù)
sbit
SW6=P1^6;
sbit
SW7=P1^7;第
6
章
單片機常用接口電路設(shè)計//定義
P1.0
引腳位名稱為
SW6//定義
P1.0
引腳位名稱為
SW7
unsigned
char
code
Val[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//七段數(shù)碼管碼表
//********************************************************************************
//函數(shù)名:Delay
//函數(shù)功能:軟件延時函數(shù)
//形式參數(shù):uint
i
//********************************************************************************
void
Delay(unsigned
int
i)
{
while(i--);
}
//********************************************************************************
//函數(shù)名:main
//函數(shù)功能:主函數(shù)
//********************************************************************************
50單片機原理及應(yīng)用技術(shù)
main()
{
P2=0xff;
while(1)
{
if(!SW0)
{Delay(5);
if(!SW0)
{P2=Val[0];
}
}
else
if(!SW1)
{Delay(5);
if(!SW1)
{
P2=Val[1];
}
}
else
if(!SW2)
{Delay(5);
if(!SW2)第
6
章
單片機常用接口電路設(shè)計
//數(shù)碼管熄滅//掃描
SW0//消抖延時//再次掃描
SW0
確認
//
SW0
按下,鍵值顯示
0
//掃描
SW1
//消抖延時//再次掃描
SW1
確認//
SW1
按下,鍵值顯示
1//掃描
SW2
//消抖延時//再次掃描
SW2
確認{P2=Val[2];}//
SW2
按下,鍵值顯示
2
51單片機原理及應(yīng)用技術(shù)
}
else
if(!SW3)
{Delay(5);
if(!SW3)
{P2=Val[3];}
}
else
if(!SW4)
{Delay(5);
if(!SW4)
{
P2=Val[4];
}
}
else
if(!SW5)
{Delay(5);
if(!SW5)第
6
章
單片機常用接口電路設(shè)計//掃描
SW3
//消抖延時//再次掃描
SW3
確認//
SW3
按下,鍵值顯示
3
//掃描
SW4
//消抖延時//再次掃描
SW4
確認//
SW4
按下,鍵值顯示
4//掃描
SW5
//消抖延時//再次掃描
SW5
確認}{P2=Val[5];
}else
if(!SW6)
//
SW5
按下,鍵值顯示
5//掃描
SW6
52單片機原理及應(yīng)用技術(shù)
{Delay(5);
if(!SW6)
{P2=Val[6];}
}
else
if(!SW7)
{Delay(5);
if(!SW7)
{P2=Val[7];}第
6
章
單片機常用接口電路設(shè)計
//消抖延時//再次掃描
SW6
確認//
SW6
按下,鍵值顯示
6//掃描
SW7
//消抖延時//再次掃描
SW7
確認//
SW7
按下,鍵值顯示
7
}
}}
53單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計6.2.3矩陣式按鍵的應(yīng)用
獨立式按鍵電路每一個按鍵開關(guān)占一個
I/O
口線。當按鍵數(shù)量較多時,要占用較多的
I/O
口線。因此通常多采用矩陣式(也稱為行列式)鍵盤電路。
1.矩陣式鍵盤電路的結(jié)構(gòu)及原理
如圖6.12所示為用單片機的P0和P1口組成的矩陣式鍵盤電路。圖中行線
P0.0~P0.3,通過
4
個上拉電阻接+5V,為輸入狀態(tài)。列線為
P2.0~P2.3,處于輸出狀態(tài)。按鍵設(shè)置在行、列交點上,行、列線分別連接到按鍵開關(guān)的兩端,構(gòu)成
4×4
(16
個按鍵)的矩陣式鍵盤。
2.矩陣式鍵盤的識別
最常用的矩陣式鍵盤方法是編程掃描法,分為行掃描法(逐行掃描查詢法)和列掃描法(逐列掃描查詢法),這里采用列掃描法識別方法。
CPU
通過讀取行線的狀態(tài),即可知道有無按鍵按下。當鍵盤上沒有鍵閉合時,行、列線之間是斷開的,所有的行線輸入全部為高電
54單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計平。當鍵盤上某個鍵被按下閉合時,則對應(yīng)的行線和列線短路,行線輸入即為列線輸出。鍵盤掃描法識別可以分作以下兩個步驟。
1)判斷有無按鍵被按下
鍵被按下時,與此鍵相連的行線與列線將導通,而行線電平在無按鍵按下時處于高電平。顯然,讓所有列線處于低電平,當有鍵按下時按鍵所在行電平將被拉成低電平,根據(jù)此行電平的變化,便能判定一定有按鍵被按下。
2)判斷具體按鍵按下
方法是向列線上逐列送低電平。先送第
0
列低電平,第
1、2、3列為高電平,讀入行電平的狀態(tài)就顯示了位于第
0
行的
0、4、8、C這
4
個按鍵的狀態(tài),若讀入的行值全為高,則表示無鍵按下;再送第
1
列為低電平,第
0、2、3
列為高電平,讀入行電平的狀態(tài)就顯示了位于第
1
行的
1、5、9、D
這
4
個按鍵的狀態(tài),以些類推,直到4
列全部掃描完畢,再從第
0
列開始。通過上面的掃描方法可以得到按下按鍵所在的行號和列號,然后用公式計算法或查表法得到鍵值。鍵值與行號、列號之間的關(guān)系為:鍵值=行號
x4+列號。
55單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計圖
6.12
矩陣式鍵盤電路
56單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
3.矩陣式鍵盤的軟件編制
例
6.5
利用如圖
6.12
所示應(yīng)用電路,用列掃描法編制軟件掃描矩陣式鍵盤,并將掃描到的鍵值送到連接在
P3口的LED數(shù)管上顯示。
//********************************************************************************
//程序:ex6_5.c
//功能:矩陣式鍵盤掃描程序(Keil
uVision4+Proteus
7.8
仿真通過)
//********************************************************************************#include
<reg51.h>#define
uchar
unsigned
char/*包含頭文件
reg51.h*/
/*宏定義后方便書寫*/#define
uintunsigned
int/*宏定義后方便書寫*/
uchar
code
Table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//LED
碼表
//********************************************************************************
//函數(shù)名:Delay
//函數(shù)功能:軟件延時函數(shù)
//形式參數(shù):uint
i
57單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計//********************************************************************************void
Delay(uint
i){while(i--);}
//********************************************************************************
//函數(shù)名:KeyScan
//函數(shù)功能:掃描子程序
//返回值:KeyNum//********************************************************************************
uchar
KeyScan(){
uint
Row,Col,KeyNum,j,temp=0;
P0=0xff;
for(j=0;j<4;j++){P2=0xfe<<j;
temp=P0;//
Row
行值變量
,Col
列值變量,KeyNum
鍵值變量
//行線拉高(P0
口低
4
位)
//分
4
次(列)掃描//掃描列掃描碼送
P2
口(低
4
位),每次掃描一列//讀回行值
58第
6
章
單片機常用接口電路設(shè)計
//讀回行值取反,并去掉高
4
位
//如果讀回行值為
0
說明沒有按鍵按下
//消抖延時
//讀回行值
//讀回行值取反,并去掉高
4
位
//如果讀回行值為
0
說明沒有按鍵按下
//保存列值單片機原理及應(yīng)用技術(shù)
temp=~temp&0x0f;
if(temp!=0x00)
{Delay(5);
temp=P0;
temp=~temp&0x0f;
if(temp!=0x00)
{Col=j;
switch(temp){
case
0x01:Row=0;break;//
如果讀回值是
0x01,說明被按下的鍵在第
0
行case
0x02:Row=1;break;
//
如果讀回值是
0x02,說明被按下的鍵在第
1
行case
0x04:Row=2;break;
//
如果讀回值是
0x04,說明被按下的鍵在第
2
行case
0x08:Row=3;break;
//
如果讀回值是
0x08,說明被按下的鍵在第
3
行
default:break;
}break;
//如果讀回值是其它參數(shù)不處理//已經(jīng)確定行列值,提前結(jié)束掃描
}}
59單片機原理及應(yīng)用技術(shù)
}
KeyNum=Row*4+Col;
return
KeyNum;第
6
章
單片機常用接口電路設(shè)計
//鍵值=行號*4+列號
//鍵值返回主函數(shù)
}
//********************************************************************************
//函數(shù)名:main
//函數(shù)功能:主函數(shù)//********************************************************************************void
main(){
uchar
KeyNum;
while(1){
KeyNum=KeyScan();
P2=Table[KeyNum];//
KeyNum
鍵值變量//調(diào)用鍵盤掃描程序//鍵值送出顯示
}}
60單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
小知識
除了上面給出編程掃描法識別按鍵外,還可以采用下面兩種方法識別按鍵。
一種是定時掃描方式,每隔一段時間對鍵盤掃描一次;另一種是利用單片機定時器產(chǎn)生一個定時時間(例如
10
ms),采用中斷方式,當定時時間到產(chǎn)生定時器溢出中斷,CPU
響應(yīng)中斷后,在中斷函數(shù)中對鍵盤進行編程掃描,識別鍵值。
采用以上兩種鍵盤掃描方式時,無論是否有按鍵按下,
CPU都要定時掃描鍵盤,而單片機應(yīng)用系統(tǒng)工作時并不是經(jīng)常需掰輸入,因此,CPU
經(jīng)常處于空掃描狀態(tài)。為提高
CPU
的工作效率,可采用中斷掃描方式。當無鍵按下時,CPU
處理自己的工作;當有鍵按下時,產(chǎn)生中斷申請,CPU
轉(zhuǎn)去執(zhí)行鍵盤掃描函數(shù),并識別鍵值,這一應(yīng)用充分體現(xiàn)了中斷處理的實時處理功能。當有鍵按下時,向
CPU
申請中斷,若
CPU
開放外部中斷,則會響應(yīng)中斷請求,調(diào)用鍵盤掃描函數(shù)。
61單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計6.3D/A,A/D
接口電路
D/A
轉(zhuǎn)換器(Digital
to
Analog
Converter)是一種能把數(shù)字量信號轉(zhuǎn)換成模擬量信號的電子器件,
A/D
轉(zhuǎn)換器(Analog
to
Digital
Convcrter)則是一種能把模擬量信號轉(zhuǎn)換成數(shù)字量信號的電子器件。在單片機控制的應(yīng)用系統(tǒng)中,如圖
6.14
所示,經(jīng)常需要用到模數(shù)轉(zhuǎn)換器(A/D
轉(zhuǎn)換器)和數(shù)模轉(zhuǎn)換器(D/A
轉(zhuǎn)換器)。被控對象的過程信號可以是電量(如電流、電壓和開關(guān)量等),也可以是非電量(如溫度、壓力、速度和密度等),其數(shù)值是隨時間連續(xù)變化的。通常情況下,過程信號是由變送器和各類傳感器變換成相應(yīng)的模擬電量信號(多為電流信號),然后經(jīng)圖
6.13
中的多路電子開關(guān)匯集再經(jīng)過信號調(diào)理電路傳給
A/D
轉(zhuǎn)換器,由
A/D
轉(zhuǎn)換器轉(zhuǎn)換成相應(yīng)的數(shù)字量傳給單片機。單片機對過程信息進行運算和處理,把過程信息、進行輸出(如顯示,打印等),或輸出被控對象的工作狀態(tài)或故障狀況。另一方面,單片機還把處理后的數(shù)字量信號送給
D
/A
轉(zhuǎn)換器,再經(jīng)過
V/I
轉(zhuǎn)換(電壓/電流轉(zhuǎn)換。驅(qū)動執(zhí)行器對被控系統(tǒng)實施控制和調(diào)整,使之始終處于最佳狀態(tài)。
62單片機原理及應(yīng)用技術(shù)第
6
章
單片機常用接口電路設(shè)計
圖
6.13
單片機控制系統(tǒng)
A/D
轉(zhuǎn)換器在單片機控制系統(tǒng)中主要用于數(shù)據(jù)采集,向單片機提供被控對象的各種實時參數(shù),以便單片機對被控對象進行監(jiān)視;D/A轉(zhuǎn)換器用于模擬控制,通過機械或電氣手段對被控對象進行調(diào)整和控制。因此,
A/D
轉(zhuǎn)換器和
D/A
轉(zhuǎn)換器是架設(shè)在單片機和被控對象之間的橋梁,在單片機控制系統(tǒng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東云浮市“粵聚英才·粵見未來”招聘市級機關(guān)事業(yè)單位緊缺人才20人筆試模擬試題及答案解析
- 義務(wù)教育基本均衡發(fā)展國家督導檢查反饋問題整改臺賬
- 領(lǐng)導在婚宴上的致辭合集13篇
- 小學三年級數(shù)學三位數(shù)乘以一位數(shù)單元測驗訓練題大全附答案
- 年產(chǎn)3000噸螺栓生產(chǎn)線新建項目環(huán)評表
- 聚焦315消費者有哪些維權(quán)渠道
- 酒店經(jīng)理培訓收獲
- 進校園食品安全
- 金融行業(yè)文化培訓
- 中華法文化的制度解讀知到課后答案智慧樹章節(jié)測試答案2025年春西華大學
- 化工產(chǎn)品代加工協(xié)議模板
- DB11T 3034-2023 建筑消防設(shè)施檢測服務(wù)規(guī)范
- 美術(shù)作品著作權(quán)轉(zhuǎn)讓合同(2篇)
- 2024分布式電源接入電網(wǎng)技術(shù)規(guī)定
- 專注力訓練對學習成績的提升
- 幼兒園中班社會《猜猜這是誰的包》課件
- 2024CSCO胰腺癌診療指南解讀
- GB/T 10069.3-2024旋轉(zhuǎn)電機噪聲測定方法及限值第3部分:噪聲限值
- 2023年甘肅省蘭州市中考地理真題(原卷版)
- 2024年焊工(初級)證考試題庫及答案(500題)
- 風水服務(wù)合同
評論
0/150
提交評論