中期报告参考.docx

上传人:b****5 文档编号:5725756 上传时间:2022-12-31 格式:DOCX 页数:13 大小:170.71KB
下载 相关 举报
中期报告参考.docx_第1页
第1页 / 共13页
中期报告参考.docx_第2页
第2页 / 共13页
中期报告参考.docx_第3页
第3页 / 共13页
中期报告参考.docx_第4页
第4页 / 共13页
中期报告参考.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

中期报告参考.docx

《中期报告参考.docx》由会员分享,可在线阅读,更多相关《中期报告参考.docx(13页珍藏版)》请在冰豆网上搜索。

中期报告参考.docx

中期报告参考

西安工业大学北方信息工程学院

毕业设计(论文)中期报告

 

题目:

基于单片机的温度采集系统设计基于单片机温度采集系统设计开题报告(尚磊)(最终修改)基于单片机温度采集系统设计开题报告(尚磊)(最终修改)基于单片机温度采集系统设计开题报告(尚磊)(最终修改)基于单片机温度采集系统设计开题报告(尚磊)(最终修改)基于单片机温度采集系统设计开题报告(尚磊)(最终修改)

 

系别

专业

班级

姓名

学号

导师

 

1.设计(论文)进展状况

在这段时间里,我主要学习了温度传感器AD590的工作原理,连接方法;如何使用ADC0809进行数模转换;KeiluVision2开发软件的使用;以及如何在KeiluVision2环境下的编程实现及调试。

同时,对实现带有小数的温度检测进行了具体学习和编程。

具体工作如下:

(1)AD590的具体工作原理与工作方式

AD590,它是一种半导体感受式的,由测温电阻、二极管和集成电路器件成。

AD590是一种单片集成的两端式温度敏感电流源,它有金属壳,小型的扁平封装芯片和不锈钢等几种封装形式,实验平台利用IC温度传感器AD590作为测温器,AD590是一种精度和线性度较好的双端集成温度传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1A最大电流的变化或1摄氏度等效误差。

上图给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路,当温度有10℃的变化时输出电压变化为20mV,即该电路M点电压随温度变化为2mV/℃。

将温度传感器输出的小信号跟随放大19.2倍左右后,送至8位A/D转换器转换成数字量。

(2)A/D转换

模数转换采用ADC0809,它是芯片输出端具有可控的三态门,这种芯片的输出端可以直接和系统总线相连,由读信号控制三态门,转换结束后,CPU执行一条输入指令,从而产生读信号,将数据从A/D转换器取出。

ADC0809是典型的8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存译码电路,其转换时间为100µs左右。

ADC0809内部结构如图所示,图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换,地址锁存与译码电路完成对A、B、C3个地址位进行锁存和译码,其译码输出用于通道选择。

8位A/D转换器是逐次逼近式,由控制与时序电路、逐次逼近寄存器、树状开关以及256R电阻阶梯网络等组成。

输出器用于存放和输出转换得到的数字量。

(3)在KeiluVision2环境下进行具体程序设计

程序如下

#include

#include

sbitcp_164=P2^6;//164的脉冲控制引脚

sbitdata_164=P2^7;//164的串行数据引脚

floatxiaoshu;

inttemper1,c,temper2;//保存实际温度的变量,只考虑温度为正且取整数

sbitDQ=P2^4;//数据端口

voiddelay(unsignedinti)

{

while(i--);

}

//初始化函数

Init_DS18B20(void)

{

unsignedcharx=0;

DQ=1;//DQ复位

delay(8);//稍做延时

DQ=0;//单片机将DQ拉低

delay(80);//精确延时大于480us

DQ=1;//拉高总线

delay(14);

x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败

delay(20);

}

//读一个字节

ReadOneChar(void)

{

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ==1)

dat=dat|0x80;

delay(4);

}

return(dat);

}

//写一个字节

WriteOneChar(unsignedchardat)

{

unsignedchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

}

//读取温度

ReadTemperature(void)

{

unsignedchara=0;

unsignedcharb=0;

unsignedchart=0;

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度

a=ReadOneChar();

b=ReadOneChar();

t=b;

t<<=8;

t=t|a;

temper1=t/16;

temper2=t%16;

xiaoshu=temper2/16.0;

c=xiaoshu*10000;

}

//以下是显示两位的函数,参数X是两位整数//

voidled_2(unsignedcharx)

