#include #define u8 unsigned char unsigned char seg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char run,floor; bit ud,stop=0; sbit P06=P0^6; sbit P07=P0^7; sbit ulc=P2^0; sbit dlc=P2^1; sbit start=P2^2; sbit alrl=P2^3; sbit alrb=P2^4; void input() { run|=((~P0)&0x3f); if((P06==0)&&(ud==1)) run|=0x02; if((P06==0)&&(ud==0)) run|=0x04; if((P07==0)&&(ud==1)) run|=0x08; if((P07==0)&&(ud==0)) run|=0x10; } void delay(int j) { int i; for(;j>0;j--) { input(); for(i=200;i>0;i--) { if(stop==1) break; } if(stop==1) break; } } void StepMotor(bit a,u8 b) { u8 x=0x80,i; if(a==1) { ulc=0; dlc=1; for(i=0;i { if(x==0x10) x=0x80; else x=x/2; P3|=(x&0xf0); delay(100); } } else { ulc=1; dlc=0; for(i=0;i { if(x==0x80) x=0x10; else x=x*2; P3|=(x&0xf0); delay(100); } } } void alarm() { alrl=0; while(1) { alrb = ~alrb; delay(200); } } void main() { floor=1; P1=seg_table[floor]; P0=0xff; ud=1; run=0; ulc=1; dlc=1; alrl=1; alrb=1; TCON=0x01; //打開外部中斷0,并設置為下降沿觸發 IE=0x81; //開總中斷 while(1) { while(start==1) { P1=seg_table[10]; ulc=1; dlc=1; } input(); switch(floor) { case 1: //1 { P1=seg_table[floor]; if((run&0x01)==0x01) { delay(600); run&=0xfe; } if((run&0x3e)!=0) { StepMotor(1,5); floor=2; ud=1; } else { ulc=1; dlc=1; } } break; case 2: { P1=seg_table[floor]; if(ud==1) //2上 { if((run&0x02)==0x02) { delay(600); run&=0xfd; } if((run&0x38)!=0) { StepMotor(1,5); floor=3; } else { ud=0; ulc=1; dlc=1; } } else //2下 { if((run&0x04)==0x04) { delay(600); run&=0xfb; } if((run&0x01)!=0) { StepMotor(0,5); floor=1; } else { ud=1;
上一篇:從99顯示到0的動態顯示(單片機設計)
下一篇:51單片機BMP280氣壓和溫度值測試程序
推薦閱讀最新更新時間:2025-06-04 23:33




設計資源 培訓 開發板 精華推薦
- STM8S903K3T6C最小系統板
- STEVAL-ISA019V2、基于 L6565 和 ESBT STC04IE170HV 的使用寬范圍輸入電壓的三相 80W SMPS 演示板
- 使用 ADM3252E 總線收發器的隔離式 USB 至隔離式 RS-485/隔離式 RS-232 接口
- NCT75DMR2G應用
- SC662EVB,基于 SC662 LED 驅動器的評估板
- ADR5040A 2.048 Vout精密微功耗可編程電流源的典型應用
- 使用 Analog Devices 的 ADF4360-3BCP 的參考設計
- 電池電源管理芯片SY6982EQDC評估板
- LTC3119IUFD 3.3V、1.5MHz 寬輸入穩壓器的典型應用電路
- 基于SPC564A70L7 MCU的探索Plus套件