關於C微控制器用陣列檢測鍵盤輸入問題

2025-02-10 18:15:12 字數 3757 閱讀 7794

1樓:學者無量

你的思路是很好的,就是有一些語句我實在是沒有看明白有什麼用,於是我刪掉了幾個變數,沒有加入新的變數,改完後是這個樣子:

#include

#include

#define uchar unsigned char //巨集定義,按乙個鍵顯示乙個數字。

#define uint unsigned int

uchar temp,num,shuzi[4][2]=,定義鍵盤按鍵轉化為二維陣列。

uchar code table=

void delay(uchar );延時子程式。

void display(uchar); 顯示子程式。

uchar key();求按鍵子程式。

void main()

temp=0x3e; /初始化檢測第一排的按鍵,檢測時要先賦值1 0011 1110

p0=0;while(1)

display(key())

uchar key()

uchar i,j,tab=

num=0;

for(i=0;i<=3;i++)

p3=tab[i];

delay(10);

temp=0x10;

for(j=0;j<2;j++)

if(!(p3&temp))

num=shuzi[i][j];

break;

temp=_crol_(temp,1);

return num;

void display(uchar num) /顯示子程式。

p0=table[num];

p2=0x01; /沒看出來這句話有什麼用。

delay(10);

p2=0x01;

void delay(uchar t) /延時子程式。

uchar x,y;

for(x=t;x>0;x--)

for(y=110;y>0;y--)

微控制器矩陣鍵盤輸入的數字怎麼存放到陣列中,a[10]陣列中個元素有鍵盤輸入,請高手指點

2樓:網友

嗯,你應該是取到鍵值就把它放到陣列中吧,然後把取建的標誌置為0對吧,但是微控制器掃瞄速度很快,你按下去到提起手來微控制器都掃了很多次了,即使標誌被指為0又會很快被置為1的,然後又繼續賦值了,你應該做個松鍵程式,跟按鍵程式差不多,也要消除抖動,確定按鍵被提起來後,再給陣列賦值。

3樓:歪瑞骨的

其實這是按鍵的重複掃瞄問題,因為微控制器的執行非常快,所以當你按下按鍵的那些時間,已經可以執行多次鍵盤掃瞄和賦值了,最簡單的方法是在賦值語句後上一定時間的延時,大概秒左右就可以了,延時的時間是為了等按鍵釋放之後再經行第二次的掃瞄。

c\c++語言如何定義陣列陣列長度由鍵盤輸入

4樓:網友

c\c++本身不支援動態陣列,但是可以通過動態申請記憶體實現由鍵盤輸入長度的方式確定陣列長度。

實現**如下:

int num;

cout<<「請輸入陣列大小」;

cin>>num;

int *p=new int[num];

這裡就可以使用這個動態陣列了。

delete p; //不用的時候務必自己刪除記憶體。

5樓:阿達瑪

c中陣列的長度在定義陣列的時候就必須確定。不能由鍵盤輸入。

6樓:網友

沒辦法。不過可以用連結串列做動態鏈達到這一效果。

7樓:瘋子難不難

arr = (int **malloc(sizeof(int*)*row); //arr在這裡可以看出成陣列,陣列的每個成員都是指向int型別的指標,這樣每個指標指向的代表一行,共row行。

for(i=0; i

8樓:網友

4、對陣列的增強。

可變長陣列。

c99中,程式設計師宣告陣列時,陣列的維數可以由任一有效的整型表示式確定,包括只在執行時才能確定其值的表示式,這類陣列就叫做可變長陣列,但是隻有區域性陣列才可以是變長的。

可變長陣列的維數在陣列生存期內是不變的,也就是說,可變長陣列不是動態的。可以變化的只是陣列的大小。可以使用*來定義不確定長的可變長陣列。

ps:這個功能屬於c99的新特徵,我沒用過,你自己去查例子吧。

9樓:網友

用動態陣列就可以了。

如用cin>>x;

定義int *a = new int[x];就可以了。

10樓:噠噠啊如同一條

c++不用定義,可以直接輸入的。

11樓:無名小輩

#include

#include//標頭檔案必須包括這個。

void main()

for (i = 0; i < n; i++)

如何通過微控制器矩陣鍵盤輸入一位陣列???

12樓:網友

弄個陣列存放輸入的密碼,每次輸入則將陣列做移位,然後每次顯示都把陣列中所有的字元顯示一次就達到移位顯示了。參考程式發給你了。

13樓:網友

同樣是鍵盤掃瞄啊,檢測到鍵盤按下後,把數值賦給陣列就可一了啊。

14樓:網友

輸入一位陣列什麼意思??是指先輸入幾個字,斷開再輸入幾個字??

微控制器c語言 陣列問題

15樓:網友

看看你主函式的printf語句中有什麼問題沒,是不是隻輸出3個,所以陣列tb【】中的tb[3]=d沒有輸出。

16樓:

四位的吧,你沒有看錯吧?

51微控制器c語言 幾個陣列定義的區別

17樓:

推崇一樓的答案,詳細!

微控制器 c語言 關於陣列的問題

18樓:

你註釋的內容沒有分號,去掉註釋你把分號加上了麼?

19樓:

table3和table4定義後面沒有分號;

定義沒有什麼問題,提示是不能修改的左值,是不是你程式裡面使用到了table3和table4?修改了table3和table4裡面的資料?

微控制器c語言陣列問題

20樓:網友

/根據給定值,在table中找出對應的索引數。

int getindex(uchar code table,uchar code value)

int index;

for(index =0; index<10; index ++if(table[index] =value) break;

如嫌碰渣談 }

沒找到,返回-1

if(index ==10) return -1;

找到,返回索引數。

return index;

使用:int shu = getindex(table, 0x06);

是你要的嗎?者神。

21樓:網友

將shu定義為全域性變畢野量,也手桐喊就是定義在主函式外部,其他函式就都可以輪脊訪問了啊,你那條語句「table[shu]==0x06」是什麼意思?打算幹啥?

C語言鍵盤輸入數存入陣列中,將這數逆序輸出

這是你bai要求的程式,我已du經通過 zhivc除錯執行通過了 dao include void main printf 逆序輸出 容為 n for i 9 i 0 i printf d t array i printf n 這是你要 抄求的程式,我已襲經通過vc除錯運 bai行通過了 inclu...

C程式中,從鍵盤輸入字串並儲存在字元陣列strl中,把字串str1中下標為偶數的字元儲存

include void main str2 j 0 puts str2 c語言程式設計 編寫程式,從鍵盤輸入一個字串放在字元陣列a中,用選擇法將a中的有效字元按降序排列 include include include void inorder char array,int n int main i...

微控制器C語言陣列元素下標多於元素數的時候,編譯器或者說C語言

你發現來bug了?jbduanxuan 7 是最後一個沒錯。源這jbduanxuan 20 編譯程式居然bai給通過了?那可du要了命了 zhi,誰知道他還dao會犯什麼錯誤啊?難不成都讓我們自己把關?如果讓我猜,編譯程式就當這個陣列資料連續存放,反正往後數唄,20就20,你沒試試200?在不報錯就...