还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章微控制器应用系统综合课程设计的目的意义
1.1设计目的与任务《微控制器应用系统综合设计》是为测控专业《微控制器技术》课程而开设的课程设计教学环节,其目的在于培养学生综合运用理论知识来分析和解决实际问题的能力,是通过设计以微控制器为核心的单片机检测系统,加深学生对微控制器技术的了解,进一步掌握其程序设计与硬件接口技术本课程的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计出一台以80C32MCU为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计
1.2课程在教学计划中的地位和作用微控制器是20世纪70年代中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大地提高了这些领域的技术水平和自动化程度单片机在我国大规模的应用已有十余年历史,单片机技术的研究和推广正方兴未艾所以,现在各高等院校相关专业都讲单片机课程列为其教学计划的重要组成部分,纷纷开设单片机相关课程因此,让我们学生学会如何在一个有限的时间内掌握单片机应用的基本原理及方法是一个很有价值的教学项目,而其中的课程设计则给了我们学生一个很好的学习平台,锻炼我们的动手能力及协作能力通过此课程设计,可以让我们学生初步掌握单片机课程的实验的设计方法,即通过课程设计的要求去自主的查阅资料,收集、分析类似设计,并通过实际组装调试环节,来达到最终的课程设计要求;另外,课程设计也为我们以后的毕业设计打好基础,慢慢学会一些必要的报告的写作形式和要求,逐步掌握课程设计的步骤和方法,了解各种实验的程序和试验方法;而且,最主要的是通过课程设计能够培养我们学生勤于思考勇于实践乐于动手的习惯,自主的去查阅资料对单片机有更深入广泛的了解,学会对资料的好坏进行选择删减,提高我们的思考能力和动手能力,激起我们对动手实践的兴趣,对我们以后步入社会参加工作提供一次很好的参考经验第二章单片机数据采集与双机通信系统的设计软硬件设计任务
2.1设计内容及要求设计相应的A/D、显示、串行通信接口的电路,利用单片机的串行口与扩展的A/D接口,进行数据采集、标度、变换与通信,实现2台8031单片机之间的双机数据通信与显示
①.5G14433采样,数据发送,4位LED显示
②.接收采样的数据,数据接收,4位LED显示
2.2课程设计的要求本课程设计涉及《微控制器技术》课程的基本概念和理论,主要要求学生掌握微控制器的指令系统、中断技术、总线扩展、模拟与数字I/O接口技术与通讯技术等,重点是培养学生掌握微控制器在自动化测控应用系统中的设计与开发方法课程设计的基本要求如下1.掌握单片微控制器硬件结构和工作原理、中断与定时系统、嵌入式应用、现场总线等基本概念和原理;2.熟悉8/16位单片微控制器的主要功能单元和指令系统;3.熟悉测控网络中嵌入式微控制器的应用和现场总线应用技术4.利用微控制器的接口技术进行简单的测控及自动化应用系统设计;5.每人提交系统设计报告一份,现场演示验收设计系统第三章总体设计方案
3.1设计思想本系统是进行一个单片机数据采集与双击通信系统的设计,其中发送和接受是作为主程序进行的,而数据采集和数据显示则是作为子程序进行的实验室本次试验采用的数据采集芯片是双积分是A/D芯片5G14433来实现的,采集的电压范围是0~2V本系统是利用8031单片机串行,实现双机口通信其中1号发送机8031串行接发送号线P
3.1TXD连到2号接收机机8031串行口接收信号线P
3.0RXD上而5G14433则是连在发送机那边的8031芯片上通过调节W1来改变电压值,发送跟接收放的LED则跟踪显示电压值对于超过或低于0~2V的电压值LED都会显示出错信息,这样标度来显示电压的取值范围本系统主要包括以下几个模块CPU模块,双积分式A/D转换模块,LED八段数码管显示模块其中,采用8031单片机进行发送和接收的部分为CPU模块,双积分式A/D5G14433和发送方的8031连接部分则是A/D转换模块,用来进行数据的采集,显示模块则采用内藏
3.2总体设计流程图NY图
3.1发送主程序NY图
3.2接收主程序第四章硬件设计
4.1硬件设计概要
4.
1.1双积分式A/D芯片MC14433与CPU硬件接口电路设计由于MC14433的输出是动态的,所以MCS一51必须通过并行接口与MC14433连接,如图
4.1所示为MC14433与MCS一51的一种接口电路接线原理图在图中是采用中断法管理MC14433的操作,MC1443的转换结束信号一方面接更新转换控制输人线DU,另一方面接MCS一51的外部中断/INT;,每次转换结束便在EOC脚输出正脉冲,下降沿向MCS-51提出中断申请,所以MC14433能自动连续转换MC4014433所需的基准电压VR由精密电源MC1403提供以下程序是通过中断方式读取MC14433的转换结果,并保存在内部RAM20H21H单元中,程序如下(数据存放格式如图
3.46所示)图
4.1MC14433与MCS-51的电路接线原理图图
4.2数据在内部RAM中的存放格式
4.
1.28031单片机串行口双机通信电路设计MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;工作方式1多用于双机之间或与外设电路的通信;方式
2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率[每秒传送的位数]以及作为中断标志等串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用串行端口的波特率可以用程序来控制在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活
1、串口控制寄存器方式1输入在REN=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据只有当8位数据接收完,并检测到高电平停止位后,只有满足
①R1=0;
②SM2=0或接收到的第9位数据为1时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失所以在方式1接收时,应先用软件清零RI和SM2标志方式2 方式2为固定波特率的11位UART方式它比方式1增加了一位可程控为1或0的第9位数据 输出发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位当CPU执行一条数据写入SUBF的指令且TI=0时,就启动发送器发送发送一帧信息后,置位中断标志TI输入在REN=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据在接收到附加的第9位数据后,当满足
①RI0;
②SM2=0或接收到的第9位数据为1时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志Ri;否则信息丢失且不置位RI工作方式3方式3为波特率可变的11位UART方式除波特率外,其余与方式2相同波特率的选择 如前所述,在串行通讯中,收发双方的数据传送率波特率要有一定的约定在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制1.方式O方式0的波特率固定为主振频率 的1/122.方式2方式2的波特率由PCON中的选择位SMOD来决定,可表示为波特率=2sMoD×fosc/64也就是当SMOD=1时,波特率为1/32×fosc,当SMOD=0时,波特率为1/64×fosc3.方式1和方式3 定时器T1作为波特率发生器,其公式如下波特率=2SMOD/32×定时器T1溢出率T1溢出率=T1计数率/产生溢出所需的周期数 式中T1计数率取决于它工作在定时器状态还是计数器状态当工作于定时器状态时,T1计数率为Fosc/2当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于Fosc/24产生溢出所需周期与定时器T1的工作方式、T1的预置值有关定时器T1工作于方式O溢出所需周期数=8192-×定时器T1工作于方式1溢出所需周期数=65536-X定时器T1工作于方式2溢出所需周期数=256-X 因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当这种方式下,T1的溢出率[次/秒]计算式可以表示为T1溢出率=Fsoc/12[256-X]利用8031单片机串行口,实现双机通信
1.本实验系统中考虑用户可以方便使用串行口实现双机或和上位机通信,系统设计有用户专用串行接口,只要配上用户专用通信电缆线就可以实现和上位机通信,不影响监控系统和上位机的联机工作J10就是用户专用串行接口,将J10用用户专用通信线连到上位机的串口上注意不要和上位机系统用串行口冲突
2.实验时需将1号机8031串行接收信号线P
3.0RXD连到2号机8031串行口发送信号线P
3.1TXD实验线路图:8031单片机串行口双机通信实验线路接线如图
4.3所示,3根连线实验步骤:
1.按图连好线路
2.在两台DVCC实验系统处于P.状态下
3.在1号机上运行H516S
1.ASM程序或输入四位起始地址0D00后,按EXEC键连续运行程序,在1号机上显示电压值图
4.38031单片机串行口双机通信
4.在2号机上H516S
2.ASM程序或输入四位起始地址0E30后,按EXEC键连续运行程序,在2号机上显示8031-
25.从1号机上的键盘上输入数字键,会显示在2号机的数码管上
4.2所用到的芯片及其各自功能说明
4.
2.1芯片列表表
4.1硬件系统所用芯片列表所用芯片芯片功能芯片数目8031CPU2片5G14433A/D转换1片LED数据显示8片100欧电阻分压64个74LS164移位寄存器8片
4.
2.28031的功能简介8031单片机是Intel公司生产的MCS-51系列单片机中的一种,除无片内ROM外,其余特性与MCS-51单片机基本一样图
4.48031管脚图
1、主电源引脚VCC和VSSVCC——(40脚)接+5V电压;VSS——(20脚)接地
2、外接晶体引脚XTAL1和XTAL2XTAL1(19脚)接外部晶体的一个引脚在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端XTAL2(18脚)接外晶体的另一端在单片机内部,接至上述振荡器的反相放大器的输出端采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮
3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位推荐在此引脚与VSS引脚之间连接一个约
8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±
0.5V)内,VPD就向内部RAM提供备用电源
②ALE/PROG(30脚)当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6因此,它可用作对外输出的时钟,或用于定时目的然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)
③PSEN(29脚)此脚的输出是外部程序存储器的读选通信号在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入
④EA/VPP(引脚)当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)
4、输入/输出(I/O)引脚P
0、P
1、P
2、P3(共32根)
①P0口(39脚至32脚)是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载
②P1口(1脚至8脚)是准双向8位I/O口由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口P1口能驱动(吸收或输出电流)4个LS型的TTL负载对
8052、8032,P
1.0引脚的第二功能为T2定时/计数器的外部输入,P
1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端对EPROM编程和程序验证时,它接收低8位地址
③P2口(21脚至28脚)是准双向8位I/O口在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址在对EPROM编程和程序验证期间,它接收高8位地址P2可以驱动(吸收或输出电流)4个LS型的TTL负载
④P3口(10脚至17脚)是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口P3能驱动(吸收或输出电流)4个LS型的TTL负载作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同作为第二功能使用时,各引脚的定义如表所示值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能表
4.2P3各口线的第二功能定义口线引脚第二功能P
3.010RXD(串行输入口)P
3.111TXD(串行输出口)P
3.212INT0(外部中断0)P
3.313INT1(外部中断1)P
3.414T0(定时器0外部输入)P
3.515T1(定时器1外部输入)P
3.616WR(外部数据存储器写脉冲)P
3.717RD(外部数据存储器读脉冲)
二、MCS-51单片机的片外总线结构综合上面的描述可知,I/O口线都不能当作用户I/O口线除8051/8751外真正可完全为用户使用的I/O口线只有P1口,以及部分作为第一功能使用时的P3口单片机的引脚除了电源、复位、时钟接入,用户I/O口外,其余管脚是为实现系统扩展而设置的这些引脚构成MCS-51单片机片外三总线结构,即
①地址总线(AB)地址总线宽为16位,因此,其外部存储器直接寻址为64K字节,16位地址总线由P0口经地址锁存器提供8位地址(A0至A7);P2口直接提供8位地址(A8至A15)
②数据总线(DB)数据总线宽度为8位,由P0提供
③控制总线(CB)由P3口的第二功能状态和4根独立控制线RESET、EA、ALE、PSEN组成下表列出各个子系列的配制情况供读则参考芯片种类片内存储器中断源定时/计数器串行口电源消耗(mA)制造工艺ROM/EPROMRAM8051(8751,8031)4K12852同、异步方式,8位或10位可程序控制125HMOS8052(8752,8032)8K25663同、异步方式,8位或10位可程序控制100HMOS80C51(87C51,80C31)4K12852同、异步方式,8位或10位可程序控制24CHMOS80C52(87C52,80C32)8K25673同、异步方式,8位或10位可程序控制24CHMOS8044(8744,8344)4K19252S.L.U200HMOS
三、MSC-51单片机中央处理器中央处理器是单片机内部的核心部件,它决定了单片机的主要功能特性中央处理器主要由运算部件和控制部件组成下面我们把中央处理器功能模块和有关的控制信号线联系起来加以讨论,并涉及相关的硬件设备(如振荡电路和时钟电路)
1、运算部件它包括算术、逻辑部件ALU、布尔处理器、累加器ACC、寄存器B、暂存器TMP1和TMP
2、程序状态字寄存器PSW以及十进制调整电路等运算部件的功能是实现数据的算术逻辑运算、位变址处理和数据传送操作MCS-51单片机的ALU功能十分强,它不仅可对8位变量进行逻辑“与”、“或”、“异或”、循环、求补、清零等基本操作,还可以进行加、减、乘、除等基本运算为了乘除运算的需要,设置了B寄存器在执行乘法运算指令时,用来存放其中一个乘数和乘积的高8位数;在执行除法运算指令时,B中存入除数及余数MCS-51单片机的ALU还具有一般微机ALU,如Z
80、MCS-48所不具备的功能,即布尔处理功能单片机指令系统中的布尔指令集、存储器中的位地址空间与CPU中的位操作构成了片内的布尔功能系统,它可对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作在实现位操作时,借用了程序状态标志器(PSW)中的进位标志Cy作为位操作的“累加器”运算部件中的累加器ACC是一个8位的累加器(ACC也可简写为A)从功能上看,它与一般微机的累加器相比没有什么特别之处,但需要说明的是ACC的进位标志Cy就是布尔处理器进行位操作的一个累加器MCS-51单片机的程序状态PSW,是一个8位寄存器,它包含了程序的状态信息
2、控制部件控制部件是单片机的神经中枢,它包括时钟电路、复位电路、指令寄存器、译码以及信息传送控制部件它以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来控制单片机各部分的运行其中有一些控制信号线能简化应用系统外围控制逻辑,如控制地址锁存的地址锁存信号ALE,控制片外程序存储器运行的片内外存储器选择信号EA,以及片外取指信号PSEN替换型号80C
31、
8032、80C
324.
2.35G14433的功能简介MC14433是一种三位半双积分式A/D转换器其最大输人电压为
199.9mV和1.999V两档(由输人基准电压VR决定),抗干扰性能强、转换精度高,但转换速度慢,转换速度约1-10次/秒,广泛应用于低速数据采集系统和数字显示仪表中国产型号为5G14433MC14433的结构图
4.5给出了MC14433的引脚和逻辑结构框图MC14433的引脚功能如下·VDD主电源,+5V;·VEE模拟部分的负电源,一5V;·VSS数字地;·VR基准电压输人线,为200mV或2V;·V被测电压输人线,最大为199.9mV或I.999V(依基准电压而定);·VAG模拟地(VR和VX的地);·RI积分电阻输人线,当Vx量程为2V时RI取470kΩ,量程为200mV时RI取27kΩ·CI积分电容输人线,CI一般取
0.1μF的聚丙烯电容;·RI/CI RI和CI的公共连接端;·C
01、Co2接失调补偿电容Co,值约为
0.lμF;·CLKI、CLKO外接振荡器时钟频率调节电阻R,其典型值为300kQ,时钟频率随R值的上升而下降;图
4.5MC14433引脚图和逻辑框图·EOC转换结束状态输出线EOC是一个宽为
0.5个时钟周期的正脉冲;·DU:更新转换控制信号输出线,DU若与EOC相连,则每次A/D转换结束后又自动启动新的A/D转换;·/OR过量程状态信号输出线,低电平有效,当|VX|>VR时/OR有效;·DS4-DS1分别是个、
十、百、千位选通特征位输出信号,宽度为18个时钟周期,它们之间的间隔为2个时钟周期MC14433的选通脉冲时序如图
4.6所示·Q3一Qo:经A/D转换后的BCD码数据输出线,动态地输出千、百、
十、个位值,即:DS4有效时,Q3一Qo表示是个位数值(0一9);DS3有效时,Q3一Q0表示是十位数值(0一9);DS2有效时,Q3一Q0表示是百位数值0一9;DS1有效时,Q3一Q0表示是千位数值、极性标志及超量程,编码如表
3.1所示图
4.6MC14433选通脉冲时序波形表
4.3MC14433编码表
4.
2.4LED八段数码管显示的功能简介共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮根据发光字段的不同组合可显示出各种数字或字符此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻图
4.7LED八段数码管共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻.
4.3硬件电路设计系统原理图及其说明图
4.8设计硬件电路图通过设计以上各个模块和CPU的独立接口电路以后,现在须将各个模块以及CPU连接成为一个完整的系统各个模块之间都与CPU模块8030之间有联系,倆块8031之间通过P2连接,5G14433则是与第一片8031之间的P0口对应连接,另外八段数码显示管则是通过74LS164进行扩展来连接的,俩者之间还有100欧姆的电阻来分担电压,免得将数码管烧坏系列硬件原理图如图
4.8所示第五章软件设计
5.1流程图及其说明NYY图
5.1MC14433A/D转换流程图如图
5.1所示,为数据采集A/D转换子程序流程图,该模块主要实现数据的采集取样通过中断进入子程序,MC14433A/D转换芯片不断的采集数据和进行A/D转换来得到具体的电压值其源程序如下PINT1:MOVAP1;读P1口数据送AJNBACC.4PINT1;等待DS1=1JBACC.0PEr;若Q0=1表示有过或欠量程,则转PErJBACC.2PL1;若Q2=1转换结果为正,转PL1SETB77H;若Q2=0转换结果为负,符号位置1AJMPPL2;转PL2PL1:CLR77H;转换结果为正,符号位置0PL2:JBACC.3PL3;若Q3=1转PL3定千位置0SETB74H;若Q3=0,定千位置1AJMPPL4PL3:CLR74H;Q3=1,定千位置0PL4:MOVAP1;送百位数至2EH的低4位JNBACC.5PL4MOVR0#2EHXCHDA@R0PL5:MOVAP1;送十位数至2FH的高4位JNBACC.6PL5SWAPAINCR0MOV@R0APL6:MOVAP1;送个位数至2FH的低4位JNBACC.7PL6XCHDA@R0RETIPEr:SETB10H;置过或欠量程标志RETIY图
5.2显示一个LED的程序流程图如图
5.2所示为显示子程序,它首先是对R1,R2,R3进行初始化,然后读取数据表的第一个数的地址,再查看所取的数值所在的地址,通过点亮LED八段数码显示管来显示所得到的数值,每次显示有四个数码管显示数值,正好是所采集到的电压值其源程序如下DISP:SETB0D4HMOVR1#7EHMOVR2#08HMOVR3#00HDISP1:MOVDPTR#DATACOMOVA@R1MOVCA@A+DPTRMOVDPTR#0FF22HMOVX@DPTRAMOVDPTR#0FF21HMOVAR2MOVX@DPTRALCALLDELAYDECR1CLRCMOVAR2RRCAMOVR2AJNZDISP1CLR0D4HRETDELAY:MOVR7#03HDELAY0:MOVR6#0FFHDELAY1:DJNZR6DELAY1DJNZR7DELAY0RET
5.2源程序及其说明在整个程序中,通过主程序对子程序的反复调用,来达到一直采集和显示各个时刻额的电压值通过对W1电位器进行调节,可以在八段数码显示管上得到当时时刻采集到的电压值;发送程序ORG0D00HSTART:LJMPMAIN;外部中断1的中断服务程序入口地址ORG0013hLJMPPINT1MAIN:MOVSP#60H;初始化MOV2EH#00H;清千位、百位数暂存单元MOV2FH#00H;清十位、个位数暂存单元MOVSCON#50H;串口方式1MOVTMOD#20H;T1方式1MOVTL1#0CCH;波特率9600的常数MOVTH1#0CCHSETBTR1;开中断CLRET1CLRES;双积分式A/D转换5G14433数据采样STAT:SETBIT1;设置外部中断1的边沿触发方式MOVIE#84H;允许外部中断1中断MOVR2#0FH;置R2寄存器为计数器,计数值为0FHMOVR2#0FHMOVR0#2EHMOVA@R0;取百位数2EH的低4位至显示缓存器存器7DHANLA#0FHMOV7DHAMOVA@R0;取千位数2EH的高4位至显示缓存寄存器7EHSWAPAANLA#0FHADDA#16H;千位数添加小数点,既0-0,1-1MOV7EHAINCR0MOVA@R0;取个位数2FH的低4位至显示缓存寄存器7BHANLA#0FHMOV7BHAMOVA@R0;取十位数2FH的高4位至显示缓存寄存器7CHSWAPAANLA#0FHMOV7CHAMOV7AH#14HMOV79H#15HACALLDISP;调显示子程序AJMPSTAT;外部中断1的中断服务程序PINT1:MOVAP1;读P1口数据送AJNBACC.4PINT1;等待DS1=1JBACC.0PEr;若Q0=1表示有过或欠量程,则转PErJBACC.2PL1;若Q2=1转换结果为正,转PL1SETB77H;若Q2=0转换结果为负,符号位置1AJMPPL2;转PL2PL1:CLR77H;转换结果为正,符号位置0PL2:JBACC.3PL3;若Q3=1转PL3定千位置0SETB74H;若Q3=0,定千位置1AJMPPL4PL3:CLR74H;Q3=1,定千位置0PL4:MOVAP1;送百位数至2EH的低4位JNBACC.5PL4MOVR0#2EHXCHDA@R0PL5:MOVAP1;送十位数至2FH的高4位JNBACC.6PL5SWAPAINCR0MOV@R0APL6:MOVAP1;送个位数至2FH的低4位JNBACC.7PL6XCHDA@R0RETIPEr:SETB10H;置过或欠量程标志RETI;显示子程序DISP:SETB0D4H;置RS1=1,既R1~R7改用第二组通用寄存器MOVR1#7EH;千位数7EH-R1MOVR2#08H;置第四位显示器显示MOVR3#00H;置R3寄存器为计数器,计数值为00H置DISP1:MOVDPTR#0FF21H;位显寄存器-DPTRMOVAR2MOVX@DPTRAMOVDPTR#DATA1;DPTR指向显示字形码首地址MOVA@R1MOVCA@A+DPTR;取显示字形数送字形寄存器显示MOVDPTR#0FF22H;字形寄存器-DPTRMOVX@DPTRAMOVA@R1MOVSBUFA;串口输出采集到的电压值LCALLSS;是否发送完毕DISP2:LCALLDELAY;延时DECR1CLRC;清进位寄存器MOVAR2;置R2寄存器指向下一位显示RRCAMOVR2AJNZDISP1MOVA#0FFH;关显示MOVDPTR#0FF22HMOVX@DPTRACLR0D4H;置RS1=0,既R1~R7改用第0组通用寄存器RETSS:JBCTIREDIKEYSJMPSSREDIKEY:RETDELAY:MOVR6#0FFHDELAY0:MOVR7#0FFHDELAY1:DJNZR7DELAY1DJNZR6DELAY0RETDATA1:DB0C0H0F9H0A4H0B0H99H92H82H0F8H80H90HDB88H83H0C6H0A1H86H8EH;系统晶振是
6.0MHz接收程序ORG0E30HSTART:MOVSP#60HMOVA#02HMOVR0#79HMOV@R0AINCR0MOVA#10HMOV@R0AINCR0MOVA#01HMOV@R0AINCR0MOVA#03HMOV@R0AINCR0MOVA#00HMOV@R0AINCR0MOVA#08HMOV@R0AMOVA#7EHMOVDPTR#1FFFHMOVX@DPTRAMOVSCON#50H;串口方式1MOVTMOD#20H;T1方式1MOVTL1#0CCH;波特率9600的常数MOVTH1#0CCHSETBTR1;开中断CLRET1CLRESWAIT:JBCRIDIS_REC;是否接收到数据LCALLDISP;SJMPWAIT;DIS_REC:MOVASBUF;读串口接收到的数据LCALLDATAKEY;显示输入的数字0-FDB7BH7EHAJMPWAITDATAKEY:MOVR4AMOVDPTR#1FFFHMOVXA@DPTRMOVR1AMOVAR4MOV@R1ACLRAPOP83HPOP82HMOVCA@A+DPTRINCDPTRCJNEA01HDATAKEY2DECR1CLRAMOVCA@A+DPTRDATAKEY1:PUSH82HPUSH83HMOVDPTR#1FFFHMOVX@DPTRAPOP83HPOP82HINCDPTRPUSH82HPUSH83HRETDATAKEY2:DECR1MOVAR1SJMPDATAKEY1;显示子程序DISP:SETB0D4HMOVR1#7EHMOVR2#08HMOVR3#00HDISP1:MOVDPTR#DATACOMOVA@R1MOVCA@A+DPTRMOVDPTR#0FF22HMOVX@DPTRAMOVDPTR#0FF21HMOVAR2MOVX@DPTRALCALLDELAYDECR1CLRCMOVAR2RRCAMOVR2AJNZDISP1CLR0D4HRETDELAY:MOVR7#03HDELAY0:MOVR6#0FFHDELAY1:DJNZR6DELAY1DJNZR7DELAY0RETDATACO:DB0C0H0F9H0A4H0B0H99H92H82H0F8H80H90HDB88H83H0C6H0A1H86H8EH0BFH0CH89H0DEHEND第六章设计过程中遇到的问题及系统调试
6.1设计过程中遇到的问题及解决方法
一、软件方面的问题在设计的过程中,软件设计中主要有遇到三大问题
一、电压值采集不到,或者是采集到了也不稳定;
二、发送数据不过去;
三、接收程序过程时间太长,造成发送方采样不稳定,时间过短电压值采集不到的主要原因是中断子程序并没有用到,在用到子程序之前程序已经返回了,后来通过修改中断程序前面的程序,使之能够顺利运行到中断子程序部分,从而得到了电压值接收方没有数值显示或者是出现乱码的问题主要是发送程序过程中,取用到的数值A并不是所采集到的电压值的总个数值,因此才会出现这样的结果,后面我把发送数值放在显示子程序中,在显示采集到的数值之前把数值发送过去,最终在接收方也得到了准确的电压值,并且也没有再出现乱码的情况,显示出了正确的数值因为接收发送过去的数值时间过长,而发送方又是等数值发送过去完全才能显示准确的数值的,所以最开始因为延时时间不够,造成了发送方的采集到的八段数码管上显示的电压值闪烁过快,而查看不到准确的数值后来我将显示子程序中的延时时间加长以后,不仅接收方,发送方也能够准确且稳定的显示采集到的电压值
二、硬件方面的问题另外,在硬件设计方面,最开始根本就采集不到数值,主要是因为硬件板上的-5V的电压值是不准确的,应该另外通过万能表调节电压值到-5V来提供,否则出不来数据
6.2系统调试及使用说明本次的课程设计必须在软件和硬件共同的作用下才能准确的进行,实现电压的采样和双机通信打开俩台计算机,都在DVCC试验系统下的DV51H试验系统中建立一个新的文件夹,在有5G14433的那一方建的文件夹中放入的是发送程序,而在另一台计算机里边则是放入接收子程序,并进行保存然后按照电路图连接电路,将硬件中的各支路线都连接好以后,检查好硬件连线后,就可以接通试验箱的电源了,在试验箱上的八段数码管最后一个上边显示闪烁的P后,按键盘上的PCDBG键,然后在DB51H系统中进行联接、编译、调试、运行在运行程序过程中有值得非常注意的一点是必须先运行接收方的程序,再运行发送方的程序,否则在接收方会接收不到数据本次设计的结果能够在发送方和接收方都得到通过双积分式A/D转换MC14433采样收集到的电压值,并通过旋转W1电位器可以改变电压值,在八段数码管上也会跟着随时变换数值,得到准确的结果,在接收方也能准确的得到发送方电位器改变的电压值第七章收获、体会为期差不多八周的课程设计,不仅巩固了我们一学期在课堂上和书本上所学到的知识,也锻炼了我们自主查阅资料和辨别资料是否对我们的设计有用的能力,更有利的是很好的加强了我们的动手能力、思考问题的方法和能力,同学之间的互相帮助也是一个很好的学习机会,也让我们懂得了团结的力量,在学习过程中要不耻于向同学求助,正如孔子所说的“三人行必有我师”本次设计因为老师给了我们足够长的时间,所以我们大家基本上都很好的完成了设计任务期间,我学到了很多宝贵的经验和相关的单片机知识,最主要的是在对于硬件的认识和编程方面都得到了很大的提高在这次的单片机数据采集与双机通信系统的设计,单片机语言程序的编写以及原理图的设计占了很重要的部分对于零散的芯片,通过编程、仿真、硬件电路搭建,才能形成一个完整的系统在整个设计过程中,我深深地体会到了我们必须深入到工作的实践中,才能学到更有用的知识,也能记得更长久,因为毕竟是实践出真知而且与此同时,在本次课程设计中,我们还必须学会如何将书本中的知识很好的应用到实践中去经过本次的课程设计,通过去图书馆和网上查阅很多资料后,我学到了更多关于单片机的汇编编程,了解了单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处我也学习到了如何自主的分辨资料的好坏以及是否对本次设计的有用与否总的来说,我学会了查阅资料和分辨资料的好坏另外,在学习的过程中,也遇到了很多困难,比如开始的时候,由于发送端和接收端的通信协议没有做好,导致数据不能正确的传输和接收,在解决问题的过程中,对于通信协议的实现有了深刻的认识虽然现在课程设计已经结束了,但它对我的影响却将留存长久,因为它让我们自己动手,锻炼了我们的动手能力,同时也让我们品尝到了成功的喜悦,极大地激发了我们对于实践的兴趣和热情,在很大程度上鼓舞了我们的学习决心,扩大了我们的的知识面,也增强了我们的自信心,让我们以更大的勇气面对以后的学习和人生他,它给了我们开拓进取的动力为我们未来的工作实践提供了一个提前学习经验的机会而且,在学习的过程中,我尝到了辛苦酸甜,虽然最开始查阅资料和遇到的各种困难是非常的辛苦和烦躁的,但是最终通过自己的努力得到了准确的结果以后,这种喜悦是一种用文字难以所表达的甘甜的感觉所以让我更加清楚的认识到了学习的过程中必定充满了喜与忧,但只要我们保持一种努力向上的积极心态,最终一定会战胜困难,而且在战胜困难来临的那一刻我们会体会到前所未有的快乐与满足通过这次的课程设计我也深刻的认识到了,理论知识和实践相结合是教学环节中相当重要的一个环节,只有这样才能提高自己的实际操作能力,并且从中培养自己独立思考、用于克服困难、团队协作的精神当然,这次的课程设计除了我自己努力的查阅资料和思考遇到的各种问题外,老师、学姐和班里同学们的帮助也给了我非常的帮助,这不仅是行动上的,在精神上也给了我极大的支持,让我很好的理解到了团结就是力量这句话非常感谢老师和朋友们的帮助总的来说,这次课程设计在比较轻松愉悦的过程中很好的完成了参考文献
1、凌玉华《单片机原理及应用系统设计》中南大学出版社,
20062、李朝青《单片机原理及接口技术》北京航空航天大学出版社,
19983、王福瑞等《单片微机测控系统设计大全》北京航空航天大学出版社,
19994、冯克《MCS-51单片机实用子程序及其应用实例》黑龙江科学技术出版社,
19905、徐惠民等《单片微型计算机原理、接口与应用》北京邮电大学出版社,
20016、http://wenku.baidu.com/view/c2bc8f73f242336c1eb95e
90.html
7、http://wenku.baidu.com/view/e8e984a3284ac850ad
024235.html
8、http://wenku.baidu.com/view/42260333b90d6c85ec3ac63f.html开始置串口模式置T1模式及常数启动定时器数据采样调显示子程序显示值送串口发送发送完否?开始置串口模式置T1模式及常数启动定时器调显示子程序判串行口有数据否接收数据调数据处理程序开始D1=1Q0=1YQ2=1过量程或欠过量程处理N返回符号位=0符号位=1YQ3=1N千位=0千位=1NDS2=1YQ3~Q0作为百位值存数读入A/D结果DS3=1YQ3~Q0作为十位值存数读入A/D结果YDS4=1Q3~Q0作为个位值存数返回开始初始化位码R2,显示缓冲首地址R0,计数器R3显示数据查表R2位码R2位码左移1位显示地址高位加1通道计数值减1N通道计数值=0?#00—关位码显示返回。