|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机智能电动百叶窗 proteus仿真和源程序
: u! F; I( J- M- M: Z$ q- W7 U+ A
8 ~; W# |& w; o9 \2 [5 _/ q
1 ~# }9 H0 o% J! L. T# |7 A7 J
3 K/ M# z4 J* p$ T2 W( J2 ]" a9 @4 _) w
电动机部分用l298n驱动电机正反转:
: Q% S/ H& E! k3 h5 @ , j: {# O4 E- p' B
51单片机源程序:
) O' M P7 @. |0 |# T//题目:智能电动百叶窗
+ [7 k7 E+ X/ D- `//要求:两种模式$ G# k3 d9 }+ T0 I
//模式一:自动模式:通过光敏电阻检测进光量,使电机正反转 ,同时使LED亮- w X$ b( q* j/ o$ y
//模式二:手动模式,两个按键分别控制电机正反转
4 d! U' }- ]8 {2 G2 e+ F2 j) D8 Z S//两个限位开关限制电机转动,中断0切换控制模式. K# p0 _* [9 X9 L0 t' l! U2 z
//收获:在使用if。。。 else 时如果多个选择模式应使用if else 而不是if if else 这时后面的else仅仅与
( @9 {6 j0 ^ J/ o9 s) P/ d! I- N//前一个if配对,第一个if就失去了意义% _6 V1 t6 I$ W
//2,数据处理还是要注意,不要混淆
% Q) A: o7 s. p: F//3,不同模式时要先相互独立分析再分析其共性。
) d1 g( Q( G* |0 Q5 K6 z( r#include<reg52.h>2 Y3 L9 j9 z+ x: X, c
#include<intrins.h>
; A# |* ?4 j. ^#include"I2C.h"
* D" Z: @; q7 }! i, eunsigned char GetADCValue(unsigned char chn);//PCF8591读取光敏电阻电压值
0 C$ C0 ^$ y# t8 T( funsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示当前值0-83# w! f W4 ^) X- N
void System_Init(); //外部中断初始化3 ]7 H$ H# I; @, s' S# I
bit flag=0;//模式选择' n4 ?: ]- W% L" a6 R8 A
sbit LED=P2^0;
/ X6 h& H* y# }2 Psbit IN1=P2^6; //电机
/ u0 I8 p4 t! M2 F( ]6 \sbit IN2=P2^7;
, {! [1 S4 t3 s; ]! `0 osbit K2=P3^3; //按键控制正反转
3 f# }0 H4 x/ M3 R7 Ksbit K3=P3^4;2 t {" }' K' U
sbit xianwei1=P3^6; //限位开关; U- [1 z; U7 O" x9 \
sbit xianwei2=P3^7;1 q$ B) I3 ^9 {$ x) J! F
void main() . B9 i! b& O. | b7 P) s" o1 ^
{5 m: `# e# J6 b( z+ P& e
unsigned char val;
# ~ z/ ~4 j" h- i: } System_Init();
3 x8 s8 B7 }; w/ B2 u: y while(1)
. |8 v9 J. `% ?5 i9 `; Q {
- p: Z! F9 B0 B val=(char)(GetADCValue(0)/3);
3 P' K, T/ @+ H9 N1 y+ M P1=M[val/10];$ C& _; c# T5 N% {$ Y3 n2 c) r
P0=M[val%10];5 H: h' G" ~$ m7 q( T
if(flag==0)
$ O5 [6 e, q. z. U7 H {! C' X% f+ F: K" s8 y- ^0 d
xianwei1=1;
, r: c# H- @$ v/ Q' e" ^' o% I' y xianwei2=1;' [! E8 W7 x, t$ h
LED=1;
, {0 Q- k8 ]* q! H8 M8 R; ^ _nop_();1 W* d) V% j7 v9 L) B7 V* N
if((val<30)&&(xianwei1==1)) //0-30$ @- I7 M6 S3 L
{IN1=1;IN2=0;} //正传
s8 K) F3 s. |3 W b else if((val>50)&&(xianwei2==1)) //50-80+ H* s' t3 `+ r; ?' S& `+ B- w
{IN1=0;IN2=1;} //反转
- o. F8 |3 f0 s/ U- ^ else
3 U1 m( C+ t8 `# ]: i. S3 ]
8 F" o1 n d @1 d# @. a* u( _+ Q. \2 ~ q- z4 P% A
…………限于本文篇幅 余下代码请下载附件…………
0 r6 c$ ^1 q# n& B3 W5 N9 Y0 P j$ m% J5 r3 S! t3 Z- `& H
单片机智能电动百叶窗仿真工程文件和源程序下载:
, k4 X0 D: }. D7 g
; `- e+ \, o4 J
$ z2 r1 E/ O7 b8 [ u; C |
|