基于89S51单片机的无线病房呼叫系统设计.doc

上传人:教**** 文档编号:93041005 上传时间:2023-06-22 格式:DOC 页数:39 大小:575KB
返回 下载 相关 举报
基于89S51单片机的无线病房呼叫系统设计.doc_第1页
第1页 / 共39页
基于89S51单片机的无线病房呼叫系统设计.doc_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《基于89S51单片机的无线病房呼叫系统设计.doc》由会员分享,可在线阅读,更多相关《基于89S51单片机的无线病房呼叫系统设计.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于89S51单片机的无线病房呼叫系统软件设计第1章 单片机与 AT89S51芯片概述1.1 单片机简介单片机全称为单片微型计算机(Single Chip Microcomputer),又称为微控制器(Micro controller Unit)或嵌入式控制器(Embedded Controller)。它是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,通常片内都含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。随着技术的发展,单片机片内集成的功能越来越强大,并朝着片上系统方向发展。 单片机有着体积小、功耗低、功能强、性能价格比高、易于

2、推广应用等显著优点,在自动化装置、智能仪器仪表、过程控制、通信、家用电器等许多领域得到日益广泛的应用。1.2 AT89S51介绍如图1-1为AT89S51引脚图图1-1 AT89S51引脚图AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统

3、提供性价比高的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三

4、种封装形式,以适应不同产品的需求。(1)主要功能特性:兼容MCS-51指令系统 4k可反复擦写(1000次)ISP Flash ROM32个双向I/O口4.5-5.5V工作电压2个16位可编程定时/计数器时钟频率0-33MHz全双工UART串行中断口线128x8bit内部RAM2个外部中断源低功耗空闲和省电模式中断唤醒省电模式3级加密位看门狗(WDT)电路软件设置空闲和省电功能灵活的ISP字节和分页编程双数据寄存器指针(2)AT89S51各引脚功能介绍:引脚如图1-1所示,以下是各引脚的说明.VCC:AT89S51 电源正端输入,接+5V。 VSS:电源地端。XTAL1:单芯片系统时钟的反相放

5、大器输入端。XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两个引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就

6、是说当引脚为低电平后,系统会调用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S51可以利用这个引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。平时在程序执行时A

7、LE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路电极(Open Drain)双向输出入端口

8、,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当作I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一个锁存器将端口0送出的地址锁住成为A0A7,再配合端口2所送出的A8A15合成一个完整的16位地址总线,而定位地址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出

9、设为高电平时,此端口便能当成输入端口来使用。P2除了当作一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当作I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地,若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当作定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发引脚。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓

10、冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。(3)AT89S51与AT89C51比较:89S51相对于89C51而言:新增加了很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!IS

11、P在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89

12、C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。从AT89C51升级到AT89S51 ,也是同理。和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。第2章 系统硬件设计2.1 系统原理框图如图2-1所示为系统原理框图:图2-1 系统原理框图2.2硬件模块设计该系统主要包括无线发射模块,无线接收模块,指示灯模块设计,声音模块,显示模块五部分组成。2.21 无线发射模块编码发射模块主要由PT2262编码IC和高频调制、功率放大电路组成,发射

13、模块的A、B、C、D四个按键分别代表不同的病床号,按下代表病人呼救。如图2-1为无线发射模块电路图。图2-2 无线发射模块2.22无线接受模块解码接收模块包括接收头和解码芯片PT2272两部分组成。接收头将收到的信号输入PT2272的14脚(DIN),PT2272再将收到的信号解码。四个数据输出口接到四个I/O口,分别接在AT89S51单片机最小系统P1口的P1.4-P1.7引脚上。通过不断的扫描 I/O口是高电平还是低电平来判断是否有病人呼叫,是通过循环实现的。同时还需要考虑到一些问题,例如,当有多个病人同时呼叫时,能使互不干扰。如图2-3为无线接收模块电路图:图2-3 无线接收模块2.23

14、 指示灯模块利用发光二极管实现,发光二极管占用了四个I/O口,分别接在P2口的P3.4-P3.7引上.指示灯连接如图2-4所示:图2-4 指示灯连接电路2.23 声音模块利用蜂鸣器来实现,蜂鸣器报警占用了四个I/O口,分别接在P2口的P2.4-P2.7引脚上蜂鸣器连接如图2-5所示:图2-5 蜂鸣器连接电路2.24 LED显示模块主要由74HC164和数码管组成的,通过串口输入和串口输出把号码显示到数码管上。主要实现顺序移动,有串行输入口和串行输出口,分别接在AT89S51芯片的P1.0,P2.0 P1.1,P2.1 P1.2,P2.2 P1.3,P2.3)通过74HC164来实现,在程序中主

