1、AD课程设计通信基于单片机的系统设计题 目 AD转换 学 院 电子信息工程学院学科门类 单片机 班 级 08通信 指导教师 庞姣 小组成员 李俊花 王阳茜 胡 兵 曹 艳 2011年 12月08日一、 实验目的(1)学习基于单片机的系统设计;(2)学习单片机电路设计和制版工艺;(3)学会数据采集电路设计;(4)学会VB编写上位机,实现和单片机通信;(5)学习单片机的软件设计;二、实验要求(1)要求每位同学设计单片机最小系统;(2)每位同学自己设计硬件电路设计和程序编写;(3)每位同学自己完成调试;(4)认真细心的安装焊接。三、使用的主要器材(1)单片机,TLC549及其他元件一套;(2)工具一
2、套;(3)PC机一台;四、TLC549简介4.1引脚排列 /CS:片选 低有效 GND:地 VCC:电源 ANALOG IN:模拟信号输入 DATA OUT :数据串行输出 I/O CLOCK:外接输入输出时钟 REF+:正基准电压输入端, REF+ 大于等于2.5V 小于等于Vcc+0.1V REF-:负基准电压输入端,REF+ 大于等于-0.1V 小于等于2.5V ,切要求REF+- REF-大于等于1V4.2内部结构4.3时序分析 TLC549是SPI三总线器件,其时序见上图,当/CS为高电平时候,AD正在进行内部转换,转换时间大概为17us,当/CS有高电平变为低电平时候,这时候上次的
3、采样转换结果的最高位A7首先出现在DATA OUT端,其余7位将会在7个I/O CLOCK的下降沿时候出现在DATA OUT端,在第4个I/O CLOCK的下降沿启动采样保持电路,开始采样模拟输入量,并在第8个I/O CLOCK的下降沿开始保持,这时候,/CS由低电平变为高电平,在其上升沿开始启动AD转换,这时候/CS需保持17us,保证本次的采样转换完成,然后按上次一样步骤,输出AD转换结果和输入模拟采样。五、上位机5.1上位机简介 上位机软件通过串口,实现单片机和PC机的通信,以简单可视化的窗口,实现对单片机的监控。本次课程设计采用VB编写上位机,VB拥有功能强大的可视化窗口控件和串口控件
4、Microsoft Comm Control 6.0,从而减少了编写上位机的难度。 5.2上位机思路应为本次的课程设计要求,只是在PC机上通过串口显示电压,那么就不需要上位机通过串口发送指令,控制单片机。所以,编写上位机时候,我没有编写发送部分的指令。其次,本次采集的电压,电压范围为0v5v,为充分利用数码管,我采用了一位整数和五位小数,并且在单片机内完成了二进制到BCD码的转换。在编写上位机传送程序时候,我想发送一针就包括小数和整数,这样编写单片机发送程序和上位机接收程序,就会简单,并且发送的是十进制BCD,这样就减少了上位机的运算。下位机思路:因为一针是8为数据,那么最大为255,如果想一
5、针包含两位小数,那么就需要把整数扩大100,第一位小数扩大10倍,然后相加:一针=整数位*100+第一位小数位*10+第二位小数位,因为采集的电压范围为0v5v,这时候就由可能超出255的范围,如果一针包含一位整数和一位小数,那么他的范围为0v50v,这时候不会超出255的范围,所以我发送的一针就包含一位整数和一位小数,即:一针=整数位*10+第一位小数位。采用9600波特率,1位开始为,1位结束位,8位数据位,没有校验位。上位机思路:就收一针存于A,然后和10整除,结果存于B,然后C=A-10*B,那么B就是整数部分,C就是小数部分,显示即可5.3上位机设计界面5.4上位机程序Public
6、style1 As IntegerPublic style As IntegerPrivate Sub Form_Load()If MSComm1.PortOpen = True Then MSComm1.PortOpen = FalseElseEnd If Combo1.AddItem COM1 Combo1.AddItem COM2 Combo1.AddItem COM3 Combo1.AddItem COM4 Combo1.AddItem COM5 Combo1.AddItem COM6 Combo1.AddItem COM7 Combo1.AddItem COM8 Combo1.Add
7、Item COM9 Combo1.AddItem COM10 Combo1.AddItem COM11 Combo1.AddItem COM12 Combo1.ListIndex = 0 MSComm1.CommPort = 3 MSComm1.Settings = 9600,n,8,1 Command2.Caption = 打开串口 Shape1.FillColor = &HFFFFC0 Option2.Value = True Combo2.AddItem 256000 Combo2.AddItem 128000 Combo2.AddItem 115200 Combo2.AddItem 5
8、7600 Combo2.AddItem 38400 Combo2.AddItem 28800 Combo2.AddItem 19200 Combo2.AddItem 9600 Combo2.AddItem 4800 Combo2.AddItem 2400 Combo2.AddItem 1200 Combo2.AddItem 600 Combo2.AddItem 300 Combo3.AddItem 无 None Combo3.AddItem 奇 Odd Combo3.AddItem 偶 Even Combo4.AddItem 4 Combo4.AddItem 5 Combo4.AddItem
9、6 Combo4.AddItem 7 Combo4.AddItem 8 Combo5.AddItem 1 Combo5.AddItem 2 MSComm1.InBufferSize = 24 MSComm1.OutBufferSize = 10 style = 0 style1 = 0End SubPrivate Sub Combo1_Click()If MSComm1.PortOpen = True Then MSComm1.PortOpen = FalseEnd If MSComm1.CommPort = Combo1.ListIndex + 1End SubPrivate Sub Com
10、mand1_Click()Text1.Text = End SubPrivate Sub Command2_Click()On Error GoTo uerrorIf Command2.Caption = 关闭串口 Then MSComm1.PortOpen = False Command2.Caption = 打开串口 Shape1.FillColor = &HFFFFC0Else MSComm1.PortOpen = True Command2.Caption = 关闭串口 Shape1.FillColor = &HFFEnd IfExit Subuerror: msg$ = 无效端口号
11、Title$ = 串口调试助手 X = MsgBox(msg$, 48, Title$)End SubPrivate Sub MSComm1_OnComm() Dim BytReceived() As Byte Static strBuff As String Static strBuff1 As String Static sly As Single Dim i As Integer Select Case MSComm1.CommEvent Case comEventRcOver Text1.Text = Exit Sub Case comEvReceive MSComm1.InputLe
12、n = 1 strBuff = MSComm1.Input Text1.Text = If MSComm1.InputMode = comInputModeBinary Then BytReceived() = strBuff For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i) = 1 Then strData = staData & 0 & Hex(BytReceived(i) & Else strData = strData & Hex(BytReceived(i) & End If Next strBuff1 = strD
13、ata sly = CLng(&H & strData) If style = 1 Then If style1 = 0 Then Text1.Text = Str(Format(sly, 0.0) & D Else Text1.Text = Str(Format(sly / 10, 0.0) & V End If Else Text1 = Text1 & strData & H strData = End If Else Text1 = Text1 & strBuff & $ End If End SelectEnd SubPrivate Sub Option1_Click()MSComm1
14、.InputMode = comInputModeBinaryText1.MaxLength = 6style1 = 1style = 1End SubPrivate Sub Option2_Click()MSComm1.InputMode = comInputModeBinaryText1.MaxLength = 3style = 0End SubPrivate Sub Option3_Click()MSComm1.InputMode = comInputModeTextText1.MaxLength = 0End SubPrivate Sub Option4_Click()MSComm1.
15、InputMode = comInputModeBinaryText1.MaxLength = 6style = 1style1 = 0End Sub六、实验步骤6.1设计硬件电路6.1.1数据采集电路设计6.1.2 单片机外围电路设计61.3 LED驱动电路设计6.1.4 串行通讯电路6.1.5 电源电路6.2根据设计电路清点全套零件,并负责保管;6.3对元器件引线或引脚进行镀锡处理,注意镀锡层未氧化(可焊性好)时可以不再处理 ;6.4检查印制板的铜箔线条是否完好,有无断线及短路,特别注意边缘;6.5安装元器件,元器件安装质量及顺序直接影响整机质量及成功率,合理的安装需要思考及经验;6.6软
16、件设计#includereg52.h#includeintrins.h#includemath.h#define uchar unsigned char#define uint unsigned int#define ulint unsigned long intsbit IO=P10;sbit DATA=P11;sbit CS=P12;uchar SMG=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; /数码管显示译码uchar data_in=0; /接受DATA数值uchar data_pc=0; /串口通信数据存储区uchar da
17、ta_out=0,0,0,0,0,0;void delay() /数码管动态扫描延时,3ms uint j,i; for(i=3;i0;i-) for(j=110;j0;j-);void SM() /动态扫描数码管 uchar m; P2=0; for(m=0;m6;m+) if(m=0) P0=SMGdata_outm|0x80; /小数点 else P0=SMGdata_outm; delay(); P0=0; /数码管消隐 P2+=1; void TLC549() /接受TLC549的采集电压 uchar n,k; CS=1; IO=0; data_in=0; CS=0; _nop_()
18、; data_in=data_in|DATA; _nop_(); _nop_(); for(n=0;n0;k-); IO=0; data_in=data_in0;k-); IO=1; for(k=5;k0;k-); IO=0; CS=1;void BCD() /转换成对应的BCD码 float y; ulint x; y=0.01961*data_in; x=(ulint)(100000*y); data_out0=(uchar)(x/100000); data_out1=(uchar)(x-data_out0*100000)/10000); data_out2=(uchar)(x/1000-
19、data_out0*100-data_out1*10); data_out3=(uchar)(x/100-data_out0*1000-data_out1*100-data_out2*10); data_out4=(uchar)(x/10-data_out0*10000-data_out1*1000-data_out2*100-data_out3*10); data_out5=(uchar)(x-data_out0*100000-data_out1*10000-data_out2*1000-data_out3*100-data_out4*10); data_pc=data_out0*10+da
20、ta_out1;void com(void) interrupt 4 RI=0; EA=0;void main() SCON=0x40; PCON=0x00; TMOD=0x20; TH1=0xfd; TL1=0xfd; EA=1; ES=1; ET1=1; while(1) uchar t,h; TR1=1; for(h=0;h10;h+) SM(); TLC549(); BCD(); EA=1; SBUF=data_pc; for(t=0;t180;t+); 七、实验总结通过这次实验熟练了单片机最小系统,掌握了硬件电路设计和程序编写。认真细心的完成了安装焊接。实验过程中自己完成调试,当时出了点小问题,找了好长时间也没找到,后来在同学的帮助下顺利发现问题,完成了调试。让我了解了设计电路的程序,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1