基于51单片机的上位机通讯系统课程设计说明书_第1页
基于51单片机的上位机通讯系统课程设计说明书_第2页
基于51单片机的上位机通讯系统课程设计说明书_第3页
基于51单片机的上位机通讯系统课程设计说明书_第4页
基于51单片机的上位机通讯系统课程设计说明书_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、 武汉理工大学单片机课程设计报告 目录摘要11.总体任务21.1设计目的21.2设计内容和要求21.3 设计思路22.设计原理分析32.1上位机通信系统框图32.1.1串行通信工作原理32.2各部分设计原理42.2.1 +5v电源原理及设计42.2.2单片机复位电路工作原理52.2.3单片机晶振电路工作原理62.2.4 rs-232接口电器特性63.硬件电路设计93.1系统硬件总电路构成及原理93.2 主控制部分at89c52单片机简介103.3其它外围器件174.系统软件程序的简单设计185.课程设计总结32参考文献33摘要 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它

2、所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以pc机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。 本文介绍了一种基于at89c52单片机与上位机通信系统,并对其工作原理及软、硬件的设计和实现方法进行

3、了详细的阐述。在单片机的输入输出控制中,除直接接上小键盘和lcd显示等方法外,一般都通过串口和上位机pc进行通信,后面一种方法由于pc机拥有强大的数据处理功能以及友好的控制界面并且能实现远程控制所以显得尤为有用。此系统可以由上位机控制,通过串口操作单片机模块实现其相应功能。本次设计就是来完成由上位机通过串口控制来实现,以发光二极管的发光状态模拟开关电路的通断,用上位机的dos命令对其进行控制。并用led屏显示程序的传输。关键字 at89c52单片机;上位机;串口通信;开关电路. 11.总体任务1.1设计目的1) 通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动

4、脑和动手的能力。2) 通过上位机通信系统的设计,了解上位机通信系统的工作原理和简单的程序编写,最终提高我们的逻辑思维能力。1.2设计内容和要求1) 内容:设计一个at80c52单片机上位机通信系统,由上位机通过串口操作控制单片机模块。2) 要求:以发光二极管的发光状态模拟开关电路的通断,用上位机dos命令,对发光二极管进行控制。1.3 设计思路1) 熟悉设计原理,熟练掌握 vision和isis professional软件的应用,了解上位机通信系统的工作过程和工作原理。2) 了解各个硬件的工作原理。3) 绘制电路原理图,编写程序,并进行仿真,dos命令对其进行控制,基本实现上位机通信系统的功

5、能。12.设计原理分析2.1上位机通信系统框图电源电路at89c52单片机发光二极管上位机接口复位电路晶振电路led显示电路 图2.1 基于at89c52单片机与上位机通信系统框图 2.1.1串行通信工作原理 串行通信是指利用一条传输线将数据一位位的顺序传送。其特点是通信线路简单,利用电话或电报就可实现通信,降低成本,适用于远距离通信,但传输速度较慢。这里需要说明几个概念。1) 波特率:单片机需要根据使用的系统时钟频率(fo ),结合选定的通信波特率, 计算出uart寄存器设置值为1280。 为了保证数据传输的准确性,上位com口的通信波特率也必须设置成和单片机采用的速率相一致。 2) 数据格

6、式:数据格式采用1位起始位、8位数据位、无奇偶校验位、1位停止位组成,如图所示。startd0d1d6d7stop start启动位 d0d78位数据 stop停止位 图2.1.1串口通信数据格式 数据位标准的值有5、7和8位,如何设置取决于系统设计时需要传送的信 息。比如,标准的ascii码是0 127 (7位),扩展的ascii码则是0255 (8位)。停止位用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有 自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供系统校正时钟同步的机会。奇偶校验位在

7、串口通信中仅是一种简单的检错方式,可以不考虑。 2.2各部分设计原理2.2.1 +5v电源原理及设计稳定直流源设计的一般思路是让输入电压先通过电压变压器,再通过整流网络,然后经过滤波网络最后经过稳压网络。以全波整流电路作为整流网络,以极性电容作为滤波网络,采用固定式三端集成稳压电路7805和7905设计制作连续可调的双极型直流稳压电源。如下图所示,220v(幅值311v)50hz市电经变压器220:25输出两组独立的25v交流,经桥堆整流、大电容滤波后分别经过集成稳压块lm7805c与lm7905c作用得到5v的直流输出。 图2.2.1直流电源系统方框图电源变压器:将电网提供的220v交流电压

