標題: 51單片機 點陣 電機 數碼管 鍵盤 [打印本頁]
作者: heicad 時間: 2014-6-17 16:14
標題: 51單片機 點陣 電機 數碼管 鍵盤
[size=13.333333969116211px]1) 單個按鍵與多個數碼管—點陣(位操作—輸入與字節操作—輸出)—動態
[size=13.333333969116211px]1. 多個按鍵 → 鍵盤與多個LED燈—最小系統—輸出擴展與掃描輸入口
[size=13.333333969116211px]a) 多個按鍵,單個LED燈—動態輸入—掃描函數
[size=13.333333969116211px]b) 多個按鍵,多個LED燈—動態—掃描函數—數組對照
[size=13.333333969116211px]c) 多個按鍵,多個LED燈—單數碼管—掃描函數—數組對照
[size=13.333333969116211px]d) 鍵盤,多個LED燈—單數碼管
[size=13.333333969116211px]2. 多個按鍵 → 鍵盤與多個LED燈—最小系統—輸出擴展與掃描輸入口
[size=13.333333969116211px]1) 多個按鍵,單個LED燈—動態輸入—掃描函數
[size=13.333333969116211px]2) 多個按鍵,多個LED燈—動態—掃描函數—數組對照
[size=13.333333969116211px]3) 多個按鍵,多個LED燈—單數碼管—掃描函數—數組對照
[size=13.333333969116211px]4) 鍵盤,多個LED燈—單數碼管
[size=13.333333969116211px]3. 多個按鍵 → 鍵盤、數碼管與點陣—最小系統—輸入與輸出掃描
[size=13.333333969116211px]a) 多個按鍵,多個LED燈—多數碼管—掃描函數—數組對照
[size=13.333333969116211px]b) 鍵盤,多個LED燈—單數碼管—掃描函數—數組對照
[size=13.333333969116211px]c) 多個按鍵,多個LED燈—單點陣—掃描函數—數組對照
[size=13.333333969116211px]d) 鍵盤,多個LED燈—多點陣—掃描函數—數組對照
[size=13.333333969116211px]2. 多個按鍵→ 鍵盤、數碼管與點陣—最小系統—輸入與輸出掃描
[size=13.333333969116211px]1) 多個按鍵,多個LED燈—多數碼管—掃描函數—數組對照
[size=13.333333969116211px]LED燈是由發光二極管制成的,它的工作原理與標準或說普通二極管相同—單向導電性。將多個發光二極管按照8字形安排,則構成一個7段數碼管;按照米字形則構成13段數碼管。后者在字節處理方面不是8的倍數,則會帶來一些麻煩。前者雖缺一位,但加上小數點位則恰到好處。
[size=13.333333969116211px] 
[size=13.333333969116211px]//源程序—4個一組的數碼管實現:
[size=13.333333969116211px]#define LEDS 4
[size=13.333333969116211px]#include"reg51.h"
[size=13.333333969116211px]//led T選iffl1號
[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 模型靠脈沖點亮,第 i 位靠脈沖點亮后,會自動熄來頭。
[size=13.333333969116211px]//修改循環次數,改變點亮下一位之前的延時,可得到不同的顯示效果。
[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 多數碼管循環移動
[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字符陽極管
[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};//右向左移動
[size=13.333333969116211px]uchar code DUA_CODE[]={0x01,0x02,0x04,0x08 };//左向右移動
[size=13.333333969116211px]
[size=13.333333969116211px]******關于移位函數的使用—P3=_crol_(P3,1);或P3=_cror_(P3,1);左右移位*******
[size=13.333333969116211px]//延時
[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; //發送段碼
[size=13.333333969116211px]P3=DUA_CODE; //發送位碼
[size=13.333333969116211px]DelayMS(10);
[size=13.333333969116211px]}
[size=13.333333969116211px]}
[size=13.333333969116211px]}
[size=13.333333969116211px]
[size=13.333333969116211px]2) 鍵盤,多個LED燈—單數碼管—掃描函數—數組對照
[size=13.333333969116211px]
[size=13.333333969116211px]3) 多個按鍵,多個LED燈—單點陣—掃描函數—數組對照
[size=13.333333969116211px]
[size=13.333333969116211px]4) 鍵盤與點陣
[size=13.333333969116211px]字母輸入與實現技術
[size=13.333333969116211px]文本顯示技術
[size=13.333333969116211px]多個LED燈,多個按鍵 → 鍵盤
[size=13.333333969116211px]A) 單“位”—P口1位--單個燈—位輸出,單個按鍵控制—硬控制與軟控制
[size=13.333333969116211px]一個按鍵,一盞照明燈,一個繼電器。硬件接口問題—線路連接、硬件硬驅動問題(程序稱為軟驅動)。
[size=13.333333969116211px]
說明: [size=13.333333969116211px]硬件特性,驅動與控制信號,程序編寫
[size=13.333333969116211px]由繼電器引出的強電驅動電器的控制問題,如電動機—交流電機、直流電機、步進電機、伺服電機;單項或多項
[size=13.333333969116211px]
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |