




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..毕业实习设计院系∶信息科学技术学院专业班级∶姓名∶学号∶2014年10月2日..前言转眼间,三年大学生活已经接近尾声,毕业的钟声将要敲响。将课堂所学知识运用于实践成为毕业生们必经的道路。带着教师的忠告,2014年9月11日我有幸在学校进展单片机与LabVIEW实习。纸上得来终觉浅,绝知此事要躬行。在短暂的实习过程中,我深深的感觉到自己所学知识的浅薄和在实际运用中的专业知识的匮乏。刚开场的一段时间里,对一些知识感到无从下手,茫然不知所措,实习第一天就开场攻克汇编语言。刚开场进展的是完成培训的工作。由于感觉和专业不怎么对口,所以对于培训便没有在意,总以为这些工作很简单,但是这种急躁的态度让我无视了实习的目的——接触和融入社会,以至于后来考核时有点手足无措。时间过的真快,转眼间,在学校的实习马上要接近尾声了。通过这一个月的实习,我接触到了真正的规模、工作,亲手进展了单片机的深入学习,真正从课本中走到了现实中,从抽象的理论回到了多彩的实际生活。以下是我在实习过程中的两个工程汇总。工程一温度的显示与控制系统设计一、功能要求采用51单片机和温度传感器DS18B20设计一种数字温度计,当温度处于15到30℃时,系统采用7段数码管显示当前温度值。当温度超过预警值时〔过高或过低〕,报警器响;当温度过高时,启动风扇转动降温〔启动直流电机运转〕;当温度过低时,启动加热器升温〔启动继电器工作〕。硬件电路设计数字温度计硬件设计电路如图1所示,主要包括51单片机、温度传感器DS18B20、7段数码管显示模块等。2.1温度传感器DS18B20 温度传感器DS18B20是一种新型数字温度传感器,采用单线接口方式,仅需一个端口引脚来发送或接收信息,在单片机和DS18B20之间仅需一条数据线和一条地线进展接口。DS18B20采用TO-92封装,引脚排列如图2所示。图1、数字温度计硬件电路图2、DS18B20管脚DS18B20各引脚功能如下:GND:地DQ:单线应用的数据输入/输出引脚VDD:可选的外部供电电源引脚。DS18B20部有三个主要数字部件:64位激光ROM、温度传感器、非一时性温度报警触发器TH和TL。这里我们采用外部供电方式,如图3。图3DS18B20的外部供电方式DS18B20依靠单线端口通信,必须先建立ROM操作协议,才能进展储存器和控制操作。因此,单片机必须先提供下面5个ROM操作命令之一:读出ROM,代码为33H,用于读出DS18B20的序列号,即64位激光ROM代码。匹配ROM,代码为55H,用于区分某一特定的DS18B20操作。搜素ROM,代码为F0H,用于确定总线上的节点数以及所有节点的序列号。温度LSB字节1温度MSB字节2TH用户字节1字节3TH用户字节1TL用户字节2字节4TL用户字节2配置存放器字节5保存字节6保存字节7保存字节8CRC字节9跳过ROM,代码为CCH,命令发出后系统对所有的DS18B20进展操作,通常用于启动所有DS18B20转换之前,或系统中仅有一个DS18B20时。报警搜索,代码为ECH,主要用于鉴别和定位系统中超出程序设定的报警温度的节点。 这些命令对每个器件的激光ROM局部进展操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时指出有多少器件或是什么型号的器件。图4、DS18B20部存储器映像 存储器由一个高速暂存器和一个存储上下温报警触发值TH和TL的非易失性可擦除组成。前2字节为实测温度值,低字节在前,高字节在后,第3和第4字节是用户设定温度报警值TH和TL的副本,是易失,每次上电时被刷新。第5字节为配置存放器,用于确定数字值的数字转换分辨率,DS18B20工作时按此存放器中的分辨率将温度转换为相应精度的数值。 配置存放器各位的分布如下:D7D6D5D4D3D2D1D0TMR1R011111 其中,TM为测试模式位,用于设定DS18B20为工作模式还是为测试方式,默认是0,用户一般不要改动。R1和R0用于设定温度转换的精度分辨率,如表1所示。其余低5位全为1。DS18B20温度转换时间较长,而且设定的分辨率越高,所需转换时间越长,因此实际应用中要根据具体情况权衡考虑。 表1、DS18B12的分辨率R1R0分辨率温度最大转换时间00993.750110187.510113751112750高速暂存器的第6、7、8字节保存未用,读出值为全1。第9字节为前面8个字节的CRC校验码,用于保证数据通信的正确性。 DS18B20提供了如下存储器操作命令。 〔1〕温度转换,代码为44H,用于启动DS18B20进展温度测量,温度转换命令被执行后DS18B20保持等待状态。如果主机在这条命令之后跟着发出读时间隙,而DS18B20又忙于进展温度转换,DS18B20将在总线上输出"0〞,假设温度转换完成,那么输出"1〞。 〔2〕读暂存器,代码为BEH,用于读取暂存器中的容,从字节0开场最多可以读取9个字节,如果不想读完所有字节,主机可以在任何时间发出复位命令中止读取。 〔3〕写暂存器,代码为4EH,用于将数据写入到DS18B20暂存器的地址2和地址3〔TH和TL字节〕,可以在任何时刻发出复位命令中止写入。 〔4〕复制暂存器,代码为48H,用于将暂存器的容复制到DS18B20的非易失性中,即把温度报警触发字节存入非易失性存储器里。如果主机在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器的容复制到存储器,DS18B20就会输出一个"0〞,如果复制完毕的话,DS18B20那么输出"1〞。 〔5〕重读,代码B8H,用于将存储在非易失性中的容重新读入到暂存器中。这种复制操作在DS18B20上电时自动执行,这样器件一上电,暂存器马上就存在有效的数据。假设在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标志,"0〞代表忙,"1〞代表完成。 〔6〕读电源,代码B4H,用于将DS18B20的供电方式信号发送到主机。假设在这条命令发出之后读时间隙,DS18B20将返回它的供电模式,"0〞代表寄生电源,"1〞代表外部电源。 一条温度转换命令启动DS18B20完成一次温度测量,测量结果以二进制补码形式存放在的高速暂存器中,占用暂存器的字节1〔LSB〕和字节2〔MSB〕。用一条读暂存器容的存储器操作命令可以把暂存器中的数据读出。温度报警触发器TH和TL各由一个字节构成,可以用一条写存储器操作命令对TH和TL进展写入,对这些存放器的读出需要通过暂存器。所有数据都以低位〔LSB〕在前的方式进展读/写,数据格式以0.0625℃/LSB形式表示如下: LSB字节:232221202-12-22-32-4 MSB字节:SSSSS262524 当符号位S=0时,表示测得温度为正,可以直接对测得的二进制数进展计算并转换为十进制。当符号位S=1时,表示测得的温度值为负,此时测得的二进制为补码数,要先变成源码数再进展计算。 总体时序图:图5DS18B20的初始化以及复位方式图6DS18B20的读字节时序图图7DS18B20的写命令时序图2.2L298N驱动模块 L298N是ST公司生产的一种高电压、大电流电机驱动芯片〔如图8〕。特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或制止器件工作有一个逻辑电源输入端,使部逻辑电路局部在低电压下工作;并且可以外接检测电阻,将变化量反应给控制电路。使用L298驱动电机,该芯片可以驱动两个电机,也可以驱动一个四相电机,可以直接通过电源来调节输出电压; L298的主要引脚功能如下: +5V:芯片电压5V; VCC:电机电压。最大可接50V; GND:共地接法; Out1-Out2:输出端,接电机1; Out3-Out4:输出端,接电机2; EN1、EN2:高电平有效,EN1、EN2分别为IN1和IN2、IN3和IN4的使能端; IN1-IN4:输入端,输入端电平和输出端电平是对应的;图8L298部原理图图9驱动接法可以看出当SENBA接地,INI1和VS接高电平的时候,只用控制INT2的上下电平就可操纵电机的停顿与转动。当INT2为高电平的时候,电机停顿转动;当INT2为低电平的时候,电机顺时针转动。2.37段LED数码显示器最常用的一种数码显示器是由7段条形的LED组成,如图10所示。点亮适当的字段就可以显示出不同的数字。此外,不少七段数码显示器在右下角带有一个圆形的LED作小数点用,这样一共有8段,恰好用于8位并行系统。这里我们采用共阳接法。图10七段LED数码显示器的连接 为了在七段LED上显示不同的数字或字符,首先要把数字或字符转换成相应的段码,如表2所示。表2七段数码显示器的段码表 本次试验采用的接法如图11。图11七段数码管接法软件电路设计 下面的程序列出了数字温度计的软件程序清单,包括主程序、DS18B20复位与检测子程序、读温度子程序和数据处理子程序、温度显示子程序、执行警报程序。 主程序首先进展初始化,当检测到DS18B20存在时发出温度转换命令和读温度命令,在分别调用相应的数据处理子程序,完成测量和显示工作。 DS18B20复位帮助初始化DS18B20。 读温度子程序只读出DS18B20暂存器前4字节的数据:温度值LSB、温度值MSB、温度报警值TH和TL,并将它们分别存入26到29H。 读温度子程序首先判断温度值MSB的符号位,当符号位S=0时,表示测得值为正值,即〔b&0xf8==0〕可以直接把二进制转换成十进制;当符号位S=1,即〔b&0xf8!=0〕表示测得值为负数,要先将补码变成原码,在计算十进制值。计算时先将LSB的低4位取出,进展小数局部数据处理。再将温度值LSB的高4位和温度值低4位取出,重新组合后进展整数局部数据处理。 温度显示子程序将从DS18B20读出的温度值,经过数据处理后,送往7段LED显示。 温度比拟程序实测温度与设定温度进展比拟,根据比拟结果进展处理。 具体程序如附录,程序流程图,如图12所示。图12总程序流程图电路图总体设计把每个模块进展汇总,如图13所示。图13各模块的电路图工程二基于myDAQ和DAQ助手进展数据采集 NImyDAQ是NI针对高校教学的多功能虚拟仪器实验平台,其功能中包含了数据采集。对于数据采集相关的功能而言〔模拟信号输入、模拟信号生成、数字信号输入与输出、计数器相关的输入与输出〕,其开发方式与其他NI数据采集设备完全一样。在后续练习中,我们将以NImyDAQ作为学习数据采集操作的硬件平台。Pre-Lab检查硬件连接与配置检查myDAQ已通过USB线缆连接至电脑,如果正常,myDAQ上USB接口旁边的蓝色LED指示灯会点亮。用导线AO0连至AI0+,将AGND连至AI0-,将DIO0连接至DIO4通过开场>>所有程序>>NationalInstrument>>Measurement&Automation翻开NIMeasurement&AutomationExplorer〔以后简称MAX,这是一个可以管理所有系统中的NI设备硬件资源并进展相关配置和自检的一个软件,随任何NI驱动程序会安装在PC中〕在MAX中单击"设备和接口〞,检查是否能找到NImyDAQ,如果连接正常,前面的板卡符号应该显示为绿色。可以单击右键选择"自检〞对设备进展自检。练习1:MeasurementandAutomationExplorer目标: 熟悉MAX的操作,能够使用MAX的测试面板进展简单的配置和测量实现: 双击桌面MAX的图标或者通过Windows中的开场>>所有程序>>NationalInstruments>>Measurement&AutomationExplorer翻开MAX。在MAX中单击"设备和接口〞,检查是否能找到myDAQ,前面的板卡符号应显示为绿色。右击该myDAQ设备并选择自检。如果硬件设备正常完好,此处将会弹出对话框显示"设备驱动与myDAQ1通信成功〞,单击"OK〞关闭该对话框。如果自检失败,请检查设备是否正确上电,或者通过NI工程师。鼠标右击代表myDAQ的myDAQ1的图标,并选择测试面板,此时将会弹出测试面板对话框。默认翻开的是模拟输入选项卡。我们可以根据测量需要选择相应的选项卡并进展配置。此处我们将基于模拟输入进展配置和测量的说明。为了进展模拟输入的测量,我们需要首先提供一个信号源。可通过开场>>所有程序>>NationalInstruments>>NIELVIS&NImyDAQ>>Instruments展开Instruments文件夹,可以看到12种仪器的图标文件。可以在桌面创立该文件夹的快捷方式,这样就可以更方便的展开该文件夹。双击翻开Instrument文件夹中的FunctionGenerator,翻开信号发生器的软面板操作界面,按下列图进展设置:通过函数发生器产生一个100Hz,峰峰值为4V的正弦信号,点击RUN。回到测试面板,在通道名中选择"myDAQ1/ai0〞,模式选择连续,输入配置选择差分,采样率为1000Hz,待读取点数为100,然后点击开场。这时可以采集到的信号,如下列图所示:改变函数发生器的波形参数的设置,如频率,幅值等,观察测试面板中波形的变化。可以思考当信号源频率超过采样率的时候会有什么结果,如果修改参数来进展信号采集?单击停顿按钮进展测试,单击关闭按钮关闭测试面板。扩展容:在MAX中仿真一块数据采集设备目标:NI-DAQmx驱动提供了硬件设备仿真功能。通过本扩展实验,将学习如何在MAX中仿真一块数据采集设备,这样,即使手头没有硬件设备也可以先进展编程开发,并对程序局部功能进展验证。实现:翻开MAX。右键单击设备和接口选择新建,弹出新建对话框。选择仿真NI-DAQmx设备或模块化仪器,单击完成,弹出创立NI-DAQmx仿真设备对话框。在对话框中列出了可以仿真的数据采集板卡或模块化仪器的分类,我们可以根据需要选择相应的板卡,以USB-6251为例,该板卡为M系列DAQ卡,因此点开M系列DAQ边上的+号,滚动鼠标,选择"NIUSB-6251〞;如果我们知道自己要仿真的板卡型号,可以直接在上面的方框中输入板卡型号,在"NI-DAQmx仿真设备〞对话框中会列出所以该型号的板卡,选中我们需要总线类型即可。单击确定,加载完毕后我们可以看到在MAX的设备和接口下面列出了我们刚刚仿真的板卡,并且板卡前面的符号是黄颜色来表示〔黄颜色即是仿真的板卡,而已连接的真实设备是绿色〕。练习2:在LabVIEW中使用ExpressVI测量模拟输入目标:学会利用LabVIEW中的数据采集ExpressVI采集模拟信号实现: 翻开LabVIEW新建一个VI,并保存。 在程序框图中调出函数选板,找到"DAQ助手〞ExpressVI并将其放置在程序框图中。 随后将自动弹出"新建Express任务...〞窗口。 点击采集信号>>模拟输入>>电压,然后点击myDAQ1左侧的"+〞标志,选择通道ai0,然后点击"完成〞。 在弹出的"DAQ助手〞配置相关参数,其中接线端配置选择为差分,采集模式为连续采样,代读取采样为100,采样率为1000 点击"运行〞按钮,你将在对话框的波形窗口中查看到相应的正弦波波形。点击"停顿〞,然后点击"确定〞关闭窗口,返回LabVIEW程序框图中。LabVIEW自动创立用于测量任务的代码。在弹出对话框中点击Yes,自动创立while循环。 在"DAQ助手〞ExpressVI右侧的数据输出接线端上点击右键,并选择创立>>图形显示控件。可以注意到,图形显示控件被放置在前面板上。 程序框图如下。While循环自动将停顿按钮放置到前面板上,使得用户可以终值循环的运行。切换到前面板,运行该程序,可以看到之前函数设置产生的正弦波显示在波形列表中,如下列图所示,说明该程序可以正确的测量到相应的正弦波。练习3:在LabVIEW中使用ExpressVI产生模拟输出目标: 熟悉MAX的操作,能够使用MAX的测试面板进展简单的配置和测量实现: 停顿或关闭FunctionGenerator函数发生器软面板。翻开LabVIEW,新建一个VI,并将程序保存起来。同练习2类似,在程序框图中调出函数选板,找到"DAQ助手〞ExpressVI并将其放置在程序框图中。随后将自动弹出"新建Express任务〞窗口。点击生产信号>>模拟输出>>电压,然后点击myDAQ1左侧的"+〞标志,选择通道ao0,然后点击"完成〞。在弹出的"DAQ助手〞配置相关参数,其中生成模式为连续生成,待写入采样为100,最大值为2,最小值为-2。将仿真信号的VI的"正弦〞输出端口连接至DAQ助手VI的"数据〞输入端口。While循环自动将停顿按钮放置到前面板,使得用户可以终止循环的运行。最终程序框图如下所示。运行该程序,翻开Instruments文件夹中的Oscilloscope,翻开示波器的软面板操作界面,点击Run,如下列图,说明该程序可以正确产生正弦波。点击停顿按钮,完毕程序运行,保存并关闭程序。练习4:在LabVIEW中使用ExpressVI进展数字计数目标: 学会利用LabVIEW中的数据采集ExpressVI进展数字计数实现: 在仿真之前的练习,新建并保存创立计数任务。创立数值显示控件进展计数值的显示,最终程序框图如下:运行该程序,翻开Instruments文件夹中的DigitalWriter,翻开软面板操作界面,点击Run改变ManualPattern中的Line0信号的上下值,可以观察到计数器的增加。挑战:计数器除了边沿计数外,还可完成其他多种针对脉冲信号的测量功能以及脉冲信号生成功能,请您利用DAQ助手设计一个程序,产生频率为1Hz,占空比为50%的连续脉冲。可以利用AI0端口,通过Oscilloscope〔示波器〕软面板观察产生的脉冲信号。注意:NImyDAQ的CTR0_OUT实际与DIO3共用接线端,所以需要更改连线,即将DIO3连接至AI0+,将DGND连接至AI0-.心得体会通过这次调试过程,中间学到了很多,也逐渐学会了,单片机的调试方式。首先第一个难点在于DS18B20的程序编写,这次涉及到了单总线的程序编写,是原来没有涉及过的;一开场算时间的时候,经常会接不到数据,最终发现是由于单片机的时钟设置不对,我一开场采用了默认的10Mhz,但是这显然与我程序设计有出入。 当涉及到准确定时5us的时候,由于是基于C语言编程,因此很多时候,仅仅分析程序是无法得到真正的结果的,因此需要利用keil软件的断点调试方式查看,从而利用while循环和_nop_()进展定时。 之后涉及到电机设计方面时,我成功在网上找到了L298模块来替代差分放大电路,但是事实上,L298就是两组差分放大电路的集成,利用这一点使得电路变得非常简单。 在利用报警模块的时候,一开场我理解错了教师的意思,没有利用方波去驱动扬声器,而是仅仅利用高电平,这使得声音播放的不够清晰。因此后面加上方波驱动之后,会影响整个程序的时序运行,特别是程序完毕到重新运行这一过程的延时变得非常关键,再实验了屡次之后,决定延时50ms正好。 这次试验比拟成功的是具体的显示负温度值,这一点是原来汇编语言程序很难实现的,但是对系统鲁棒性也是一大挑战;当温度低于-16摄氏度的时候,虽然可以正常显示,但是继电器的工作会出现闪烁问题。 在LabVIEW实验中,因为实验教材的问题,在连线的时候出了一些问题,导致实验三中的示波器波形总是产生噪声波形,而不是模拟信号产生的信号,重复了几次之后发现,原来教材上给的连接图和介绍不一样〔坑爹呀!〕,在育教师的帮助下,发现并解决了问题。并且初步了解了纯图形编程的原理和方法。。 综上所述,在教师的帮助下的毕业实习让我学会很多,希望我能把这种创新,务实的精神用在今后的工作当中。附录#include<AT89X52.H>#include<intrins.h>#include<init.h>/*******************************************//***************DS18B20程序*****************//*******************************************//*--------------准确延时5us子程序---------*/ voiddelay5(ucharn){ do { _nop_(); _nop_(); _nop_(); n--; } while(n);}/*--------------初始化函数--------------------*/voidinit_ds18b20(void){ DQ=1; delay5(10); DQ=0; delay5(120); DQ=1; delay5(96);}/*--------------读取一字节函数----------------*/ucharreadbyte(void){ uchari=0; uchardate=0; for(i=8;i>0;i--) { DQ=0; delay5(1); DQ=1; //15微秒拉释放总线 date>>=1; if(DQ) date|=0x80; delay5(11); } return(date);}/*--------------写一字节函数------------------*/voidwritebyte(uchardat){uchari=0;for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01;//写"1"在15微秒拉低 delay5(12); //写"0"拉低60微秒 DQ=1; dat>>=1; delay5(5); }}/*--------------读取温度函数------------------*/uintreadtemp(void){ uchara,b; uinttemp; float tt; init_ds18b20(); writebyte(0xCC); //跳过读序号列号的操作 writebyte(0x44); //启动温度转换 init_ds18b20(); writebyte(0xCC); writebyte(0xBE); //读取温度存放器 a=readbyte(); b=readbyte(); if(b&0xf8) { temp=b; temp<<=8; temp|=a; temp=~temp; temp+=1; F=1; //温度为负值 } else { temp=b; temp<<=8; temp=temp|a; F=0; //温度为正值 } tt=temp*0.0625*10+0.5; return(tt);}/**********************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃陇南金徽酒股份有限公司招聘199人笔试参考题库附带答案详解
- 育肥猪饲料知识培训课件
- 2025年中国铁道出版社有限公司招聘(14人)笔试参考题库附带答案详解
- 2025山西太原西山生态文旅投资建设有限公司及子公司招聘13人笔试参考题库附带答案详解
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解
- 新编大学英语(第四版)综合教程B4U6(浙江海洋大学版)课件 B4U6 Journeys in medicine Further development
- 2025年上半年六安市霍邱县人民法院招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年保定市高阳县招考政法机关辅助工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年佛山市南海区里水镇政府和村事业单位招43人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年亳州市属事业单位招考及易考易错模拟试题(共500题)试卷后附参考答案
- 近岸海上柔性光伏支架结构研究
- 2025年广西投资集团有限公司招聘笔试参考题库含答案解析
- 2024年华北电力大学辅导员及其他岗位招聘考试真题
- 2024年湖北省烟草专卖局(公司)招聘考试真题
- 青岛版科学四年级下册《认识太阳》课件
- 校园法制安全教育第一课
- 李白《关山月》古诗词课件
- 2024年安徽省养老护理职业技能竞赛考试题库(含答案)
- 醉酒后急救知识培训课件
- 煤矿重大灾害治理中长期规划(防治煤尘爆炸、火灾事故)
- 人工智能教学课件
评论
0/150
提交评论