北工大版电子工程设计温控系统第二次实验报告_第1页
北工大版电子工程设计温控系统第二次实验报告_第2页
北工大版电子工程设计温控系统第二次实验报告_第3页
北工大版电子工程设计温控系统第二次实验报告_第4页
北工大版电子工程设计温控系统第二次实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子工程设计报告 温度测量系统/闭环温度控制系统设计 目录单片机应用电路.3模数转换电路.5数模转换电路.7显示键盘电路.9温度测量程序设计.11程序设计.11遇到的问题及解决方案.18心得体会.19感谢.20参考文献.20附录:原程序.20一单片机应用电路1. 设计任务与设计要求片选信号:6个 地址信号:4个控制信号:RD,WR,ALE,INT0 数据总线:AD0AD7安装:独立电路板结构2. 电路设计方案MCS-51系列单片机有众多性能优异的兼容产品、成熟的开发环境、世界上最大的单片机客户群、高性价比、畅通的供货渠道,是初学者的首选机型。8051是MCS-51系列单片机早期产品之一,内建一

2、次性可编程只读存储器 ( PROM ) ,只需要很少的外围元件即可组成最小系统。所以我们选择8051作为我们的单片机安装结构电路选择 单片机模块P3口为数据/地址复用端口,为了得到低8位地址,需要设计数据/地址分离电路。所以设计电路图如下3. 原理及功能分析(1)74LS373 工作原理当三态允许控制端 OE 为低电平时,Q0Q7为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,Q0Q7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端 LE 为高电平时,Q 随数据 D 而变。当 LE 为低电平时,D 被锁存在已建立的数据电平。当 LE 端施密特

