【哈爾濱工業大學】《單片機原理》(建議收藏) P26 - 26. 10.2-AT89S51與輸入輸出外部設備的接口(2)

长安书院_
146粉絲
2 次觀看·2026年9月14日
AI 生成·可能包含錯誤
鍵盤分為非編碼和編碼鍵盤
我們剛才介紹的那些都是非編碼鍵盤
那麼非編碼鍵盤要注意
怎麼來識別一個鍵
它的鍵號
這個工作要分三個層次來做
第一步要注意解決什麼問題呢
怎麼來監視鍵盤輸入
我們剛才講了三種工作方式
第一種編程掃描
第二種定時掃描
第三種中斷掃描
第二步要確定按下鍵號
那怎麼來進行確定這個鍵號呢
第一個方法掃描法
第二個方法線翻轉法
第三步你要根據這個鍵的鍵號
跳向相應的鍵處理程序
這是非編碼鍵盤
非編碼鍵盤剛才我們介紹了兩種
一種獨立式一種是矩陣式的
為什麼叫非編碼鍵盤
你按下這個鍵以後
你不能直接得到鍵號
你得需要用軟件
你編軟件來得到鍵號
這個編軟件得到鍵號這個程序
往往是我們單片機裡面一個小難點
有的同學認為它比較難
實際上我們看了一些例子以後
就會覺得並不太難
你要是看完現場的程序以後
你就會覺得就可以理解
但是這裡沒給出什麼程序
沒給出線翻轉法
我們後面並沒有給出那程序
所以畢業設計的時候
有的老師要求學生
你單片機鍵盤掃描的時候
你用線翻轉法做編
兩次你就可以得出
得到這個鍵號
這是非編碼鍵盤
如果採用專用的鍵盤顯示器
接口芯片來外接鍵盤
當有鍵按下去的時候
它直接就可以得到鍵號
那這個呢
實際上屬於編碼鍵盤
編碼鍵盤
所謂編碼鍵盤
直接得到鍵盤的那個編碼
這個大家一定要清楚
下面呢
我們就看一些鍵盤顯示器的
接口設計實例
我們介紹的第一個例子
是單片機利用它的串口
擴展鍵盤顯示器
那麼大家注意
在實際系統設計當中
一般都把鍵盤顯示器
放在一起
既有鍵盤也有顯示器
當然
我們下面介紹的接口方案呢
如果你只需要鍵盤
你就把顯示器那部分電路去掉
你只要顯示器
就把鍵盤那部分電路去掉
方案很多很多
我們介紹一種比較常見的
利用單片機串口
來進行鍵盤顯示器擴展的
這麼一個接口方案
這個也是我們有些同學
在畢業設計當中
經常採用的一種鍵盤顯示器
接口方案
希望大家能夠把這個接口方案
一定要掌握
掌握的話
兩部分
一部分是硬件接口電路
看它怎麼連線
第二部分
關鍵是軟件
結合這個硬件
怎麼編寫程序
來實現鍵盤顯示器的接口功能
所以這個方案
建議大家
一定要認真掌握
把裡面的軟件都掌握
好
這個就利用單片機串口
來實現鍵盤顯示器的方案
如果串口沒有做其他用途
你可以利用串口方式0
來構成鍵盤顯示器接口
那麼這個接口
它的硬件電路
大家看一眼
把這個硬件接口電路弄明白
這是單片機
大家注意
這些是一個一個LED數碼管顯示器
一共幾個
大家注意
0 1
一直到7
這是8個LED數碼管顯示器
所以這個鍵盤顯示器接口電路
擴了8個數碼管
這個是鍵盤
大家注意
鍵盤
大家注意
每一個按鍵
是連在航線和列線之間
航線
它是通過P3.4 3.5來檢測的航線電頻
列線
大家注意
它是通過單片機串口
輸送給74LS164
它是串型輸入並行輸出的一位集成器
所以這種方案
由於它利用的串口接口電路簡單
另外
軟件程序也是現成的
所以好多學生
在這個基礎上
這個例子基礎上把它修改以後
就直接用到自己的單片機系統裏面
那麼
大家再看
這個列線
是怎麼輸出的
這個電頻怎麼來控制的
利用RSD這個引腳
給它串型輸出8位數據
就決定了列線的電頻
那麼
TXD是作為一位脈衝
這個我們講串口方式零的時候已經講了
再看顯示器這部分
顯示器這些電阻
是各段的線流電阻
你根據你所採用的數碼管的特性
來選這個阻值
這個又是164
串型輸入
大家注意
串型輸入也從RSD端串著輸出
大家注意
這得輸出8個字節
來控制這8個LED數碼管顯示器
顯示字符
那麼這有個餘門
這餘門用P3.3這個引腳
它的電頻來控制
大家想一想
如果P3.3為零
這餘門是不是封死了
封死的話
你這脈衝從這餘門就出不來了
這個脈衝幹嘛的
是來就是把這個數據
8位8個數碼管的8個段碼
輪著往外送
一次往外送
所以你要把餘門封死
這個脈衝
一位脈衝從這出不來了
也就不能加到8個74LS164上
另外大家還要注意
你給164串型輸入數據期間
這個數據是一個一個往這邊串的
串64位
那麼然後他們直接來控制
這個數碼管來點亮
就點亮這些數碼管顯示什麼字符
但是大家注意
這個就像我說
上一次講的IO擴展那個例子
這個輸出
它沒有隔離
你要願意隔離的話
你可以加S3太門
但這個顯示不要緊
因為發送挺快
瞬間就發送完了
所以這塊即使變化的話
顯示變化你不要緊
那麼另外大家注意什麼問題
這個是一個靜態顯示
就是說你數據
它是在所存的
數據送到了以後就不再變了
那斷碼就固定的
那麼這個LED數碼管顯示的字符
也就是固定的
所以大家一定要注意
這個接口電路的
它的硬件電路連接
要注意這個魚門是用來控制
8個LED顯示的斷碼輸出的
怎麼來控制呢
你要P3.3V0就把這魚門封死了
以為麥克風發不出去
那麼鍵盤呢
大家注意
你送一個裂線
送一個裂線碼的編碼
送到這裏
然後控制裂線電頻
然後你幹嘛呢
讀航線的狀態
這個大家要明白
這個硬件電路工作原理
明白這個原理基礎上
下面我們就看
怎麼來進行鍵盤顯示器的控制與掃描
好
另外大家還注意
這是供氧級顯示器
所以它供應端都直接接正負了
你不用胃控了
它已經接成正負了
剩下的問題
你就往這裏送顯示的斷碼
往這裏送什麼呢
裂掃描碼
然後讀航線的狀態
就可以了
這個方案呢
它鍵盤是16
同學說如果我24個怎麼辦
你可以再增加一列
對吧
32個呢
再增加一列
但是大家注意
這個是靠掃描
軟件控制掃描
那麼這個你要鍵個數太多
掃描速度就會減慢
所以大家呢
要注意這個接口
鍵盤顯示器接口電路方案呢
是連線非常簡單的
就這麼幾根線
連鍵盤在顯示器都有了
但是它是利用串口的方式
大家注意
好
下面我們就來看
最關鍵的軟件設計
怎麼來編顯示子程序
這個方案呢
大家可以認真把它讀懂
以後呢
我們大家
比如做單片機系統設計的話呢
就要可能用到這個方案
鍵盤顯示器
如果沒有這個例子
一切從頭來
我想這個還是很麻煩的
好
下面我們就看
顯示子程序怎麼編
setbp3.3
什麼意思呢
把p3.3指1
允許
大家注意
把它指1以後
把這個餘門開放
餘門開放
這個餘位脈衝
就可以從這一端輸出了
Mode R7裏面送上08
這個大家注意
它接的是八個LED顯示器
數碼管顯示器
所以你要送八次斷碼
所以這裏用R7作為
送出的斷碼個數的
相當於計數器
Mode R0是7F
R0裏面放上立即數7F
R0作為間接訊指的
地址指針
實際上就是把7F到78H
這八個單元
作為顯示數據的緩衝區
顯示數據的緩衝區
一會兒我們就會看到
再看下一條指令
Mode R0間接訊指
取出要顯示的數
把它送到A裏面
然後大家注意
ADD
A加上一個偏移量0D
這個地方要小心
下面就是一條查表指令
這個0D是個偏移量
根據A裏的數
你要顯示的數
0123456789
要查到對應的斷碼
斷碼剛才我們在這個課
開始的時候已經
你有顯示3
你把03H送到
作為斷碼送
它不會顯示3
你必須把03對應的斷碼
送到LED數碼管上
所以大家注意
這要採用查表
但是這個0D等於什麼呢
0D是個偏移量
就等於從查表指令
下面是什麼表
就斷碼表
查表指令往下到斷碼表之間
這些指令所佔的單元數
13的領地
大家注意
它的斷碼表在這
大家看一眼
斷碼表在這
這裏裝的什麼
它是貢陽級的斷碼
所以這個地方是貢陽級的斷碼表
我要送個0的話
然後用那查表指令
應當查到是採用
把C0送出去
控制數碼管顯示0
這個是1的斷碼表
2的斷碼表
3的斷碼表等等
所以那個0DH
為了保證查表查的準確
一定要加那個偏移量
否則查的就不準
就會出現錯誤
大家注意
這0D
是這一條指令
查表指令
下面的這些指令
所佔的單元的個數
這樣就能保證
這些指根
你裏邊是0的話
它就指向0的斷碼
把0的斷碼取出來
如果是1的話
就指向1的斷碼
把1的斷碼取出來
所以大家一定要注意
這個0D的含義
這一條指令
就把這個數
要顯示的數
對應的斷碼
注意這個地方
是用查表的
為什麼前面
我們要講查表指令
原因就是查表
在我們這個顯示程序裏面
經常用到
那麼大家看
這就是查表
把對應的
那個存儲單元的數
取出來
放到A裏面了
這個是一個地址
這是一個地址
把那個數
放到A裏面
然後
這個數
大家注意
實際上是
對應要顯示
那個數的斷碼
從那表裏取出來
對吧
這個大家再想一想
我們前面講過的這條
然後大家注意
這個斷碼
就送到串口
送到串口
一執行這條指令
根據串口方式
0的特性
他就開始往外發送數據了
往外發數據
這下面這條指令
就判Ti是否為1
Ti如果為0
還在這兒
都全都表明
8位沒有發送完
因為斷碼是8位的
對吧
如果Ti為1
怎麼辦
往下執行
往下執行幹嘛
先把這Ti標準
你Ti為1
表示一個字節
斷碼出去了
你要發幾個字節
發8個字節
所以
ClearTi
把Ti清零
然後呢
把指針指向下一個單元
-1
注意
7F到78
你要顯示那個數
在那8個單元裏面
你要從那8個單元裏面
取出數
查到對應的斷碼
把這個斷碼
通過串口往外送
是吧
好
這個就查標指令
然後呢
大家再看下一條指令
然後就把27-1
因為你取出了一個斷碼
27-1
然後呢
大家注意看
如果這條指令什麼意思
27-1為零的話
就執行下一條指令
不會零的話
就跳到DL0表號
如果為零的話
意味著什麼
8個斷碼都查到
並且都數據
然後ClearP3.3
把那魚門封死
就把那魚門封死
對吧
把那魚門封死
然後呢
就返回
那麼下面這個是什麼呢
是這貢陽級LED顯示器的斷碼
根據緩衝區域
緩衝區域
要顯示這8個數
查到對應的它的斷碼
這個斷碼通過串口往外送
送到8個714LS164裏面
大家注意
它是怎麼送的呢
就通過這個串口
RXD往外送
送送送
一個一個送
一共幾個
8個
送力是什麼
斷碼
斷碼怎麼來的
是你根據顯示緩衝區域的
要顯示那個數
比如01就取1的斷碼
03就取3的斷碼
送出去
送8次就可以了
然後大家一定要注意
送完以後呢
把它指令
把它封死
封死呢
這移位脈衝出不來
移位脈衝一出來的話呢
就能造成這裏的數據往外移位
對吧
這樣就麻煩了
所以呢
當8個字節都送完
把P3.3E指令
然後把它一封死就可以了
把這魚門封死
發不出來移位脈衝
好
那麼顯示程序
這個顯示是靜態顯示
大家注意看這個
注意看這個地方
你數據串著輸完以後
它就鎖存在這8個串行輸入
並行輸出的移位計程器裏面
是鎖存的
它直接加到這數碼管上
不用你再去動態更新
對吧
所以顯示一次
它啪
送8個字
顯示一次
送8個字
然後就鎖在了
靜態顯示
那你這個電阻呢
它控制通過各段的電流
電阻呢
適當的選取
所以這個是
學生在畢業設計裏面
非常願意用的一種方案
實際上在一般
規模不太大的鍵盤
顯示器裏面
也常常使用這種方案
我們剛才講的是
顯示程序的編寫
下面看一下
鍵盤程序的編寫
鍵盤相對來說
就比較復雜了
鍵盤掃描指程
注意看
首先在講
鍵盤掃描指程之前
我們再看一下電路
把電路看明白以後
我們就開始講這一段程序
大家看
單片機通過串口方式零
給它輸出的是列碼
列碼
就是決定列線的電頻的編碼
然後用軟件讀P3.5
這是第二行
讀P3.4是第一行
讀它們的狀態
然後來判斷
是這裏面的哪個鍵按下去了
然後這個鍵的鍵號是多少
大家注意看
每個鍵都給定義了鍵號
0、1、2、3、4、5、6、7
8、9、10、11、12、13、14、15
還要注意一個事實
第一行的鍵的首鍵號是0
第二行的首鍵號是8
那麼大家想想
我要想獲取鍵號
怎麼辦呢
我就從左到右
一列一列進行掃描
每第一列
它的掃描值是0
第二列掃描技術序就為1
然後呢
你行的首鍵號加上列技術器
這個值1
8加1
那麼就是9號鍵按下去
如果是第一行鍵按下去
你肯定在讀第一行的時候得知道
記住它這一行的首鍵號
首鍵號
然後呢
逐列掃描
那個列技術器不斷增移
行的首鍵號加上列號
就是這個鍵的鍵號
那麼這就是非編碼鍵盤
你必須用軟件計算
才能得到它的鍵值
然後根據鍵值
再跳向不同程序入口
那麼就可以得到這個
如何來進行鍵處理的
去執行它的子程序就可以了
好
下面我們把這個電路看明白以後
我們就看軟件
盯住程序盯住大屏幕
模A00
大家注意
它實際上把這個00送到A裏面
A呢再送到SBOF裏面
通過那串口往外送
讓所有的列線為零
這個大家注意
因為它首先要判斷有沒有鍵按下去
我只要定性判兩個航線
對吧
判兩個航線電平
我先讓所有列線為零
然後讀航線狀態
本來航線正常狀態沒有鍵按下去
它會高電平為1
那我只要讀這兩航線
只要不為1就有鍵按下去
所以它思想是這樣
所以把00送到A
A通過串口往外發
然後這個地方判一下
你這八個零出去沒有
決定列線的八個零
沒送完在這兜圈子
送完了
大家注意
所以這採用串口的查詢方式
查這個TI標誌位
然後就把TI清零
然後大家注意
它八個列線全為零
讀航線的狀態
大家看下面就開始了
接NB P3.4
不兩航嗎
第一航接P3.4
第二航連到
第二個航線連到P3.5
這條指令P3.4為零
就跳到PK1
P3.4為零意味著什麼
正常為高電平
如果有鍵按性
因為你列線全為低電平
航線如果有鍵按性
這航線就為低電平
它為零
跳到什麼地方
跳到PK1
它不為零怎麼辦
就往下執行
說明第一航沒有鍵按性
再看第二航有沒有鍵按性
第二航如果為1
為1的話
也沒有鍵按性
就跳到KLE
如果有鍵按性
也往下執行
往下執行
好
剛才說了
有鍵按性就跳到PK1
注意看
這個地方然後怎麼辦
調用10毫秒驗時指程去
躲過那一段抖動梯
然後再判一下
判一下剛才的那個為零
是不是外界幹擾信號引起
那麼大家看一下
GMB
P3.4
大家注意
判一下P3.4是否為零
如果為零
跳到PK2
說明什麼呢
確確實實是按一下
因為你都經過了10毫秒驗時
再看第一航的航線
如果它為1的話
再看下一航
如果P3.5仍舊為1
說明剛才那個幹擾引起的
就跳到前面的KLE
如果它不為1怎麼辦
往下執行
通通的上這個地方
那麼PK2這個地方呢
就開始要得到鍵號了
想得到鍵號怎麼辦呢
把08送到AR7裏面
AR7裏面放上08
一會兒我們講為什麼要放08
好了
FE大家注意看
你判斷有鍵按性
但是你判斷不了是哪一個鍵按性
你就得逐列掃描
讓這一列為低
其他的為高
再讓下一列為低
其他的為高
然後讀航線的狀
對吧
那麼就來找那個有沒有鍵按性
大家看
某FEH
大家注意
這就列掃描碼
實際上對應這個電路
是它哪一列
讓它串到往外送
FE呢
就是讓這一列為低
其他的為高
先來最左邊這一列
讓它為低
然後讀這兩航線的狀態
讀兩航線的狀態
好
那麼FE是掃描碼
然後某R3裏面
送上00R3
00什麼呢
R3是什麼
R3是列號計數器
最開始掃描的話
這列號是為0
0列
好
某R6送到A裏面
然後通過串口往外發
大家注意
這條程序一執行
串口就往外發了
但是R6裏面裝的什麼
列掃描碼FE
就是最左邊那列為低
它是最低位
為低
其他的為高
先讓第一列為低
然後讀航線狀
好
那列掃描法
採用列掃描法來進行
來得到按下鍵的鍵值
來判斷是哪鍵按
好
這條指令判斷發沒發完
沒發完在這兜圈子
發完的話
把它這標誌為清零
已經自己出去了
然後大家注意看
下面這塊C單位
CNB P3.4
這是P3.4第一航線
如果等於零
跳到PK1
等於零
說沒有鍵按下去了
但是這一行一共有八個鍵
不知道是哪個鍵按下去
所以如果為零
跳到PK1
這個地方呢
一會兒處理
如果不為零
這一行鍵沒有
沒有按下鍵
就跳到P3.5第二航線
第二航線
如果為高電平
跳到Next
什麼意思呢
Next是下一列掃描的程序標號
就開始進行下一列
不是這一列
如果大家注意
如果它不為零
就是不為一
說明第二航線有鍵按下去
那怎麼辦
就要算一下
這個哪個鍵按下去
鍵號
如果第二航線有鍵按下去
就往下執行
那戒閉P3.5
這條指令意思
P3.5為一就往下執行
P3.5為一跳到Next
P3.5為零往下執行
表明第二航線有鍵按下去
然後大家注意
看這兩個飆紅的地方
不管是跳到這還是跳到這
都根據獨立的航線狀態
都說明有鍵按下去
如果是第二航有鍵按下去
這一航線的首鍵值
08H
送到240
如果是第一航有鍵按下去
它的首鍵值為多少
00
為什麼是這樣
大家看一下電路
第一航線的首鍵值是多少
00
第二航線的首鍵值
08
然後以後就每一次
都讓其中的一根列線
第一次讓它為低
第二次讓它為低
其他為高
然後技術性爭議
第一次如果有鍵按下去的話
一定要把相應的鍵的首鍵值
送到剛才的26
所以大家注意看
這塊是非常關鍵的
是怎麼得到鍵值
大家看
鍵的首鍵號
這一航的首鍵號
放到24裏面
然後大家注意
這個地方呢
又往串口
往外輸出全零
什麼意思呢
要判斷你這鍵鬆沒鬆開
大家知道
一個鍵按下去
剛纔是按下去
是哪個鍵
但是呢
什麼時候要想得到鍵號呢
一個鍵的有效按下
必須先按一下再鬆開
再鬆開
這是航線都會高電平
所以下一步呢
就要判一下
把零零通過串口往外送
送什麼呢
送列碼
列線碼
然後讀航線狀態
看釋放到
是否兩個航線都會高電平了
好
然後判一下
這一個字節發完沒有
串口發嘛
判這個標誌位
沒發完在這兜圈子
發完了
把這個標誌位清零
然後這時候再判航線的狀態
因為這一次又送
全零
列線全為零
讀航線狀態
然後判第一航線的狀態
如果為零的話
在這兜圈子
說明什麼呢
你這鍵一直在這按著
還沒鬆開
你只有按一下再鬆開
才能是一次有效的按鍵
所以如果批3.4為零
還在這兜圈子
批3.4如果為一的話
這個條件不成立
就往下執行
再判第二航線
第二航線呢
如果為零
還跳到這地方來回兜圈子
如果為一
說明什麼呢
你這鍵鬆開了
你讀的航線狀態
讀進去的航線才會高電平
大家看到前面那個鍵盤工作員裡
那個航線的輸出電和波形
為高電平
好
那麼
鍵只有鬆開以後
你才能去計算鍵號
怎麼計呢
怎麼計啊
大家注意啊
R4裡的內容送到A
R4是什麼東西啊
R4是航的首鍵號
然後呢和R3相加
R3是什麼呢
你每掃描一次
列碼掃描一次
列技術就徵一
對吧
徵一
所以
這一塊是非常關鍵的
R3就是那個列掃描次數技術
那麼徵一的話
掃到哪一列
那他就有一個對應值
和R4裡相加
R4是什麼東西啊
是列的首鍵號
這樣就得到鍵號
然後送到A
剛才已經說了
這一列鍵
如果沒有鍵按下去
應當怎麼辦
next
next什麼意思
下一行
就下一列鍵
再掃描下一列鍵
那怎麼辦呢
R6送到A裡面
大家注意啊
這塊非常關鍵
A左移一位
就那0啊
左移一位
原來是F1H
最低位為0
這左移一位以後
0移到次低位了
這樣的話呢
就次
就是左邊的第二列
剛才那電路圖啊
左邊的第二列列線
微距電平
再掃描
然後把列掃描碼寄到R6當中
同時大家注意
R3技術器
剛才同學就會疑惑
這個R3怎麼來的
R3在這兒
你掃描一次
掃一列
R3就增一
掃一列
R3
然後呢
再減一下
判一下R7
你掃一列
R7就減一
一共幾列
八列
八列鍵
所以這塊就判
R7是否為0
為0的話就跳到DKL5
大家查
不為0就跳到前面
完這一段呢
大家注意
好
大家看一看
稍微有點難的是這個鍵盤掃描
這個方案
是好多學生
經常使用的一種方案
也是大家在單片機
鍵盤顯示器接口設計方面
經常用到的一種方案
但是前提是
你串口沒有用
串口你沒有做串營工具
空間下來
所以大家注意
這是一個非常實際的方案
軟件硬件都給了
那麼大家還要注意
同學說我就用數碼管部分
不要鍵盤
那你就把鍵盤那部分
電路去掉
如果你就要鍵盤
不要數碼管
我不用數碼管顯示
你就把數碼管電路去掉
所以這個呢
如果只要其中一部分
很容易
下面呢
如果同學說
我鍵盤數目比較多
下面我們要介紹的是
專用的鍵盤顯示器接口
使用這種專用的鍵盤
顯示器接口芯片
大家注意
省了不少麻煩
沒有剛才又驗實又掃描
它去漏洞
它裡面硬件有硬件電路
掃描的話呢
它裡面硬件自動控制
它掃描
所以如果你鍵盤比較多
多
當然少也可以用
少也可以用
這個採用專用的鍵盤顯示器
接口芯片呢
是這種接口電路方案呢
這個叫編碼鍵盤
就它這鍵盤是編碼鍵盤
什麼意思呢
按下一個鍵以後
它會向單片機發出不斷點球
得到按下鍵的鍵號
如果用專用鍵盤顯示器接口芯片
可以省去編一些鍵盤顯示器的動態掃描
其實顯示器鍵盤都有動態掃描的問題
那你就不用編這段程序
非常簡單
另外呢
還有鍵盤去漏洞
你也不用編了
那麼現在這個專用鍵盤顯示器
芯片種類比較多
但是總體趨勢
是並行接口的鍵盤顯示器
接口芯片逐漸被淘汰
大家都願意用串口
為什麼
原因就是接口電路非常簡單
接口電路非常簡單
那麼早期非常流行的
並行鍵盤顯示器接口芯片8279
這個大家手裡如果有實物規劃教材
有同學有
那裡講的是8279
其實這個8279現在還在用
只不過用的沒有我們
11.5規劃教材裡面介紹的
兩種專用鍵盤顯示器接口芯片用的多
好
這個大家要明白它的趨勢
原因串營接口
專用的鍵盤顯示器接口芯片
就是因為它接口電路非常簡單
如果有的同學要用8279並行的
可以看一下我們的實物規劃教材
就是前幾屆的學生用的
你看那個接口電路方案
現在我們上網查了一下
還是有人在用這種方案
而且這個芯片呢
還有不少公司在賣
好
現在目前常用的芯片呢
鍵盤顯示器接口芯片有周立功
7289周立功
周立功是個人名
廣州搞單片機比較有名的
他在巧密公司
他是從頭到尾全有
就是從培訓到班
到做這些芯片
賣這些芯片
這個都有
另外最後呢
可能學生住院呢
有一部分他也有班
那麼他做的這個芯片呢
這是一種大家用的比較多的
鍵盤顯示器接口芯片
這個僅僅是驅動LED的
這個方案大家查資料也很多
還有南京信恆公司的CH451
還有日立公司的HD7279
大家注意
這兩個芯片是我們這個書裡面
給的比較詳細的
什麼意思呢
就是將來大家用
專用鍵盤顯示器接口芯片的時候呢
你使用這兩種芯片
我們的教材裡的資料
都給的非常全了
你就能很快地做出
這個鍵盤顯示器接口電路的
硬件電路設計和軟件編程
還有BC7281
好
這些芯片呢
大家注意你操心的事比較少
連上以後呢
其實啊
它裡面採用的硬件動態掃描
並且它自動的對顯示掃描
剛才那動態顯示
實際上就顯示掃描
另外鍵盤呢
還要對鍵盤進行掃描
它全是硬件自動完成的
所以它這個鍵盤
你按下鍵以後
向單片機發出請求
單片機就可以讀到一個鍵
按下鍵的編碼
這個鍵編碼就是那個鍵的鍵號
所以建議大家呢
將來如果稍微複雜的鍵盤顯示器接口呢
你可以採用這種方案
簡單的前面那個矩陣式的
獨立式的鍵盤
那都比不了罪
簡單說一下
專用鍵盤顯示器接口芯片8279
大家注意這個我已經說了
是我們15規劃教材裡面介紹的
一種接口設計方案
這個它和單片機相連是並行
並進口
並行接口
另外它自動去鍵盤抖動
另外呢
有雙鍵互鎖
什麼叫雙鍵互鎖呢
你一下按兩個鍵
你什麼時候鬆開
再鬆開一個
就按下一個鍵的時候
它來默認最後沒有鍵
只按一下鍵
另外它鍵盤
可以控制八成八的鍵盤矩陣
自動得到按下鍵鍵號
大家如果感興趣的話呢
可以查一下相關資料
注意
在以前的單片機鍵盤顯示器接口設計當中
這種方案是使用比較多的
大家可以上網查
有很多很多現成的資料
這個用的比較多
到現在還有一部分人在用
還有周立功的這個C290
這個它是採用iPhone7串口
iPhone7串口呢
是我們十二章裡介紹的內容
可以控制八位LED數碼管顯示
還有64個鍵的鍵盤管理
但是有一樣
它這個鍵盤接口芯片呢
它必須外接一個獨立的矩陣
外接獨立矩陣
還有專用的鍵盤顯示器
芯片
這個大家可以按照這個Maxim7219
去上網查一下
這個經常用顯示器啟動
這個接口方案
這個挺好
就是說
它是共音級
可以驅動共音級的LED數碼管
但是沒有鍵盤管理功能
還有一個專用顯示器接口芯片
BC7281
這個大家自己看
這裡的問題
就是我們這一章裡面
重點有兩個芯片
我們先做一下概括性介紹
第一個
專用鍵盤顯示器接口芯片
HD7279
大家注意
它和單片機的通訊呢
是採用串行通訊
也就是說
它是串行接口的鍵盤顯示器
芯片
它可以控制驅動八位LED數碼管
另外可以實現64個鍵的鍵盤管理
它外部接口電路非常簡單
所以這是一個值得大家非常重視的
專用鍵盤顯示器接口電路
那麼接口電路
我們在書裡面已經給了
大家使用的時候呢
可以參照書的接口電路
這個得到比較廣泛的引用
原因
它就是串行接口
與單片機接口相連
還有一個
也是我們這個書裡這一章裡面
重點介紹的一個
CIS數碼專用鍵盤顯示器
它對驅動八位的數碼管顯示
另外呢
大家注意
可以進行八乘八鍵盤跡證的監視
並且大家注意
它是自動掃描的
剛才我們介紹的列掃描
用軟件一列一列一列一列
而這個呢
是直接用硬件進行掃描
並且裡面去漏洞都有了
所以你編軟件也不用考慮去漏洞
沒有關係
你的任務就是什麼呢
當有件案子
發出中斷顯示信號
你進到中斷服務程序裡面
你一下編號就可以了
顯示器的話呢
你就往相應的顯示外部
比如說他要用DCD碼
你就用DCD碼
就可以了
剩下的問題大家注意
這類芯片都屬於可編程芯片
都需要初始化
你要初始化
你得對這個芯片的那個個性
要有詳細的瞭解
所以這個也是我們教材裡面
一種重要的鍵盤顯示接口芯片
那麼這些接口芯片
大家一定要注意
用的比較多的
就是451和ICT-279
正因為用的多
我纔在那裡面全都匯出來
所以大家將來鍵盤顯示設計的話呢
如果採用專用的
鍵盤顯示器接口芯片
可以考慮使用這兩個芯片
有這芯片以後
軟件編程省了不少事
比如說去抖動你不用考慮
再一個掃描
用它顯示的動態顯示
需要掃描的話呢
你也不用考慮
另外鍵盤掃描的話呢
你更不用考慮
你按一個鍵以後
它裡面有自動去抖動的功能
然後呢
就得到鍵號
同時呢
向單片機發出一個中段解決鍵號
你直接得到那個鍵的鍵值
然後你就根據這個鍵值呢
調一下這個鍵對應的鍵值
比如子承進出口就可以了
子承處理進口
所以大家一定要注意
就是說我們各種各樣的
接口電路方案
前面介紹LED驅動
就是LED驅動和顯示
還介紹了非解碼鍵盤
就是獨立式的
避震式
也叫防衛式
那麼如果採用專用的鍵盤顯示機
就會出現的
好多什麼去抖動啊
掃描軟件
你都不用自己編了
不用考慮這個事
而唯一要注意的
就是一定要很好的閱讀這個芯片的
它的使用說明書
再一個
要對這個芯片進行初始化設計
要編程
把它設置成正確的工作狀態
好
我們今天課就到這
