创新实习报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned char code dofly[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int temp;
uchar shang_xian=40;//上限温度40
fengmingqi();
delay1(5);
}
}
void display2(void)//声明温度显示函数
{
temp=ReadTemperature();
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
P2=0xf2;P0=dofly[A1];delay1(15);
P2=0xf1;P0=dofly[A2];delay1(15);
while (!DQ); //等待转换完成
Init_DS18B20(); //设备复位
DS18B20_WriteByte(0xCC); //跳过ROM命令
DS18B20_WriteByte(0xBE); //读暂存存储器命令
TPL = DS18B20_ReadByte(); //读温度低字节
TPH = DS18B20_ReadByte(); //读温度高字节
原理图如下:
实物图如下:
六、
打开报警器电源
设置报警温度
当温度或烟雾浓度达到预设值,
蜂鸣器发声,开始报警
七、
原理图:
PCB图:
八.程序及相关代码
#include<stc12.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
}
BYTE DS18B20_ReadByte(void)//读一个字节
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(40); //40
原理图如下:
b)
烟雾传感器就是通过监测烟雾的浓度来实现火灾防范的,烟雾报警器内部采用离子式烟雾传感,离子式烟雾传感器是一种技术先进,工作稳定可靠的传感器,被广泛运用到各种消防报警系统中,性能远优于气敏电阻类的火灾报警器。
d)
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
delay1600();
}
for(i=0;i<200;i++)
{
sound=0; //P3.7输出低电平
delay800();
sound=1; //P3.7输出高电平
delay800();
}
}
}
unsigned char ad()
{
ADC_CONTR=0xC0; //开A/D转换电源,选择AD速度
P1ASF=0x00;
}
return(dat);
}
void DS18B20_WriteByte(BYTE dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(50); //50
DQ = 1;
dat>>=1;
}
a)
1)
2)
3)
b)
检测灯位:2灯位
供电方式:电池供电
显示方式:数码管
报警方式:蜂鸣器
是否可级联:是
五、
a)
STC89C51RC是采用8051核的ISP在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。
uchar xia_xian=5;//下线温度5
uchar dt_h;
uchar dt_l;
uchar set_st;
BYTE TPH; //存放温度值的高字节
BYTE TPL; //存放温度值的低字节
bit Temp_Flag=0; //温度符号标志位:0为正温度,1为负Biblioteka Baidu度
BYTE A1,A2,A2t;//数码管显示内容
if(TPH>>3) //判断温度符号
{
Temp_Flag=1;
Temp_buff=TPH;
Temp_buff=(Temp_buff<<8)+TPL;
Temp_buff=(~Temp_buff+1)*0.625;
return Temp_buff;
}
else
{
Temp_buff=TPH;
Temp_buff=((Temp_buff<<8)+TPL)*0.625;
typedef unsigned char BYTE;
sbit DQ = P3^6;
sbit LED1=P2^6;
sbit LED2=P2^7;//控制报警灯
sbit sound=P3^7;//定义蜂鸣器
sbit key1=P3^2; //定义按键
sbit key2=P3^3;
sbit key3=P3^4;
for(jj=110;jj>0;jj--);
}
void keyscan() //按键调节
{
if(key2==0&&key3==1)
{
delay(10);
if(key2==0)
{
while(!key2);
if(set_st==1)
{
shang_xian--;
if(shang_xian<=xia_xian)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay_18B20(80); //稍做延时
DQ = 0; //单片机将DQ拉低
delay_18B20(800); //精确延时大于480us
DQ = 1; //拉高总线
delay_18B20(140);
x=DQ;
delay_18B20(200);
三、
随着现代家庭用火、用电量的增加,家庭火灾发生的频率越来越高。家庭火灾一旦发生,很容易出现扑救不及时、灭火器材缺乏及在场人惊慌失措、逃生迟缓等不利因素,最终导致重大生命财产损失。探讨家庭火灾的特点及防火对策,对于预防家庭火灾,减少火灾损失具有现实意义。
四、
该电子产品通过DS18B20实时记录室内温度,用MQ2烟雾传感器记录室内的烟雾浓度系数,传感器显示的数据由单片机内置A/D转换器进行转换,并通过烟雾转换函数进行转换后显示到数码管。当设定阀值达到上限进行报警,提醒用户室内烟雾浓度过高。
3.学习keil软件的使用,在实验板功能测试通过的基础上,用Keil软件编写相应的控制程序,并完成通讯协议的编写,最终调试运行;
4.通过计算和实验,选定各电子元件和确定各元器件参数;
5.实验过程中认真总结经验教训,注意操作安全;
6.对产品封装,整理;
7.在教学实验板完成并测试通过后,认真完成实习报告和实习日志。
if(shang_xian>=99)
{
shang_xian=99;
}
}
if(set_st==2)
{
xia_xian++;
if(xia_xian>=shang_xian)
{
xia_xian=shang_xian;
}
}
}
}
dt_h=shang_xian;
dt_l=xia_xian;
}
void Disp_alarm(uchar dtem)//显示报警温度
return Temp_buff;
}
}
void display(unsigned int num)//声明烟雾显示函数
{
P2=0xf8;
P0=dofly[(num*5/256)];
delay1(5);
if((num*5/256)<3)
{
LED1=0;
delay1(1);
}
else
{
LED2=0;
delay1(5);
{
P2=0xf2;
P0=dofly[dtem/10];
delay1(70);
P0=dofly[dtem%10];
P2=0xf1;
delay(70);
}
void delay1600()//蜂鸣器延时
{
unsigned char n;
for(n=0;n<100;n++)
;
}
void delay800()//同上
原理图如下:
主要使用引脚:
第1脚:I/O口,作为烟雾传感器收发信号管脚。
第16、17脚:I/O口,作为温度传感器的收发信号管脚。
第32~39脚:I/O口,发送信号给数码管现实相应的字符。
第20脚GND,电源地。
第40脚VCC,电源正极。
c)
74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产品中增加驱动。
void delay1(unsigned int num) //延时程序
{
unsigned int ii,jj;
for(ii=num;ii>0;ii--)
for(jj=110;jj>0;jj--);
}
void delay(uint num) //延时程序
{
uint ii,jj;
for(ii=num;ii>0;ii--)
ADC_CONTR|=0x08;
while((ADC_CONTR&0x10)==0);
ADC_CONTR&=0xE7;
return(ADC_RES);
}
void delay_18B20(unsigned int i)//声明延时函数
{
while(i--);
}
void Init_DS18B20(void)//启动温度转换器
}
unsigned int ReadTemperature(void)//读温度并转换
{
unsigned int Temp_buff; //温度计算过程缓存值
Init_DS18B20(); //设备复位
DS18B20_WriteByte(0xCC); //跳过ROM命令
DS18B20_WriteByte(0x44); //开始转换命令
对C51芯片的性能与控制进行了解。通过本次的创新实习,要求熟练掌握Keil的编程方法,理论联系实际,技术运用产品,锻炼我们的动脑以及动手能力,增强团队协作能力,熟悉各种硬件的操作,为就业打下良好的基础。
二、
1.提前学习模电、数电的相关理论基础,初步了解和掌握电路分析的基本步骤;
2.练习并完成焊接硬件电路,并测试其功能与作用;
实习报告
(2012~2013学年第2学期)
实习名称:项目制实习
专项名称:室内火灾报警器
专业:计算机通信
学号:20117095
姓名:杜振兴
实习地点:计算机系创新园
实习时间:7月12日—7月25日
实习成绩:
指导教师(签字):
西南交通大学峨眉校区
2013年9月6日
一、
通过对火灾报警系统系统的设计,在其基础上组装电子元件,能够显示室内的烟雾浓度系数,并且显示室内的温度。熟练掌握51单片机通信数据传输的方法。进一步对单片机的工作原理进行理解,将书本上的知识转化为实际产品,同时又进一步加强我们的团队意识。
P2=0xf4;P0=0xbf;delay1(15);//显示数码管第三位
}
void anjian(void)
{
if(key1==0)
{
delay1(5);
if(key1==0)
{
while(!key1);
{
unsigned char n;
for(n=0;n<200;n++)
;
}
void fengmingqi()//蜂鸣器报警
{
unsigned int i;
while(1)
{
for(i=0;i<830;i++)
{
sound=0; //P3.7输出低电平
delay1600();
sound=1; //P3.7输出高电平
{
shang_xian=xia_xian;
}
}
if(set_st==2)
{
xia_xian--;
if(xia_xian<=0)
{
xia_xian=0;
}
}
}
}
if(key3==0&&key2==1)
{
delay(10);
if(key3==0)
{
while(!key3);
if(set_st==1)
{
shang_xian++;
unsigned int temp;
uchar shang_xian=40;//上限温度40
fengmingqi();
delay1(5);
}
}
void display2(void)//声明温度显示函数
{
temp=ReadTemperature();
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
P2=0xf2;P0=dofly[A1];delay1(15);
P2=0xf1;P0=dofly[A2];delay1(15);
while (!DQ); //等待转换完成
Init_DS18B20(); //设备复位
DS18B20_WriteByte(0xCC); //跳过ROM命令
DS18B20_WriteByte(0xBE); //读暂存存储器命令
TPL = DS18B20_ReadByte(); //读温度低字节
TPH = DS18B20_ReadByte(); //读温度高字节
原理图如下:
实物图如下:
六、
打开报警器电源
设置报警温度
当温度或烟雾浓度达到预设值,
蜂鸣器发声,开始报警
七、
原理图:
PCB图:
八.程序及相关代码
#include<stc12.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
}
BYTE DS18B20_ReadByte(void)//读一个字节
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(40); //40
原理图如下:
b)
烟雾传感器就是通过监测烟雾的浓度来实现火灾防范的,烟雾报警器内部采用离子式烟雾传感,离子式烟雾传感器是一种技术先进,工作稳定可靠的传感器,被广泛运用到各种消防报警系统中,性能远优于气敏电阻类的火灾报警器。
d)
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
delay1600();
}
for(i=0;i<200;i++)
{
sound=0; //P3.7输出低电平
delay800();
sound=1; //P3.7输出高电平
delay800();
}
}
}
unsigned char ad()
{
ADC_CONTR=0xC0; //开A/D转换电源,选择AD速度
P1ASF=0x00;
}
return(dat);
}
void DS18B20_WriteByte(BYTE dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(50); //50
DQ = 1;
dat>>=1;
}
a)
1)
2)
3)
b)
检测灯位:2灯位
供电方式:电池供电
显示方式:数码管
报警方式:蜂鸣器
是否可级联:是
五、
a)
STC89C51RC是采用8051核的ISP在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。
uchar xia_xian=5;//下线温度5
uchar dt_h;
uchar dt_l;
uchar set_st;
BYTE TPH; //存放温度值的高字节
BYTE TPL; //存放温度值的低字节
bit Temp_Flag=0; //温度符号标志位:0为正温度,1为负Biblioteka Baidu度
BYTE A1,A2,A2t;//数码管显示内容
if(TPH>>3) //判断温度符号
{
Temp_Flag=1;
Temp_buff=TPH;
Temp_buff=(Temp_buff<<8)+TPL;
Temp_buff=(~Temp_buff+1)*0.625;
return Temp_buff;
}
else
{
Temp_buff=TPH;
Temp_buff=((Temp_buff<<8)+TPL)*0.625;
typedef unsigned char BYTE;
sbit DQ = P3^6;
sbit LED1=P2^6;
sbit LED2=P2^7;//控制报警灯
sbit sound=P3^7;//定义蜂鸣器
sbit key1=P3^2; //定义按键
sbit key2=P3^3;
sbit key3=P3^4;
for(jj=110;jj>0;jj--);
}
void keyscan() //按键调节
{
if(key2==0&&key3==1)
{
delay(10);
if(key2==0)
{
while(!key2);
if(set_st==1)
{
shang_xian--;
if(shang_xian<=xia_xian)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay_18B20(80); //稍做延时
DQ = 0; //单片机将DQ拉低
delay_18B20(800); //精确延时大于480us
DQ = 1; //拉高总线
delay_18B20(140);
x=DQ;
delay_18B20(200);
三、
随着现代家庭用火、用电量的增加,家庭火灾发生的频率越来越高。家庭火灾一旦发生,很容易出现扑救不及时、灭火器材缺乏及在场人惊慌失措、逃生迟缓等不利因素,最终导致重大生命财产损失。探讨家庭火灾的特点及防火对策,对于预防家庭火灾,减少火灾损失具有现实意义。
四、
该电子产品通过DS18B20实时记录室内温度,用MQ2烟雾传感器记录室内的烟雾浓度系数,传感器显示的数据由单片机内置A/D转换器进行转换,并通过烟雾转换函数进行转换后显示到数码管。当设定阀值达到上限进行报警,提醒用户室内烟雾浓度过高。
3.学习keil软件的使用,在实验板功能测试通过的基础上,用Keil软件编写相应的控制程序,并完成通讯协议的编写,最终调试运行;
4.通过计算和实验,选定各电子元件和确定各元器件参数;
5.实验过程中认真总结经验教训,注意操作安全;
6.对产品封装,整理;
7.在教学实验板完成并测试通过后,认真完成实习报告和实习日志。
if(shang_xian>=99)
{
shang_xian=99;
}
}
if(set_st==2)
{
xia_xian++;
if(xia_xian>=shang_xian)
{
xia_xian=shang_xian;
}
}
}
}
dt_h=shang_xian;
dt_l=xia_xian;
}
void Disp_alarm(uchar dtem)//显示报警温度
return Temp_buff;
}
}
void display(unsigned int num)//声明烟雾显示函数
{
P2=0xf8;
P0=dofly[(num*5/256)];
delay1(5);
if((num*5/256)<3)
{
LED1=0;
delay1(1);
}
else
{
LED2=0;
delay1(5);
{
P2=0xf2;
P0=dofly[dtem/10];
delay1(70);
P0=dofly[dtem%10];
P2=0xf1;
delay(70);
}
void delay1600()//蜂鸣器延时
{
unsigned char n;
for(n=0;n<100;n++)
;
}
void delay800()//同上
原理图如下:
主要使用引脚:
第1脚:I/O口,作为烟雾传感器收发信号管脚。
第16、17脚:I/O口,作为温度传感器的收发信号管脚。
第32~39脚:I/O口,发送信号给数码管现实相应的字符。
第20脚GND,电源地。
第40脚VCC,电源正极。
c)
74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产品中增加驱动。
void delay1(unsigned int num) //延时程序
{
unsigned int ii,jj;
for(ii=num;ii>0;ii--)
for(jj=110;jj>0;jj--);
}
void delay(uint num) //延时程序
{
uint ii,jj;
for(ii=num;ii>0;ii--)
ADC_CONTR|=0x08;
while((ADC_CONTR&0x10)==0);
ADC_CONTR&=0xE7;
return(ADC_RES);
}
void delay_18B20(unsigned int i)//声明延时函数
{
while(i--);
}
void Init_DS18B20(void)//启动温度转换器
}
unsigned int ReadTemperature(void)//读温度并转换
{
unsigned int Temp_buff; //温度计算过程缓存值
Init_DS18B20(); //设备复位
DS18B20_WriteByte(0xCC); //跳过ROM命令
DS18B20_WriteByte(0x44); //开始转换命令
对C51芯片的性能与控制进行了解。通过本次的创新实习,要求熟练掌握Keil的编程方法,理论联系实际,技术运用产品,锻炼我们的动脑以及动手能力,增强团队协作能力,熟悉各种硬件的操作,为就业打下良好的基础。
二、
1.提前学习模电、数电的相关理论基础,初步了解和掌握电路分析的基本步骤;
2.练习并完成焊接硬件电路,并测试其功能与作用;
实习报告
(2012~2013学年第2学期)
实习名称:项目制实习
专项名称:室内火灾报警器
专业:计算机通信
学号:20117095
姓名:杜振兴
实习地点:计算机系创新园
实习时间:7月12日—7月25日
实习成绩:
指导教师(签字):
西南交通大学峨眉校区
2013年9月6日
一、
通过对火灾报警系统系统的设计,在其基础上组装电子元件,能够显示室内的烟雾浓度系数,并且显示室内的温度。熟练掌握51单片机通信数据传输的方法。进一步对单片机的工作原理进行理解,将书本上的知识转化为实际产品,同时又进一步加强我们的团队意识。
P2=0xf4;P0=0xbf;delay1(15);//显示数码管第三位
}
void anjian(void)
{
if(key1==0)
{
delay1(5);
if(key1==0)
{
while(!key1);
{
unsigned char n;
for(n=0;n<200;n++)
;
}
void fengmingqi()//蜂鸣器报警
{
unsigned int i;
while(1)
{
for(i=0;i<830;i++)
{
sound=0; //P3.7输出低电平
delay1600();
sound=1; //P3.7输出高电平
{
shang_xian=xia_xian;
}
}
if(set_st==2)
{
xia_xian--;
if(xia_xian<=0)
{
xia_xian=0;
}
}
}
}
if(key3==0&&key2==1)
{
delay(10);
if(key3==0)
{
while(!key3);
if(set_st==1)
{
shang_xian++;