3、触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。(2)74LS138工作原理当一个选通端(E1)为高电平,另两个选通端((/E2)和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。(3)电路工作原理C8051的P3口为数据/地址复用端口,为了得到低8位地址,需要数据/地址分离电路。C8051通过A13、A14、A15三口输出信号给74LS138 译码器,经过芯片译码后输出6个片选信号,当输出相应地址时输出相应片选。译码器的E1、E2口接低,E3口接高,7、9两口制空

4、。C8051接收信号后需要数据/地址分离电路,而74LS373锁存器便充当了这一功能。373从8051的D0D7口接收到信号后将信号分离,数据信号从锁存器的Q0Q3口输出,地址信号从锁存器的D0D7口输出。2 模数转换电路1. 设计任务与设计要求输入信号范围:0V+5V 分辨率:8bit精度:1LSB 转换时间:1ms安装:独立电路板结构2. 电路设计方案D/A-数字量模拟量转换电路,常用 D/A 电路的基本原理有电流开关型和脉宽调制型,其中电流开关型是用数字切换电流开关,产生与电阻网络权电流对应的电流“和”;脉宽调制型是将数字转换为输出脉冲宽度,用积分器将脉冲宽度转换为与之对应的电压输出。D

5、AC0832是8位乘算型电流输出的典型产品,具有MCU兼容接口,使用方便,价格低,能满足设计要求。所以我们选择DAC0832。安装结构电路选择3. 原理及功能分析(1)ADC0804工作原理ADC0804采用的是逐次比较的方法,逐次比较转换过程与用天平称物重的方法类似。其方法是将输入信号的电压与一系列的参考电压相比较。第一次与输入参考电压5V的一半进行比较(即2.5V),如果大于2.5V,则将置1,并保留2.5V;如果小于2.5V,则将置0,并舍去2.5V。第二次将数入参考电压的四分之一(即1.25V)加到上一次所剩下的值上,将输入电压与这个值进行比较,如果大于这个值,则将置1,并保留这个值;

6、如果小于这个值,则将置0,并舍去这次新加上的1.25V。依此类推,每次新加上的值都是上一次所新加的值的一半,如此比较8次之后,就被确定下来了,此值就是ADC0804的输出。(2)电路工作原理将Vin(+)输入的模拟量通过ADC0804转换为数字量,从11到18管脚输出。其中Vin(-)、AGND、10脚接地。4脚和19脚之间按图示的方法接10K的电阻和150PF的电容,与内部电路配合构成时钟信号的发生电路。片选CS接单片机的CS1片选,RD、WR分别接单片机的RD和WR信号。(3)电路主要参数的计算4脚和19脚之间按图示的方法接10K的电阻和150PF的电容,是根据芯片手册上给的参考电路所确定

7、的。3 数模转换电路1. 设计任务与设计要求输入范围:00H0FFH 对应输入:-10V+10V输出阻抗:100 响应时间:1ms电源供电:+5V,12V 安装:独立电路板结构2. 电路设计方案A/D-模拟量数字量转换电路,常用A / D电路的基本原理有积分型、逐次比较型、并行比较型。其中积分型是将电压转换成脉宽信号或频率,由定时器/计数器获得数字值。逐次比较型是由比较器和DA转换器通过逐次比较逻辑构成,经n次比较而输出数字值。并行比较型是用多个比较器,仅作一次比较而实行转换。压频转换型是将模拟信号转换成频率,然后用计数器将频率转换成数字量 ,从理论上讲其分辨率几乎可以无限增加。ADC0804

8、是8位逐次比较(逐次逼近)型典型产品,具有MCU 兼容接口,使用方便;分辩率和转换速度都能够满足设计要求,且价格低廉。安装结构电路选择3. 原理及功能分析(1)DAC0832工作原理DAC0832是8位分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。它有八个恒流源,每个恒流源之间相差2倍。由D0D7八个地址口相应输出信号给八个恒流源,当信号为“1”时开关开,从Iout1管脚输出给后面电路,当信号为“0”时,接地。(2)电

9、路工作原理DAC0832输出口Iout1、2分别接NE5532的2、3口,NE5532的5口接模拟地,电流转成电压,然后电压放大,最后电压平移。DAC0832的Iout1和电阻输出一电流信号经过运放的虚短虚断变为0-5V的电压,之后再通过一个负反馈电路,电压值=,得到一个020V的电压。+5V的电压经过运放后,得到-10V电压。经过负反馈的020V的电压再经过-10V电压平移最终得到-10V+10V的电压输出。四显示键盘电路1.设计任务与设计要求显示能力:4位7段数码显示,前三位含小数点键盘功能:09数字按键及若干功能按键控制安装:独立电路版安装结构2. 电路设计方案基本显示控制方式有静态和动

10、态两种,静态电路考验的是焊接工艺,动态电路考验的是程序编写能力。因为我们组比较擅长于程序编写方面,所以我们选择了动态电路显示控制方式。其中最主要的部件是CH452芯片,基本功能是采用动态扫描控制方式 , 4 线同步串行接口编程或 2 线(I2C)串行接口编程。动态显示电路方案:电路简单,成本低,控制程序复杂,适用于显示位数较多的场合。矩阵键盘电路方案:按键较多时,成本低,控制程序较直读电路复杂,适用于显示位数较多的场合。安装结构 设计电路如下:5 温度测量程序设计1. 设计任务与设计要求搭建测温硬件环境 设计数据数据采集数据处理 数据显示程序完成温度测量和显示工作 温度测量显示误差:2. 设计

11、方案总体功能描述初始化启动A/D转换并读取结果对A/D转换结果进行处理得到显示温度将显示温度转换为显示段码数据将显示段码数据送显示电路进行显示延时1秒钟,开始下一次测温过程6 程序设计开始并初始化NNYNY监测温控标识变量闭环温控程序温度设定程序进行闭环温控?进入温度设定?YNCoop=0?变量1、数组table1=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;一维数组,显示的段码表,从0到9 table235=0,1,2,3,A, 4,5,6,7,B, 8,9,C,D,E;自己设定的二维数组,用于配合读取键值的程序,使得键盘和输入对应。1

12、、 全局变量r_number1 送到AD转换中的数值 r_number2从AD转换中读取的数值DP_number1送给第一个数码管的数,读取的温度的十位DP_number2送给第二个数码管的数,读取的温度的个位DP_number3=2送给第三个数码管的数,并初始化2,输入的温度的十位DP_number4=5送给第四个数码管的数,并初始化5,输入的温度的个位DP_number5=0从键盘读取的用于控制的数DP_number6从键盘读取的用于输入数据的数DP_number7=0从键盘读取的用于检测是否停止控温的数coop=0控温监测变量t=0输入温度检测变量一、 子程序1、void main(vo

13、id) 主函数 Init_Device(); while(1)INTR5:;Read();display();K_int1();if(t=1)K_int2();t=0;goto INTR5;if(coop=1)while(1)Read();T_change();display();K_int3();if(DP_number7=D)DP_number7=0;coop=0;if(coop=0)control=0x80;goto INTR6;INTR6:;主函数,用于实现框图中的功能,按照框图的逻辑编写,这里不再赘述2、void display(void) 显示函数DP1=table1DP_numb

14、er1;DP2=table1DP_number2;DP3=table1DP_number3;DP4=table1DP_number4;即分别把要送给四个数码管的数,通过table1表的翻译,送到每个数码管中。3、void delay(void) 延时函数 unsigned int i; for(i=0;iTIMER;+i);虽然设置了延时函数,但对其它模块的具体作用不是很清楚,感觉没有存在必要,但还是对其进行了保留,其在读取温度值的时候还是有一定的作用的。4、void K_int1(void)键盘控制信息输入函数 unsigned char l_val,r_val,r_state,temp,c

15、ont,x,c; int key; while(1) key=0x0004; for(x=1;x5;x+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(cont=1,temp=0x01;cont6;+cont,temp=temp1) if(r_state&temp)!=0) r_val=cont; l_val=x; DP_number5=table2l_val-1r_val-1;if(DP_number5=A)t=1;goto INTR1;if(DP_number5=C)coop=1;goto INTR1; INTR1:;此函数的主体还是采用了老师给的键盘调

16、试程序中的方法,完全是复制粘贴过来的。调试程序中,可以实现读取按键的行值和列值,由此我们想到,可以按照键盘上的数字,设置一个二维数组,这样通过读取行值和列值就能对应出输入的数。此模块只有两个跳出办法,一个是按下启动输入控制温度的开始键,一个是按下开始闭环控制的键。同时,按下键时,分别影响标志变量。在主程序中,通过判断标识变量是0还是1,就可进行相应的操作。5、void K_int2(void)控制温度输入程序unsigned char l_val,r_val,r_state,temp,cont,x,c;int key;Init_Device();while(1) key=0x0004;for(

17、x=1;x5;x+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(cont=1,temp=0x01;cont6;+cont,temp=temp1) if(r_state&temp)!=0) r_val=cont; l_val=x;DP_number6=table2l_val-1r_val-1;if(DP_number6=B)goto INTR2;DP_number3=DP_number6; display(); INTR2:;while(1)key=0x0004;for(x=1;x5;x+,key+) c=XBYTEkey; if(r_state=c&0x1

18、f) for(cont=1,temp=0x01;cont6;+cont,temp=temp1) if(r_state&temp)!=0) r_val=cont; l_val=x;DP_number6=table2l_val-1r_val-1;if(DP_number6=E)goto INTR4;DP_number4=DP_number6; display(); INTR4:;当通过K_int1函数影响标识变量后,就判断标识变量,如果t=1,就表明进行控制温度输入,就调用温度控制输入函数。这个模块是花费时间最多的模块,经过与好多人讨论,网上查了一些算法,最终确定了这个方法。起初,我们想,输入两个

