AT89S51/52VCC12345C260.1uF78C190.1uF1011121314151617181920P1.0P1.1P1.2P1.3P1.4(MOSI)P1.5(MISO)P1.6(SCK)P1.7RST(RXD)P3.0(TXD)P3.1(INT0)P3.2(INT1)P3.3(T0)P3.4(T1)P3.5(WR)P3.6(RD)P3.7XTAL2XTAL1CNDAT89S52/52EA/VPPALE/PROGPSEN313029VCCP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)403938373635343332J1162738495DB9C5-9104C40.1uF162615147813U1VccV+V-GNDT1outT2outR2inR1inMAX232C1+C1-C2+C2-R1outR2outT1inT2in13451291110C30.1uFP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2.1(A9)P2.0(A8)2827262524232221 图2.8 串口与单片机的连接
流程图如图2.8所示:
开始串口初始化等待接收结束手工清除接收标志X=SBUF
图2.9 串口发送数据
2.3.3 数码管显示数据
本次试验将每个数码管的a,b,c,d,e,f,g,h,dp连接到单片机的P0口的各根引脚上,即有P0 口不断地送显示字符的段选码,P2口接ULN2003芯片并连接到各个数码管上,即由 P2口送出不同的为扫描码,并使每位显示字符停留显示一段时间,利用人眼的视觉暂留,实现多位数码管的动态显示。电路连接如图2.3所示。流程图如图2.10所示:
5
开始初始化段码数组初始化位码数组接收要显示的数据转换扫描显示结束
图2.10 数码管显示数据
2.3.4 vb上位机程序
上位机利用Visual Basic 6.0编程。用VB6.0开发串行通信程序有两种法,一种是利用Windows的API函数;另一种是采用VB6.0的通信控件MSComm。利用API函数编写串行通信程序较为复杂,需要掌握大量的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为复杂的低层次通信程序。而VB6.0的MSComm通信控件提供了标准的事件处理函数、事件、方法,并通过控件属性对串口参数进行设置,比较容易地解决了串口通信问题。MSComm是VB6.0提供的ActiveX控件,使用前需将该控件添加到VB工具栏。MSComm控件具有功能完善的串口数据发送和接受功能,有两种处理通信的方式,即事件驱动方式和查询方式,事件驱动方式是利用MSComm控件的OnComm事件捕获并处理通信错误事件,是处理串行端口交互作用的一种非常有效的方法;查询方式是通过检查CommEvent属性的值来判断事件和错误[2]。流程图如图2.11所示:
6
开始串行端口的基本操作串行端口参数设置字符串数据写入串行端口的输出缓冲区从串行端口的输入缓冲区读入字单片机得到该数据显示该数据结束
图2.11 上位机程序
2.4 设计的实现
经过以上的分析,基本能实现使用单片机普通IO模拟I2C总线时序,对I2C接口的EEPROM芯片的读写操作,并且用vb编写PC机端控制程序。实验总的流程图如图2.12所示:
7
开始开始传送数据发器件控制字RR/WW接收串口指定地址接收串口指定地址发送读的指定地址发送写的指定地址保存数据发送写的数据停止数据传送数码管显示结束
图2.12 电路总流程图
参考文献
[1] 赵建领等.51单片机开发与应用技术详解[M].北京:电子工业出版社,2009. [2] 许永和.Visual Basic接口设计与工程实践[M].北京:人民邮电出版社,2007
8