|
智能電動(dòng)百葉窗的proteus仿真原理圖如下:
0.png (41.55 KB, 下載次數(shù): 112)
下載附件
2017-4-8 23:44 上傳
電動(dòng)機(jī)部分用l298n驅(qū)動(dòng)電機(jī)正反轉(zhuǎn):
0.png (17.9 KB, 下載次數(shù): 84)
下載附件
2017-4-8 23:45 上傳
51單片機(jī)源程序:
- //題目:智能電動(dòng)百葉窗
- //要求:兩種模式
- //模式一:自動(dòng)模式:通過光敏電阻檢測(cè)進(jìn)光量,使電機(jī)正反轉(zhuǎn) ,同時(shí)使LED亮
- //模式二:手動(dòng)模式,兩個(gè)按鍵分別控制電機(jī)正反轉(zhuǎn)
- //兩個(gè)限位開關(guān)限制電機(jī)轉(zhuǎn)動(dòng),中斷0切換控制模式
- //收獲:在使用if。。。 else 時(shí)如果多個(gè)選擇模式應(yīng)使用if else 而不是if if else 這時(shí)后面的else僅僅與
- //前一個(gè)if配對(duì),第一個(gè)if就失去了意義
- //2,數(shù)據(jù)處理還是要注意,不要混淆
- //3,不同模式時(shí)要先相互獨(dú)立分析再分析其共性。
- #include<reg52.h>
- #include<intrins.h>
- #include"I2C.h"
- unsigned char GetADCValue(unsigned char chn);//PCF8591讀取光敏電阻電壓值
- unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管顯示當(dāng)前值0-83
- void System_Init(); //外部中斷初始化
- bit flag=0;//模式選擇
- sbit LED=P2^0;
- sbit IN1=P2^6; //電機(jī)
- sbit IN2=P2^7;
- sbit K2=P3^3; //按鍵控制正反轉(zhuǎn)
- sbit K3=P3^4;
- sbit xianwei1=P3^6; //限位開關(guān)
- sbit xianwei2=P3^7;
- void main()
- {
- unsigned char val;
- System_Init();
- while(1)
- {
- val=(char)(GetADCValue(0)/3);
- P1=M[val/10];
- P0=M[val%10];
- if(flag==0)
- {
- xianwei1=1;
- xianwei2=1;
- LED=1;
- _nop_();
- if((val<30)&&(xianwei1==1)) //0-30
- {IN1=1;IN2=0;} //正傳
- else if((val>50)&&(xianwei2==1)) //50-80
- {IN1=0;IN2=1;} //反轉(zhuǎn)
- else
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png (58.62 KB, 下載次數(shù): 106)
下載附件
2017-4-8 23:43 上傳
單片機(jī)智能電動(dòng)百葉窗仿真工程文件和源程序下載:
智能百葉窗.zip
(92.01 KB, 下載次數(shù): 304)
2017-4-8 23:38 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|