19、数,不过是调用输入函数两次就能实现。当通过一个死循环实现的时候,可以实现输入两个数字,但我们要求的是输入两个数字之后便不再输入,转入询问是否开启闭环控制温度。于是,我们只是调用了像K_int1一样的循环两次,跳出条件是有键按下便跳出,两次调用之间调用一定的延时。在具体的实验中,我们发现,只能输入温度的个位,十位默认的给出了一个乱码。经过反复的编写小程序测试,我们发现,只要是使用有键按下便跳出的算法实现的都会出现乱码的情况。这种现象与其他小组的采用此算法的结果,不谋而合。于是,经过网上查找一些算法,我们总结出:如果采用输入一个数然后必须按下确认键才能输入下一个数,那么,在按下确认键之前,输入函数

20、始终是个循环,这样,就与最简单的无限循环输入一样了,肯定能够实现。所以,我们把输入的跳出条件改为有一个特殊的键按下(可见二维数组中的字母)。为了防止输入第一个数的确认键和输入第二个数的确认键冲突,我们设置了两个确认键。由于时间紧急,我们没能来得及去测试如果使用一个确认键,而调用输入程序两次会不会同样能够实现。这样,K_int2函数就能缩短一半,程序更加优化。6、void K_int3(void) 询问是否结束闭环控制函数 unsigned char l_val,r_val,r_state,temp,cont,x,c; int key; key=0x0004; for(x=1;x5;x+,key

21、+) c=XBYTEkey; if(r_state=c&0x1f) for(cont=1,temp=0x01;cont6;+cont,temp=temp=3)control=0xff;else if(compare=1)control=(number_wish+15)*256/100;else if(-1compare)control=0x80;else if(-360度的情况),不存在降温过程,升温速度很快。估计在25度到60度之间,基本上能够达到设定的温度,而且上下浮动很小。在低温区,降温的情况下,会有升温出现。但当最终确定以小4度降温后,误差不大。此程序的最大优点就是浮动小,比较精确。7

