單片機三層電梯控制,使用數電和帶單片機,適合新手。
單片機三層電梯的源程序:
- /******************************************************************
- AT89S51的T0,T1計數器對輸入的信號進行頻率計數,測量結果用五位數碼管
- 動態顯示,要求對0~65KHZ的信號頻率進行準確測量,誤差不超過5HZ
- *****************************************************************/
- #include <reg51.h>
- #define uint unsigned int
- sbit KEY_1=P2^0;
- sbit KEY_2=P2^1;
- sbit KEY_3=P2^2;
- sbit KEY_4=P3^3;
- sbit LED1=P3^0;
- sbit LED2=P3^1;
- sbit LED3=P3^2;
- unsigned int num=0;
- code unsigned char TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X77};
- /*顯示變量對應的數值*/
- /***************定時器0中斷服務函數************************/
- void timer0()interrupt 1{
- TH0 = (65536 - 10000) / 256;
- TL0 = (65536 - 10000) % 256;
- num++;//記到20就直接停止
- //if(num>=50)
- }
- /**************************延時函數************************************/
- void delay(unsigned char t){
- unsigned char i,j;
- for(i=0;i<t;i++)
- for(j=0;j<125;j++);
- }
- void delayms(unsigned int xms)
- {
- unsigned int x;
- unsigned char y;
- for(x = xms; x > 0; x--)
- for(y = 124; y>0; y--);//11.0592MHz: 114 //12MHz: 124
- }
- void delayus( int xus)
- {
- while(--xus>0);
- }
- /*************************顯示函數**************************************/
- void main(){
-
- TMOD=0x01;//T0 記時 T1計數
- TH0 = (65536 - 10000) / 256;
- TL0 = (65536 - 10000) % 256;
-
- TR0=1; //開T0 // IT1=1;
- ET0=1;//開中斷
- EA=1;//打開總中斷 0x86 0xdb 0xcf
- LED1=1;
- LED2=1;
- LED3=1;
- num=0; //1 1000 0110 2 1101 1011 3 1100 1111
- while(1)
- {
- if(KEY_1==0){ LED1=1; LED2=1; LED3=1;while(P1!=0X86);num=0; LED1=0; while(num<500){if(KEY_2==0||KEY_3==0)break;} if(P1==0X86)LED1=1; }
- else if(KEY_2==0) {LED1=1; LED2=1; LED3=1;while(P1!=0Xdb);num=0; LED2=0; while(num<500){if(KEY_1==0||KEY_3==0)break;} if(P1==0Xdb)LED2=1;}
- else if(KEY_3==0) {LED1=1; LED2=1; LED3=1;while(P1!=0Xcf);num=0; LED3=0; while(num<500){if(KEY_1==0||KEY_2==0)break;} if(P1==0Xcf)LED3=1;}
- }
- }
- //
復制代碼
單片機三層電梯控制系統的所有資料下載:
模擬3層電梯.zip
(66.39 KB, 下載次數: 103)
2017-1-5 12:03 上傳
點擊文件名下載附件
2
|