单片机工程化考试结题报告.docx
- 文档编号:9215393
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:49
- 大小:1.12MB
单片机工程化考试结题报告.docx
《单片机工程化考试结题报告.docx》由会员分享,可在线阅读,更多相关《单片机工程化考试结题报告.docx(49页珍藏版)》请在冰豆网上搜索。
单片机工程化考试结题报告
单片机工程化考试结题报告
题目:
温度光照采集可控键盘
精确定时智能控制系统
学院名称:
西昌学院汽车与电子工程学院
年级、专业:
09级电子信息工程
学生姓名:
刘凯田时茂
学号:
09110600100911060019
指导老师:
施智雄张娜
日期:
2011年12月10日
摘要:
本系统是基于PLB-HOT51-01单片机实验系统上的MCS—51单片机而设计的系统。
是利用单片机中的定时器、IO接口、中断系统以及开发板实验平台上的数码管和1602液晶显示屏、温度传感器DS18B20、继电器、红外收发、蜂鸣器以及必要的芯片等资源而设计。
通过可控键盘实现时间的精确调整,既是时钟电子表的精确体现,也是数据温度,光照的时间定时,并且通过传感器转化温度光照等物理参数为电信号,再通过单片机处理数据送到1602液晶显示屏上显示温度数值。
第一章引言
一、本设计研究的意义:
温度光照的采集与控制系统是一个很广泛实用的系统,可以用在各种地方,比如水温控制、室内温度报警、加热控制等。
温度控制系统可以用多种方法实现,比如FPGA编程、微机控制、单片机控制等。
一片FPGA价格比较贵,且用为单一的温度控制系统资源浪费很大,而微机控制也是大材小用。
单片机价格便宜,用来做温度控制资源利用合理。
而本系统是基于MCS—51单片机设计的智能系统,其有对采集的温度进行实时处理能力,且可以根据温度的高低来对其他的装置的控制,比如加热器等进行实时地控制。
除了可以单独作为一个温度控制系统外,还可以结合其他的更为复杂的系统,嵌入到其他的系统中,作为其中一的部分。
比如家里用的电火锅、电冰箱、空调等大型的产品。
二、实现功能及达到的目的:
1.温度传感器能够准确的感应到此时的温度,18B20采集数据,液晶显示此时的温度,并在温度超过设定值时,并发出警报声。
2.温度传感器能够准确的感应到此时的温度,18B20采集数据,液晶显示此时的温度,并在温度低于设定值时,并发出警报声,并打开照明,增加温度。
3.光敏传感器能够准确感应到此时的光照,采集数据,AD-DA转换通过液晶显示此时的湿度,并在光照低于设定值时,发出警报声,打开照明。
4.时间的调整也是通过液晶显示模块显示当前时间,并且可以调控时间的值,实现键盘精确调整,得到简单易控的目的。
5.继电器蜂鸣器等外围控制设备是实验温度光照控制的最终控制端口,可实现报警,加温,降温,等多个控制。
6.步进电机和电动机是控制的动力来源,可以实现窗帘的拉动,开关,可以调整电动机的速度实现对风扇转速的控制,从而实现可调降温的目的。
第2章电路设计
由于本系统是基于PLB-HOT51-01单片机实验系统而设计的,故里里面的很多芯片和装置已经安装固定。
下面对具体的装置及其在本设计系统中的功能和接法进行说明:
1.通过可控键盘实现时间的精确调整,既是时钟电子表的精确体现,也是数据温度,光照的时间定时,并且通过传感器转化温度光照等物理参数为电信号,再通过单片机处理数据送到1602液晶显示屏上显示温度数值,系统能通过I/O接口线对继电器,蜂鸣器等电路进行控制,并通过外围设备控制其他设备。
2.可利用1602液晶显示屏即时显示采集的温度值和光照值。
利用单片机的中断系统进行控制。
温度传感器:
这里采用到的是实验系统上的DS18B20温度实验平台。
本实验只用到其温度测量和控制部分。
其包括:
继电器、加热机构、温度传感器。
温度采集使用DS18B20,转化为电信号送出。
加热器等外围控制是由继电器控制的。
3.单片机:
这是整个系统的核心装置。
单片机主要的工作是控制和处理,其先控制A/D采进来的数据。
然后根据传感器的温度对比值对应为相应的温度,可以根据查表法,也可以根据公式法,本实验采用的是MCS—51单片机的查表指令设计的查表法。
再将对应出来的温度值进行实时的处理,包括:
和控制温度(20°)对比,看是否需要停止加热;和前一次温度对比,看是否需要风扇降温。
第三章详细电路设计
1.最小系统
2、AD转换
Pcf8591说明:
描述:
PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。
PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。
在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。
功能:
PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。
PCF8591的最大转化速率由I2C总线的最大速率决定。
特性:
【1】单独供电
【2】PCF8591的操作电压范围2.5V-6V
【3】低待机电流
【4】通过I2C总线串行输入/输出
【5】PCF8591通过3个硬件地址引脚寻址
【6】PCF8591的采样率由I2C总线速率决定
【7】4个模拟输入可编程为单端型或差分输入
【8】自动增量频道选择
【9】PCF8591的模拟电压范围从VSS到VDD
【10】PCF8591内置跟踪保持电路
【11】8-bit逐次逼近A/D转换器
【12】通过1路模拟输出实现DAC增益
原理图及引脚信息:
AIN0~AIN3:
模拟信号输入端。
A0~A2:
引脚地址端。
VDD、VSS:
电源端。
(2.5~6V) SDA、SCL:
I2C总线的数据线、时钟线。
OSC:
外部时钟输入端,内部时钟输出端。
EXT:
内部、外部时钟选择线,使用内部时钟时EXT接地。
AGND:
模拟信号地。
AOUT:
D/A转换输出端。
VREF:
基准电源端
3.1302时钟
1302时钟说明
DS1302的结构及工作原理:
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
引脚功能及结构:
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数
据输入输出端(双向),后面有详细说明。
SCLK为时钟输入端。
DS1302的控制字节:
DS1302的控制字如图2所示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
数据输入输出(I/O):
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
DS1302与CPU的连接:
实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。
只是选择晶振时,不同的晶振,误差也较大。
另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。
只要占用CPU一个口线即可。
LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC接口。
功耗低,显示状态时电流为2μA(典型值),省电模式时小于1μA,工作电压为2.4V~3.3V,显示清晰
4.步进电机,直流电机,蜂鸣器,继电器
5.4*4键盘
6.18B20温度传感
18B20说明:
数字温度传感器DS18B20介绍
DS18B20的主要特性:
a、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
b、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
c、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
d、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
e、温范围-55?
~+125?
,在-10~+85?
时精度为±0.5?
f、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5?
、0.25?
、0.125?
和0.0625?
,可实现高精度测温
g、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
h、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
i、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
7.1602液晶显示
液晶说明:
管脚功能
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
8.HOT51开发板实物图
第四章总体安排及进度计划落实情况
小组成员运用自己所学知识,再参照了大量相关的资料相结合写出论文给指导老师并作出实物,将实物调试给指导老师看后交出实物及照片。
一、计划及流程:
1、时间安排:
2011年12月2日开题报告;
2011年12月8日程序进行调试,完善;
2011年12月中旬结题报告,实物进行展示;
2、所需条件及措施:
所需条件落实情况
PLB-HOT51-01单片机已具备
电路板自己购买
电烙铁已具备
其他电子元件自己购买
二、实验结论及参考资料:
1、实验结论:
以上为所设计的基于PLB-HOT51-01单片机实验系统上的MCS—51单片机而设计的系统,它经过多次修改和整理,基本已满足设计的基本要求。
它利用单片机中的定时器、IO接口、中断系统以及开发板实验平台上的数码管和1602液晶显示屏、温度传感器DS18B20、继电器、红外收发、蜂鸣器以及必要的芯片等资源设计,通过可控键盘实现时间的精确调整,既是时钟电子表的精确体现,也是数据温度,光照的时间定时,并且通过传感器转化温度光照等物理参数为电信号,再通过单片机处理数据送到1602液晶显示屏上显示温度数值。
通过此次课程设计的制作,我们不仅学到新知识,也巩固了以前所学的知识,动手动脑的能力方面得到了提高。
2、参考文献:
【1】《C程序设计》(第三版)谭浩强编著清华大学出版社2005
【2】《MCU-DSP型单片机原理与应用-基于凌阳16位单片机》刘海成编著北京航空航天大学出版社2005
【3】《感测技术》李科杰编著机械工业出版社2007
【4】《AltiumDesigner(Protel)原理图与PCB设计教程》江思敏编著机械工业出版社2010
【5】《数字电路与逻辑设计》陈利勇编著中国铁道出版社2007
【6】《实用模拟电子技术》施智雄编著电子科技大学出版社2006
第五章附录
附录一:
使用说明书
1.将电源线正确搭接如附录图所示;
2.打开开发板电源按钮,1602液晶就可显示当前时间,温度,和关照参数。
3.如果温度过高,电路将启动电风扇开始降温,使得温度在适宜范围内,并且得到一个动态平衡。
4.光照是一个重要参数,如果光照能够在一个合适的范围内,则步进电机不会拉动窗帘,使得(室内和大棚)的光照处于一个良好的状态,如果光照过强,则电路将启动智能保护系统,使得步进电机反转关闭窗帘,使得室内或大棚处于良好的光照状态,如果光照过低,则系统将启动步进电机正转得状态,从而使得光照处于良好的状态。
5.如果系统显示出现问题,一般是电路处于长期的工作造成的,一般解决的方法就是将电路断电,然后让板子停止工作一段时间,再插上电源,电路一般会正常工作。
6.如果5所说的不能解决问题,一般是电动机,或者步进电机的功率消耗过大,处理的方法就是先将电动机和步进电机取下,重新对板子上电,然后再接入电动机和步进电机。
附录二:
源程序
#include
#include
#definePCF85910x90//PCF8591地址
#defineucharunsignedchar
#defineuintunsignedint
//sbitPWM=P1^4;
sbitRELAY=P1^3;
//unsignedcharcodeF_Rotation[4]={0x08,0x10,0x20,0x40};//正转表格
//unsignedcharcodeB_Rotation[4]={0x40,0x20,0x10,0x08};//反转表格
unsignedcharcodeF_Rotation[4]={0x01,0x02,0x04,0x08};//正转表格
unsignedcharcodeB_Rotation[4]={0x08,0x04,0x02,0x01};//反转表格
//elseIO
sbitLS138A=P2^2;
sbitLS138B=P2^3;
sbitLS138C=P2^4;
//此表为LED的字模//0123456789AbcdE-LPUHidden_(20)
//unsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x88,0x83,0xC6,0xA1,0x86,0xbf,0xc7,0x8c,0xc1,0xff,0xf7};
unsignedcharcodeDisp_Tab[]={0,1,2,3,4,5,6,7,8,9};
unsignedcharAD_CHANNEL;
unsignedlongxdataLedOut[8];
unsignedintD[32];
intaa;
/*************/
/****蜂鸣器****/
//sbitSpeak=P1^5;
//sbitKEY1=P3^2;//独立按键跳出蜂鸣器报警循环
/********************************************************************
*名称:
Delay_xMs()
*功能:
延时子程序,
*输入:
x
*输出:
无
***********************************************************************/
/*voidDelay_xMs()
{
uinti;
for(i=0;i<30;i++)
{
};
}*/
/*****蜂鸣器********/
voidDelay4(unsignedinti)//延时
{
while(--i);
}
/*精确电子时钟部分模块*/
sbitrs=P2^5;
sbitrw=P2^6;
sbitlcden=P2^7;
sbits1=P1^0;//功能键
sbits2=P1^1;//增一按键
sbits3=P1^2;//减一按键
sbitrd=P1^7;//接地,使得s1,s2,s3变成独立按键,若有键被按下则相应的值变为
ucharcount,s1num;
charmiao,shi,fen;
ucharcodetable1[]="10:
50:
00";
voiddelay(uintz)//1ms
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_com(ucharcom)
{
P0=com;
rs=0;
rw=0;
lcden=0;
delay
(1);
lcden=1;
}
voidwrite_date(uchardate)
{
P0=date;
rs=1;
rw=0;
lcden=0;
delay
(1);
lcden=1;
}
voidinit()
{
uintnum;
write_com(0x01);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x80);
write_com(0x80);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(5);
}
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
voidwrite_sfm(ucharadd,uchardate)
{
ucharshi1,ge1;
shi1=date/10;
ge1=date%10;
write_com(0x80+add);
write_date(0x30+shi1);//ASC码转换为十进制
write_date(0x30+ge1);//ASC码转换为十进制
}
voidkeyscan()
{
rd=0;
if(s1==0)
{
delay(5);//消抖
if(s1==0)//确认有键被按下
{s1num++;
while(!
s1);//等待按键被释放
if(s1num==1)//第一次被按下功能键使表停止,然后使秒针闪烁
{
TR0=0;
write_com(0x80+6);
write_com(0x0f);//使光标闪烁
}
if(s1num==2)
{
write_com(0x80+3);
}
if(s1num==3)
{
write_com(0x80+0);
}
if(s1num==4)
{
s1num=0;
write_com(0x0c);//不显示光标,
TR0=1;//使秒表重新开始计时
}
}
}
if(s1num!
=0)//特别注意,此语句是与第二个if并列的,即,要在s1被按了之后才有效
{
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!
s2);//等待按键被释放
if(s1num==1)//表明指针在秒钟那位闪烁
{
miao++;
if(miao==60)
miao=0;
write_sfm(6,miao);
write_com(0x80+6);
}
if(s1num==2)//表明指针在分钟那位闪烁
{
fen++;
if(fen==60)
fen=0;
write_sfm(3,fen);
write_com(0x80+3);
}
if(s1num==3)//表明指针在时钟那位闪烁
{
shi++;
if(shi==24)
shi=0;
write_sfm(0,shi);
write_com(0x80+0);
}
}
}
if(s3==0)//特别注意,此语句是和s2==0的那个if语句并列的,也就是与第二个if并列的,即,要在s1(功能键)被按了之后才有效
{
delay(5);
if(s3==0)
{
while(!
s3);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 工程 考试 报告