8、转换为各种电路设备所需的交流电压。整流电路:利用单向导电器件将交流电转换成脉动直流电路。滤波电路:利用储能元件(电感或电容)把脉动直流电转换成比较平坦的直流电。稳压电路:利用电路的调整作用使输出电压稳定的过程称为稳压。具体电路如下:图2.2.1 5v设计电原理图 输入电容c1、c2用于抑制纹波电压,输出电容c3、c4用于消振,缓冲冲击性负载,保证电路工作稳定。同时由于输出电容c3、c4的存在,容易发生电容放电而损坏稳压器,rv1和rv2是滑动变阻器,可以调节输出的电压。r1和r2是限流电阻,防止线路电流太大。lm7805集成稳压三极管输出电流可达1a,输出电压5v,过热保护,过流保护,输出晶体

9、管sol保护。2.2.2单片机复位电路工作原理 电容在上接高电平,电阻在下接地,中间为rst。这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是rst引脚上为高电平,然后电源通过电阻对电容充电,rst端电压慢慢下降,降到一定程度,即为低电平,单片机开始正常工作。 首先rst保持两个机器周期以上的高电平时自动复位1) 上电复位:上电瞬间,电容充电电流最大,电容相当于短路,rst端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,rst端为低电平,程序正常运行。2) 手动复位:首先经过上电复位,当按下按键时,rst直接与vcc相连,为高电平形成复位,同时

10、电解电容被短路放电;按键松开时,vcc对电容充电,充电电流在电阻上,rst依然为高电平,仍然是复位,充电完成后,电容相当于开路,rst为低电平,正常工作。图2.2.2复位电路电原理图2.2.3单片机晶振电路工作原理晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。它是时钟电路中最重要的部件,它的作用是向ic等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。图2.2.3晶振电路电原理图2

11、.2.4 rs-232接口电器特性 目前rs-232是pc机与通信工业中应用最广泛的一种串行接口。r s-232被定义为一种在低速率串行通信中增加通信距离的单端标准。r s-232采用不平衡传输方式,即所谓单端通信,该接口具有使用方便、连线少等优点。rs-232接口主要电气特性如下: 1) rs-232串口通信最远距离为15m。 2) 不带负载时的驱动器输出电平为 -25v +25v 。 3) 接收器输入电压的允许范围为-25v +25v 。 4) rs-232上传送的数字量采用负逻辑,且与地对称。逻辑1:-3v -15v ; 逻辑0: +3v +15v 。 5) 最大负载电容2500pf。

12、6) 信号有效(接通,on状态,正电压)为+3v +15v,信号无效(断开,off状态,负电压 )为 -3v -15v。由rs-232标准对逻辑电平的定义可知,在发送引脚(txd )和接收引脚(rxd )上, 对于数据信息:逻辑“1”的电平要低于-3v,逻辑“0”的电平要高于+3v;对于控制信号,接通状态(on )即信号有效的电平高于+3v,断开状态(off )即信号无效的电平低 于 -3v,也就是当传输电平的绝对值大于3v时,电路可以有效地检查出来,介于 -3 +3v之间的电压无意义,低于-15v高于+15v的电压也认为无意义,因此,实际工作时,应保证电平在4(315 )v之间。表2.2.4

13、ttl逻辑电平与rs-232逻辑电平对比关系表电平状态ttlrs-232逻辑电平“1” +2.4v-3 -15v逻辑电平“0” +0.4v+3 +15v 图2.2.4上位机通信与rs-232接口电原理图3.硬件电路设计3.1系统硬件总电路构成及原理实现本设计具体功能,可选用at80c52单片机及外围器件,实现最小控制通信系统。电源电路为单片机及其他模块提供标准的+5v外界电源,晶振模块为单片机提供时钟标准,使系统各部分能协调工作。复位电路模块为单片机提供复位电路功能,单片机作为主控器,根据输入信号对系统进行相应的控制。9针接口与单片机和上位机的rs-232相连,实现上位机和单片机之间的通信,发