22、 遇到的问题及解决方案1、 单片机板由于上学期学习了微机原理,所以单片机板的基本原理我们比较清楚,知道每一个器件起到的作用。在焊接是,我们组采取了数据线路、地址线路、控制线路分别连接的方法。这样,避免了复杂的线路的漏接,错接。经过较认真的焊接,单片机板在调试的时候,没有出现什么问题。一直到后面,单片机板一直稳定工作。2、 AD转换板这个电路板非常简单,连接线路少,布局也很随意,经过修改老师给的调试程序,加上变送器板,能够实现读取调试台上的温度值,通过监视器看到,当温度在50摄氏度的时候,读取的数值是129,还不错。3、 显示板焊接过程:这块板是我们这个学期碰到的工程量最大的一块板,出的问题也最

23、多。在焊接时,最困难的就是数据线的连接。起初,没开始焊板之前,我们计划着在板上单独焊出来一块数据总线排线,这样,所有的273的数据线都接到数据总线上,在理论上就解决了焊点太复杂的问题。总线排线可以用电阻两端的铁丝实现。但当我们真正焊起来的时候,却发现,数据总线排线焊的过密,当若干数据线接入时,想要再接上一根数据线变的非常困难,线路非常凌乱。以至于工作没法继续下去,所以只好放弃了数据排线总线的方法,还是采用最直接的下一个273数据线接到上一个273数据线上。由于起初想做数据排线总线的时候,导线都已经剪好了,这样,导致接法只好,线路比较长,本着节约材料的原则,只好继续用,只是影响了美观。在焊板的过

24、程中,还犯了一个错误。由于焊板前计划不足,考虑不周,过于着急去完成。导致讲138,244和或非门位置记错了,本来该接在138上的线,接在了244上,幸亏在焊接了一半的时候发现了这个问题,因为焊着焊着,发现管脚不够用了。这个我们总结了教训:焊板之前,一定要规划好元器件的位置,考虑好布局,不能急着下手。调试查错过程:在调试过程中,当我们运行显示调试程序的时候,发现数码管的显示是乱码。我们推断,很可能是因为导线过长,在将板插在调试台上的时候,导线会受到挤压,焊接不牢固就会掉下来,所以,我们开始查线。由于线路太复杂,用肉眼查线太麻烦,效率不高,而且不容易分辨,所以我们想了个办法:从调试台引出+12V的

25、电压,调试台地线接上欧姆表的负极,将+12v电压的导线分别与8根数据线的每一根数据线连接,同时检测每一个器件的对应的数据线上是否有+12V的电压。很快,我们便找到了好几根掉下来的线,经过反复检查,焊接牢固。在解决了数据线之后,我们仍然得不到想要的结果,还有乱码,但我们发现,乱的很有规律。当发送2、3、7、8等数字的时候,显示是正确的。当发送1、4等数字的时候,数码管的上面一段和右上角一段总是不对,如果两者交换就能显示正确。经过查看数码管的内部线路和对应的数据线,我们发现,d0和d1正好倒了,但当我们去查线的时候,我们发现,线路是完全按照标准电路图连接的,理论上不会出现两个数据线颠倒的情况。但我