15、要是用循环来实现给一个时钟信号,输入一个数据,当有按键按下时,数码管将显示出是几号床位上的病人呼叫,而且一直在显示,直到有护士发现。图2-6为74HC164和数码管连接电路:图2-6 74HC164和数码管连接电路第 3章 系统软件设计3.1单片机程序设计的步骤单片机的程序设计通常包括根据任务绘制程序流程图 编写程序及汇编等几个步骤1 绘制流程图所谓流程图就是用各种符号,图形,箭头把程序的流向及过程用图形表示出来,绘制流程图是单片机程序编写前最重要的工作,通常我们的程序就是根据流程图的指向采用适当的指令来编写的。绘制流程图时,首先画出简单的功能流程图粗框图再对功能流程图进行扩充和具体化,即对存

16、储器,标志位等单元做具体的分配和说明,把功能图上的每一个粗框图转化为具体的存储器或地址单元从而绘制出详细的程序流程图,即细框图。在单片机的编程过程中绘制流程图能看清楚程序执行的步骤以及程序的流向。事实上,程序的编写就是根据流程图的功能完成的在实际的程序设计中 根据框图采用适当的指令编写出实现流程图的源程序就是我们编写程序的最后工作。2编写程序和汇编程序编写完之后,我们要把它汇编成机器语言,这种机器语言就是十六进制文件,后缀名为*.HEX 文件。以前还要把它转换成二进制文件,后缀名为*.BIN 文件,不过现在的编程器都能直接读入十六进制文件就不需要转换了最后用编程器把程序写入单片机。单片机程序设

17、计的方法:要想搞清楚程序设计的方法,我们首先要知道单片机到底有哪几类程序,单片机的程序分为顺序结构,分支结构和循环结构。在单片机的程序中既有复杂的程序也有简单的程序,但不论哪种程序,它们都是由一个个基本的程序结构组成的,这些基本结构有顺序结构,分支结构和循环结构。1顺序结构程序的设计顺序结构的程序一般用来处理比较简单的算术或逻辑问题,它的执行过程是按照程序存储器 PC自动加 1 的顺序执行的,主要用数据传递类指令和数据运算类指令来实现。2分支结构程序的设计所谓分支结构就是利用条件转移指令使程序执行某一指令后,根据所给的条件是否满足来改变 程序执行的顺序,也就是本条指令执行完后并不是象顺序结构那

18、样执行下一条指令,而是看本条指令所给的条件是否满足,如果满足条件就跳转到其他的指令,如果不满足就顺序执行。当然也可以是满足条件顺序执行而不满足条件跳转执行。在 51 系列单片机中,可以直接用于分支程序的指令有JB JNB JC JNC JZ JNZ CJNE JBC 等这几条,它们可以完成诸如正负判断大小判断和溢出判断等等。 在分支结构的指令设计中 大家必须注意,执行一条判断指令只可以形成两路分支,如果要形成多路分支就必须进行多次判断 也就是多条指令连续判断。3循环结构程序的设计循环程序是最常用的程序结构形式,在单片机的程序设计中有时要碰到一段程序需要重复执行 多次的情况,此时就要用到循环结构

19、程序。循环初始化部分主要用来设置循环的初始值,包括预值数,计数器和数据指针的初值。循环处理部分循环处理部分是程序的主体部分也称为程序体,通过它可以完成程序处理的任务。循环控制部分循环控制部分可以控制程序循环的次数并修改预值数或计数器和指针的值,检查该循环是否执 行了足够的次数,如果到了足够的次数就采用条件转移指令或判断指令来控制循环的结束。循环结束部分循环结束后必须返回 一般用 RET 或 RETI 指令,在循环程序设计中,循环控制部分是程序设计的关键环节。常用的循环控制方式有计数器控制和条件控制两种,计数器控制就是把要循环的次数即预值数放入计数器中,程序每循环一次计数器的值就减 1 ,一直到

