基于89S51单片机的无线病房呼叫系统软件设计第1章单片机与 AT89S51芯片概述1.1单片机简介单片机全称为单片微型计算机(Single Chip Microcomputer),又称为微控制器(Micro controller Unit)或嵌入式控制器(Embedded Controller)。
它是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,通常片内都含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。
随着技术的发展,单片机片内集成的功能越来越强大,并朝着片上系统方向发展。
单片机有着体积小、功耗低、功能强、性能价格比高、易于推广应用等显著优点,在自动化装置、智能仪器仪表、过程控制、通信、家用电器等许多领域得到日益广泛的应用。
1.2AT89S51介绍如图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可为许多嵌入式控制应用系统提供性价比高的解决方案。
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等三种封装形式,以适应不同产品的需求。
(1)主要功能特性:✧ 兼容MCS-51指✧ 令系统✧ 4k可反复✧ 擦写(>1000次)ISP Flash ROM✧ 32个双向I/O口✧ 4.5-5.5V工作电压✧ 2个16位可编程定时/计数器✧ 时钟频率0-33MHz✧ 全双工UART串行中断口线✧ 128x8bit内部RAM✧ 2个外部中断源✧ 低功耗空闲和省电模式✧ 中断唤醒省电模式✧ 3级加密位✧ 看门狗(WDT)电路✧ 软件设置空闲和省电功能✧ 灵活的ISP字节和分页编程✧ 双数据寄存器指✧ 针(2)AT89S51各引脚功能介绍:引脚如图1-1所示,以下是各引脚的说明.VCC:AT89S51 电源正端输入,接+5V。
VSS:电源地端。
XTAL1:单芯片系统时钟的反相放大器输入端。
XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在 XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两个引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当引脚为低电平后,系统会调用外部的程序代码(存于外部EPROM中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用 8751 内部程序空间时,引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V 的烧录高压(Vpp)。
ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。
AT89S51可以利用这个引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。
平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。
此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。
AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K 的定址范围。
PORT0(P0.0~P0.7):端口0是一个8位宽的开路电极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。
其他三个I/O 端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当作I/O 用时可以推动8个LS的TTL负载。
如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
设计者必须外加一个锁存器将端口0送出的地址锁住成为A0~A7,再配合端口2所送出的A8~A15合成一个完整的16位地址总线,而定位地址到64K的外部存储器空间。
PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。
P2除了当作一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当作I/O来使用了。
PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地,若将端口1的输出设为高电平,便是由此端口来输入数据。
如果是使用8052或是8032的话,P1.0又当作定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发引脚。
PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动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更低!ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
兼容性方面:向下完全兼容51全部字系列产品。
比如8051、89C51等等早期MCS-51兼容产品。
也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。
从AT89C51升级到AT89S51 ,也是同理。
和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。
第2章系统硬件设计2.1 系统原理框图如图2-1所示为系统原理框图:图2-1 系统原理框图2.2硬件模块设计该系统主要包括无线发射模块,无线接收模块,指示灯模块设计,声音模块,显示模块五部分组成。
2.21 无线发射模块编码发射模块主要由PT2262编码IC和高频调制、功率放大电路组成,发射模块的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 指示灯模块利用发光二极管实现,发光二极管占用了四个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来实现,在程序中主要是用循环来实现给一个时钟信号,输入一个数据,当有按键按下时,数码管将显示出是几号床位上的病人呼叫,而且一直在显示,直到有护士发现。
图2-6为74HC164和数码管连接电路:图2-6 74HC164和数码管连接电路第 3 章系统软件设计3.1单片机程序设计的步骤单片机的程序设计通常包括根据任务绘制程序流程图编写程序及汇编等几个步骤1 绘制流程图所谓流程图就是用各种符号,图形,箭头把程序的流向及过程用图形表示出来,绘制流程图是单片机程序编写前最重要的工作,通常我们的程序就是根据流程图的指向采用适当的指令来编写的。