電路原理圖如下:
0.png (182.2 KB, 下載次數: 28)
下載附件
2018-11-25 14:58 上傳
程序設計流程圖:
0.png (17.08 KB, 下載次數: 20)
下載附件
2018-11-25 14:58 上傳
0.png (1.54 KB, 下載次數: 20)
下載附件
2018-11-25 14:58 上傳
實驗總結:
實驗中有遇到許多問題。定義LED顯示字模時不能定義成unsigned char code類型;count不能定義成unsigned char類型等。程序中用到了外部中斷,讓我們把書本上的知識運用到了實踐中,受益匪淺。
單片機源程序如下:
- #include<reg51.h> //包括一個51標準內核的頭文件
- #include<intrins.h>
- sbit P3_2=P3^2; //輸出端口定義
- sbit P3_3=P3^3;
- unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //LED燈顯示字模
- char count; //定義符號變量
- void delay (unsigned int time) //延時函數
- {unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void INT0_srv() interrupt 0 using 1 //外部中斷0處理程序
- {
-
- delay(10);
- if(INT0==0){ //P3^3接口按鍵按下
- count++; //計數器增1
- if(count==100) //判斷循環是否超限
- count=0;
- P1=table[count/10]; //顯示十位數字
- P2=table[count%10]; //求余,顯示個位數字
- while(P3_2==0); //等待按鍵松開,防止連續計數
- }}
- void INT1_srv() interrupt 2 using 2 { //外部中斷1處理函數
-
-
- delay(10);
- if(INT1==0){
- count--;
- if(count<0)
- count=99;
- P1=table[count/10];
- P2=table[count%10];
- while(P3_3==0);
- }}
-
- void main(){
- count=0;
- EA=1; //中斷初始化
- EX0=1;
- EX1=1;
- while(1); //無限循環體
- }
復制代碼
完整的Word格式文檔51黑下載地址:
實驗二 按鍵計數LED燈數碼管顯示.docx
(351.14 KB, 下載次數: 21)
2018-11-25 13:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|