{

unsignedcharzixing[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//字型代码

unsignedchari,zixing2;

zixing2=zixing[x%10];//以下显示X的低位

for(i=0;i<8;i++)

{

cp_164=0;

data_164=zixing2&0x01;

cp_164=1;

zixing2=zixing2>>1;

}

zixing2=zixing[x/10];//以下显示X的高位

for(i=0;i<8;i++)

{

cp_164=0;

data_164=zixing2&0x01;

cp_164=1;

zixing2=zixing2>>1;

}

}

/*以下是顺序显示a,b,c的函数,共显示6位,abc均是两位整数*/

voidled_6(unsignedchara,unsignedcharb,unsignedcharc)

{

led_2(c);

led_2(b);

led_2(a);

}

main()

{

unsignedinti=0;

while

(1)

{

ReadTemperature();//读温度

led_6(temper1,c/100,c%100);

for(i=0;i<40000;i++);

for(i=0;i<40000;i++);

}

}

程序仿真图如下:

除此之外我通过微机原理一书找到了如何使用以8088CPU系统为核心设计一个温度采集系统并在三位LED显示器上显示当前温度。

他实现起来较为简单,所需要的

芯片清单及器件为:

CPU8088ADC0809接口芯片8255温度传感器AD590

74LS138译码器74LS273段码锁存器DM7407N

8282锁存器晶振运算放大器数码管三个电容电阻若干。

 

程序流程图

程序清单为:

PORTAEQU020H;定义端口地址

PORTBEQU021H

PORTCEQU022H

PORTDEQU023H

DATASEGMENT

TABLEDB40H

DB4FH

DB24H

DB30H

DB19H

DB12H

DB02H

DB78H

DB00H

DB10H

BUFDA1DB?

BUFDA2DB?

BUFDA3DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,98H

OUTPORTD,AL;8255的初始化

;*****************************

MOVAL,01

OUTPORTC,AL

MOVAL,00

OUTPORTC,AL;PC0为0,启动A/D转换

FIND:

INAL,PORTC

TESTAL,010H

JNZFIND;读PC4的值,如为1则继续查询

MOVAL,01

OUTPORTC,AL;使PC0为1,撤消启动信号

INAL,PORTA;读取转换数据

;******************************

MOVCL,100;计算百位,十位,个位

DIVCL

MOVBUFDA1,AL

XORAL,AL

MOVCL,10

MOVBL,AH

MOVAL,BL

MOVAH,0

DIVCL

MOVBUFDA2,AL

MOVBUFDA3,AH

;******************************

DISPLAY:

MOVBX,OFFSETTABLE

MOVAL,[DI+0]

XLAT;换码

MOVDX,PORTB

OUTDX,AL

MOVCX,30H;延迟程序

DELAY:

LOOPDELAY

RET

;**********************************

MOVCX,30H

DISPLAY1:

MOVAL,06H

OUTPORTD,AL

MOVAL,05H

OUTPORTD,AL

MOVAL,03H

OUTPORTD,AL

MOVDI,OFFSETBUFDA1

CALLDISPLAY;使LED0工作

MOVAL,07H

OUTPORTD,AL

MOVAL,04H

OUTPORTD,AL

MOVAL,03H

OUTPORTD,AL

MOVDI,OFFSETBUFDA2

CALLDISPLAY;使LED1工作

MOVAL,07H

OUTPORTD,AL

MOVAL,05H

OUTPORTD,AL

MOVAL,02H

OUTPORTD,AL

MOVDI,OFFSETBUFDA3

CALLDISPLAY;使LED2工作

LOOPDISPLAY1;延迟

;***********************************

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

LED的输出

通过微机原理的学习我明白了由于输出的电压量范围是0~5V即转换为数字量后为0~FF之间。

所以,要使温度表示范围为0~85℃,需把0~FF除以3。

经过CPU未经处理过的数值是以ASCII码的方式显示在电脑屏幕上的,还需将ASCII码转换成十进制显示。

为了便于读数。

在LED灯上的显示将设计为8421码的方式显示。

转换方法在程序中已注明。

2.存在问题及解决措施

在学习和程序编写过程中遇到了一些问题:

主要是开始对KeiluVision2软件的使用以及汇编语言的掌握问题,在程序编写过程中,出现了一些错误,比如语法使用错误,程序格式错误以及仿真时属性设置错误等原因,在后来的深入学习后,这些问题得到解决。

在编程过程中,对于如何使用语言在KeiluVision2环境下充分完成部件功能较为棘手,后来经过深入分析,以及对开发环境的学习得以解决。

3.后期工作安排

在KeiluVision环境下已基本学习了如何实现温度采集的编程,下一步的工作是深入学习硬件连接,编写出完整的程序,同时,应尽量搭配硬件进行测试,对比显示结果,验证程序的正确性。

同时,开始着手论文的撰写,主要是准备足够的前期资料和程序编写调试过程中记录好调试的过程和仿真的结果,为论文积累素材。

注:

1、正文:

宋体小四号字,行距22磅。

2、中期报告由各系集中归档保存,不装订入册。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1