14、光二极管是单片机控制的控制对象,实际应用中,它连接光电隔离器和驱动电路,可以作为电路开关。本次设计还提供led显示屏,显示程序的传输过程。图3.1单片机上位机通信系统电原理图 本次设计的所需元件清单如表3.1 元件名称型号数量/个用途单片机at80c521控制核心晶振12mhz1晶振电路电容30pf2电解电容10f/10v1复位电路电阻10k1按键1串口9针1接微机集成芯片max2321电平转换电路电解电容1f/10v2发光二极管6控制对象电阻1k6电源+5v/0.5a1提供电源led1显示程序传输3.2 主控制部分at89c52单片机简介at89c52是51系列单片机的一个型号,它是atme

15、l公司生产的。at89c52是一个低电压,高性能cmos 8位单片机,片内含8k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,功能强大的at89c52单片机可为您提供许多较复杂系统控制应用场合。at89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89c52可以按照常规方法进行编程,但不可以在线编程(s系列的

16、才支持在线编程)。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。at89c52p为40 脚双列直插封装的8 位通用微处理器,采用工业标准的c51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主ic 内部寄存器、数据ram及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号ir的接收解码及与主板cpu通信等。主要管脚有:xtal1(19 脚)和xtal2(18 脚)为振荡器输入输出端口,外接12mhz 晶振。rst/vpd(9 脚)为复位输入端口,外接电阻电容组成的

17、复位电路。vcc(40 脚)和vss(20 脚)为供电端口,分别接+5v电源的正负端。p0p3 为可编程通用i/o 脚,其功能用途由软件定义,在本设计中,p0 端口(3239 脚)被定义为n1 功能控制端口,分别与n1的相应功能管脚相连接,13 脚定义为ir输入端,10 脚和11脚定义为i2c总线控制端口,分别连接n1的sdas(18脚)和scls(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板cpu 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。p0 口p0 口是一组8位漏极开路型双向i/o 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收

18、电流的方式驱动8个ttl逻辑门电路,对端口p0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在flash 编程时,p0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1 口p1 是一个带内部上拉电阻的8 位双向i/o 口, p1 的输出缓冲级可驱动(吸收或输出电流)4 个ttl 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c51 不同之

19、处是,p1.0 和p1.1 还可分别作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex),flash 编程和程序校验期间,p1 接收低8 位地址。表3.2 p1.0和p1.1的第二功能引脚号功能特性p1.0t2,时钟输出p1.1t2ex(定时/计数器2)p2 口p2 是一个带有内部上拉电阻的8 位双向i/o 口,p2 的输出缓冲级可驱动(吸收或输出电流)4个ttl 逻辑门电路。对端口p2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。在访问外部程序存储器或16 位

20、地址的外部数据存储器(例如执行movx dptr 指令)时,p2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行movx ri 指令)时,p2 口输出p2 锁存器的内容。flash 编程或校验时,p2亦接收高位地址和一些控制信号。p3 口p3 口是一组带有内部上拉电阻的8 位双向i/o 口。p3 口输出缓冲级可驱动(吸收或输出电流)4 个ttl 逻辑门电路。对p3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3 口将用上拉电阻输出电流(iil)。p3 口除了作为一般的i/o 口线外,更重要的用途是它的第二功能。p3 口还接收一些用于flash

21、闪速存储器编程和程序校验的控制信号。rst复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ale 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ale 脉冲。对flash 存储器编程期间,该引脚还用于输入编程脉冲(prog)。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh 单元的d0 位置位,可禁止ale 操作。该位置位后,只有一条movx 和movc指令

22、才能将ale 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale 禁止位无效。psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次psen 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp外部访问允许。欲使cpu 仅访问外部程序存储器(地址为0000hffffh),ea 端必须保持低电平(接地)。需注意的是:如果加密位lb1 被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu 则执行内部程序存储器中的指令。flash 存储器编程时

23、,该引脚加上+12v 的编程允许电源vpp,当然这必须是该器件是使用12v 编程电压vpp。xtal1振荡器反相放大器的及内部时钟发生器的输入端。xtal2振荡器反相放大器的输出端。特殊功能寄存器在at89c52 片内存储器中,80h-ffh 共128 个单元为特殊功能寄存器(sfe),sfr 的地址空间映象如表2 所示。并非所有的地址都被定义,从80hffh 共128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单

