版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)6.1顯示器接口原理及應(yīng)用6.1.1
LED
顯示器6.1.2點(diǎn)陣顯示屏6.1.3
LCD
顯示器6.26.2.16.2.26.2.36.3鍵盤接口原理及應(yīng)用鍵盤工作原理獨(dú)立式按鍵的應(yīng)用矩陣式按鍵的應(yīng)用D/A,A/D
接口電路6.3.1
AT89S51
與
DAC0832
芯片接口設(shè)計(jì)6.3.2
AT89S51
與
ADC0809
接口設(shè)計(jì)
1第
6
章
單片機(jī)常用接口電路設(shè)計(jì)教知識重點(diǎn)1.LED
顯示接口2.LCD
液晶顯示和接口
4.矩陣式按鍵接口6.ADC0809
的功能及應(yīng)用3.獨(dú)立式按鍵接口5.A/D
轉(zhuǎn)換和
D/A
轉(zhuǎn)換的概念7.DAC0832
的功能及應(yīng)用知識難點(diǎn)1.LED
動態(tài)顯示接口2.LCD
液晶顯示和接口3.矩陣式按鍵接口4.
ADC0809
工作過程
5.DAC0832
雙緩沖方式
從工作任務(wù)入手,讓學(xué)生逐步熟悉各種顯示器件和鍵盤的工作原理、接口,推薦教學(xué)方式
A/D
和
D/A
轉(zhuǎn)換器的應(yīng)用及編程方法。建議學(xué)時(shí)學(xué)推薦學(xué)習(xí)方法12
學(xué)時(shí)1.從簡單任務(wù)入手,學(xué)習(xí)
LED
數(shù)碼管時(shí)可以先回憶發(fā)光二極管的控制,再擴(kuò)展到
8
個(gè)連在一起的發(fā)光二極管即數(shù)碼管。學(xué)習(xí)數(shù)碼管接口時(shí)可以先接
1
個(gè)數(shù)碼管再擴(kuò)展到多個(gè)數(shù)碼管。2.類比法,LED數(shù)碼管的動態(tài)顯示和LED大屏幕顯示的原理相似,可以
2單片機(jī)原理及應(yīng)用技術(shù)
教學(xué)導(dǎo)航單片機(jī)原理及應(yīng)用技術(shù)
第
6
章
單片機(jī)常用接口電路設(shè)計(jì)比較學(xué)習(xí)。3.先通過任務(wù)制作,了解數(shù)模(D/A)之間的轉(zhuǎn)換現(xiàn)象及結(jié)果。收集訓(xùn)練過程中出現(xiàn)的問題及疑問,從而引入理論知識,最后再回到任務(wù)中,之前的問題及疑問便迎刃而解。1.LED
動態(tài)顯示接口3.獨(dú)立式按鍵接口2.LCD
液晶顯示和接口
4.矩陣式按鍵接口必須掌握理論知識
5.ADC0809
與單片機(jī)之間的硬件連接及軟件編程
6.DAC0832
與單片機(jī)之間的硬件連接及軟件編程必須掌握的技能簡單顯示器件和鍵盤接口的應(yīng)用,
A/D
和
D/A
轉(zhuǎn)換器的應(yīng)用
3單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)6.1顯示器接口原理及應(yīng)用在單片機(jī)應(yīng)用系統(tǒng)中,顯示器是最常用的輸出設(shè)備。常用的顯示器有:數(shù)碼管(LED)、液晶顯示器(LCD)和熒光屏顯示器。其中以數(shù)碼管顯示最便宜,而且它的配置靈活,與單片機(jī)接口簡單,廣泛應(yīng)用于單片機(jī)系統(tǒng)中。6.1.1LED
顯示器
1.結(jié)構(gòu)及顯示原理
LED
顯示器是單片機(jī)應(yīng)用系統(tǒng)中常用的顯示器件。它是由若干個(gè)發(fā)光二極管組成的,
當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆畫發(fā)亮.控制不同組合二極管導(dǎo)通,就能顯示出各種字符。如表6.l
所示。常用的
LED
顯示器是
7
段數(shù)碼管,這種顯示器有共陽極和共陰極兩種。如圖
6.1
所示,共陰極數(shù)碼管公共端接地,共陽極數(shù)
4單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)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單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)圖
6.17
段數(shù)碼管結(jié)構(gòu)圖
6單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
小問答
問:對于同一個(gè)字符,共陽極和共陰極的字型編碼之間有什么關(guān)系?
答:從表
6.1
中可以看出,當(dāng)顯示字符“1”時(shí),共陽極的字型碼為
0xF9,而共陰極的字型碼為
0x06,所以對于同一個(gè)字符,共陰和共陽碼的關(guān)系為取反。
問:如何判斷數(shù)碼管的結(jié)構(gòu)是共陽極還是共陰極?如何用萬用表測試數(shù)碼管的極性及好壞?
答:根據(jù)圖
6.1,通過判斷任意段與公共端連接的二極管的極性就可以判斷出是共陽極還是共陰極數(shù)碼管。假設(shè)數(shù)碼管是共陽極的,那么將萬用表的表內(nèi)電源正極(黑表筆)與數(shù)碼管的
com
端相接.然后用萬用表的表內(nèi)電源負(fù)極(紅表筆)逐個(gè)接觸數(shù)碼管的各段,數(shù)碼管的各段將逐個(gè)點(diǎn)亮,則數(shù)碼管是共陽極的;如果數(shù)碼管的段均不亮,則說明數(shù)碼管是共陰極的。也可將萬用表的紅黑表筆交換連接后測試。如果數(shù)碼管只有部分段點(diǎn)亮,而另一部分不亮,說明數(shù)碼管已經(jīng)損壞。
7單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)2.應(yīng)用舉例
數(shù)碼管的顯示方法可以分為兩種,即靜態(tài)顯示和動態(tài)顯示。
1)
LED
靜態(tài)顯示
靜態(tài)顯示就是當(dāng)要顯示某個(gè)數(shù)字時(shí),可以通過給
LED
的數(shù)據(jù)引腳設(shè)置相應(yīng)的高低電平即可實(shí)現(xiàn)顯示相應(yīng)數(shù)據(jù)。例如:有一個(gè)共陰的數(shù)碼管,只要給它的
abcdef
腳提供高電平,g
腳提供低電平即可顯示數(shù)字
0。這種照示方法電路簡單,程序也十分的簡潔。但是這種顯示方法占用的
I/O
端口較多,當(dāng)顯示的位數(shù)在一位以上,一般都不采用這種顯示方法。
例如,一個(gè)
2
位靜態(tài)顯示電路,如圖
6.2
所示。由于顯示器中各位相互獨(dú)立,而且各位的顯示字符完全取決于對應(yīng)口的輸出數(shù)據(jù),如果數(shù)據(jù)不改變那么顯示器的顯示亮度將不會受影響,所以靜態(tài)顯示器的亮度都較高。但是從圖
6.2
中可以看出它需要
2
個(gè)
8
位的數(shù)據(jù)總線。這對于單片機(jī)來說占用了較多的
I/O
端口。所以顯示位數(shù)過多時(shí),就不會采用靜態(tài)顯示這種辦法。
8單片機(jī)原理及應(yīng)用技術(shù)圖
6.2第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2
位數(shù)碼管靜態(tài)顯示電路
91.5單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2)
LED
動態(tài)顯示
另一種顯示方法就是動態(tài)顯示。所謂動態(tài)顯示就是將要顯示的數(shù)按顯示數(shù)的順序在各個(gè)數(shù)碼管上一位一位地顯示,它利用人眼的視覺暫留效應(yīng)使人感覺不到是一位一位顯示的,而是一起顯示的。2位數(shù)碼管動態(tài)顯示的電路如圖
6.3
所示,它將每個(gè)顯示器的段代碼連在一起,所以同樣顯示的是
2
位,但是動態(tài)顯示的段代碼數(shù)據(jù)數(shù)卻只要
8
根。各位數(shù)碼管的公共端,也稱為“位選端”,由
P2.0,
P2.1控制。動態(tài)顯示時(shí),數(shù)碼管的數(shù)目還可以再擴(kuò)展。
10單片機(jī)原理及應(yīng)用技術(shù)圖
6.3第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2
位數(shù)碼管動態(tài)顯示電路
11單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
例
6.1
編制
2
個(gè)數(shù)碼管上穩(wěn)定顯示“01”2
個(gè)字符的動態(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ù)
//形式參數(shù):unsigned
int
cnt
//********************************************************************************void
Delay(unsigned
int
cnt){
12單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)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//選中個(gè)位
//延時(shí)//關(guān)閉個(gè)位
//顯示字符碼碼表值送
P3//選中十位
//延時(shí)//關(guān)閉十位}}單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)屏和視頻顯示屏。與圖像顯示屏相比,圖文顯示屏的特點(diǎn)在于無論是單色還是彩色顯示屏都沒有顏色上的灰度差別,因此圖文顯示屏體現(xiàn)不出色彩的豐富性,而視頻顯示屏不僅能夠顯示運(yùn)動、清晰和全彩色的圖像,還能夠播放電視和計(jì)算機(jī)信號。雖然這三者有一些區(qū)別,但它們最基礎(chǔ)的顯示
14控制原理都是相同的。
小問答
問:在
LED
數(shù)碼管動態(tài)顯示程序中,如果把延時(shí)
50ms
函數(shù)修改為延時(shí)
ls,
LED
數(shù)碼管顯示會有什么變化?為什么?
6
個(gè)數(shù)碼管上
由于人的眼睛存在“視覺駐留效應(yīng)”,必須保證每位數(shù)碼管顯示間斷的時(shí)間間
隔小于眼睛的駐留時(shí)間,才可以給人一種穩(wěn)定顯示的視覺效果。如果延時(shí)時(shí)間太
長,每位數(shù)碼管閃動頻率太慢,就不能產(chǎn)生穩(wěn)定顯示效果。
LED
點(diǎn)陣顯示屏是通過
PC
機(jī)將要顯示的漢字字模提取出來,發(fā)給單片機(jī),然后顯示在點(diǎn)陣屏上,主要適用于室內(nèi)外漢字顯示。
LED
點(diǎn)陣顯示屏按照顯示的內(nèi)容可以分為圖文顯示屏、圖像顯示單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2.LED
點(diǎn)陣顯示屏結(jié)構(gòu)及原理
LED
點(diǎn)陣顯示屏是把很多
LED
發(fā)光管按矩陣方式排列在一起,通過對每一個(gè)
LED
進(jìn)行發(fā)光控制,來完成各種字符或圖形顯示的。最常見的LED
點(diǎn)陣顯示模塊有
5×7(5列
7行)、
7×9(7列
9行)、
8×8(8列
8
行)結(jié)構(gòu)。
圖
6.4
LED
點(diǎn)陣屏內(nèi)部等效電路
15單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
LED
點(diǎn)陣由一個(gè)一個(gè)的點(diǎn)(LED
發(fā)光管)組成,總點(diǎn)數(shù)為行數(shù)與列數(shù)的積,引腳數(shù)為行數(shù)與列數(shù)之和。
以
8×8
的
LED
點(diǎn)陣屏為例,其內(nèi)部等效電路如圖
6.4
所示。它由
8
列
8
行共
64
個(gè)
LED
構(gòu)成,對外有
16
個(gè)引腳,其中列線
8
根(Col0~Col7),行線
8
根(Row0~Row7)。
從圖
6.4
可以知道,要點(diǎn)亮跨接在某行某列上的發(fā)光管,要在對應(yīng)的行線輸出高電平,對應(yīng)的列線輸出低電平。如果在短時(shí)間內(nèi)依次點(diǎn)亮多個(gè)發(fā)光管,就可以看到多個(gè)發(fā)光管穩(wěn)定的點(diǎn)亮,就可以用這種動態(tài)的方式來顯示數(shù)字、字母和其它圖形符號。例如需要顯示“本”字,8×8
LED
點(diǎn)陣需要點(diǎn)亮的的位置和編碼數(shù)據(jù)如圖
6.5所示。
點(diǎn)陣的顯示過程是先給第
0
行送高電平,然后給
8
列送11101111;延時(shí)
2ms;再給第
1
行送高電平,然后給
8
列送
00000001,延時(shí)
2ms;……直到最后一行,不斷循環(huán)。
16單片機(jī)原理及應(yīng)用技術(shù)圖
6.5
第
6
章
單片機(jī)常用接口電路設(shè)計(jì)“本”字
8×8
LED
點(diǎn)陣編碼示意圖
17單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
3.
LED
點(diǎn)陣屏與單片機(jī)的接口
用單片機(jī)控制一個(gè)
8×8
的
LED
點(diǎn)陣屏為例,需要用到兩個(gè)并行端口,一個(gè)端口控制行線,一個(gè)端口控制列線。
如果顯示過程以行掃描的方式進(jìn)行,掃描顯示過程是每次顯示一行
8
個(gè)
LED
發(fā)光管,顯示時(shí)間稱為行周期,
8
行掃描顯示完成后重新開始一輪掃描,這個(gè)時(shí)間段稱為場周期。行與行之間的延時(shí)
1~2ms。掃描頻率一般在
50Hz,應(yīng)保證掃描所有
8
行的時(shí)間和在
20
ms
以內(nèi)。
4.綜合應(yīng)用
例
6.2
LED
點(diǎn)陣的應(yīng)用電路圖,如圖
6.6
所示。編制程序驅(qū)動LED
點(diǎn)陣實(shí)現(xiàn)循環(huán)顯示數(shù)字
0~9
循環(huán)顯示。
18單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)圖
6.6
原理圖19單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)//********************************************************************************//程序:ex6_2.c//功能:LED
點(diǎn)陣實(shí)現(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++);//大約延時(shí)
5ms
}
}void
main(){
uint
i,j,k,m;
20第
6
章
單片機(jī)常用接口電路設(shè)計(jì)單片機(jī)原理及應(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++)//顯示字符個(gè)數(shù)控制
(0~9,共
10
個(gè))//每個(gè)字符掃描
200
次,字符顯示時(shí)間{
21單片機(jī)原理及應(yīng)用技術(shù)
w=0x01;
j=k*8;
for(i=0;i<8;i++)
{
P0=w;第
6
章
單片機(jī)常用接口電路設(shè)計(jì)//行掃描碼,從第
0
行開始//字符編碼數(shù)組下標(biāo)
//每個(gè)字符有
8
個(gè)編碼(8
行),分
8
次送出//掃描碼送
P0
口選中某行P2=DigitsTable[j];Delay(2);//列線送出字符編碼//延時(shí)顯示w<<=1;j++;//行掃描碼變換,指向下一行//指向數(shù)組下一個(gè)編碼}}}}
}
小經(jīng)驗(yàn)
在實(shí)際應(yīng)用時(shí),在每條列線上需串接一個(gè)
300Ω
左右的限流電阻。同時(shí),為提高單片機(jī)端口帶負(fù)載的能力,通常在端口和外接負(fù)載之間增加一個(gè)緩沖驅(qū)動器。在圖
6.6中,Pl
口通過
74LS245
(8路同相三態(tài)雙向總線收發(fā)器)與
LED
連接,提高了
P1
口輸出的電流,既保證了
LED
的亮度,又保護(hù)了單片機(jī)端口引腳。
22單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)6.1.3LCD
顯示器
1.結(jié)構(gòu)種類
液晶顯示器簡稱
LCD,它是利用液晶經(jīng)過處理后能改變光線的傳輸方向的特性實(shí)現(xiàn)顯示信息的。
LCD
具有體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點(diǎn),正廣泛應(yīng)用于便攜式儀器儀表、智能儀器、消費(fèi)類電子產(chǎn)品等領(lǐng)域。
液晶顯示是通過液晶顯示模塊實(shí)現(xiàn)的。液晶顯示模塊(LCDModule)是一種將液晶顯示器、控制器和驅(qū)動器裝配在一起的組件。按其功能可分為三類:筆段式液晶顯示器、字符點(diǎn)陣式顯示器和圖形點(diǎn)陣液晶顯示器。前兩種可顯示數(shù)字、字符和符號等,而圖形點(diǎn)陣式顯示器還可以顯示漢字和任意圖形,達(dá)到圖文并茂的效果。本書將只對應(yīng)用廣泛、使用比較簡單的字符點(diǎn)陣式液晶顯示器做介紹。
23單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
小資料
液晶顯示器的特點(diǎn)如下。
(1)低壓微功耗。工作電壓
3~5
V,工作電流為幾
μA,因此它成為便攜式和手持儀器儀表首選的顯示屏幕。
(2)平板型結(jié)構(gòu)。安裝時(shí)占用體積小,減小了設(shè)備體積。
(3)被動顯示。液晶本身不發(fā)光,而是靠調(diào)制外界光進(jìn)行顯示,因此適合人的視覺習(xí)慣,不會使人眼睛疲勞。
(4)顯示信息量大。像素小,在相同面積上可容納更多信息。
(5)易于彩色化。
(6)沒有電磁輻射。在顯示期間不會產(chǎn)生電磁輻射,有利于人體健康。
(7)壽命長。LCD
器件本身無老化問題,因此壽命極長。
24單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2.字符型液晶顯示模塊
RT-1602C
RT-1602C
字符型液晶模塊是兩行
16
個(gè)字的
5×7
點(diǎn)陣圖形來顯示字符的液晶顯示器。它的外觀形狀如圖
6.7
所示。
RT-1602C
采用標(biāo)準(zhǔn)的
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í)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。R/W
,讀/寫信號選擇端,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)
RS
和
R/W
共同為低電平時(shí)可以寫入指令或者顯示地址;當(dāng)
RS
為低電平。R/W
為高電平時(shí)可以讀忙信號;當(dāng)
RS
為高電平,R/W
為低電平時(shí)可以寫入數(shù)據(jù)。
E
端為使能端,當(dāng)
E
端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。
D0~D7
為
8
位雙向數(shù)據(jù)線。
BLA,背光源正極。
BLK,背光源負(fù)極。
25單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
圖
6.7
RT-1602C
字符型液晶模塊外形圖
小提示
如果需要背光控制,可以采用單片機(jī)的I/O端口控制A,K端來實(shí)現(xiàn),控制方法與控制發(fā)光二極管的方法完全相同。
26單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)27
3.指令格式和指令功能
液晶顯示模塊
RT-1602C
的控制器采用
HD44780,控制器
HD44780內(nèi)有多個(gè)寄存器,通過
RS
和
R/W引腳共同決定選擇哪一個(gè)寄存器,選擇情況如表
6.3
所示。表
6.3HD44780
內(nèi)部寄存器選擇表RS
0
0
1
1R/W
0
1
0
1寄存器及操作指令寄存器寫入忙標(biāo)志和地址計(jì)數(shù)器讀出數(shù)據(jù)寄存器寫入數(shù)據(jù)寄存器讀出總共有
11
條指令,它們的格式和功能如下。1)清屏命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
0D2
0D1
0D0
1單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)功能:(1)清除液晶顯示器,即將
DDRAM
的內(nèi)容全部填入"空白"的
ASCII碼
20H;(2)光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方;(3)將地址計(jì)數(shù)器(AC)的值設(shè)為
0。2)
光標(biāo)歸位命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
0D2
0D1
1D0
x功能:(1)把光標(biāo)撤回到顯示器的左上方;(2)把地址計(jì)數(shù)器(AC)的值設(shè)置為
0;(3)保持
DDRAM
的內(nèi)容不變。
28第
6
章
單片機(jī)常用接口電路設(shè)計(jì)29單片機(jī)原理及應(yīng)用技術(shù)3)
進(jìn)入模式設(shè)置命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
0
D21
D1I/DD0
S功能:設(shè)定每次寫入
1
位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個(gè)字符是否移動。參數(shù)設(shè)定的情況如下所示:位名設(shè)置I/D
S
0=寫入新數(shù)據(jù)后光標(biāo)右移0=寫入新數(shù)據(jù)后顯示屏不移動
1=寫入新數(shù)據(jù)后光標(biāo)左移1=寫入新數(shù)據(jù)后顯示屏整體右移
1
個(gè)字符
4)
顯示開關(guān)控制命令格式:RS
0R/W
0D7
0D6
0D5
0D4
0D3
1D2
DD1
CD0
B單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)功能:控制顯示器開/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。參數(shù)設(shè)定的情況如下:位名設(shè)置BCD
0=顯示功能關(guān)
0=無光標(biāo)0=光標(biāo)不閃爍1=顯示功能開
1=有光標(biāo)
1=光標(biāo)閃爍
5)
設(shè)定顯示屏或光標(biāo)移動方向命令格式:RS
0R/W
0D7
0D6
0D5
0
D41
D3S/C
D2R/LD1
xD0
x功能:使光標(biāo)移位或使整個(gè)顯示屏幕移位。參數(shù)設(shè)定的情況如下:S/C
0
0R/L
0
1
設(shè)定情況光標(biāo)左移
1
格,且
AC
值減
1光標(biāo)右移
1
格,且
AC
值加
1
30單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)311101顯示器上字符全部左移一格,但光標(biāo)不動顯示器上字符全部右移一格,但光標(biāo)不動
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
點(diǎn)陣/每字符
1=數(shù)據(jù)總線為
8
位
1=顯示
2
行1=5×10
點(diǎn)陣/每字符
7)
設(shè)定
CGRAM
地址命令格式:RSR/WD7D6D5D4D3D2D1D00001CGRAM
的地址(6
位)單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)功能:設(shè)定用戶自定義的
CGRAM
地址,對用戶自定義的
CGRAM
訪問時(shí),要先設(shè)定
CGRAM
地址,地址范圍為
0~63。8)
設(shè)定
DDRAM
地址命令格式:RSR/WD7D6D5D4D3D2D1D0001DDRAM
的地址(7
位)功能:設(shè)定當(dāng)前顯示緩沖區(qū)的DDRAM地址,對DDRAM訪問時(shí),要先設(shè)定DDRAM地址,地址范圍為
0~127。9)
讀取忙信號或
AC
地址命令格式:RSR/WD7D6D5D4D3D2D1D001BFAC
內(nèi)容(7
位)功能:(1)讀取忙碌信號
BF
的內(nèi)容,BF=1
表示液晶顯示器忙,暫時(shí)無法接
32單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)收單片機(jī)送來的數(shù)據(jù)或指令;
當(dāng)
BF=0
時(shí),液晶顯示器可以接收單片機(jī)送來的數(shù)據(jù)或指令;(2)讀取地址計(jì)數(shù)器(AC)的內(nèi)容。10)
數(shù)據(jù)寫入
DDRAM
或
CGRAM
命令格式:RSR/WD7D6D5D4D3D2D1D010要寫入的數(shù)據(jù)
D7~D0功能:(1)將字符碼寫入
DDRAM,以使液晶顯示屏顯示出相對應(yīng)的字符;(2)將使用者自己設(shè)計(jì)的圖形存入
CGRAM。11)
從
CGRAM
或
DDRAM
讀出數(shù)據(jù)的命令格式:RSR/WD7D6D5D4D3D2D1D011要讀出的數(shù)據(jù)
D7~D0功能:讀取
DDRAM
或
CGRAM
中的內(nèi)容。
33單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
小經(jīng)驗(yàn)
字符型液晶顯示模塊比較通用,接口格式也比較統(tǒng)一,主要
是因?yàn)楦髦圃焐趟捎玫哪K控制器都是
HD44780
及其兼容產(chǎn)
品,不管顯示屏的尺寸如何,操作指令及其形成的模塊接口信號
定義都是兼容的。所以學(xué)會使用一種字符型液晶顯示模塊,就會
通曉所有的字符型液晶顯示模塊。
4.LCD
顯示器初始化
LCD
使用之前必須對它初始化,初始化可以通過復(fù)位完成,也可以在復(fù)位后完成,初始化過程如下。
1)清屏
2)功能設(shè)置
3)開/關(guān)顯示設(shè)置
4)輸入方式設(shè)置
5.綜合應(yīng)用
LCD
點(diǎn)陣顯示模塊的應(yīng)用電路圖,如圖
6.8
所示。
34單片機(jī)原理及應(yīng)用技術(shù)圖
6.8
第
6
章
單片機(jī)常用接口電路設(shè)計(jì)LCD
點(diǎn)陣顯示模塊的應(yīng)用電路
35單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
編程驅(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//顯示字符串//顯示字符串單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)37//********************************************************************************//函數(shù)名:Delay//函數(shù)功能:軟件延時(shí)函數(shù)//********************************************************************************void
Delay(){uint
i,j;
for(i=0;i<200;i++)
for(j=0;j<200;j++);//定義無符號字符型變量
i
和
j//雙重
for
循環(huán)語句實(shí)現(xiàn)軟件延時(shí)//循環(huán)體為空循環(huán)}//********************************************************************************//函數(shù)名:LCD_CheckBusy//函數(shù)功能:判斷
LCD
的忙碌狀態(tài)函數(shù)//********************************************************************************void
LCD_CheckBusy(){P3=0xff;do{LCD_RS=0;單片機(jī)原理及應(yīng)用技術(shù)
LCD_RW=1;
EN=0;
EN=1;
}
while(BUSY==1);第
6
章
單片機(jī)常用接口電路設(shè)計(jì)//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單片機(jī)原理及應(yīng)用技術(shù)
LCD_RW=0;
EN=1;
第
6
章
單片機(jī)常用接口電路設(shè)計(jì)//寫入數(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單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)}//********************************************************************************//函數(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//整體顯示,光標(biāo),閃爍//設(shè)定輸入方式,增量不移位//清除屏幕顯示}//********************************************************************************//函數(shù)名:LCD_WriteString//函數(shù)功能:LCD1602
顯示字符函數(shù)//形式參數(shù):uchar
addr_start,
uchar
*p//********************************************************************************void
LCD_WriteString(uchar
addr_start,
uchar
*p)
40單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì){LCD_WriteCommand(addr_start);
while
(*p
!=
'\0')//行起始地址//字符串結(jié)束標(biāo)志'\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)光標(biāo),不閃爍
//等待}
41單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)6.2鍵盤接口原理及應(yīng)用
鍵盤是由若干個(gè)按鍵組成的開關(guān)矩陣,它是最簡單的單片機(jī)輸入設(shè)備,通過鍵盤輸入數(shù)據(jù)或命令,實(shí)現(xiàn)簡單的人機(jī)對話。鍵盤上閉合鍵的識別是由專用硬件實(shí)現(xiàn)的,稱為編碼鍵盤,靠軟件實(shí)現(xiàn)的稱為非編碼鍵盤。6.2.1鍵盤工作原理
1.鍵輸入原理
在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門的復(fù)位電路以及專一的復(fù)位功能外,其他的按鍵或鍵盤都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù),這些按鍵不只是簡單的電平輸入。
當(dāng)所設(shè)定的功能鍵或數(shù)字鍵按下時(shí),計(jì)算機(jī)應(yīng)用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能。鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。對
42單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)某些應(yīng)用系統(tǒng),例如智能儀器儀表,鍵輸入程序是整個(gè)應(yīng)用程序的重要部分。對于一組或一個(gè)按鍵,需要通過接口電路與
CPU
相連。CPU
可以采用查詢或中斷方式了解有無按鍵輸入并檢查是哪一個(gè)按鍵按下,并將該按鍵號送入累加器
ACC
中,然后通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完又返回到原始狀態(tài)。
小資料
按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點(diǎn)式開關(guān)按
鍵,如機(jī)械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;另一類是無觸點(diǎn)開
關(guān)按鍵,如電氣式按鍵、磁感應(yīng)按鍵等。前者造價(jià)低,后者
壽命長。按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩
類。這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方
法。編碼鍵盤主要用硬件來實(shí)現(xiàn)對按鍵的識別,硬件結(jié)構(gòu)復(fù)
雜;非編碼鍵盤主要由軟件來實(shí)現(xiàn)按鍵的定義與識別,硬件
結(jié)構(gòu)簡單,軟件編程量大;這里將要介紹的獨(dú)立式按鍵和矩
陣式鍵盤都是非編碼鍵盤。
43單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2.鍵輸入接口與軟件應(yīng)解決的問題
鍵輸入接口與軟件應(yīng)可靠快速地實(shí)現(xiàn)鍵信息輸入與執(zhí)行鍵功能任務(wù)。為此,應(yīng)解決以下問題。
1)鍵開關(guān)狀態(tài)的可靠輸入
目前,無論是按鍵或鍵盤大部分都是利用機(jī)械觸點(diǎn)的合、斷作用。機(jī)械觸點(diǎn)在閉合及斷開瞬間由于彈性作用的影響,在閉合及斷開瞬問均有抖動過程,從而使電壓信號也出現(xiàn)抖動,如圖
6.9
所示。抖動時(shí)間長短與開關(guān)機(jī)械特性有關(guān),一般為
5~l0ms。
按鍵的穩(wěn)定閉合時(shí)間,由操作人員的接鍵動作所確定,一般為十分之幾到幾秒之間。為了保證
CPU
對鍵的一次閉合僅做一次鍵輸入處理,必須去除抖動影響。
通常去除抖動影響的方法有硬、軟件兩種。在硬件上是采取在鍵輸出端加
RS
觸發(fā)器成雙穩(wěn)態(tài)電路構(gòu)成去抖動電路,如圖
6.10
所示。圖中兩個(gè)與非門構(gòu)成一個(gè)
RS
觸發(fā)器。當(dāng)按鍵未按下時(shí),輸出為“l(fā)”;當(dāng)鍵按下時(shí),輸出為“0”。此時(shí)即使按鍵因抖動而產(chǎn)生瞬時(shí)斷開(抖動跳開
b),只要按鍵不返回原始狀態(tài)
a,雙穩(wěn)態(tài)電路的狀態(tài)不改變,輸出保持為“0”,不會產(chǎn)生抖動的波形,這就是說,即
44單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)使
b
點(diǎn)的電壓波形是抖動的,但經(jīng)雙穩(wěn)態(tài)電路之后,其輸出波形為正規(guī)的矩形波。圖
6.9
閉合及斷開電壓波動圖
6.10
雙穩(wěn)態(tài)消抖電路
如果按鍵較多,則常用軟件方法去抖動,即檢測出鍵閉合后執(zhí)行一個(gè)延時(shí)程序產(chǎn)生
5~l0ms
的延時(shí),等前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給
5~l0ms
的延時(shí),待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序,從而去除了抖動影響。
2)對按鍵進(jìn)行編碼以給定鍵值或直接給出鍵號
任何一組按鍵或鍵盤都要通過
I/O
線查詢按鍵的開關(guān)狀態(tài)。根據(jù)不同的鍵盤結(jié)構(gòu),采用不同的編碼方法。但無論有無編碼,以及
45單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)采用什么編碼,最后都要轉(zhuǎn)換成為與累加器中數(shù)值相對應(yīng)的鍵值,以實(shí)現(xiàn)按鍵功能程序的散轉(zhuǎn)轉(zhuǎn)移,因此一個(gè)完善的鍵盤控制程序應(yīng)能完成下述任務(wù)。
(1)檢測有無按鍵按下,有按鍵按下后,在無硬件去抖電路時(shí),
應(yīng)用軟件延時(shí)方法除去抖動影響。
(2)可靠的邏輯處理辦法,如
n
鍵鎖定,即只處理一個(gè)鍵,其
間任何按下又松開的鍵不產(chǎn)影響,不管一次按鍵持續(xù)有多長時(shí)
間,僅執(zhí)行一次按鍵功能程序。
(3)輸出確定的鍵號以滿足散轉(zhuǎn)指令的要求。
3.按鍵盤掃描子程序的調(diào)用方式分類
當(dāng)按鍵按下時(shí),則通過執(zhí)行鍵盤掃描子程序找出按鍵的位置,并對按鍵進(jìn)行識別。CPU
調(diào)用鍵盤掃描子程序的方式有程序控制方式、定時(shí)方式和中斷方式
3
種。
1)程序控制方式
在主程序中按一定的間隔設(shè)置調(diào)用鍵盤掃描子程序的命令。使CPU
在執(zhí)行主程序的過程中不斷地對鍵盤進(jìn)行掃描。
46單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
2)定時(shí)方式
在主程序中設(shè)置定時(shí)器為中斷工作方式,鍵盤掃描子程序作為定時(shí)器的中斷服務(wù)程序,每產(chǎn)生一次定時(shí)器中斷調(diào)用一次鍵盤掃描子程序,達(dá)到定時(shí)掃描鍵盤的目的。
3)中斷方式
在中斷方式中,按鍵按下時(shí)所產(chǎn)生的信號一方面送入單片機(jī)的端口,另一方面通過組合電路送入單片機(jī)的外部中斷輸入端。當(dāng)按鍵按下時(shí),向
CPU
發(fā)出中斷請求,調(diào)用鍵盤掃描子程序。6.2.2獨(dú)立式按鍵的應(yīng)用
獨(dú)立式按鍵是指直接用
I/O
口線構(gòu)成的單個(gè)按健電路。每個(gè)獨(dú)立式按鍵單獨(dú)占用一根
I/O
口線,每根
I/O
口線的工作狀態(tài)不會影響其他
I/O
口線的工作狀態(tài),這是一種最簡單易懂的按鍵結(jié)構(gòu)。
1.獨(dú)立式按鍵結(jié)構(gòu)
獨(dú)立式按鍵電路結(jié)構(gòu)如圖
6.11
所示。
47單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)圖
6.11
獨(dú)立式按鍵電路
48單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)獨(dú)立式按鍵電路配置靈活,硬件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根
I/O
口線,在按鍵數(shù)量較多時(shí),I/O
口線浪費(fèi)較大。故只在按鍵數(shù)量較少時(shí)采用這種按鍵電路。
2.獨(dú)立式按鍵的軟件編制
例
6.4
編制程序?qū)D
6.11
所示電路掃描按鍵,并將鍵值通過連接在
P2
口的數(shù)碼管顯示出來。
//********************************************************************************
//程序:ex6_4.c
//功能:獨(dú)立式按鍵掃描程序(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單片機(jī)原理及應(yīng)用技術(shù)
sbit
SW6=P1^6;
sbit
SW7=P1^7;第
6
章
單片機(jī)常用接口電路設(shè)計(jì)//定義
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ù)
//形式參數(shù):uint
i
//********************************************************************************
void
Delay(unsigned
int
i)
{
while(i--);
}
//********************************************************************************
//函數(shù)名:main
//函數(shù)功能:主函數(shù)
//********************************************************************************
50單片機(jī)原理及應(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
章
單片機(jī)常用接口電路設(shè)計(jì)
//數(shù)碼管熄滅//掃描
SW0//消抖延時(shí)//再次掃描
SW0
確認(rèn)
//
SW0
按下,鍵值顯示
0
//掃描
SW1
//消抖延時(shí)//再次掃描
SW1
確認(rèn)//
SW1
按下,鍵值顯示
1//掃描
SW2
//消抖延時(shí)//再次掃描
SW2
確認(rèn){P2=Val[2];}//
SW2
按下,鍵值顯示
2
51單片機(jī)原理及應(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
章
單片機(jī)常用接口電路設(shè)計(jì)//掃描
SW3
//消抖延時(shí)//再次掃描
SW3
確認(rèn)//
SW3
按下,鍵值顯示
3
//掃描
SW4
//消抖延時(shí)//再次掃描
SW4
確認(rèn)//
SW4
按下,鍵值顯示
4//掃描
SW5
//消抖延時(shí)//再次掃描
SW5
確認(rèn)}{P2=Val[5];
}else
if(!SW6)
//
SW5
按下,鍵值顯示
5//掃描
SW6
52單片機(jī)原理及應(yīng)用技術(shù)
{Delay(5);
if(!SW6)
{P2=Val[6];}
}
else
if(!SW7)
{Delay(5);
if(!SW7)
{P2=Val[7];}第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
//消抖延時(shí)//再次掃描
SW6
確認(rèn)//
SW6
按下,鍵值顯示
6//掃描
SW7
//消抖延時(shí)//再次掃描
SW7
確認(rèn)//
SW7
按下,鍵值顯示
7
}
}}
53單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)6.2.3矩陣式按鍵的應(yīng)用
獨(dú)立式按鍵電路每一個(gè)按鍵開關(guān)占一個(gè)
I/O
口線。當(dāng)按鍵數(shù)量較多時(shí),要占用較多的
I/O
口線。因此通常多采用矩陣式(也稱為行列式)鍵盤電路。
1.矩陣式鍵盤電路的結(jié)構(gòu)及原理
如圖6.12所示為用單片機(jī)的P0和P1口組成的矩陣式鍵盤電路。圖中行線
P0.0~P0.3,通過
4
個(gè)上拉電阻接+5V,為輸入狀態(tài)。列線為
P2.0~P2.3,處于輸出狀態(tài)。按鍵設(shè)置在行、列交點(diǎn)上,行、列線分別連接到按鍵開關(guān)的兩端,構(gòu)成
4×4
(16
個(gè)按鍵)的矩陣式鍵盤。
2.矩陣式鍵盤的識別
最常用的矩陣式鍵盤方法是編程掃描法,分為行掃描法(逐行掃描查詢法)和列掃描法(逐列掃描查詢法),這里采用列掃描法識別方法。
CPU
通過讀取行線的狀態(tài),即可知道有無按鍵按下。當(dāng)鍵盤上沒有鍵閉合時(shí),行、列線之間是斷開的,所有的行線輸入全部為高電
54單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)平。當(dāng)鍵盤上某個(gè)鍵被按下閉合時(shí),則對應(yīng)的行線和列線短路,行線輸入即為列線輸出。鍵盤掃描法識別可以分作以下兩個(gè)步驟。
1)判斷有無按鍵被按下
鍵被按下時(shí),與此鍵相連的行線與列線將導(dǎo)通,而行線電平在無按鍵按下時(shí)處于高電平。顯然,讓所有列線處于低電平,當(dāng)有鍵按下時(shí)按鍵所在行電平將被拉成低電平,根據(jù)此行電平的變化,便能判定一定有按鍵被按下。
2)判斷具體按鍵按下
方法是向列線上逐列送低電平。先送第
0
列低電平,第
1、2、3列為高電平,讀入行電平的狀態(tài)就顯示了位于第
0
行的
0、4、8、C這
4
個(gè)按鍵的狀態(tài),若讀入的行值全為高,則表示無鍵按下;再送第
1
列為低電平,第
0、2、3
列為高電平,讀入行電平的狀態(tài)就顯示了位于第
1
行的
1、5、9、D
這
4
個(gè)按鍵的狀態(tài),以些類推,直到4
列全部掃描完畢,再從第
0
列開始。通過上面的掃描方法可以得到按下按鍵所在的行號和列號,然后用公式計(jì)算法或查表法得到鍵值。鍵值與行號、列號之間的關(guān)系為:鍵值=行號
x4+列號。
55單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)圖
6.12
矩陣式鍵盤電路
56單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
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ù)
//形式參數(shù):uint
i
57單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)//********************************************************************************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
章
單片機(jī)常用接口電路設(shè)計(jì)
//讀回行值取反,并去掉高
4
位
//如果讀回行值為
0
說明沒有按鍵按下
//消抖延時(shí)
//讀回行值
//讀回行值取反,并去掉高
4
位
//如果讀回行值為
0
說明沒有按鍵按下
//保存列值單片機(jī)原理及應(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單片機(jī)原理及應(yīng)用技術(shù)
}
KeyNum=Row*4+Col;
return
KeyNum;第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
//鍵值=行號*4+列號
//鍵值返回主函數(shù)
}
//********************************************************************************
//函數(shù)名:main
//函數(shù)功能:主函數(shù)//********************************************************************************void
main(){
uchar
KeyNum;
while(1){
KeyNum=KeyScan();
P2=Table[KeyNum];//
KeyNum
鍵值變量//調(diào)用鍵盤掃描程序//鍵值送出顯示
}}
60單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
小知識
除了上面給出編程掃描法識別按鍵外,還可以采用下面兩種方法識別按鍵。
一種是定時(shí)掃描方式,每隔一段時(shí)間對鍵盤掃描一次;另一種是利用單片機(jī)定時(shí)器產(chǎn)生一個(gè)定時(shí)時(shí)間(例如
10
ms),采用中斷方式,當(dāng)定時(shí)時(shí)間到產(chǎn)生定時(shí)器溢出中斷,CPU
響應(yīng)中斷后,在中斷函數(shù)中對鍵盤進(jìn)行編程掃描,識別鍵值。
采用以上兩種鍵盤掃描方式時(shí),無論是否有按鍵按下,
CPU都要定時(shí)掃描鍵盤,而單片機(jī)應(yīng)用系統(tǒng)工作時(shí)并不是經(jīng)常需掰輸入,因此,CPU
經(jīng)常處于空掃描狀態(tài)。為提高
CPU
的工作效率,可采用中斷掃描方式。當(dāng)無鍵按下時(shí),CPU
處理自己的工作;當(dāng)有鍵按下時(shí),產(chǎn)生中斷申請,CPU
轉(zhuǎn)去執(zhí)行鍵盤掃描函數(shù),并識別鍵值,這一應(yīng)用充分體現(xiàn)了中斷處理的實(shí)時(shí)處理功能。當(dāng)有鍵按下時(shí),向
CPU
申請中斷,若
CPU
開放外部中斷,則會響應(yīng)中斷請求,調(diào)用鍵盤掃描函數(shù)。
61單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)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ù)字量信號的電子器件。在單片機(jī)控制的應(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ù)值是隨時(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ù)字量傳給單片機(jī)。單片機(jī)對過程信息進(jìn)行運(yùn)算和處理,把過程信息、進(jìn)行輸出(如顯示,打印等),或輸出被控對象的工作狀態(tài)或故障狀況。另一方面,單片機(jī)還把處理后的數(shù)字量信號送給
D
/A
轉(zhuǎn)換器,再經(jīng)過
V/I
轉(zhuǎn)換(電壓/電流轉(zhuǎn)換。驅(qū)動執(zhí)行器對被控系統(tǒng)實(shí)施控制和調(diào)整,使之始終處于最佳狀態(tài)。
62單片機(jī)原理及應(yīng)用技術(shù)第
6
章
單片機(jī)常用接口電路設(shè)計(jì)
圖
6.13
單片機(jī)控制系統(tǒng)
A/D
轉(zhuǎn)換器在單片機(jī)控制系統(tǒng)中主要用于數(shù)據(jù)采集,向單片機(jī)提供被控對象的各種實(shí)時(shí)參數(shù),以便單片機(jī)對被控對象進(jìn)行監(jiān)視;D/A轉(zhuǎn)換器用于模擬控制,通過機(jī)械或電氣手段對被控對象進(jìn)行調(diào)整和控制。因此,
A/D
轉(zhuǎn)換器和
D/A
轉(zhuǎn)換器是架設(shè)在單片機(jī)和被控對象之間的橋梁,在單片機(jī)控制系統(tǒng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鼻飼并發(fā)癥的預(yù)防性護(hù)理措施
- 護(hù)理專利的發(fā)明創(chuàng)造與轉(zhuǎn)化機(jī)制
- 護(hù)理臨床評估方法與技巧
- 多參數(shù)融合分析
- 房地產(chǎn) -曼哈頓中城辦公室數(shù)據(jù)2025年12月 Manhattan Midtown Office Figures December 2025
- 多傳感器融合-第3篇
- 第三單元 第10課時(shí) 一次函數(shù)的圖象與性質(zhì)
- 高并發(fā)交易響應(yīng)機(jī)制
- 2026 年中職康復(fù)治療學(xué)類(康復(fù)治療基礎(chǔ))試題及答案
- 辦公場地租賃押金條款協(xié)議2025年修訂版
- 2025年沈陽華晨專用車有限公司公開招聘參考筆試題庫及答案解析
- 2025年投融資崗位筆試試題及答案
- 烤房轉(zhuǎn)讓合同范本
- (一診)達(dá)州市2026屆高三第一次診斷性測試歷史試題(含答案)
- 《汽車網(wǎng)絡(luò)與新媒體營銷》期末考試復(fù)習(xí)題庫(附答案)
- 外一骨科年終總結(jié)
- 走遍天下書為伴侶課件
- 2025四川成都東部新區(qū)招聘編外工作人員29人筆試考試參考題庫及答案解析
- 輔警筆試題庫及答案臨沂
- (已瘦身)(新教材)2025年部編人教版三年級上冊語文全冊期末復(fù)習(xí)單元復(fù)習(xí)課件
- 2026中國人民銀行直屬事業(yè)單位招聘60人筆試備考試卷帶答案解析
評論
0/150
提交評論