版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档元件清单名称型号数量(个)单片机AT89S521RS-232 标准串口设计的接MAX2321口电路串口DB91光耦MOC30521双电压比较器LM3931稳压管LM78051变压器220V 转 9V1二极管IN40072三极管90131可控硅BTA081LED灯发光二极管1灯泡220V 40W的白炽灯1滑动变阻器100K1光敏电阻LG4416210013301电阻10K51K1150K21031电容1042105410pF2电解电容10uF11000uF/25F12200uF/25F1。1 欢迎下载精品文档VCCVCCL1LEDC11S110uFSW-PBU2U3361VCC12R74
2、R6VCC2330330J4T1C10MOC3052J112103LAMPBTA0861R82220VU1100VCC71403R5P1.0VCC823910KP1.1P0.0/AD04338U4P1.2P0.1/AD19437105P1.3P0.2/AD21165536105C6C1+ VCCP1.4P0.3/AD3215635VCCC7V+GNDDB9P1.5/MOSI P0.4/AD4314734C8C1-T1outP1.6/MISO P0.5/AD5413833C2+R1inP1.7/SCKP0.6/AD6R9512932C2-R1outRSTP0.7/AD710KR10R146111
3、031R11105V-T1inP3.0/RXDEA/VPPJ310K7101130150K150KT2out T2inP3.1/TXDALE/PROG8912298C9R2in R2outP3.2/INT0PESNVCC13281105MAX232P3.3/INT1A15/P2.7OUTPUT A14277P3.4/T0A14/P2.6OUTPUT B15262P3.5/T1A13/P2.5IUTPUT A+16256P3.6/WRA12/P2.4IUTPUT B+17243R4P3.7/RDA11/P2.3IUTPUT A-18235VCCY1XTAL2A10/P2.2IUTPUT B-10
4、K19224XTAL1A9/P2.1GND2021R13Q1GNDA8/P2.0LM393R16901311.0592MAT89S52R12C12C13LRR15LR30pF30pF100K100KR310KD3LM7805U51VinVout35VJ5IN4007GNDJ21222C4R213C2C32200uF/25VC5 1K9V4R11041000uF/25V104K11KC1104Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)' 通信Dim commflag A
5、s BooleanDim commstr(0 To 3) As Byte' 灯泡状态true亮false灭Dim lightstate As Boolean' 故障指示灯状态 true 亮 false灭Dim errorledstate As Boolean' 联机指示Dim connection As BooleanDim config As String/ 当点击“联机”按钮时或动其他按钮时,如果计算机和硬件未连接,会出现 ”端口打开错误 ”的命令窗口;如果计算机和硬件连接了,会出现”系统已联机 ”的字样。Private Sub Command1_Click()On
6、 Error GoTo outIf Not connection ThenMsgBox "端口打开错误 ", vbOKOnly, "错误 "Elseconnection = Not connection系统已联机 "。2 欢迎下载精品文档断开 "commstr(0) = &HFFcommstr(1) = &H1commstr(2) = &H0commstr(3) = commstr(0) Xor commstr(1) Xor commstr(2)commflag = TrueEnd IfElseconnecti
7、on = Not connection系统未联机 "联机 "lightstate = Falseerrorledstate = FalseMe.lederror(0).FillColor = RGB(100, 100, 100)Me.ledstate(0).FillColor = RGB(100, 100, 100)End IfGoTo out2out: MsgBox "端口打开错误 ", vbOKOnly, "错误 "out2:End SubPrivate Sub Form_Load()Dim timestr As StringMe
8、.ledstate(0).FillColor = RGB(100, 100, 100)Me.lederror(0).FillColor = RGB(100, 100, 100)/ 端口的参数设置' 串口MSComm1.Settings = "9600,n,8,1"MSComm1.InputMode = 0'采用文本接收MSComm1.InBufferCount = 0'清空接受缓冲区MSComm1.OutBufferCount = 0 '清空传输缓冲区MSComm1.RThreshold = 1'产生 MSComm事件' 恢复
9、时间config = App.Path + "" + "config.ini"。3 欢迎下载精品文档Open config For Input As #1 '读取该汉字在16 点阵字库中的原始字模Line Input #1, timestrLine Input #1, timestrClose #1' 清发送标志commflag = Falseerrorledstate = Falselightstate = Falseconnection = FalseEnd SubPrivate Sub Form_Unload(Cancel As I
10、nteger)' 保存时间Dim timestr As Stringconfig = App.Path + "" + "config.ini"Open config For Output As #1 '读取该汉字在16 点阵字库中的原始字模Close #1End Sub/ 当 PC机发送“开灯”请求时,单片机回送“ tuon ”命令,开灯成功;当PC机发送“故障检测”请求时,单片机回送“trou ”命令,说明灯泡故障,VB界面中的故障灯会亮, 反之单片机回送 “norm”命令,说明灯泡是好的, 正常的,VB界面种的故障灯不会发生变化。Pr
11、ivate Sub MSComm1_OnComm()Dim strBuff As StringSelect Case MSComm1.CommEventCase 2strBuff = MSComm1.InputIf strBuff = "ok" Thencommflag = FalseElseIf strBuff = "toff" ThenMe.ledstate(0).FillColor = RGB(100, 100, 100)lightstate = Falsecommflag = FalseElseIf strBuff = "tuon&qu
12、ot; Then。4 欢迎下载精品文档Me.ledstate(0).FillColor = RGB(255, 0, 0)lightstate = Truecommflag = FalseElseIf strBuff = "trou" ThenMe.lederror(0).FillColor = RGB(255, 0, 0)ElseIf strBuff = "norm" ThenMe.lederror(0).FillColor = RGB(100, 100, 100)End IfEnd SelectEnd SubPrivate Sub Option1_Mo
13、useDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If connection Thencommstr(0) = &HFFcommstr(1) = &H56commstr(2) = &H78commstr(3) = commstr(0) Xor commstr(1) Xor commstr(2)commflag = TrueElseMsgBox "请先联机工作 "End IfEnd SubPrivate Sub Option2_MouseDown(Button A
14、s Integer, Shift As Integer, X As Single, Y As Single)If connection Thencommstr(0) = &HFFcommstr(1) = &H12commstr(2) = &H34commstr(3) = commstr(0) Xor commstr(1) Xor commstr(2)commflag = TrueElseMsgBox "请先联机工作 "End IfEnd Sub/ 以下程序为 VB界面中的取当前时间程序Private Sub Timer1_Timer()If comm
15、flag = True And connection Then。5 欢迎下载精品文档End If' 取当前时间MeontimeEnd IfEnd Sub/ 以下程序为定时模式时灯泡的状态,在定时模式内时,在输入的时间范围内,灯泡亮。不在定时模式时,灯泡熄灭。Private Sub ontime()control ("开灯 ")Elsecontrol ("关灯 ")End IfElseThencontrol ("开灯 ")Elsecontrol ("关灯 ")End IfEnd IfEnd Sub/ 以下为开
16、关灯命令,当计算机命令为“开灯”时,灯泡亮起;当计算机命令为“关灯”时,灯泡熄灭。Private Sub control(code As String)If code = "开灯 " And lightstate = False Thenlightstate = TrueMe.ledstate(0).FillColor = RGB(255, 0, 0)commstr(0) = &HFFcommstr(1) = &H1commstr(2) = &HFcommstr(3) = commstr(0) Xor commstr(1) Xor commstr(2
17、)commflag = True。6 欢迎下载精品文档ElseIf code = "关灯 " And lightstate = True Thenlightstate = FalseMe.ledstate(0).FillColor = RGB(100, 100, 100)commstr(0) = &HFFcommstr(1) = &H1commstr(2) = &H0commstr(3) = commstr(0) Xor commstr(1) Xor commstr(2)commflag = TrueEnd IfEnd SubPrivate Sub
18、UpDown1_Change()commstr(0) = &HFFcommstr(1) = &H2commstr(3) = commstr(0) Xor commstr(1) Xor commstr(2)commflag = TrueEnd Sub4.3单片机程序#include <reg51.h>/通信#define INBUF_LEN 4 /数据长度#define OUTBUF_LEN 4 /数据长度unsigned char INBUFINBUF_LEN=0;unsigned char code succ="succ"unsigned ch
19、ar code toff="toff" /关闭灯unsigned char code tuon="tuon"unsigned char code trou="trou" /故障unsigned char code norm="norm"unsigned char volatile checksum,count;bit lightstate=0;bit mode=0x00;bit errorstate=0;/1故障 0正常bit read_flag= 0 ;bit refresh=0;/通信。7 欢迎下载精品文档un
20、signed char volatile counter=0;unsigned int volatile maincounter=0;unsigned char levelval=70;sbit CON=P10;sbit envir=P00;sbit lightcheck=P04;/ 以下为实现单片机和计算机之间的通信程序。void init()TMOD = 0x22;SCON = 0x50;TH1 = 0xfd;TL1 = TH1;TR1 = 1;TH0 = 0xa4;TL0 = 0xa4;TR0 = 1;ES=1;ET0 = 1;IT0=1;EX0=1;EA=1;CON=1;/ 向串口发送
21、一个字符void send_char_com( unsigned char ch)SBUF=ch;while (!TI);TI=0;/ 向串口发送一个字符串, strlen 为该字符串长度void send_string_com( unsigned char *str, unsigned char strlen)unsigned char k= 0 ;dosend_char_com(*(str + k);k+;。8 欢迎下载精品文档 while (k < strlen);/ 串口接收中断函数void serial () interrupt 4 using 1if (RI)unsigned
22、 char ch;RI=0;ch=SBUF;if (ch=0xff)count=0 ;INBUFcount=ch;checksum=ch ;elsecount+;INBUFcount=ch;checksum= ch;if ( count=INBUF_LEN-1 && !checksum ) read_flag= 1 ;void Timer0Interrupt(void) interrupt 1 using 3if(counter<3 && counter>0)CON=!lightstate;elseCON=1;if(counter!=0)counte
23、r-;void INT0Interrupt(void) interrupt 0 using 2counter=levelval;。9 欢迎下载精品文档/ 调光程序,灯光的亮度等级分为 5 级当路灯为 1 级时候达最亮, 2 级次之,5 级为最暗。void main()init();while (1)if(read_flag)read_flag=0;send_string_com(succ,OUTBUF_LEN);if(INBUF1=0x12 && INBUF2=0x34)mode=1; refresh=1;/智能else if(INBUF1=0x56 && INBUF2=0x78)mode=0;if(I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论