24、元数值总是“0”。at89c52除了与at89c51所有的定时/计数器0 和定时/计数器1 外,还增加了一个定时/计数器2。定时/计数器2 的控制和状态位位于t2con(参见表3)t2mod(参见表4),寄存器对(rcao2h、rcap2l)是定时器2 在16 位捕获方式或16 位自动重装载方式下的捕获/自动重装载寄存器。数据存储器at89c52 有256 个字节的内部ram,80h-ffh 高128 个字节与特殊功能寄存器(sfr)地址是重叠的,也就是高128字节的ram 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。当一条指令访问7fh 以上的内部地址单元时,指令中使用的寻址方式是

25、不同的,也即寻址方式决定是访问高128 字节ram 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。例如,下面的直接寻址指令访问特殊功能寄存器0a0h(即p2 口)地址单元。mov 0a0h,#data间接寻址指令访问高128 字节ram,例如,下面的间接寻址指令中,r0 的内容为0a0h,则访问数据字节地址为0a0h,而不是p2 口(0a0h)。mov r0,#data堆栈操作也是间接寻址方式,所以,高128 位数据ram 亦可作为堆栈区使用。定时器0和定时器1:at89c52的定时器0和定时器1 的工作方式与at89c51 相同。定时器2定时器2 是一个16 位定时/

26、计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器t2con的c/t2 位选择。定时器2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由t2con 的控制位来选择。定时器2 由两个8 位寄存器th2 和tl2 组成,在定时器工作方式中,每个机器周期tl2 寄存器的值加1,由于一个机器周期由12 个振荡时钟构成,因此,计数速率为振荡频率的1/12。在计数工作方式时,当t2 引脚上外部输入信号产生由1 至0 的下降沿时,寄存器的值加1,在这种工作方式下,每个机器周期的5sp2 期间,对外部输入进行采样。若在第一个机器周期中采

27、到的值为1,而在下一个机器周期中采到的值为0,则在紧跟着的下一个周期的s3p1 期间寄存器加1。由于识别1 至0 的跳变需要2 个机器周期(24 个振荡周期),因此,最高计数速率为振荡频率的1/24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。捕获方式在捕获方式下,通过t2con 控制位exen2 来选择两种方式。如果exen2=0,定时器2 是一个16 位定时器或计数器,计数溢出时,对t2con 的溢出标志tf2 置位,同时激活中断。如果exen2=1,定时器2 完成相同的操作,而当t2ex 引脚外部输入信号发生1 至0 负跳变时,也出

28、现th2 和tl2 中的值分别被捕获到rcap2h 和rcap2l 中。另外,t2ex引脚信号的跳变使得t2con 中的exf2 置位,与tf2 相仿,exf2 也会激活中断。捕获方式如图4 所示。自动重装载(向上或向下计数器)方式当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器t2con的dcen 位(允许向下计数)来选择的。复位时,dcen 位置“0”,定时器2 默认设置为向上计数。当dcen置位时,定时器2 既可向上计数也可向下计数,这取决于t2ex 引脚的值,当dcen=0 时,定时器2 自动设置为向上计数,在这种方式下,t2con

29、中的exen2 控制位有两种选择,若exen2=0,定时器2 为向上计数至0ffffh 溢出,置位tf2 激活中断,同时把16 位计数寄存器rcap2h 和rcap2l重装载,rcap2h 和rcap2l 的值可由软件预置。若exen2=1,定时器2 的16 位重装载由溢出或外部输入端t2ex 从1 至0 的下降沿触发。这个脉冲使exf2 置位,如果中断允许,同样产生中断。定时器2 的中断入口地址是:002bh 0032h。当dcen=1 时,允许定时器2 向上或向下计数。这种方式下,t2ex 引脚控制计数器方向。t2ex 引脚为逻辑“1”时,定时器向上计数,当计数0ffffh 向上溢出时,置

30、位tf2,同时把16 位计数寄存器rcap2h 和rcap2l重装载到th2 和tl2 中。 t2ex 引脚为逻辑“0”时,定时器2 向下计数,当th2 和tl2 中的数值等于rcap2h 和rcap2l中的值时,计数溢出,置位tf2,同时将0ffffh 数值重新装入定时寄存器中。当定时/计数器2 向上溢出或向下溢出时,置位exf2 位。波特率发生器当t2con(表3)中的tclk 和rclk 置位时,定时/计数器2 作为波特率发生器使用。如果定时/计数器2 作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1 用于其它功能。若rclk 和tclk 置位,则定时器2工作于波特率发生器