20、计数器的内容为零时,循环结束 一般用 DJNZ 指令而条件控制方式常预先不知道要循环的次数。只知道循环的有关条件此时就可以根据给定的条件标志位来判断程序是否继续 ,一 般参照分支结构方法中的条件来判别指令并执行。子程序的设计方法调用子程序的程序我们则叫它主程序LOOP 的程序段在主程序执行时, 每当要用到子程序时 我们就用 LCALL 指令来调用子程序,子程序执行完之后,必须返回主程序返回就用 RET 指令。3.2单片机汇编语言介绍程序设计语言可以分为:符号语言,机器语言,汇编语言,高级语言。符号语言己经具有很多优点,但符号语言中的每一个符号(这里称作助记符)可以是用户根据辨认或者记忆的需要自

21、己来决定的。这样,通用性不是很强。就是说,按某一个人的想法编写的符号语言程序,另外一个人是无法看懂的。汇编语言克服了上述的缺点,它是在符号语言的基础上发展起来的。它是针对一类(甚至几类)计算机,抽象出来的一种符号语言并把这些符号加以统一规定,使得使用同类计算机的人都了解这些符号的意义,这样,使得用汇编语言编写的程序可以在这一类型的任何一台计算机上使用。这就有了极大的灵活性,当然不同类型的计算机的汇编语言也不同。它们都必须由生产厂家提供的汇编语言来编写。另外汇编语言还增加了宏指令的功能。让我们比较一下汇编语言和高级语言的特点。首先,汇编语言与处理器关系密切。每种处理器都有自己的指令系统,相应的汇

22、编语言也各自不同。因而汇编语言程序的通用性、可移植性较差。而高级语言与具体计算机无关,高级语言程序可以在多种计算机上编译启执行。其次,汇编语言编程涉及寄存器、内存等硬件细节,程序繁琐,调试也比较困难而高级语言采用类似自然语言的语法,容易被掌握和使用,也不必关心诸如标志、堆栈等。但是,汇编语言本质上就是机器语言,它可以直接有效地控制计算机硬件,因而可以产生运行速度快、指令序列短的高效率目标程序。而高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序庞大、程序难以优化、运行速度慢.总的来说,汇编语言的主要优点就是可以直接控制计算机硬件,可以编写在时间和空间两方面更有效的程序。这些优点使得汇

23、编语言在程序设计中占有重要的地位。是不可取代的。但汇编语言的缺点也是明显的,它与处理器密切相关,要求程序员熟悉计算机硬件系统,考虑许多细节问题,所以程序繁琐,调试、维护、交流和移植困难。因此,有时可以采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题。汇编语言生要应用场合有以下几种:l.程序要具有较短的运行时问,或者只能占用较小的存储客量。例如操作系统的核心 程序段,实时控制系统的软件等。2.程序与计算机硬件密切相关,程序要直接控制硬件。例如to接口电路的初始化程序段,外部设备的底层驱动程序等63.大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动态链

24、接库等。4.没有适合的高级语言的时候。例如开发最新的处理器程序时。3.3 系统软件框图及程序设计图3-1 系统软件框图通过不断地循环扫描按键,检查是否有病人呼叫。3.31 初始化程序主程序初始化,并使数码管全显示0 。BEGIN:MOV TMOD,#10H;设置定时器为定时器1方式1MOV TH1,#3CH;定时50msMOV TL1,#0B0HSETB ET1;开定时器1中断SETB TR1;定时开始CLR BC1CLR BC2CLR BC3CLR BC4CLR FLAG1;清除4个标志位CLR FLAG2CLR FLAG3CLR FLAG4MOV DPTR,#TAB;送表首地址MOV A,

25、#0FCH; 0串口代码MOV R1,#9;串口得送9次A1:CLR TXD3;下面为串口送数过程RRC A;带进位右移SETB TXD3MOV RXD3,CLCALL YANSHI;833US小段延时DJNZ R1,A1MOV A,#0FCHMOV R1,#9A2:CLR TXD4RRC ASETB TXD4MOV RXD4,CLCALL YANSHI;833USDJNZ R1,A2MOV A,#0FCHMOV R1,#9A3:CLR TXD1RRC ASETB TXD1MOV RXD1,CLCALL YANSHI;833USDJNZ R1,A3MOV A,#0FCHMOV R1,#9A4:

