[size=13.333333969116211px]1) 單個(gè)按鍵與多個(gè)數(shù)碼管—點(diǎn)陣(位操作—輸入與字節(jié)操作—輸出)—動(dòng)態(tài) [size=13.333333969116211px]1. 多個(gè)按鍵 → 鍵盤(pán)與多個(gè)LED燈—最小系統(tǒng)—輸出擴(kuò)展與掃描輸入口 [size=13.333333969116211px]a) 多個(gè)按鍵,單個(gè)LED燈—?jiǎng)討B(tài)輸入—掃描函數(shù) [size=13.333333969116211px]b) 多個(gè)按鍵,多個(gè)LED燈—?jiǎng)討B(tài)—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]c) 多個(gè)按鍵,多個(gè)LED燈—單數(shù)碼管—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]d) 鍵盤(pán),多個(gè)LED燈—單數(shù)碼管 [size=13.333333969116211px]2. 多個(gè)按鍵 → 鍵盤(pán)與多個(gè)LED燈—最小系統(tǒng)—輸出擴(kuò)展與掃描輸入口 [size=13.333333969116211px]1) 多個(gè)按鍵,單個(gè)LED燈—動(dòng)態(tài)輸入—掃描函數(shù) [size=13.333333969116211px]2) 多個(gè)按鍵,多個(gè)LED燈—動(dòng)態(tài)—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]3) 多個(gè)按鍵,多個(gè)LED燈—單數(shù)碼管—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]4) 鍵盤(pán),多個(gè)LED燈—單數(shù)碼管 [size=13.333333969116211px]3. 多個(gè)按鍵 → 鍵盤(pán)、數(shù)碼管與點(diǎn)陣—最小系統(tǒng)—輸入與輸出掃描 [size=13.333333969116211px]a) 多個(gè)按鍵,多個(gè)LED燈—多數(shù)碼管—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]b) 鍵盤(pán),多個(gè)LED燈—單數(shù)碼管—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]c) 多個(gè)按鍵,多個(gè)LED燈—單點(diǎn)陣—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]d) 鍵盤(pán),多個(gè)LED燈—多點(diǎn)陣—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]2. 多個(gè)按鍵→ 鍵盤(pán)、數(shù)碼管與點(diǎn)陣—最小系統(tǒng)—輸入與輸出掃描 [size=13.333333969116211px]1) 多個(gè)按鍵,多個(gè)LED燈—多數(shù)碼管—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px]LED燈是由發(fā)光二極管制成的,它的工作原理與標(biāo)準(zhǔn)或說(shuō)普通二極管相同—單向?qū)щ娦。將多個(gè)發(fā)光二極管按照8字形安排,則構(gòu)成一個(gè)7段數(shù)碼管;按照米字形則構(gòu)成13段數(shù)碼管。后者在字節(jié)處理方面不是8的倍數(shù),則會(huì)帶來(lái)一些麻煩。前者雖缺一位,但加上小數(shù)點(diǎn)位則恰到好處。 [size=13.333333969116211px]  [size=13.333333969116211px]//源程序—4個(gè)一組的數(shù)碼管實(shí)現(xiàn): [size=13.333333969116211px]#define LEDS 4 [size=13.333333969116211px]#include"reg51.h" [size=13.333333969116211px]//led T選iffl1號(hào) [size=13.333333969116211px]//unsigned char code Select[]={0x01,0x02,0x04,0x08,0x10,0x20}; [size=13.333333969116211px]unsigned char code Select[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,}; [size=13.333333969116211px]unsigned char code LED_CODES[]= [size=13.333333969116211px]{ 0xc0,0xF9,0xA4,0xB0,0x99,//0-4 [size=13.333333969116211px]0x92,0x82,0xF8,0x80,0x90,//5-9 [size=13.333333969116211px]0x88,0x83,0xC6,0xA1 ,0x86,//A,b,C,d,E [size=13.333333969116211px]0x8E,0xFF,0x0C,0x89,0x7F,0xBF//F,空格,P,H,.,- [size=13.333333969116211px]}; [size=13.333333969116211px]void main() [size=13.333333969116211px]{ [size=13.333333969116211px]char i=0; [size=13.333333969116211px]long int j; [size=13.333333969116211px]long int n; [size=13.333333969116211px]while(1) [size=13.333333969116211px]{ [size=13.333333969116211px]P2=0; [size=13.333333969116211px]P2=LED_CODES[n]; [size=13.333333969116211px]//P1=1; [size=13.333333969116211px]P1=Select; [size=13.333333969116211px]for(j=3000;j>0;j--); //該LED 模型靠脈沖點(diǎn)亮,第 i 位靠脈沖點(diǎn)亮后,會(huì)自動(dòng)熄來(lái)頭。 [size=13.333333969116211px]//修改循環(huán)次數(shù),改變點(diǎn)亮下一位之前的延時(shí),可得到不同的顯示效果。 [size=13.333333969116211px]i++; [size=13.333333969116211px]if(i>5) i=0; [size=13.333333969116211px]n++; [size=13.333333969116211px]if(n>16) n=0; [size=13.333333969116211px]} [size=13.333333969116211px]} [size=13.333333969116211px] [size=13.333333969116211px]l 多數(shù)碼管循環(huán)移動(dòng) [size=13.333333969116211px] [size=13.333333969116211px]#include [size=13.333333969116211px]#include [size=13.333333969116211px]#define uchar unsigned char [size=13.333333969116211px]#define uint unsigned int [size=13.333333969116211px]uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, [size=13.333333969116211px]0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//0—F字符陽(yáng)極管 [size=13.333333969116211px]uchar code DUA_CODE[]={0x08,0x04,0x02,0x01,0x08,0x04,0x02,0x01, [size=13.333333969116211px]0x08,0x04,0x02,0x01,0x08,0x04,0x02,0x01};//右向左移動(dòng) [size=13.333333969116211px]uchar code DUA_CODE[]={0x01,0x02,0x04,0x08 };//左向右移動(dòng) [size=13.333333969116211px] [size=13.333333969116211px]******關(guān)于移位函數(shù)的使用—P3=_crol_(P3,1);或P3=_cror_(P3,1);左右移位******* [size=13.333333969116211px]//延時(shí) [size=13.333333969116211px]void DelayMS(uint x) [size=13.333333969116211px]{ [size=13.333333969116211px]uchar t; [size=13.333333969116211px]while(x--) for(t=0;t<120;t++); [size=13.333333969116211px]} [size=13.333333969116211px]//主程序 [size=13.333333969116211px]void main() [size=13.333333969116211px]{ [size=13.333333969116211px]uchar i; [size=13.333333969116211px]while(1) [size=13.333333969116211px]{ [size=13.333333969116211px]for(i=0;i<16;i++) [size=13.333333969116211px]{ [size=13.333333969116211px]P2=0x00; [size=13.333333969116211px]P2=DSY_CODE; //發(fā)送段碼 [size=13.333333969116211px]P3=DUA_CODE; //發(fā)送位碼 [size=13.333333969116211px]DelayMS(10); [size=13.333333969116211px]} [size=13.333333969116211px]} [size=13.333333969116211px]} [size=13.333333969116211px] [size=13.333333969116211px]2) 鍵盤(pán),多個(gè)LED燈—單數(shù)碼管—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px] [size=13.333333969116211px]3) 多個(gè)按鍵,多個(gè)LED燈—單點(diǎn)陣—掃描函數(shù)—數(shù)組對(duì)照 [size=13.333333969116211px] [size=13.333333969116211px]4) 鍵盤(pán)與點(diǎn)陣 [size=13.333333969116211px]字母輸入與實(shí)現(xiàn)技術(shù) [size=13.333333969116211px]文本顯示技術(shù) [size=13.333333969116211px]多個(gè)LED燈,多個(gè)按鍵 → 鍵盤(pán) [size=13.333333969116211px]A) 單“位”—P口1位--單個(gè)燈—位輸出,單個(gè)按鍵控制—硬控制與軟控制 [size=13.333333969116211px]一個(gè)按鍵,一盞照明燈,一個(gè)繼電器。硬件接口問(wèn)題—線路連接、硬件硬驅(qū)動(dòng)問(wèn)題(程序稱(chēng)為軟驅(qū)動(dòng))。 [size=13.333333969116211px] 說(shuō)明: [size=13.333333969116211px]硬件特性,驅(qū)動(dòng)與控制信號(hào),程序編寫(xiě) [size=13.333333969116211px]由繼電器引出的強(qiáng)電驅(qū)動(dòng)電器的控制問(wèn)題,如電動(dòng)機(jī)—交流電機(jī)、直流電機(jī)、步進(jìn)電機(jī)、伺服電機(jī);單項(xiàng)或多項(xiàng) [size=13.333333969116211px]
|