31、方式。波特率发生器的方式与自动重装载方式相仿,在此方式下,th2 翻转使定时器2 的寄存器用rcap2h 和rcap2l 中的16位数值重新装载,该数值由软件设置。在方式1 和方式3 中,波特率由定时器2 的溢出速率根据下式确定:方式1和3的波特率=定时器的溢出率/16定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(c/t2=0)。定时器2 作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12 振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加1。波特率的计算公式如下:方式1和

32、3的波特率=振荡频率/32*65536-(rcp2h,rcp2l)式中(rcap2h,rcap2l)是rcap2h 和rcap2l中的16 位无符号数。定时器2 作为波特率发生器使用的电路如图7 所示。t2con 中的rclk 或tclk=1 时,波特率工作方式才有效。在波特率发生器工作方式中,th2 翻转不能使tf2 置位,故而不产生中断。但若exen2 置位,且t2ex 端产生由1 至0 的负跳变,则会使exf2 置位,此时并不能将(rcap2h,rcap2l)的内容重新装入th2 和tl2 中。所以,当定时器2 作为波特率发生器使用时,t2ex 可作为附加的外部中断源来使用。需要注意的是

33、,当定时器2 工作于波特率器时,作为定时器运行(tr2=1)时,并不能访问th2 和tl2。因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。然而,对rcap2 则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。在访问定时器2或rcap2 寄存器之前,应将定时器关闭(清除tr2)。可编程时钟输出定时器2 可通过编程从p1.0 输出一个占空比为50%的时钟信号,如图8 所示。p1.0 引脚除了是一个标准的i/o 口外,还可以通过编程使其作为定时/计数器2 的外部时钟输入和输出占空比50%的时钟脉冲。当时钟振荡频率为16mhz 时,输出时钟频率范围为61

34、hz4mhz。当设置定时/计数器2 为时钟发生器时,c/t2(t2con .1)=0,t2oe (t2mod.1) =1,必须由tr2(t2con.2)启动或停止定时器。时钟输出频率取决于振荡频率和定时器2 捕获寄存器(rcap2h,rcap2l)的重新装载值,公式如下:输出时钟频率=振荡器频率/4*65536-(rcp2h,rcp2l)在时钟输出方式下,定时器2 的翻转不会产生中断,这个特性与作为波特率发生器使用时相仿。定时器2 作为波特率发生器使用时,还可作为时钟发生器使用,但需要注意的是波特率和时钟输出频率不能分开确定,这是因为它们同使用rcap2l和rcap2l。uart at89c5

35、2的uart 工作方式与at89c51 工作方式相同。中断at89c52 共有6 个中断向量:两个外中断(int0 和int1),3 个定时器中断(定时器0、1、2)和串行口中断。所有这些中断源如图9 所示。这些中断源可通过分别设置专用寄存器ie 的置位或清0 来控制每一个中断的允许或禁止。ie 也有一个总禁止位ea,它能控制所有中断的允许或禁止。时钟振荡器at89c52 中有一个用于构成内部振荡器的高增益反相放大器,引脚xtal1 和xtal2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图10。外接石英晶体(或陶瓷谐振器

36、)及电容c1、c2 接在放大器的反馈回路中构成并联振荡电路。对外接电容c1、c2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pf10pf,而如使用陶瓷谐振器建议选择40pf10f。用户也可以采用外部时钟。采用外部时钟的电路如图10 右图所示。这种情况下,外部时钟脉冲接到xtal1 端,即内部时钟发生器的输入端,xtal2 则悬空。由于外部时钟信号是通过一个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术

37、条件的要求。3.3其它外围器件在设计原理部分,我们已经讲述了晶振电路、复位电路、单片机与上位机的rs-232相连部分的相关原理,这里就不再详述。发光二极管是单片机控制的控制对象,实际应用中,它连接光电隔离器和驱动电路,可以作为电路开关。图3.2 发光二极管 图3.2 led显示屏 4.系统软件程序的简单设计4.1程序流程图 开始初始化读取命令子程序发控制命令 图4.1 程序流程图4.2程序清单基于at80c52单片机与上位机通信系统程序清单:rxbuffstart equ 040h ;接受队列首址(170字节)xbuffstart equ 050h ;发送队列首址(170字节)rxbuffen

