導航:首頁 > 操作系統 > 單片機掃描實驗代碼

單片機掃描實驗代碼

發布時間:2025-07-11 15:12:38

1. 用單片機控制2位數碼管,不用鎖存器能顯示動態掃描碼比如說從0到99。如果能程序怎麼寫

編寫一個程序來使用單片機控制2位數碼管顯示動態掃描碼,比如從0到99,確實不需要使用鎖存器。下面是一個簡單的示常式序:

我們首先定義一個數組來存儲每個數字的段碼:

char code anxuan[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}

接下來定義一些變數:

char i, j, x; int y;

定義一個函數用於延時:

void yanshi(char shu) { while(shu--) for(x=0; x<110; x++); }

在主函數中,我們設置延時變數:

void main() { y = 30000; while(y--) { for(i = 0; i < 9; i++) { P21 = 1; //如果你用的數碼管是共陽極的話,就置1. P0 = anxuan[i]; yanshi(5); P0 = 0x00; } for(j = 0; j < 9; j++) { P20 = 1; P0 = anxuan[j]; yanshi(5); P0 = 0x00; } }}

這個程序使用了動態掃描技術,通過控制P21和P20引腳的狀態來切換數碼管的顯示。每個數字在P0引腳上顯示5毫秒。

你可以根據自己的需求調整延時時間和顯示的數字范圍。希望這個示例對你有所幫助。

請記住,不同的數碼管類型(共陽極或共陰極)需要調整相應的引腳設置。如果使用共陰極數碼管,P21和P20應該設置為低電平。

如果你對這個方法感興趣,不妨嘗試編寫更多的示常式序,以加深對單片機控制數碼管的理解。

2. 求用一片74hc595加單片機驅動一個4位數碼管的動態掃描程序!!!

下面是595的程序,給你參考一下,根據這個程序來寫數碼管顯示就很簡單了。
#define u8 unsigned char
#define u16 unsigned int
sbit MR=P1^6; //寄存器清0,避免數據錯位
sbit RCK=P1^5; //並行輸出時鍾
sbit DS=P1^4; //數據線
sbit CLK=P1^3; //移位輸入時鍾
void writ_595(u8 dat)
{
u8 i;
MR=0; //寄存器清0,避免數據錯位
MR=1;
for(i=0;i<8;i++)
{
CLK=0;
if((dat&0x80) == 0x80)
DS = 1; //串列數據輸出
else DS = 0;
CLK=1; //移位輸入時鍾,上升沿輸入
dat<<=1;
}
RCK=0; //並行輸出時鍾
RCK=1;
} 該子函數可以直接調用,比如writ_595(0xfe);Q0-Q7腳則輸出對應的二進制碼

3. 求用52單片機實驗板實現4*4鍵盤及數碼管動態掃描顯示的程序

#include <reg52.h>
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
sbit la=P2^6;
sbit wela=P2^7;
uchar keyscan();
uchar num,temp,num1;
void delay(uchar z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
num=17;
la=1;
P0=0;
la=0;
wela=1;
P0=0xc0;
wela=0;
while(1)//每次按下都是 所以while循環
{
num1=keyscan();
la=1;
P0=table[num1-1];
la=0;
}
}
uchar keyscan()
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0); //必須用if啊
{
delay(5);//消抖再判斷
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0) //必須用if啊
{
temp=P3;
switch(temp)
{
case 0xee:num=1;break;
case 0xde:num=2;break;
case 0xbe:num=3;break;
case 0x7e:num=4;break;
}
while(temp!=0xf0)// 鬆手檢測 鬆手數字才變化 必須用while 不鬆手不顯示 不鬆手下一排鍵盤沒用 一直在while內循環 放在第二個if內
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
delay(5);//消抖再判斷
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xed:num=5;break;
case 0xdd:num=6;break;
case 0xbd:num=7;break;
case 0x7d:num=8;break;
}
while(temp!=0xf0)//鬆手檢測 鬆手數字才變化 必須用while
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
delay(5);//消抖再判斷
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xeb:num=9;break;
case 0xdb:num=10;break;
case 0xbb:num=11;break;
case 0x7b:num=12;break;
}
while(temp!=0xf0)//鬆手檢測 鬆手數字才變化 必須用while
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
delay(5);//消抖再判斷
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xe7:num=13;break;
case 0xd7:num=14;break;
case 0xb7:num=15;break;
case 0x77:num=16;break;
}
while(temp!=0xf0)//鬆手檢測 鬆手數字才變化 必須用while
{
temp=P3;
temp=temp&0xf0;
}
}
}
return num;
}

