|
智能电动百叶窗的proteus仿真原理图如下:
电动机部分用l298n驱动电机正反转:
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黑下载附件…………
复制代码
单片机智能电动百叶窗仿真工程文件和源程序下载:
智能百叶窗.zip
(92.01 KB, 下载次数: 304)
|
|