38、d equ 0f0h ;接收缓冲区队列末址cmdandlen equ 0080h ;命令字符最大长度 ;编程延时p15ms equ 0c9hp1us equ 0fehp50us equ 0d1h ;控制键backspace equ 00b0h ;退后删除键;内部寄存器定义t2con equ 0c8h ;t2控制寄存器t2mod equ 0c9htl2 equ 0cch ;t2计时寄存器低字节th2 equ 0cdh ;t2计时寄存器高字节tr2 equ 0cah ;t2启动位rcap2l equ 0cah ;t2计数重载寄存器低字节rcap2h equ 0cbh ;t2计时重载寄存器高字节ch

39、pcon equ 0bfh ;在系统编程控制寄存器chpenr equ 0f6h ;编程状态下mtp rom的控制 ;控制标志位定义txokflag equ 04h ;发送ok标记cmdspaceflag equ 06h ;命令删除ok标记rxcmdokflag equ 07h ;命令接受ok标记 ;全局变量定义 ;串口rxbufftail equ 3bh ;接受缓冲区尾指针rxbuffhead equ 3ah ;接受缓冲区头指针rxbufflen equ 39h ;命令长度计数blkchk equ 35horg 0000hljmp startorg 0030h ;中断入口表retiorg 0

40、0b0hretiorg 0013hretiorg 001bhretiorg 0023hljmp s_intorg 002bhretiorg 00b0h ;在线编程控制startab: db online operation system,00dh ,00ahdb input?to help, 0ffhfrqutab:db 00dh,0)38400 1)19200 2)9066 3)4800 4)exit input:,0ffhb_tab:db 0f6h,0ech,0d9h,0b2h,0ffh;12.0000mhz设置 ;功能控制cmdtab:db ?,00dh,00ah,0ffh,0ffh,0

41、ffh,0ffhdb 0p5,00dh,00ah,0ffh,0ffh,0ffhdb 0p0,00dh,00ah,0ffh,0ffh,0ffhdb 0p1,00dh,00ah,0ffh,0ffh,0ffhdb 0p2,00dh,00ah,0ffh,0ffh,0ffhdb 0p3,00dh,00ah,0ffh,0ffh,0ffhdb setb,00dh,00ah,0ffh,0ffhdb aprom,00dh,00ah,0ffhdb 0ffh,0ffh,0ffh,0ffhhlptab: db 00dh,00ahdb 在线帮助命令,00dh,00ahdb *,00dh,00ahdb *? online

42、 help camand,00dh,00ahdb * setb set mcu baud rate *0p2 opreation2*,00dh, 00ahdb op1 operation * 1 op3 operation 3*,00dh,00ahdb * aprom in aprom* op4 operation 4*,00ahdb *,0ffh,0ffhrommarktab:db 00dh,00ah,pass:,0ffhcmderror:db 00dh,00ah,bad cmdand,0ffhwarntab: db 00dh,00ah,are you sure(y/n),0ffhinput

43、tab: db 00dh,00ah, input:,0ffhinputerror: db 00dh,00ah,error! input:,0ffh ;初始化程序start: mov r0,#0f0h;把01到f0清零clr aclram: mov r0,adjnz r0,clrammov p0,#0ffh;p0p3置1mov p1,#0ffhmov p2,#0ffhmov p3,#0ffhmov dpl, #00hmov dph,#00h;dptr清零mov psw,#00h;标志寄存器清零mov sp,#f1h;设置堆栈指针mov scon,#50hmov tmod,#11hmov th1,

44、00dbhmov tl1,#0ffhmov a,#01hlcall b_setsetb essetb et0setb et1mov ip,#00hsetb tr1setb tr2setb renclr ticlr risetb eamov rxbuffhead,#rxbuffstartmov rxbufftail,#rxbuffstartmov dptr,#startablcall dis_funmov dptr,#rommarktablcall cmd_getmain: lcall cmd_get nop cpl p2.0 ljmp main nop nop nop ljmp startcm

