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