微控制器C語言怎麼使P1 0的按鍵持續2s鬆開後P2口輸出F0H 持續4S鬆開後P2口輸出0FH

時間 2022-05-15 15:40:07

1樓:

像這種可以使用定時器或者外部中斷,但是p1.0在51微控制器中是個普通輸入輸出埠,所以外部中斷不能用,那麼可以這樣,

硬體:在p1.0口接個10k的上拉電阻,然後接按鍵,按鍵的另一端接地。

軟體(以常用的89c52為例):

#include

#define key p1^0

void delayms(xms)    //毫秒級延時函式

main()

while(!key);    //等待按鍵被釋放

}if(flag==1)

p2=f0h;      //此處你說的p2輸出f0h我沒看懂,你按照你自己的改下要不然編譯會報錯

else if(flag==2)

p2=0fh;      //此處你說的p2輸出0fh我沒看懂,你按照你自己的改下要不然編譯會報錯}}

微控制器高手,一定要幫忙啊!p2口是鍵盤,p1.0輸出,硬體如圖,為何蜂鳴器一直在響,復位也響,按鍵卻無效

2樓:summer不會

可能原因之一:蜂鳴器分無源和有源的,按照你這個設計來看應該用無源的,你可能用的有源的。

可能原因之二:51微控制器上電時候全部io口預設高電平。

3樓:彩虹序章

是吧是4*4矩陣式按鍵 啊,按下按鈕,有音發出,12個的,是的話留個郵箱,發過來

如果一直響的話是p1.0口一直是高電平吧

寫一個微控制器程式要c語言的

4樓:

按照你的意思,p0口可以用led燈來顯示結果。

unsigned char tem=0;

while(p3_2==1) //沒有按下按鍵時,一直不停的檢測埠

p0=tem; //當p3_2按下時,將結果送p0口

5樓:匿名使用者

都說得這麼清楚了!就可以自己寫了!

誰能給我解釋一下以下的微控制器程式

利用89s51微控制器的p1.0引腳檢測一按鍵開關使每按鍵一次,p1.1輸出一個正脈衝(脈寬隨意),微控制器c語言

微控制器程式設計問題(c語言),很入門的問題,明天比賽,急急急!多少分都可以

6樓:匿名使用者

除錯了好幾遍~ 沒介面晶片 光微控制器好麻煩啊 在我的開發板上除錯成功了 12m晶振~~ 既然多少分都可以 那就使勁給吧~

#include

code unsigned char tab=

; //共陽數碼管 0-9

unsigned char dis_shiwei;//定義十位

unsigned char dis_gewei; //定義個位

unsigned char second; //秒

char flag;

unsigned char shi;

void delay(unsigned int cnt)

unsigned char keyscan(void)//鍵盤掃描函式,使用行列反轉掃描法

}return(0xff); //否則返回固定值0xff

}void main()

if(temp==10)//按下了a鍵

else

if(flag==1)//按下有效鍵}}

}//定時中斷

void tim(void) interrupt 1 using 1

dis_shiwei=tab[second/10];//十位顯示值處理

dis_gewei=tab[second%10]; //個位顯示處理}}

7樓:做而論道

下列程式已經調好,按鍵顯示電路可見:

//微控制器:使用51系列相容的即可;

//4×4矩陣鍵盤:接在p1口;

//兩位數碼顯示器: p0口輸出七段碼,p2口輸出位選碼。

/****************************************

//c語言程式如下。

* 檔名: key_led.c

* 功能 : 對4×4矩陣鍵盤進行輸出,在數碼管後兩位顯示按鍵值。

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[10] = ;

uchar sec, t_50ms;

* 名稱 : delay_1ms()

* 功能 : 延時子程式,延時時間為 1ms * x

* 輸入 : x (延時一毫秒的個數)

* 輸出 : 無

void delay_1ms(uint x)

* 名稱: display(uchar k)

* 功能: 將引數分成十位、個位分別顯示

* 輸入: k (鍵盤數值)

* 輸出: p0口輸出七段碼,p2口輸出位選碼

void display(uchar k)

* 名稱: keyscan()

* 功能: p1外接4×4按鍵, 按照掃描法讀出鍵值

* 輸出: 按鍵值0~15/如無鍵按下, 返回16

uchar keyscan(void)

; for(j = 0; j < 4; j++) }

return 16; //判斷結束,沒有鍵按下,返回16

} //呵呵,實質性的語句不過8行,就是這麼簡練!

* 名稱: getkey()

* 功能: 讀出按鍵、消抖、等待按鍵釋放

* 輸出: 按鍵值0~15/如無鍵按下, 返回16

uchar getkey(void)

* 名稱 : main()

* 功能 : 主函式

void main(void)

if (key_value == 10) tr0 = 1;

} } }

* 名稱 : t0_int()

* 功能 : t0中斷函式

void t0_int() interrupt 1

8樓:匿名使用者

可以用定時判斷a的狀態的,一旦按鍵觸發,就停止讀秒或數碼管清零,等待按鍵輸入,當然,因為你只用到0-9顯示,你也可以把a鍵作為一個特殊鍵處理的。

9樓:手機使用者

幾本書給你

參考資料

1,msp430系列超低功耗微控制器原理與系統設計/李智奇/西安電子科技大學出版社 2008。

2,msp430微控制器c程式設計與實踐/曹磊/ 北京航空航天大學出版社 2007。

3,msp430微控制器c語言應用程式設計例項精講/秦龍/電子工業出版社 2006 。

4,msp430系列微控制器實用c語言程式設計/張晞, 王德銀, 張晨/人民郵電出版社 2005。

5,msp430系列16位超低功耗微控制器實踐與系統設計/沈建華, 楊豔琴, 翟驍曙/清華大學出版社 2005。

6,msp430微控制器應用系統開發典型例項/秦龍/中國電力出版社 2005。

7,msp430系列16位超低功耗微控制器原理與應用/沈建華, 楊豔琴, 翟驍曙/清華大學出版社 2004。

10樓:匿名使用者

還沒學微控制器!無法回答!

微控制器編寫程式 用80C51並口P1 0輸出訊號控制LED顯示,使之亮400ms,滅200ms連續

額,這個我更習慣c了,彙編反而忘的差不多了大致是這個樣子的 led bit p1.0 引腳定義,放在程式的前面org 0000h ljmp main org 1000h main 主程式loop setb led call delay call delay clr led call delay lj...

51微控制器定時器中斷方式實現P1 0輸出週期1s的方波的方法

方法有很多的,給你一個,你可以除錯一下,你可以通過不同的晶振去計算定時器初值,如果你懂定時器這部分很好調通的 include sbit p1 0 p1 0 int i 全域性變數void timing void 晶振為3.6864m 定時中斷函式 void time0 int interrupt 1...

51微控制器c語言中P2 0x0F P

斬丨我了個去 第一句,位與操作,把p2的8個管腳與00001111 相位與,得到結果,p2.4到p2.7輸出低電平,p2.0到p2.3維持不變。任何數與0相與結果為0,與1相與結果為它本身。那是我弄錯了。還是的正確 第二句,把1左移四位,那就0001 0000 然後加上c的值,然後在位或,任何數與1...