




免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 微控制器应用系统综合课程设计的目的意义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来实现的,采集的电压范围是02v。本系统是利用8031单片机串行,实现双机口通信。其中1号发送机8031串行接发送号线p3.1(txd)连到2号接收机机8031串行口接收信号线p3.0(rxd)上。而5g14433则是连在发送机那边的8031芯片上。通过调节w1来改变电压值,发送跟接收放的led则跟踪显示电压值。对于超过或低于02v的电压值led都会显示出错信息,这样标度来显示电压的取值范围。本系统主要包括以下几个模块:cpu模块,双积分式a/d转换模块,led八段数码管显示模块。其中,采用8031单片机进行发送和接收的部分为cpu模块,双积分式a/d5g14433和发送方的8031连接部分则是a/d转换模块,用来进行数据的采集,显示模块则采用内藏3.2 总体设计流程图开始置串口模式置t1模式及常数启动定时器数据采样调显示子程序显示值送串口发送发送完否?ny图3.1 发送主程序开始置串口模式置t1模式及常数启动定时器调显示子程序判串行口有数据否n接收数据y调数据处理程序图3.2 接收主程序第四章 硬件设计4.1 硬件设计概要4.1.1 双积分式a/d芯片mc 14433与cpu硬件接口电路设计 由于mc14433的输出是动态的,所以mcs一51必须通过并行接口与mc14433连接,如图4.1所示为mc14433与mcs一51的一种接口电路接线原理图。 在图中是采用中断法管理mc14433的操作,mc1443的转换结束信号一方面接更新转换控制输人线du,另一方面接mcs一51的外部中断/int;,每次转换结束便在eoc脚输出正脉冲,下降沿向mcs-51提出中断申请,所以mc14433能自动连续转换。mc4014433所需的基准电压vr由精密电源mc1403提供。以下程序是通过中断方式读取,mc14433的转换结果,并保存在内部ram 20h,21h单元中,程序如下(数据存放格式如图3.46所示)图4.1 mc14433与mcs-51的电路接线原理图图4.2 数据在内部ram中的存放格式4.1.2 8031单片机串行口双机通信电路设计 mcs-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的io电路;工作方式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位数据后,当满足(ri):0;(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/12。2方式2:方式2的波特率由pcon中的选择位smod来决定,可表示为:波特率=2smodfosc64也就是当smod=1时,波特率为132fosc,当smod=0时,波特率为164fosc。3方式1和方式3定时器t1作为波特率发生器,其公式如下:波特率=2smod32定时器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溢出率=fsoc12256-x 利用8031单片机串行口,实现双机通信。 1.本实验系统中考虑用户可以方便使用串行口实现双机或和上位机通信,系统设计有用户专用串行接口,只要配上用户专用通信电缆线就可以实现和上位机通信,不影响监控系统和上位机的联机工作。j10就是用户专用串行接口,将j10用用户专用通信线连到上位机的串口上。注意不要和上位机系统用串行口冲突。 2.实验时需将1号机8031串行接收信号线p3.0(rxd)连到2号机8031串行口发送信号线p3.1(txd)。 实验线路图: 8031单片机串行口双机通信实验线路接线如图4.3所示,3根连线。实验步骤: 1.按图连好线路。 2.在两台dvcc实验系统处于p.状态下。 3.在1号机上运行h516s1.asm程序或输入四位起始地址0d00后,按exec 键连续运行程序,在1号机上显示电压值。 图4.3 8031单片机串行口双机通信 4.在2号机上h516s2.asm程序或输入四位起始地址0e30后,按exec键连续运行程序,在2号机上显示8031-2。 5.从1号机上的键盘上输入数字键,会显示在2号机的数码管上。4.2 所用到的芯片及其各自功能说明4.2.1 芯片列表表4.1 硬件系统所用芯片列表 所用芯片芯片功能芯片数目8031cpu2片5g14433a/d转换1片led数据显示8片100欧电阻分压64个74ls164移位寄存器8片4.2.2 8031的功能简介 8031单片机是intel公司生产的mcs-51系列单片机中的一种,除无片内rom外,其余特性与mcs-51单片机基本一样。 图4.4 8031管脚图1、主电源引脚vcc和vss vcc(40脚)接+5v电压; vss(20脚)接地。2、外接晶体引脚xtal1和xtal2 xtal1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对hmos单片机,此引脚应接地;对chmos单片机,此引脚作为驱动端。xtal2(18脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对hmos单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对xhmos,此引脚应悬浮。3、控制或与其它电源复用引脚rst/vpd、ale/prog、psen和ea/vpp rst/vpd(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与vss引脚之间连接一个约8.2k的下拉电阻,与vcc引脚之间连接一个约10f的电容,以保证可靠地复位。vcc掉电期间,此引脚可接上备用电源,以保证内部ram的数据不丢失。当vcc主电源下掉到低于规定的电平,而vpd在其规定的电压范围(50.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)引脚p0、p1、p2、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,p1.0引脚的第二功能为t2定时/计数器的外部输入,p1.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.2 p3各口线的第二功能定义口线引脚第二功能p3.010rxd(串行输入口)p3.111 txd(串行输出口)p3.212int0(外部中断0)p3.313int1(外部中断1)p3.414t0(定时器0外部输入)p3.515t1(定时器1外部输入)p3.616wr(外部数据存储器写脉冲)p3.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/eprom ram 8051(8751,8031) 4k 128 5 2 同、异步方式,8位或10位可程序控制 125 hmos 8052(8752,8032) 8k 256 6 3 同、异步方式,8位或10位可程序控制 100 hmos 80c51(87c51,80c31) 4k 128 5 2 同、异步方式,8位或10位可程序控制 24 chmos 80c52(87c52,80c32) 8k 256 7 3 同、异步方式,8位或10位可程序控制 24 chmos 8044(8744,8344) 4k 192 5 2 s.l.u 200 hmos 三、msc-51单片机中央处理器: 中央处理器是单片机内部的核心部件,它决定了单片机的主要功能特性。中央处理器主要由运算部件和控制部件组成。下面我们把中央处理器功能模块和有关的控制信号线联系起来加以讨论,并涉及相关的硬件设备(如振荡电路和时钟电路)。1、 运算部件 它包括算术、逻辑部件alu、布尔处理器、累加器acc、寄存器b、暂存器tmp1和tmp2、程序状态字寄存器psw以及十进制调整电路等。运算部件的功能是实现数据的算术逻辑运算、位变址处理和数据传送操作。mcs-51单片机的alu功能十分强,它不仅可对8位变量进行逻辑“与”、“或”、“异或”、循环、求补、清零等基本操作,还可以进行加、减、乘、除等基本运算。为了乘除运算的需要,设置了b寄存器。在执行乘法运算指令时,用来存放其中一个乘数和乘积的高8位数;在执行除法运算指令时,b中存入除数及余数。mcs-51单片机的alu还具有一般微机alu,如z80、mcs-48所不具备的功能,即布尔处理功能。单片机指令系统中的布尔指令集、存储器中的位地址空间与cpu中的位操作构成了片内的布尔功能系统,它可对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。在实现位操作时,借用了程序状态标志器(psw)中的进位标志cy作为位操作的“累加器”。 运算部件中的累加器acc是一个8位的累加器(acc也可简写为a)。从功能上看,它与一般微机的累加器相比没有什么特别之处,但需要说明的是acc的进位标志cy就是布尔处理器进行位操作的一个累加器。 mcs-51单片机的程序状态psw,是一个8位寄存器,它包含了程序的状态信息。2、控制部件 控制部件是单片机的神经中枢,它包括时钟电路、复位电路、指令寄存器、译码以及信息传送控制部件。它以主振频率为基准发出cpu的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来控制单片机各部分的运行。其中有一些控制信号线能简化应用系统外围控制逻辑,如控制地址锁存的地址锁存信号ale,控制片外程序存储器运行的片内外存储器选择信号ea,以及片外取指信号psen。 替换型号:80c31、8032、80c32。4.2.3 5g14433的功能简介mc14433是一种三位半双积分式a/d转换器。其最大输人电压为199. 9mv和1 999v两档(由输人基准电压vr决定),抗干扰性能强、转换精度高,但转换速度慢,转换速度约1-10次秒,广泛应用于低速数据采集系统和数字显示仪表中。国产型号为5g14433。 mc14433的结构: 图4.5给出了m c14433的引脚和逻辑结构框图。mc14433的引脚功能如下: v dd:主电源,5v; v ee:模拟部分的负电源,一5v; v ss:数字地;vr:基准电压输人线,为200mv或2v;v:被测电压输人线,最大为199 9mv或i 999v(依基准电压而定);vag:模拟地(vr和vx的地);ri:积分电阻输人线,当vx量程为2v时ri取470k,量程为200m v时ri取27 k: ci:积分电容输人线,ci一般取0.1f的聚丙烯电容; ri/ci:ri和ci的公共连接端; c01、co2:接失调补偿电容co,值约为0.lf;clki、clko:外接振荡器时钟频率调节电阻r,,其典型值为300kq,时钟频率随r,值的上升而下降;图4.5 m c14433引脚图和逻辑框图 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.6 m c14433选通脉冲时序波形表4.3 m c14433编码表4.2.4 led八段数码管显示的功能简介 共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 图4.7 led八段数码管共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻.4.3 硬件电路设计系统原理图及其说明图4.8 设计硬件电路图通过设计以上各个模块和cpu的独立接口电路以后,现在须将各个模块以及cpu连接成为一个完整的系统。各个模块之间都与cpu模块8030之间有联系,倆块8031之间通过p2连接,5g14433则是与第一片8031之间的p0口对应连接,另外八段数码显示管则是通过74ls164进行扩展来连接的,俩者之间还有100欧姆的电阻来分担电压,免得将数码管烧坏。系列硬件原理图如图4.8所示。第五章 软件设计5.1 流程图及其说明开始d1=1?nq0=1? y yyq2=1?过量程或欠过量程处理 n返回符号位=0符号位=1yq3=1?n千位=0千位=1nds2=1?yq3q0作为百位值存数读入a/d结果ds3=1?yq3q0作为十位值存数读入a/d结果yds4=1?q3q0作为个位值存数返回图5.1 mc14433 a/d转换流程图如图5.1所示,为数据采集a/d转换子程序流程图,该模块主要实现数据的采集取样。通过中断进入子程序,mc14433 a/d转换芯片不断的采集数据和进行a/d转换来得到具体的电压值。其源程序如下:pint1: mov a,p1 ;读p1口数据送a jnb acc.4,pint1 ;等待ds1=1 jb acc.0,per ;若q0=1表示有过或欠量程,则转per jb acc.2,pl1 ;若q2=1转换结果为正,转pl1 setb 77h ;若q2=0转换结果为负,符号位置1 ajmp pl2 ;转pl2pl1: clr 77h ;转换结果为正,符号位置0pl2: jb acc.3, pl3 ;若q3=1,转pl3定千位置0 setb 74h ;若q3=0,定千位置1 ajmp pl4pl3: clr 74h ;q3=1,定千位置0pl4: mov a,p1 ;送百位数至2eh的低4位 jnb acc.5, pl4 mov r0,#2eh xchd a,r0pl5: mov a,p1 ;送十位数至2fh的高4位 jnb acc.6,pl5 swap a inc r0 mov r0,apl6: mov a,p1 ;送个位数至2fh的低4位 jnb acc.7,pl6 xchd a,r0 retiper: setb 10h ;置过或欠量程标志reti开始初始化位码r2,显示缓冲首地址r0,计数器r3显示数据查表r2位码r2位码左移1位显示地址高位加1通道计数值减1n通道计数值=0? y#00关位码显示 返回 图5.2 显示一个led的程序流程图 如图5.2所示为显示子程序,它首先是对r1,r2,r3进行初始化,然后读取数据表的第一个数的地址,再查看所取的数值所在的地址,通过点亮led八段数码显示管来显示所得到的数值,每次显示有四个数码管显示数值,正好是所采集到的电压值。其源程序如下:disp:setb 0d4hmov r1,#7ehmov r2,#08hmov r3,#00hdisp1:mov dptr,#datacomov a,r1movc a,a+dptrmov dptr,#0ff22hmovx dptr,a mov dptr,#0ff21hmov a,r2movx dptr,a lcall delaydec r1clr cmov a,r2rrc amov r2,ajnz disp1 clr 0d4hretdelay:mov r7,#03hdelay0: mov r6,#0ffhdelay1: djnz r6,delay1 djnz r7,delay0 ret5.2 源程序及其说明 在整个程序中,通过主程序对子程序的反复调用,来达到一直采集和显示各个时刻额的电压值。通过对w1电位器进行调节,可以在八段数码显示管上得到当时时刻采集到的电压值。;发送程序org 0d00hstart:ljmp main;外部中断1的中断服务程序入口地址org 0013hljmp pint1main:mov sp,#60h ;初始化 mov 2eh,#00h ;清千位、百位数暂存单元 mov 2fh,#00h ;清十位、个位数暂存单元 movscon,#50h ;串口方式1 movtmod,#20h ;t1 方式1 movtl1,#0cch ;波特率9600的常数 movth1,#0cch setbtr1 ;开中断 clret1 clr es;双积分式a/d转换5g14433数据采样stat: setb it1 ;设置外部中断1的边沿触发方式 mov ie,#84h ;允许外部中断1中断 mov r2,#0fh ;置r2寄存器为计数器,计数值为0fh mov r2,#0fh mov r0,#2eh mov a,r0 ;取百位数2eh的低4位至显示缓存器存器7dh anl a,#0fh mov 7dh,a mov a,r0 ;取千位数2eh的高4位至显示缓存寄存器7eh swap a anl a,#0fh add a,#16h ;千位数添加小数点,既0-0。,1-1。 mov 7eh,a inc r0 mov a,r0 ;取个位数2fh的低4位至显示缓存寄存器7bh anl a,#0fh mov 7bh,a mov a,r0 ;取十位数2fh的高4位至显示缓存寄存器7ch swap a anl a,#0fh mov 7ch,a mov 7ah,#14h mov 79h,#15h acall disp ;调显示子程序 ajmp stat;外部中断1的中断服务程序pint1: mov a,p1 ;读p1口数据送a jnb acc.4,pint1 ;等待ds1=1 jb acc.0,per ;若q0=1表示有过或欠量程,则转per jb acc.2,pl1 ;若q2=1转换结果为正,转pl1 setb 77h ;若q2=0转换结果为负,符号位置1 ajmp pl2 ;转pl2pl1: clr 77h ;转换结果为正,符号位置0pl2: jb acc.3, pl3 ;若q3=1,转pl3定千位置0 setb 74h ;若q3=0,定千位置1 ajmp pl4pl3: clr 74h ;q3=1,定千位置0pl4: mov a,p1 ;送百位数至2eh的低4位 jnb acc.5, pl4 mov r0,#2eh xchd a,r0pl5: mov a,p1 ;送十位数至2fh的高4位 jnb acc.6,pl5 swap a inc r0 mov r0,apl6: mov a,p1 ;送个位数至2fh的低4位 jnb acc.7,pl6 xchd a,r0 retiper: setb 10h ;置过或欠量程标志reti;显示子程序disp: setb 0d4h ;置rs1=1,既r1r7改用第二组通用寄存器 mov r1,#7eh ;千位数7eh-r1 mov r2,#08h ;置第四位显示器显示 mov r3,#00h ;置r3寄存器为计数器,计数值为00h置disp1:mov dptr,#0ff21h ;位显寄存器-dptr mov a,r2 movx dptr,a mov dptr,#data1 ;dptr指向显示字形码首地址 mov a,r1 movc a,a+dptr ;取显示字形数送字形寄存器显示 mov dptr,#0ff22h ;字形寄存器-dptr movx dptr,a mov a,r1 mov sbuf,a ;串口输出采集到的电压值 lcall ss ;是否发送完毕disp2: lcall delay ;延时 dec r1 clr c ;清进位寄存器 mov a,r2 ;置r2寄存器指向下一位显示 rrc a mov r2,a jnz disp1 mov a,#0ffh ;关显示 mov dptr,#0ff22h movx dptr,a clr 0d4h ;置rs1=0,既r1r7改用第0组通用寄存器 retss: jbc ti,redikey sjmp ssredikey: retdelay: mov r6,#0ffhdelay0: mov r7,#0ffhdelay1: djnz r7,delay1 djnz r6,delay0 retdata1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hdb 88h,83h,0c6h,0a1h,86h,8eh;系统晶振是 6.0 mhz 接收程序 org0e30hstart:movsp,#60hmova,#02hmovr0,#79hmovr0,aincr0mova,#10hmovr0,aincr0mova,#01hmovr0,aincr0mova,#03hmovr0,aincr0mova,#00hmovr0,aincr0mova,#08hmovr0,amova,#7ehmovdptr,#1fffhmovxdptr,a movscon,#50h ;串口 方式 1movtmod,#20h ;t1 方式 1movtl1,#0cch ;波特率 9600 的常数movth1,#0cchsetbtr1 ;开中断clret1clreswait:jbcri,dis_rec ;是否接收到数据lcalldisp ;sjmpwait ;dis_rec:mova,sbuf ;读串口接收到的数据lcalldatakey ;显示输入的数字(0-f)db 7bh,7ehajmpwaitdatakey:mov r4,amov dptr,#1fffhmovx a,dptrmov r1,amov a,r4mov r1,aclr apop 83hpop 82hmovc a,a+dptrinc dptrcjne a,01h,datakey2dec r1clr amovc a,a+dptrdatakey1:push 82h push 83h mov dptr,#1fffh movx dptr,a pop 83h pop 82h inc dptr push 82h push 83h retdatakey2:dec r1 mov a,r1 sjmp datakey1;显示子程序disp:setb 0d4hmov r1,#7ehmov r2,#08hmov r3,#00hdisp1:mov dptr,#datacomov a,r1movc a,a+dptrmov dptr,#0ff22hmovx dptr,a mov dptr,#0ff21hmov a,r2movx dptr,a lcall delaydec r1clr cmov a,r2rrc amov r2,ajnz disp1 clr 0d4hretdelay:mov r7,#03hdelay0: mov r6,#0ffhdelay1: djnz r6,delay1 djnz r7,delay0 ret dataco: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hdb 88h,83h,0c6h,0a1h,86h,8eh,0bfh,0ch,89h,0dehend第六章 设计过程中遇到的问题及系统调试6.1 设计过程中遇到的问题及解决方法一、软件方面的问题在设计的过程中,软件设计中主要有遇到三大问题:一、电压值采集不到,或者是采集到了也不稳定;二、发送数据不过去;三、接收程序过程时间太长,造成发送方采样不稳定,时间过短。电压值采集不到的主要原因是中断子程序并没有用到,在用到子程序之前程序已经返回了,后来通过修改中断程序前面的程序,使之能够顺利运行到中断子程序部分,从而得到了电压值。接收方没有数值显示或者是出现乱码的问题主要是发送程序过程中,取用到的数值a并不是所采集到的电压值的总个数值,因此才会出现这样的结果,后面我把发送数值放在显示子程序中,在显示采集到的数值之前把数值发送过去,最终在接收方也得到了准确的电压值,并且也没有再出现乱码的情况,显示出了正确的数值。因为接收发送过去的数值时间过长,而发送方又是等数值发送过去完全才能显示准确的数值的,所以最开始因为延时时间不够,造成了发送方的采集到的八段数码管上显示的电压值闪烁过快,而查看不到准确的数值。后来我将显示子程序中的延时时间加长以后,不仅接收方,发送方也能够准确且稳定的显示采集到的电压值。二、硬件方面的问题另外,在硬件设计方面,最开始根本就采集不到数值,主要是因为硬件板上的-5v的电压值是不准确的,应该另外通过万能表调节电压值到-5v来提供,否则出不来数据。6.2系统调试及使用说明本次的课程设计必须在软件和硬件共同的作用下才能准确的进行,实现电压的采样和双机通信。打开俩台计算机,都在dvcc试验系统下的dv51h试验系统中建立一个新的文件夹,在有5g14433的那一方建的文件夹中放入的是发送程序,而在另一台计算机里边则是放入接收子程序,并进行保存。然后按照电路图连接电路,将硬件中的各支路线都连接好以后,检查好硬件连线后,就可以接通试验箱的电源了,在试验箱上的八段数码管最后一个上边显示闪烁的p后,按键盘上的pcdbg键,然后在db51h系统中进行联接、编译、调试、运行。在运行程序过程中有值得非常注意的一点是必须先运行接收方的程序,再运行发送方的程序,否则在接收方会接收不到数据。本次设计的结果能够在发送方和接收方都得到通过双积分式a/d转换mc14433采样收集到的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶园土地流转与农业生态环境保护合同
- 财务数据保密及跨境传输安全协议
- 财务顾问公司保密协议与客户利益保护合同
- 旅游景区树木采购与景观设计合同
- Brand KPIs for neobanking NanoPay in Mexico-英文培训课件2025.4
- 2025年公共卫生管理核心知识考试试卷及答案
- 2025年高级项目经理职业资格考试试题及答案
- 2025年心理学应用技术职业能力测试试卷及答案
- 果蔬加工自动化
- 构建现代化高校智能教室计划
- 雨季监理实施细则
- MW机组扩建工程常熟施工组织设计
- 课件:基础生命支持
- 分层审核检查表LPA全套案例
- 柔版印刷常见故障及解决办法
- 三标一体文件编写指南
- 中国医师协会专科会员入会申请表
- WC28E铲板式搬运车使用维护说明书
- 某乳业酸奶生产CCP点
- CT-DZ600A型卫星同步时钟-使用说明书
- 糖尿病视网膜病变培训.ppt
评论
0/150
提交评论