|
0.png (18.9 KB, 下載次數(shù): 62)
下載附件
2016-8-31 18:46 上傳
51單片機(jī)負(fù)載平衡監(jiān)控系統(tǒng)仿真電路原理圖
51單片機(jī)負(fù)載平衡監(jiān)控系統(tǒng)源程序如下:
- #include <AT89X52.h>
- unsigned char code SEGtable[]=
- {
- 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00
- };
- sbit sw7 = P0 ^ 7;
- sbit sw6 = P0 ^ 6;
- sbit sw5 = P0 ^ 5;
- sbit sw4 = P0 ^ 4;
- sbit sw3 = P0 ^ 3;
- sbit sw2 = P0 ^ 2;
- sbit sw1 = P0 ^ 1;
- sbit sw0 = P0 ^ 0;
- sbit FMQ = P1 ^ 7;
- bit alarmflg = 0;
- unsigned RxByte = 0x00;
- unsigned char counter = 0;
- unsigned char Scounter,Lcounter; //分別存放自己的水位狀態(tài)和遠(yuǎn)方的水位狀態(tài)
- unsigned char FMcounter = 0x02; //報(bào)警狀態(tài)參數(shù)
- void DelayFM(unsigned int x)
- {
- unsigned char t;
- while(x--)
- {
- for(t=0;t<120;t++);
- }
- }
- //蜂鳴器驅(qū)動函數(shù),參數(shù)為發(fā)聲聲調(diào)
- void FM(unsigned char x)
- {
- unsigned char i;
- for(i=0;i<100;i++)
- {
- FMQ = ~FMQ;
- DelayFM(x);
- }
- FMQ = 0;
- }
- void Delayms(unsigned int MS) //延時(shí)ms函數(shù)
- {
- unsigned int i,j;
- for( i=0;i<MS;i++)
- for(j=0;j<1141;j++);
- }
- void InitUART(void)
- {
- TMOD = 0x20; //9600bps
- SCON = 0x50;
- TH1 = 0xFD;
- TL1 = TH1;
- PCON = 0x00;
- EA = 1;
- ES = 1;
- TR1 = 1;
- }
- void Send(unsigned char x)
- {
- SBUF = x;
- while(TI == 0);
- TI = 0;
- }
- void Serial(void) interrupt 4 using 1
- {
- unsigned char RxByte;
- if(RI == 1)
- {
- RxByte = SBUF;
- RI = 0;
- P2 = RxByte;
- switch(RxByte)
- {
- case 0x00: Lcounter = 0;break;
- case 0xf9: Lcounter = 1;break;
- case 0xa4: Lcounter = 2;break;
- case 0xb0: Lcounter = 3;break;
- case 0x99: Lcounter = 4;break;
- case 0x92: Lcounter = 5;break;
- case 0x82: Lcounter = 6;break;
- case 0xF8: Lcounter = 7;break;
- case 0x80: Lcounter = 8;break;
- default:{};
- }
- if(Scounter > Lcounter)
- {
- if((Scounter - Lcounter) > 2) //如果超過2%
- {
- FMcounter = Scounter - Lcounter;
- alarmflg = 1; //報(bào)警標(biāo)志位
- }
- else
- {
- alarmflg = 0;
- }
- }
- else
- {
- alarmflg = 0; //清除
- }
- }
- }
- main(void)
- {
- InitUART();
- while(1)
- {
- Delayms(100);
- P0 = 0xFF;
- counter = 0;
- counter = counter + (unsigned char)sw7;
- counter = counter + (unsigned char)sw6;
- counter = counter + (unsigned char)sw5;
- counter = counter + (unsigned char)sw4;
- counter = counter + (unsigned char)sw3;
- counter = counter + (unsigned char)sw2;
- counter = counter + (unsigned char)sw1;
- counter = counter + (unsigned char)sw0; //計(jì)算當(dāng)前的負(fù)載
- Scounter = counter;
- Send(SEGtable[counter]);
- if(alarmflg == 1)
- {
- FM(FMcounter);
- }
- }
- }
復(fù)制代碼
0.png (95.24 KB, 下載次數(shù): 68)
下載附件
2016-8-31 18:46 上傳
51單片機(jī)負(fù)載平衡監(jiān)控系統(tǒng)仿真工程文件及所有資料下載:http://www.torrancerestoration.com/bbs/dpj-54940-1.html
|
|