基于单片机数据采集系统设计说明文档格式.docx
- 文档编号:4514551
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:23
- 大小:394.28KB
基于单片机数据采集系统设计说明文档格式.docx
《基于单片机数据采集系统设计说明文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机数据采集系统设计说明文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
电阻
导线
1.4.2软件组成
软件有:
keil软件、windows操作系统和串口调试助手等软件组成。
第二章数据采集系统主要元件介绍
2.1AT89S52单片机介绍
2.1.1AT89S52单片机的特点与引脚
AT89C52是一个低电压,高性能CMOS8位单片机,片含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89S52具有以下标准功能:
与MCS51兼容;
8K支持在线编程(ISP)的FLASH结构程序存储器,1000次擦写寿命;
工作电压为4.0V~5.5V;
全静态工作:
0~24MHz;
3级程序安全加密保护;
256*8位部RAM;
32个可编程I/O端口;
3个16位定时器/计数器;
8个中断源;
一个全双工异步串口;
支持低功耗与掉电模式;
支持中断从掉电模式唤醒;
置看门狗;
双数据指针;
工业级产品,温度围(-40°
C到85°
C),PU为无铅环保产品。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
其PDIP图如右图所示:
2.1.2AT89S52芯片的引脚介绍
VCC:
电源。
GND:
地。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用做高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有部上拉电阻。
在Flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
在程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TT逻辑电平。
当对P1端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。
当作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作为定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如表1-1所示。
在Flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TT逻辑电平。
对P2端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问
表1-1P1口部分管脚的第二功能
外部程序存储器或用16位地址读取外部数据存储器(如执行MOVXDPTR)时,P2口送出高8位地址。
在这种应用中,P2口使用很强的部上拉发送1。
在使用8位地址(如MOVXRI)访问外部数据存储器时,P2口输出P2锁存器的容。
在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TT逻辑电平。
对P3端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口也作为AT89S52特殊功能(第二功能)使用,如表1-2所示。
在Flash编程和校验时,P3口也接收一些控制信号。
表1-2P3口部分管脚的第二功能
RST:
复位输入。
在晶振工作时,RST脚持续两个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
在DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)在访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(PROG)也用做编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行部程序指令,EA应该接VCC。
在Flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.2DS18B20数字温度传感器介绍
2.2.1DS18B20概述
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
2.2.2DS18B20产品概述
(1).只要求一个端口即可实现通信。
(2).在DS18B20中的每个器件上都有独一无二的序列号。
(3).实际应用中不需要外部任何元器件即可实现测温。
(4).测量温度围在-55。
C到+125。
C之间。
(5).数字温度计的分辨率用户可以从9位到12位选择。
(6).部有温度上、下限告警设置。
2.2.3DS18B20引脚图与引脚功能介绍
TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。
(底视图)图1
表1DS18B20详细引脚功能描述
2.2.4.DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
2.2.5DS18B20的复位时序
2.2.6DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
2.2.7DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之就得释放单总线。
2.3显示模块
显示系统是单片机不可或缺的环节,它为单片机提供了直观的观察环境。
单片机显示模块应该能够做到快速简练,并且有语义明确,这对使用单片机具有很关键的作用。
本实验系统涉与到两种显示方式,液晶显示和LED数码管显示,这两种显示方法在生活中被广泛的应用,学习这两种显示方法对于单片机系统的开发与设计有很大的意义。
2.3.1LCD概述
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;
其显示分辨率为128×
64,置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×
4行16×
16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于一样点阵的图形液晶模块。
2.3.2基本特性
低电源电压(VDD:
+3.0--+5.5V)
显示分辨率:
128×
64点
置汉字字库,提供8192个16×
16点阵汉字(简繁体可选)
置128个16×
8点阵字符
2MHZ时钟频率
显示方式:
STN、半透、正显
驱动方式:
1/32DUTY,1/5BIAS
视角方向:
6点
背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
通讯方式:
串行、并口可选
置DC-DC转换电路,无需外加负压
无需片选信号,简化软件设计
工作温度:
0℃-+55℃,存储温度:
-20℃-+60℃
2.3.3引脚定义
LCD12864模块的20个引脚定义如下:
1.Vss
逻辑电源地
2.VDD 逻辑电源正5v
3.V0 LCD驱动电压
4.RS 数据/指令选择:
高电平为数据,低电平为指令
5.R/W 读/写选择:
高电平为读数据,低电平为写数据
6.E 读写使能,高电平有效,下降沿锁定数据
7.DB0 数据输入输出引脚
8.DB1 数据输入输出引脚
9.DB2 数据输入输出引脚
10.DB3 数据输入输出引脚
11.DB4 数据输入输出引脚
12.DB5 数据输入输出引脚
13.DB6 数据输入输出引脚
14.DB7 数据输入输出引脚
15.CS1 片选择号,低电平时选择前64列
16.CS2 片选择号,低电平时选择后64列
17.RET 复位信号,低电平有效。
18.VEE 输出-15v电源给V0提供驱动电源
19.A 背光电源LED正极
20.K 背光电源LED负极
2.3.4基本电路图与时序图
基本连接电路图如下图3.6
图3.6
串行连接时序图
图3.7
第一字节:
作用是控制数据:
其格式是:
11111ABC。
其中:
A为数据传送方向控制:
H表示数据从LCD到MCU,L表示数据从MCU到LCD;
B为数据类型选择:
H表示数据是显示数据。
L表示数据是控制指令;
C固定为0
第二字节:
表示数据的高4位,格式是DDDD0000
第三字节:
表示数据的低4位,格式是0000DDDD
[第三章数据采集系统硬件设计
3.1数据采集与控制模块
DS18B20温度传感器与单片机的接口电路设计
DS18B20与单片机之间一根导线进行数据传输,不需要对数据进行转换,接线简单。
DS18B20的温度分辨率为0.0625,所以对温度值可以进行准确的温度转换。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,单片机端口接单线总线,为保证在有效的DS18B20时钟周期提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
3.2数据显示模块
AT89S52单片机与液晶显示LCD1602连接
3.3数据传输模块
3.4报警系统设计模块
6.2LED显示程序设计31
6.3报警系统的程序设计32
#include<
reg52.h>
intrins.h>
stdlib.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineufloatunsignedfloat
sbitEN=P1^3;
//1602使能引脚
sbitRW=P1^4;
//1602读写引脚
sbitRS=P1^5;
//1602数据/命令选择引脚
sbitbaojing=P3^2;
sbitDQ=P1^6;
floattemperature;
uintcount
voidDelay(intj)//1延时函数100um65000
{uchari;
for(;
j>
0;
j--)
{
for(i=0;
i<
27;
i++);
}
voidDdelay(uinti)
{
while(i--);
}
//初始化函数
voidInit_DS18B20(void)
ucharx=0;
DQ=1;
//DQ复位
Ddelay(8);
//稍做延时
DQ=0;
//单片机将DQ拉低
Ddelay(80);
//精确延时大于480us
//拉高总线
Ddelay(14);
x=DQ;
//稍做延时后如果x=0则初始化成功x=1则初始化失败
Ddelay(20);
//读一个字节
ucharReadOneChar(void)
uchari=0;
uchardat=0;
for(i=8;
i>
i--)
//给脉冲信号
dat>
>
=1;
if(DQ)
dat|=0x80;
Ddelay(4);
return(dat);
//写一个字节
voidWriteOneChar(unsignedchardat)
i>
i--)
DQ=dat&
0x01;
Ddelay(5);
//读取温度
floatReadTemperature()
{uchardisp[6];
floattemperature;
uchartb=0,ta=0;
Init_DS18B20();
WriteOneChar(0xCC);
//跳过读序号列号的操作
WriteOneChar(0x44);
//启动温度转换
//跳过读序号列号的操作
WriteOneChar(0xBE);
//读取温度寄存器等(共可读9个寄存器)前两个就是温度
ta=ReadOneChar();
//读取温度值低位
tb=ReadOneChar();
//读取温度值高位
disp[0]=((tb<
<
4)|(ta>
4))/100+'
0'
;
//百位
disp[1]=(((tb<
4))%100)/10+'
//十位
disp[2]=(((tb<
4))%100)%10+'
//个位
disp[3]='
.'
disp[4]=((ta&
0x0f)*625)/1000+'
//十分位
temperature=(disp[0]-'
)*100+(disp[1]-'
)*10+(disp[2]-'
)+(disp[4]-'
)*0.1;
return(temperature);
/******************************************************/
ucharBusy_check()//判断忙函数LCD1602
{ucharLCD_Status;
P2=0xff;
RS=0;
//0输入指令,1输入数据
RW=1;
//0写入指令或数据,1读信息
EN=1;
//1读取信息,1-0写指令或数据
Delay(10);
LCD_Status=P2;
EN=0;
returnLCD_Status;
//返回状态
voidWrite_LCD_Command(ucharcmd)//写LCD命令
while((Busy_check()&
0x80)==0x80);
//D7=1禁止操作,D7=0,允许操作
RW=0;
Delay
(2);
//延时
P2=cmd;
/**********************************************************/
voidWrite_LCD_Data(uchardat)//向lcd发送数据
RS=1;
RW=0;
EN=0;
P2=dat;
voidInitialize_LCD()//LCD初始化
Write_LCD_Command(0x38);
//工作方式为:
数据总线8位,显示两行,5*7点阵
Write_LCD_Command(0x01);
//清屏
Write_LCD_Command(0x06);
//字符进入模式:
屏幕不动,字符后移
Write_LCD_Command(0x0c);
//显示开,关光标
voidDisplayListChar(ucharx,uchary,uchar*s)//显示字符串函数x从0开始表示最左边第一个
if(y==0)
{
Write_LCD_Command(0x80+x);
//表示第一行
}
else
Write_LCD_Command(0xC0+x);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数据 采集 系统 设计 说明