|
一個(gè)最簡單的單片機(jī)應(yīng)用 按鍵識(shí)別的proteus仿真,原理圖如下:
單片機(jī)源程序:
- /********************************************************************
- 51黑電子論壇
- *********************************************************************/
- #include<reg52.h> //庫文件
- #define uchar unsigned char//宏定義無符號(hào)字符型
- #define uint unsigned int //宏定義無符號(hào)整型
- /********************************************************************
- 初始定義
- *********************************************************************/
- uchar count; //按鍵計(jì)數(shù),每按一下,count 加1
- uchar a,b; //定義字符型變量
- uchar temp; //定義字符型變量
- sbit BY1=P2^1; //定義按鍵的輸入端(為單片機(jī)P2口的P2.1按鍵)
- /********************************************************************
- 延時(shí)函數(shù)
- *********************************************************************/
- void delay10ms(void) //延時(shí)程序
- {
- uchar i,j;
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
- }
- /********************************************************************
- 按鍵判斷函數(shù)
- *********************************************************************/
- void key() //按鍵判斷程序
- {
- if(BY1==0) //判斷是否按下鍵盤
- {
- delay10ms(); //延時(shí),軟件去干擾
- if(BY1==0) //確認(rèn)按鍵按下
- {
- count++; //按鍵計(jì)數(shù)加1
- if(count==8) //計(jì)8次重新計(jì)數(shù)
- {
- count=0;//將count 清零
- }
- }
- while(BY1==0);//按鍵鎖定,每按一次count 只加1.
- }
- }
- /********************************************************************
- 主函數(shù)
- *********************************************************************/
- void main()
- {
- temp=0xfe; //定義為11111110
- while(1)
- {
- key(); //調(diào)用按鍵判斷函數(shù)
- a=temp<<count;//左移count位
- b=temp>>(8-count);//右移8-count位
- P0=a|b; //求值
- }
- }
-
- /********************************************************************
- 結(jié)束
- *********************************************************************/
復(fù)制代碼
所有資料下載:
按鍵識(shí)別.rar
(56.31 KB, 下載次數(shù): 14)
2016-10-10 16:47 上傳
點(diǎn)擊文件名下載附件
|
|