51單片機自動控制升旗系統(tǒng)_第1頁
51單片機自動控制升旗系統(tǒng)_第2頁
51單片機自動控制升旗系統(tǒng)_第3頁
51單片機自動控制升旗系統(tǒng)_第4頁
51單片機自動控制升旗系統(tǒng)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、/*51單片機升旗系統(tǒng)*/*步進電機升旗和降旗,蜂鳴器奏國歌,*/*數(shù)碼管顯示系統(tǒng)時間和高度*/#include <reg52.h>#define uint unsigned int#define uchar unsigned charuchar code FFW=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09; /正轉的步碼uchar code REV=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01; /反轉的步碼uchar th=0x0f,0x5d,0xab;/3個定時器值,高8位uchar tl=0xa0,0xc

2、0,0xe0;/3個定時器值,低8位code uchar SZ = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /數(shù)碼管unsigned int code FreqTab1=64216,64360,64489,64547,64654,64752,64837,64876,64948,65012,65042,65095,65144,65186,65206,65242,65274,65289,65135,65340,65361,;unsigned int code FreqTab= /簡譜對應的簡譜碼、T值 65535,64260,64400

3、,64524,64579,64685,64778,64860,64898,64968,65030,65057,65110,65157,65198,65217,65252,65283,65297,65323,65346,65367, ;unsigned char code yyjjxq= 8,0x08,0,0x04,5,0x04,8,0x0c,8,0x04,8,0x06,8,0x02,5,0x04,6,0x02,7,0x02,8,0x08,8,0x08,0,0x04,10,0x04,8,0x04,9,0x02,10,0x02,/10,0x04,10,0x04,8,0x04,9,0x02,10,0

4、x02,12,0x08,12,0x08,10,0x06,10,0x02,8,0x06,10,0x02,12,0x06,10,0x02,9,0x08,/12,0x10,9,0x10,13,0x08,12,0x08,9,0x08,10,0x08,12,0x04,10,0x04,0,0x04,12,0x04,/12,0x04,10,0x04,10,0x04,12,0x04,10,0x04,9,0x02,10,0x02,8,0x08,10,0x08,0,0x08,/10,0x08,10,0x08,5,0x06,6,0x04,8,0x04,8,0x04,10,0x06,10,0x02,12,0x04,1

5、2,0x04,9,0x04,9,0x02,9,0x02,6,0x08,9,0x0c,5,0x04,8,0x0c,8,0x04,10,0x0c,10,0x04,12,0x10,8,0x06,10,0x02,12,0x04,12,0x04,13,0x08,12,0x08,10,0x06,8,0x02,12,0x08,10,0x04,0,0x04,8,0x04,0,0x04,/10,0x04,10,0x04,8,0x04,8,0x04,5,0x08,8,0x08,10,0x06,8,0x02,12,0x08,10,0x04,0,0x04,8,0x04,0,0x04,/10,0x04,10,0x04,

6、8,0x04,8,0x04,5,0x08,8,0x08,5,0x08,8,0x08,5,0x08,8,0x08,8,0x08,0,0x08,/8,0x08,0xff,0xff,;uchar speed_count=2;uchar flag=0;bit timer_flag=0;bit MOTOR_FFW_FLAG=0;bit MOTOR_REV_FLAG=0;sbit K1 = P30; /正轉sbit K2 = P31; /反轉sbit K5 = P34; /停止sbit led1=P20;sbit led2=P21;sbit led3=P22;sbit led4=P23;sbit led5

7、=P24;sbit led6=P25;sbit beep=P37;void smg_display();void K1_stop_state();void K2_stop_state();void K5_stop_state();void music();uchar num1=0,num2=0,num3=0;uint cnt=0,Time=0,Length=0;uchar a=0;uchar tl0,th0;void delay(unsigned char t) /-延時函數(shù)-/ unsigned char t1; unsigned long t2; for(t1=0;t1<t;t1+)