4. 單片機矩陣鍵盤按鍵行列逐級掃描法

unsigned char KeyScan(void) //鍵盤掃描函數,使用行列逐級掃描法{ unsigned char Val; KeyPort=0xf0;//這句其實就是整體看看是否有鍵按下,四行全送0,有鍵按下,高四位肯定不為全1 if(KeyPort!=0xf0)//表示有按鍵按下 { DelayMs(10); //去抖 if(KeyPort!=0xf0) { //表示有按鍵按下 KeyPort=0xfe; //檢測第一行 if(KeyPort!=0xfe) { Val=KeyPort&0xf0; Val+=0x0e; //相當於檢測到第一行有鍵按下,鍵值=列(高四位)+行(低四位) while(KeyPort!=0xfe); DelayMs(10); //去抖 while(KeyPort!=0xfe); return Val; }

5. 單片機2×2按鍵掃描程序

單片機2×2按鍵掃描程序的實現方法如下

  1. 定義引腳
    • 使用#define指令將單片機的P0口的四個引腳分別定義為行線和列線。c#define l1 P0_0#define l2 P0_1#define c1 P0_2#define c2 P0_32. 按鍵掃描函數: 編寫一個名為getkey的函數,用於掃描2×2矩陣鍵盤並返回按鍵值。 首先,將列線c1和c2設置為輸出高電平,確保在掃描行線時不會誤觸發按鍵。 接著,將行線l1設置為輸出低電平,l2設置為輸出高電平,然後檢查列線c1和c2的狀態。 如果c1為0,表示按鍵1被按下,返回1。 如果c2為0,表示按鍵2被按下,返回2。 然後,將行線l1設置為輸出高電平,l2設置為輸出低電平,再次檢查列線c1和c2的狀態。 如果c1為0,表示按鍵3被按下,返回3。 如果c2為0,表示按鍵4被按下,返回4。 如果以上條件都不滿足,則返回0,表示沒有按鍵被按下。3. 注意事項: 在實際硬體連接中,由於P0口通常是開漏輸出,因此需要加上拉電阻以確保高電平能夠被正確識別。 按鍵的消抖處理在示例代碼中未體現,但在實際應用中應考慮加入,以避免因按鍵抖動導致的誤識別。cunsigned char getkey{c1=1;c2=1;l1=0;l2=1;ifreturn 1;ifreturn 2;l1=1;l2=0;ifreturn 3;ifreturn 4;return 0;}

以上代碼實現了一個簡單的2×2矩陣鍵盤掃描程序,通過掃描行線和列線的狀態來確定哪個按鍵被按下,並返回相應的按鍵值。

閱讀全文

與單片機掃描實驗代碼相關的資料

熱點內容
linuxoracle查看sid 瀏覽:751
什麼的伺服器快 瀏覽:764
程序員看不起編程 瀏覽:764
python網頁狀態碼 瀏覽:17
10分的硬幣演算法 瀏覽:772
vmwareesxi伺服器怎麼關閉 瀏覽:782
我的世界手機命令方塊循環 瀏覽:305
冷凝式壓縮機加水嗎 瀏覽:750
少兒編程培訓方法 瀏覽:807
樹莓派怎麼切換國內伺服器 瀏覽:707
java兩個數的差 瀏覽:919
編程語言性能排行 瀏覽:336
深度學習推理引擎編譯 瀏覽:515
cdr怎麼轉pdf格式 瀏覽:405
蒙商信用卡app里怎麼修改收貨地址 瀏覽:332
php高級面試題2017 瀏覽:937
紫色可以緩解壓力嗎 瀏覽:681
內核編譯版本cpu架構 瀏覽:574
中級程序員面試題 瀏覽:162
在線壓縮音樂文件 瀏覽:746