45、d_get: lcall rg_cmd mov a,rxbufftail xrl a,#rxbuffstart jz rett jnb rxcmdokflag,rettmov a,rxbufflenclr csubb a,#cmdandlenjnc cmd_gerrorclr amov r4,amov r5,#rxbuffstartmov dptr,#cmdtabcmd_s: mov a,r4movc a,a+dptrinc r4mov r6,amov a,r4jnc cmd_outcmd_out: mov a,r5inc r5mov r0,amov a,r0mov r7,amov a,r6x

46、rl a,#0ffhjz cmd_sendmov a,r7xrl a,r6jz cmd_smov a,r6add a,#20hxrl a,r7jz cmd_smov r5,#rxbuffstartmov a,r4mov b,#cmdandlendiv abmov b,#cmdandleninc amul abmov r4,aljmp cmd_scmd_send: clr amov rxbufftail, #rxbuffstartclr rxcmdokflagmov a,r4mov b,#cmdandlendiv abmov b,arl aadd a,bmov dptr, #cmd_tabjmp

47、 a+dptrrett: retcmd_gerror: mov dptr,#cmderrorlcall dis_funclr amov rxbufflen,amov rxbufftail,#rxbuffstartclr rxcmdokflagljmp dispromretcmd_tab: ljmp hlpljmp disprom ljmp fun_5ljmp fun_0ljmp fun_1ljmp fun_2ljmp fun_3ljmp fun_4ljmp fun_setljmp fun_apromfun_0:cpl p2.0lcall s_intiljmp dispromfun_1: cpl

48、 p2.1lcall s_intiljmp dispromfun_2:cpl p2.2lcall s_intiljmp dispromfun_3: cpl p2.3lcall s_intiljmp dispromfun_4: cpl p2.4lcall s_intiljmp dispromfun_5:cpl p2.5lcall s_intiljmp dispromhlp: mov dptr,#hlptablcall dis_funlcall s_intiljmp dispromfun_set: mov dptr,#frqutablcall dis_funlcall s_intiljmp dis

49、promset_loop: lcall readwaitmov r0,#rxbuffstartmov a,r0mov r7,adec r7set_loop1:inc r7mov rxbufftail,#rxbuffstartxrl a,r7jnz set_loop1mov a,r0subb a,#30hmov b,amov a,bxrl a,#04hjz set_errorclr csubb a,#05hjnc set_rlmov a,blcall b_setset_error: lcall s_intiljmp dispromset_rl: mov rxbufftail,#rxbuffsta

50、rtmov dptr,#inputtablcall dis_funmov dptr,#inputtablcall dis_funljmp set_loopfun_aprom: mov dptr,#warntablcall dis_funmov dptr,#inputtablcall dis_funaprom_loop: mov rxbufftail,#rxbuffstartlcall readwaitmov r4,#59hlcall c_cmpjz cmd_greadymov r4,#59hlcall c_cmpjz cmd_greadymov r4,#4ehlcall c_cmpjnz re

51、ady_looplcall s_intiljmp dispromcmd_gready: lcall enter_putlcall enter_putmov chpenr,#87hmov chpenr,#59hmov chpcon,#03hmov tcon,#00hmov t2con,#00hmov ip,#00hmov ie,#82hmov tl0,#0fbhmov th0,#0ffhmov tmod,#01hmov tcon,#10hmov pcon,#01hretready_loop: mov dptr,#inputerrorlcall dis_funljmp aprom_loopb_se

52、t: mov dptr,#b_tabclr tr2movc a,a+dptrmov rcap2l,aclr adec amov th2,amov rcap2h,asetb tr2rets_int: push pswpush accmov psw,#04hjbc ri,s_loopjnb ti,r_intclr tiljmp txinfos_loop: nopr_data: mov r0,rxbufftailmov a,sbufxrl a,#backspacejnz r_data1setb cmdspaceflagdec rxbuffleninc ajnz r_datab1clr cmdspaceflaginc rxbufflenr_datab1: dec rxbufftailmov a,rxbufftailinc axrl a,rxbuffstartjnz r_intclr cmdspaceflaginc rxbufftailljmp r_intr_data1:inc rxbuffleninc rxbufftailmov a,rxbufftailxrl a,#90hjz cmd_errormov a,sbufmov r0,axrl a,#0dhjz cmd_gflshr_data2: mov a,sbufclr txokflagm

温馨提示

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

评论

0/150

提交评论