8、 for(t2=0;t2<770;t2+); TR0=0; void delayms(unsigned int x)unsigned int a,b;for(a=x;a>0;a-)for(b=124;b>0;b-);void DTIME(int n)/延時程序uchar i;for(i=0;i<50*n;i+);void timer0() interrupt 1 TR0=0; beep=beep; TL0=tl0; TH0=th0; TR0=1; void timer1_init() /定時器初始化TH1 = (65536-8000)/256;TL1 = (65536-

9、8000)%256;ET1 = 0;/*void timer0(void) interrupt 1TH0=thspeed_count;TL0=tlspeed_count;timer_flag=1;void up(void) interrupt 0/加速speed_count+;if(speed_count>2) speed_count=2; void down(void) interrupt 2/減速 speed_count-;if(speed_count<0) speed_count=0; */ void T1_time() interrupt 3/定時器函數(shù)TH1 = (655

10、36-8000)/256;TL1 = (65536-8000)%256;num1+;num2+;num3+;smg_display();void SETP_MOTOR_FFW()/電機正轉 uchar i;P1 = FFWi; DTIME(5);i+;if(i=8) i=0;void SETP_MOTOR_REV() /電機反轉 uchar i;P1 = REVi; DTIME(5);i+;if(i=8) i=0;void main() uchar N = 10; TMOD=0x11;ET0=1;EX0=1;IT0=1;/外部中斷0EX1=1;IT1=1;/外部中斷1EA=1;timer1_i

11、nit(); while(1)if(K1 = 0)if(MOTOR_FFW_FLAG=0)flag=1; TR1=1;smg_display();music(); else if(K2 = 0) if(MOTOR_REV_FLAG=0) flag=2;TR1=1;smg_display(); else if(K5=0) P0 = 0xfb;P1 = 0x03; void smg_display()switch(+cnt%6)case 0:P2|=0xff;led1=0;P0=SZTime/10;break;case 1:P2|=0xff;led2=0;P0=SZTime%10;break; /

12、*case 2:P2|=0xff;led3=0;P0=SZTime%100%10;break; */case 3:P2|=0xff;led4=0;P0=SZLength/100;break; case 4:P2|=0xff;led5=0;P0=SZLength/10%10;break;case 5:P2|=0xff;led6=0;P0=SZLength%100%10;break; DTIME(1);if(cnt>500)cnt=0;if(flag!=1&&flag!=2)Time=0;if(flag=1)if(K5=0) K5_stop_state(); ET1=1; T

13、R1=1;if(num3=5)num3=0;SETP_MOTOR_FFW();if(num1=100)num1=0;Time+;if(Time=43)a=Length;MOTOR_FFW_FLAG=1;MOTOR_REV_FLAG=0;K1_stop_state();if(num2=24)num2=0;Length+;if(flag=2)if(num3=5)num3=0;SETP_MOTOR_REV();if(num1=100)num1=0;Time-;if(Time=0)a=Length;a+;MOTOR_FFW_FLAG=0;MOTOR_REV_FLAG=1;K2_stop_state()

14、;if(num2=24)num2=0;Length-; void K1_stop_state() while(1) P2|=0xff;led1=0;P0=SZTime/10;DTIME(2); P2|=0xff;led2=0;P0=SZTime%10;DTIME(2); /*case 2:P2|=0xff;led3=0;P0=SZTime%100%10;break; */P2|=0xff;led4=0;P0=SZa/100; DTIME(2); P2|=0xff;led5=0;P0=SZa/10%10;DTIME(2);P2|=0xff;led6=0;P0=SZa%100%10;DTIME(2

15、); if(K2=0) flag=2;break; void K2_stop_state() while(1) P2|=0xff;led1=0;P0=SZTime/10;DTIME(2); P2|=0xff;led2=0;P0=SZTime%10;DTIME(2); /*case 2:P2|=0xff;led3=0;P0=SZTime%100%10;break; */P2|=0xff;led4=0;P0=SZa/100; DTIME(2); P2|=0xff;led5=0;P0=SZa/10%10;DTIME(2);P2|=0xff;led6=0;P0=SZa%100%10;DTIME(2); if(K1=0) flag=1;break; void K5_stop_state()P2|=0xff;led1=0;P0=SZ0;while(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論