|
智能電動百葉窗的proteus仿真原理圖如下:
0.png (41.55 KB, 下載次數: 112)
下載附件
2017-4-8 23:44 上傳
電動機部分用l298n驅動電機正反轉:
0.png (17.9 KB, 下載次數: 84)
下載附件
2017-4-8 23:45 上傳
51單片機源程序:
- //題目:智能電動百葉窗
- //要求:兩種模式
- //模式一:自動模式:通過光敏電阻檢測進光量,使電機正反轉 ,同時使LED亮
- //模式二:手動模式,兩個按鍵分別控制電機正反轉
- //兩個限位開關限制電機轉動,中斷0切換控制模式
- //收獲:在使用if。。。 else 時如果多個選擇模式應使用if else 而不是if if else 這時后面的else僅僅與
- //前一個if配對,第一個if就失去了意義
- //2,數據處理還是要注意,不要混淆
- //3,不同模式時要先相互獨立分析再分析其共性。
- #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};//數碼管顯示當前值0-83
- void System_Init(); //外部中斷初始化
- bit flag=0;//模式選擇
- sbit LED=P2^0;
- sbit IN1=P2^6; //電機
- sbit IN2=P2^7;
- sbit K2=P3^3; //按鍵控制正反轉
- sbit K3=P3^4;
- sbit xianwei1=P3^6; //限位開關
- 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;} //反轉
- else
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (58.62 KB, 下載次數: 106)
下載附件
2017-4-8 23:43 上傳
單片機智能電動百葉窗仿真工程文件和源程序下載:
智能百葉窗.zip
(92.01 KB, 下載次數: 304)
2017-4-8 23:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|