《基于单片机的智能路灯控制系统...docx》由会员分享,可在线阅读,更多相关《基于单片机的智能路灯控制系统...docx(15页珍藏版)》请在优知文库上搜索。
1、元件清单名称型号数量(个)单片机AT89S521RS-232标准串口设计的接口电路MAX2321串口DB91光耦M0C30521双电压比较器LM3931稳压管LM78051变压器220V转9V1二极管IN40072三极管90131可控硅BTA081LED灯发光二极管1灯泡220V40W的白炽灯1滑动变阻器100K1光敏电阻LG44162电阻10013301IOK5IK1150K2电容103110421054电解电容IOpF2IOuF11000uF25F12200uF25F1V CPrivate Declare Sub Sleep Lib Kernel32 (ByVal dwMiIlisecon
2、dsAsLong)通信DimcommflagsBooleanDimcommstr(OTo3)AsByte灯泡状态true亮false灭DimlightstateAsBoolean,故障指示灯状态true亮false灭DimerrorledstatesBoolean,联机指示DimconnectionAsBooleanDimconfigAsString当点击“联机”按钮时或动其他按钮时,假如计算机和硬件未连接,会出现“端口打开错误”的吩咐窗口;假如计算机和硬件连接了,会出现”系统已联机”的字样。PrivateSubCommandlClick()OnErrorGoTooutIfNotconnect
3、ionThenMe.MSComml.CommPort=Me.Combol.Listindex+1Me.MSComml.PortOpen=TrueIfMe.MSComml.PortOpen=FalseThenMsgBox端口打开错误,VboKOnly,错误Elseconnection=NotconnectionMe.Label8.Caption=系统已联机Me.Label8.ForeColor=RGB(255,O,O)Me.Commandl.Caption=断开Commstr(O)=&HFFcommstr(l)=&H1commstr(2)=&H0commstr(3)=commstr(O)Xorc
4、ommstr(1)Xorcommstr(2)Commflag=TrueMe.MSComml.Output=commstrEndIfElseconnection=Notconnectionlightstate=FalseMe. MSComml. PortOpenMe.Label8. Caption =Me. Label8. ForeColorMe. Commandl. Caption=False系统未联机=RGB(255, 255, 255)=联机errorledstate=FalseMe.Iederror(O).FillColor=RGB(100,100,100)Me.Iedstate(O).
5、FillColor=RGB(100,100,100)EndIfGoToout2out:MsgBox端口打开错误,VbOKonly,错误out2:EndSubPrivateSubForm_Load()DimtimestrAsStringMe.Iedstate(O).FillColor=RGB(100,100,100)Me.Iederror(O).FillColor=RGB(100,100,100)Me.Label3.Caption-Now()Me.Combol.Listindex=O端口的参数设置串口MSComml.Settings=zz9600,n,8,1MSComml.InputMode=O
6、采纳文本接收MSComml.InBufferCount=O清空接受缓冲区MSComml.OutBufferCount=O清空传输缓冲区MSComml.RThreshold=1产生MSComm事务复原时间config=App.Path+,zconfig.iniOpenconfigForInputAs#1读取该汉字在16点阵字库中的原始字模1.ineInput#1,timestrMe.DTPickerl.Value=timestr1.ineInput#1,timestrClose#1清发送标记commflag=FalseMe.Textl.Text=Str(Me.UpDownl.Value)erro
7、rledstate=Falselightstate=Falseconnection=FalseEndSubPrivateSubFormJnload(CancelsInteger)保存时间DimtimestrAsStringconfig=App.Path+“config.iniOpenconfigForOutputAs#1读取该汉字在16点阵字库中的原始字模Close#1EndSub当PC机发送“开灯”恳求时,单片机回送“tuon”吩咐,开灯胜利;当PC机发送“故障检测”恳求时,单片机回送“trou”吩咐,说明灯泡故障,VB界面中的故障灯会亮,反之单片机回送“norm”吩咐,说明灯泡是好的,正常
8、的,VB界面种的故障灯不会发生改变。PrivateSubMSComml_OnComm()DimStrBuffAsStringSelectCaseMSComml.CommEventCase2StrBuff=MSComml.InputIfStrBuff=okThencommflag=FalseElseIfStrBuff=ThenMe.Iedstate(O).FillColor=RGB(100,100,100)lightstate=FalseCommflag=FalseElseIfStrBuff=tuonThenMe.Iedstate(O),FillColor=RGB(255,O,O)lightst
9、ate=Truecommflag=FalseElseIfStrBuff=trouThenMe.Iederror(O).FillColor=RGB(255,O,O)ElseIfStrBuff=normThenMe.Iederror(O).FillColor=RGB(100,100,100)EndIfEndSelectEndSubPrivateSubOptionl_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfconnectionThencommstr(O)=&HFFcommstr(l)=&H56commstr(2)=
10、&II78commstr(3)=commstr(O)Xorcommstr(1)Xorcommstr(2)commflag=TrueMe.MSComml.Output=commstrElseMe.0ption2.Value=TrueMsgBox请先联机工作EndIfEndSubShift Ascommstr(2)PrivateSubOption2_MouseDown(ButtonAsInteger,Integer,XAsSingle,YAsSingle)IfconnectionThencommstr(O)=&HFFCommstr(I)=&H12commstr(2)=&II34commstr(3)
11、=commstr(O)Xorcommstr(1)Xorcommflag=TrueMe.MSComml.Output=commstrElseMe.Optionl.Value=TrueMSgBOX请先联机工作EndIfEndSub以下程序为VB界面中的取当前时间程序PrivateSubTimerl_Timer()Ifcommflag=TrueAndconnectionThenMe.MSComml.Output=commstrEndIf取当前时间MeIfMe.Optionl.Value=TrueAndconnectionThenontimeEndIfEndSub以下程序为定时模式时灯泡的状态,在定时
12、模式内时,在输入的时间范围内,灯泡亮。不在定时模式时,灯泡熄灭。PrivateSubontime()IfCDate(Me.DTPickerl.Value)CDate(Me.DTPicker2.Value)ThenIfCDate(Time()CDate(Me.DTPickerl.Value)OrCDate(Time()CDate(Me.DTPickerl.Value)AndCDate(TimeO)CDate(Me.DTPicker2.Value)Thencontrol(开灯)Elsecontrol(关灯)EndIfEndIfEndSub以下为开关灯吩咐,当计算机吩咐为“开灯”时,灯泡亮起;当计算
13、机吩咐为“关灯”时,灯泡熄灭。PrivateSubcontrol(codeAsString)Ifcode=开灯Andlightstate=FalseThenlightstate=TrueMe.Iedstate(O).FillColor=RGB(255,0,O)Commstr(O)=&HFFCommstr(I)=&H1commstr(2)=&IIFcommstr(3)=commstr(O)Xorcommstr(1)Xorcommstr(2)commflag=TrueMe.MSComml.Output=commstrElseIfcode=关灯”Andlightstate=TrueThenlight
14、state=FalseMe.Iedstate(O).FillColor=RGB(100,100,100)Commstr(O)=&HFFCommstr(I)=&H1commstr(2)=&H0commstr(3)=commstr(O)Xorcommstr(1)Xorcommstr(2)Commflag=TrueMe.MSComml.Output=commstrEndIfEndSubPrivateSubUpDownl_Change()Me.Textl.Text=Str(Me.UpDownl.Value)Commstr(O)=&HFFCommstr(I)=&H2commstr(3)=commstr(O)Xorcommstr(1)Xorcommstr(2)commflag=TrueMe.MSComml.Output=commstrEndSub4.3单片机程序#includer