170907073谢欢欢--论文--基于protues的温湿度测量系统设计 - 图文 下载本文

淮阴师范学院毕业论文

3.4 单片机STC89C51模块

STC系列单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、SRAM、UART、SPI、A\\D、PWM等模块。该器件的基本功能与普通的51单片机完全兼容。

图13 89C51单片机的引脚功能说明

(1)VCC:电源电压 (2)GND:接地

(3)P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复位,在访问期间激活内部上拉电阻。

(4)P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTE逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。

与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P 1.0/T2)和输入(P 1.1/T2EX ),参见表2。

Flash编程和程序校验期间,P1接收低8位地址。

12

淮阴师范学院毕业论文

表2 P1.0和P1.1的第二功能 引 脚 号 功能特性 P1.0 T2(定时/计数器2外部计数脉冲输入),时钟输出 P1.1 T2EX(定时/计数2捕获/重装载触发和方向控制) (5) P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口输出P2锁存器的内容。

(6)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(ILL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表3所示。 (7)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

表3 P3口的第二功能

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行输入口) TXD(串行输出口) INT0(外中断0) INT1(外中断1) T0(定时/计数0) T1(定时/计数1) WR(外部数据存储器写选通) RD(外部数据存储器读选通) (8)EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH ) 。EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VCC 。

(9)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 (10)XTAL2:振荡器反相放大器的输出端。

13

淮阴师范学院毕业论文

(11)数据存储器:

89C51有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128。

字节的RAM和特殊功能寄存器的地址是相同的,但在物理上它们是分开的。 当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节。

RAM还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。 (12)中断:

89C51共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0, 1, 2)和串行口中断。

(13)时钟振荡器:

89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。

这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图13(a)图所示。

外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF士10pF,而如果使用陶瓷谐振器,建议选择40pF士l0pF。

用户也可以采用外部时钟。采用外部时钟的电路如图13(b)图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。

(a)内部振荡电路

(b)外部振荡电路

图14 振荡电路

14

淮阴师范学院毕业论文

4 系统软件设计

4.1 系统程序设计思想及流程图

系统初始化后, 温湿度部分:复位传感器, 读取温湿度数据, 进行处理, 当温度处于快速变化过程中时,系统不停的进行温度信号的采集,数据输入单片机,并在显示器上进行显示。

图15 程序流程图

读温湿度显示值显示温湿度值结束开始初始化启动温湿度测量判断显示通道4.2 系统主要程序

主程序: 主函数:

#include #include #include #include

BYTE code dis1[] = {\ \BYTE code dis2[] = {\

void DisplayInit() {

unsigned char i; lcd_pos(0); i=0;

while(dis1[i]!='\\0') {

lcd_wdat(dis1[i]); i++; }

lcd_pos(41); i=0;

15