設計包含乙個矩陣式鍵盤電路和動態顯示電路的微控制器應用系統,通過根據按下不同的數字按鍵(0~9),在數碼管上顯示出自己學號的後8位。
各位大神幫忙挑挑錯,或者問題太大了可以幫忙寫乙個新的麼!!!!
萬分感謝!!!好著急
a_8255 equ 7cffh ;a口
b_8255 equ 7dffh ;b口
c_8255 equ 7effh ;c口
con_8255 equ 7fffh ;控制字位址
org 0000h
sjmp main
org 0030h
main: mov a, #89h;控制字,a、b口輸出,c口輸入
mov dptr, #con_8255;8255控制埠
movx @dptr, a;寫入控制字
mov r1,#00h
key:lcall ks ;調查找程式判別有無鍵按下
jnz k2 ;確有鍵按下,轉逐列掃瞄
ajmp key ;無鍵按下,返回
k2:mov r2,#0feh ;首列掃瞄字送r2
mov r4,#00h ;首列號送r4
k3: mov a,r2
mov p1,a ;列掃瞄字送8255pd口
mov dptr, #c_8255;指向8255pc口
movx a,@dptr ;讀取行掃瞄值
jb acc.0,l1 ;第0行無鍵按下,轉查第1行
mov a,#00h ;第0行有鍵按下,行首鍵號送a
ajmp lk ;轉求健號
l1:jb acc.1,next ;第1行無鍵按下,查第2行
mov a,#08h ;第1行有鍵按下,行首鍵號送a
ajmp lk ;轉求鍵號
lk:add a,r4 ;形成鍵號送a
push acc ;鍵號q
k4:lcall ks ;等待鍵釋放
jnz k4 ;未釋放;等待
pop acc ;鍵釋放,彈出鍵號
inc r1
retnext:inc r4 ;修改列號
mov a,r2
jnb acc.7,key ;8列掃瞄完返回key
rl a ;未掃完掃瞄字左移一位
mov r2,a ;掃瞄字存r2
ajmp k3
ks:mov dptr,#p1;pd口位址送dptr
mov a,#00h;全掃瞄字送a
movx @dptr,a;全掃瞄字送pd口
mov dptr, #c_8255;指向c口
movx a,@dptr;讀取pc口行狀態
cpl a;變正邏輯,高電平有鍵按下
anl a,#03h;遮蔽高8位
retdis:mov r0,a ;顯示緩衝首位址
mov r3,#01111111b ;掃瞄位
mov r7,#0
again: mov a,r3
mov dptr,#a_8255
movx @dptr,a
rr a
mov r3,a
mov a,@r0
mov dptr,#dsegs ;數碼管段表位址
movc a,@a+dptr ;查表
mov dptr,#b_8255 ;送段顯示
51微控制器
數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...
51微控制器
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...
51微控制器 51系列微控制器的開發模板
這個是微控制器開發的模板,下面給些注釋和思路,開發的時候其實是經常使用的,之前也不懂,參加藍橋杯之後學習到的,如果有時間和機會,會結合前輩的這些思路,再寫個stm32和嵌入式下的開發模板,這個很有利於專案的設計開發。說明 適用於stc15f2k60s2微控制器,其他的類似,只需要改動相關的定時器設定...