26、CLR TXD2RRC ASETB TXD2MOV RXD2,CLCALL YANSHI;833USDJNZ R1,A43.32 键扫描程序设计通过不断的扫描按键所接的 I/O口是高电平还是低电平来判断是否有病人呼叫,是通过循环实现的。同时还需要考虑到一些问题,例如,当有多个病人同时呼叫时,怎样能使互不干扰,这时是通过一个标志位来控制的。3.33 指示灯控制程序设计当有病人按键呼叫时,指示灯闪烁报警,用一条指令CLR3.4即可实现,并用延时程序控制灯的闪烁时间。3.34 报警程序设计如果有病人呼叫,即有按键按下,那么相应的蜂鸣器所接的I/O口也设置为高电平,而且每一个蜂鸣器发出的声音是不一样的

27、。在程序中只用一条语句即可实现:CLR P2.4,因为在本电路设计时,每个引脚都是低电平有效的,所以在清零时蜂鸣器才能发出声音。3.35 显示程序设计当有按键按下时,就会调用显示子程序,在电路图中使用的是:串行方式,假如现在是2号床位上的病人呼叫,则在数码管上应显示“2”,串行方式中,数码管上显示的数字是先成二进制数,再一位一位地输进去的,然后才显示数字。这里是在模拟串口,因为该单片机中只有一个串口,而这里要用多个串口。当这段程序执行完以后,再进入循环。十进制数与相应二进制数的转换表如表3-1所示。表3-1 转换表显示数值dop g f e d c b a 驱动代码(16进制)01 1 1 1

28、 1 1 0 00fcH1 0 1 1 0 0 0 0 060H2 1 1 0 1 1 0 1 00dAH3 1 1 1 1 0 0 1 00f2H4 0 1 1 0 0 1 1 066H5 1 0 1 1 0 1 1 0B6H显示子程序如下所示:START:CLR C;病床数码管显示MOV DPTR,#TABMOV A,R0MOVC A,A+DPTRMOV R1,#9S1: CJNE R0,#1,S2SJMP SS1S2: CJNE R0,#2,S3SJMP SS2S3: CJNE R0,#3,S4SJMP SS3S4: CJNE R0,#4,S1LJMP SS4FH1: LJMP BEGI

29、NSS1:LCALL YS10MSJB P1.4,FH1SSS1:CLR TXD3RRC ASETB TXD3MOV RXD3,CLCALL YANSHI;833USDJNZ R1,SSS1CLR P2.4CLR P3.4WS1:MOV A,R7ADD A,#200MOV 31H,ASETB BC1SETB FLAG1LJMP TT2FH2:LJMP BEGINSS2:LCALL YS10MSJB P1.5,FH2SSS2:CLR TXD4RRC ASETB TXD4MOV RXD4,CLCALL YANSHI;833USDJNZ R1,SSS2CLR P2.5CLR P3.5WS2:MOV

30、A,R7ADD A,#200MOV 32H,ASETB BC2SETB FLAG2LJMP TT3FH3:LJMP BEGINSS3:LCALL YS10MSJB P1.6,FH3SSS3:CLR TXD1RRC ASETB TXD1MOV RXD1,CLCALL YANSHI;833USDJNZ R1,SSS3CLR P2.6CLR P3.6WS3:MOV A,R7ADD A,#200MOV 33H,ASETB BC3SETB FLAG3LJMP TT4FH4:LJMP BEGINSS4:LCALL YS10MSJB P1.7,FH4SSS4:CLR TXD2RRC ASETB TXD2MO

31、V RXD2,CLCALL YANSHI;833USDJNZ R1,SSS4CLR P2.7CLR P3.7WS4:MOV A,R7ADD A,#200MOV 34H,ASETB BC4SETB FLAG4LJMP TT1TTI1:LJMP TTT13.36 延时设定中断允许控制寄存器中断的允许或禁止是由片内可进行位(什么是位,大家可别到现在还说不知道哦)寻址的 8位中断允许寄存器 IE 来控制的,单片机中断系统中有两种不同类型的中断:一种称为非屏蔽中断;另一种称为屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断申请,CPU 将根据自然优先级予以响应。这里主要讲屏蔽中断,对于屏