26、们想,既然结果显示两个数据线颠倒了,我们觉得换过来试一试。换过来之后,我们发现显示正常了,但为什么两个数据线颠倒了,我们还是没有明白,不过实验结果出来了。这个具体问题,等到有时间再研究了。键盘模块的调试相对显示模块的调试,要轻松的多。起初,我们运行键盘程序,发现不能得到想要的结果,经过反复检查,我们发现单片机根本就没从244里面读数。这时,我们就去查与244有关的线路,最终发现,读信号没有连接到244的控制端。连接后,键盘模块也调试完毕。4、 DA转换板DA转换板也叫简单,一遍就成功,所以没什么可说的8 心得体会 一个学期的电子工程设计实验课已经过去了,在这段时间里,我们17小组做了整个温控系

27、统的内部电路部分。在老师的辛勤指导和不断查阅资料、背景知识,我们已经对内部电路部分有了充分的了解。 实验课程完全是在实验室进行的,我们接触了大量的实验器件,充分体会及积累了一定的实际操作经验。后半段的实验充分接触了实验室提供的实验操作台。对于实验的针对性很强。在这些经验中,有的是和书本上的知识进行了结合,有的是我们自己的摸索。虽然这些经验看似浅薄,但我们已经把它们奉为圭臬。因为这是我们在不断的焊接与调试中挥洒的汗水。 另外,在实验课上,我们第一次接触了软件画原理图和PCB图的制作。在进行实际的硬件电路连接之前,用软件进行模拟和仿真是非常必要的。通过这样的方式,我们可以首先非常清楚的明白实验的原

28、理,电路的各部分的联系。这样,在实际连电路时就可以做到心中有数,手头不慌了。感谢老师在软件上耐心的讲解,在课上跟着老师一步一步操作,这样的听课效率是最高的,也有助于我们快速掌握该软件的使用。 在硬件上,我们在本学期上完单片机课程之后,便在实验中进行了实践。充分体会到单片机的强大功能。因为它的强大,趋势了我对它的深入学习。在实验中,老师制定的实验要求使我们对单片机的最基本最重要的使用方式有了一定认识。另外,这学期的实验的绝大多数部分都需要自己对电路进行设计。这使我们运用了以前学到的一些硬件知识,包括模电,数电,通信原理等学科。让我们体会到了学以致用的重要性。 我们小组切身体会到该门课程重要性。它

29、给我们提供了一个从理论到实践过渡的平台,给我们提供了一个接触新的元器件、新的软件的平台,给我们提供了一个不断追求与探索的平台。在这其中,我们都或多或少摸索出了一些学习电子技术的直觉和经验。在今后的学习过程中,我们小组会更加努力。争取让自己的水平更上一层楼。9 感谢谢谢老师及黄光伟,林韦辰,彭进程,李世斌,游伟东,曹晓晨,高戈等同学的帮助。在这里致以最诚挚的感谢!10 参考文献电子工程设计训练任务书 电子工程设计I-2的ppt 百度上搜索到的元件作用及部分参数11 附录:程序#include C8051F020.h#include absacc.h#include data_define.c#d

30、efine DP1 XBYTE0x0002#define DP2 XBYTE0x0000#define DP3 XBYTE0x0001#define DP4 XBYTE0x0003#define C2 XBYTE0x2000#define control XBYTE0x4000#define TIMER 0x8000#include Init_Device.cunsigned char table1=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;unsigned char table235=0,1,2,3,A, 4,5,6,7,B, 8,9

31、,C,D,E;int r_number1,r_number2,DP_number1,DP_number2,DP_number3=2,DP_number4=5,DP_number5=0,DP_number6,DP_number7=0;int coop=0,t=0;void delay(void);void display(void);void K_int1(void);void K_int2(void);void K_int3(void);void T_change(void);void Read(void);void main(void) Init_Device(); while(1)INTR

32、5:;Read();display();K_int1();if(t=1)K_int2();t=0;goto INTR5;if(coop=1)while(1)Read();T_change();display();K_int3();if(DP_number7=D)DP_number7=0;coop=0;if(coop=0)control=0x80;goto INTR6;INTR6:;void display(void)DP1=table1DP_number1;DP2=table1DP_number2;DP3=table1DP_number3;DP4=table1DP_number4;void delay(void) unsigned int i; for(i=0;iTIMER;+i);void K_int1(void) unsigned char l_val,r_val,r_state,temp,cont,x,c; int key; while(1) key=0x0004; for(x=1;x5;x+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(cont=1,temp=0x01;cont6;+cont,temp=temp1) if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论