32、蔽中断,我们可以通过软件的方法来予以控制(允许中断我们把它称为中断开放,不允许中断我们把它称之为中断屏蔽),如何操作,说穿了其实很简单,就是通过对 IE 的相应位的置“1”或请“0”来允许或禁止某个中断,IE 地址( A8H )可位寻址EA : 总控位, EA=0 时关所有中断。 EA=1 时所有中断请求均被开放。ES : 串行口, ES=1 时开, ES=0 时关串行中断ET1 、 ET0 定时计数 1 时开 0 时关 EX1 、 EX0 外部中断 1 时开 0 时关。 方式寄存器TMOD方式寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址的寄存器,字节地址为89H。其格式如图3

33、-1:图3-1 寄存器TMOD格式GATE门控制。 GATE=1时,由外部中断引脚INT0、INT1和控制寄存器的TR0,TR1来启动定时器。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1。 GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。 C/T功能选择位 置位时选择计数功能,清零时选择定时功能。 M0、M1方式选择功能 由于有2位,因此有4种工作方式M1M0 工作方式 计数器模式 TMOD(设置定时器模式) 0 0 方式0 13位计数器 TMOD=0x00 0 1 方式1 16位计数器 TMOD=0x01 1 0

34、方式2 自动重装8位计数器 TMOD=0x02 1 1 方式3 T0分为2个8位计数器,T1为波特率发生器 TMOD=0x03定时器/计数器控制寄存器TCON在特殊功能寄存器中,字节地址为88H 格式如图3-2,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。图3-2 TCON在特殊功能寄存器格式TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器计数器;IEl,ITl,IE0和IT0位用于中断系统。 各位定义如下: TF1:定时器1溢出标志位。当字时器1计满溢出时,由硬件使TF1置

35、“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志。 IT1:外部中断1触发方式选择位。 IE0:外部中断0请求标志。 IT0:外部中断0触发方式选择位。 TCON中低4位与中断有关,我们将在下节课讲中断时再给予讲解。由于TCON是可以位寻址的,因而如果

36、只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置方式定)。 定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下: 1、确定工作方式(即对TMOD赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中

37、断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式:TC=M-C式中,M为计数器模值,该值和计数器工作方式有关。该系统中,选用的是方式1,计数器的初值为:15536,溢出是为:65536,而晶振为:12HZ,根据公式计算, 计算公式 T=(MTC)T计数 或T计数T计数是单片机时钟周期的12倍,为定时初值,单片机的主脉冲频率

38、为12MHZ,可得定时时间为:50ms。 相应的程序代码为:(1)BEGIN:MOV TMOD,#10H ;定时器/计数器方式控制 MOV TH1,#3CH MOV TL1,#0B0HSETB ET1 ;将所指位置1 SETB TR1;ET1:定时器1(T1)的溢出中断允许位;TR1:T1的运行控制位,置1表示启动(2)中断服务程序:DSD:MOV TH1, #3CH MOV TL1, #0B0HINC R7 ;R7的值给了A,也是为了保证报警时间的准确性 CLR TF0 ;定时器0的溢出中断标志位 RETIMCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为12MHZ

39、。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12M)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。具体的延时程序分析:(1)YANSHI:MOV R5,#210 ;延时420 us子程序 DJNZ R5, $ RET(2)YS10MS:MOV R3,#20 ;延时10毫秒子程序SGL: MOV R4, #250 DJNZ R4, $ DJNZ R3, SGL RET每条指令的执行时间为:2us。YANSHI子程序中,210*2=420,所以延时为420 us。在YS10MS子程序中,是个双重循环,循环次数为:

40、20*250=5000,所以延时时间为:5000*2=10000us,约是:10MS。由于单片机的运行速度很快其他的指令执行时间可以忽略不计。第3章 系统测试单片机应用系统的调试包括硬件调试和软件调试,下面分2部分进行讨论4.1 单片机应用系统的硬件调试单片机应用系统的硬件调试主要是排查印刷电路板的问题和连接上的一些问题。由干硬件电路变化很多,不同类型的电路可能出现的问题也不一样,所以没有固定的程序可以投用,所以,在该系统中,首先通过了仔细地推敲系统原理,确认无误;其次对照设计图纸查印制电路板,看是否有粘接等工艺现象;最后,检查外围连接是否有误,通过这几个方面的反复调试,可确保电路板的无误性。

41、在本系统的硬件调试过程中,出现了电压不稳定而导致程序无法写入的情况,使电压稳定的方法是改用新的电池,或者是再次设计电源方案,在这里是用电源接通教学实验板,然后再把教学实验板与本系统相连接,这样,就可以得到稳定的电压了。4.2软件调试4.21 LCA51软件简介LCA51软件是集编辑、编译/连接、加载、调试等为一体的集成开发环境(IDE)。用可以在同一界面环境中完成所有任务。主界面大致如图4-1所示。图4-1 LCA51软件主界面编辑窗口LCA51提供一个多窗口的源文件编辑器。该编辑器不受文件大小的限制,允许无限的撤销/重复功能。编辑器全面支持汇编、C51和PL/M51语言的语法加亮着色。用户可

42、以自定义各种类型文本的颜色和不同语言的关键词。相应的关键词文件名为asm.kwd、c51.kwd、plm51.kwd。这些文件都保存在LCA51安装目录下。编辑器还支持书签,拷贝、剪切、粘贴,全程查找、替换,拖动编辑等功能。工作区窗口工作区窗口有两个页面窗口。工程页面窗口以树型结构显示工程中的项目文件等内容。没有打开工程时,该页面窗口为空。资源管理器页面窗口和Win9x中的资源管理器中的左面的窗口相同。输出窗口输出窗口显示用户编译连接过程中的输出信息,用户双击某条编译出错信息提示即可直接定位到源文件的对应行。观察窗口观察窗口中显示调试过程中长期观察的变量项。用户可以添加、删除、修改、刷新观察项

43、。相应命令在右键菜单中。数据窗口数据窗口中成批显示实验机相应存储区域的整块数据内容。用户可以察看,修改相应地址单元的数据。相应命令在右键菜单中。对话窗口用户通过对话窗口直接用监控命令和实验机对话。注意:在调试状态,当对话窗口变为不活动窗口时,要使实验机仍在监控符提示状态下,否则,PC机会和实验机失去通讯。菜单介绍LCA51有许多菜单项,主菜单包含了绝大多数操作命令。菜单比较容易掌握,用户可以通过阅读菜单项,直接掌握每个菜单命令的具体功能。LCA51也可以使用热键和工具栏图标快速完成常用菜单项的功能。在LCA51主菜单栏上有11个主菜单,它们分别如下:文件(F) 和文件有关的操作,如打开、关闭、

44、打印等文件操作。编辑(E) 包括拷贝、剪切、粘贴、书签、查找和替换等编辑命令。查看(V) 改变LCA51的工作界面显示。包括工具栏和有关窗口的显示等。工程(P) 和工程有关的操作,如打开、关闭、保存、设置等工程操作。编译(C) 包括编译和连接等编译操作。调试(B) 包括加载目标文件、单步、断点、全速执行等调试命令。观察(O) 包括添加观察变量或对观察变量进行修改等命令。设置(S) 包括AEDK实验机型号、通讯口、单文件编译器/连接器、环境参数等的设置。工具(T) 包含加载和上传程序,自定义用户界面等命令。窗口(W) 选择或改变当前活动窗口及窗口排列方式。帮助(A) 显示相应帮助文文件和软件版本

45、信息。4.22 联机在线调试1启动运行环境打开试验机电源,双击桌面上的LCA51软件的图标,运行LCA51软件。第一次启动LCA51需设置通讯端口。用户选着“设置通讯口”菜单项,在弹出的对话框中,选择相应的通信口和通讯波特率。做本实验时,波特率应设9600。点击测试串口按钮,检查通讯口是否可用。退出LCA51时,会自动保存用户最后一次的设置。2实验项目并编译选取所要做的实验项目的文件(*.asm),用户选择“编译编译当前文件“菜单项,将编译当前活动窗口中的源文件,编译结果的信息显示在输出窗口中。用户可以根据输出窗口中错误信息直接定位到源文件相应位置。编译器将生成源文件的目标代码,对于单汇编文件,编译产生的目标代码可以直接加载调试,对于高级语言的源文件,编译结束还要连接才能产生可加载的目标代码。3调试LCA51是一个集成开发环境,调试和编辑、编译都在同一界面下完成。调试时的界面如图4-2所示。图4-2 调试时的界面在编辑状态时,界面右下角的当前状态显示为“编辑”,在调试状态时,仿真机没有运行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