课题设计单片机数字温度计设计_第1页
课题设计单片机数字温度计设计_第2页
课题设计单片机数字温度计设计_第3页
课题设计单片机数字温度计设计_第4页
课题设计单片机数字温度计设计_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机来对温度进行测试控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。本数字温度计属于测试类,在市场上有两种方案可以选择,一:采用模拟传感器,利用a/d转换成数字信号进行处理;二:采用数字集成传感器;还可以附加不同的模块,以增强其功能,如可以进行上下限温度报警,温度自动调节控制等。器件的选择和电路的设计以微型化为主,尽量减小体积。本文在深入了解各种方案的硬件设计和软件设计的基础上,制作了基于AT89C51控制的一个数字温度监测系统,完成了整个系统器件的选择,电路原理图的绘制,各功能模块的软件代码的编写,并利用仿真软件proteus进行测试,验证了整个系统的功能实现。关键词:数字温度计单片机AT89C51DS18B20显示AbstractInthemodernindustrialproduction,thecurrent,voltage,temperature,pressure,andflow,velocity,andswitchquantityisaccusedofmainparameters.Example:inmetallurgicalindustry,chemicalindustry,electricpowerengineering,paperindustry,machineryandfoodprocessingandsoonmanydomains,peopleneedtoallkindsofheatingfurnace,heattreatmentfurnace,reactorsandboilertemperaturedetectionandcontrol.Adoptssinglechiptocontroltemperaturetesting,notonlyhastheconvenientcontrol,simpleandflexibleconfigurationadvantages,andcangreatlyimprovethetechnicalindexesarecontrolledtemperature,whichcangreatlyimprovetheproduct'squalityandquantity.Thenumberoftest,inthethermometerbelongstothemarkethastwooptions,asimulatedsensor,use,a/dconversionintodigitalsignalprocessing,2:adoptingdigitalintegratedsensor,Stillcanadddifferentmodules,inordertoenhanceitsfunctions,suchastheuppertemperaturecanautomaticallyadjustthetemperaturecontrolofalarm,etc.Deviceselectionanddesignofthecircuitinminiaturization,minimizevolume.Basedonthoroughknowledgeofthevarioussolutionsofhardwaredesignandsoftwaredesign,andonthebasisoftheproductionofadigitalcontrolbasedonAT89C51temperaturemonitoringsystem,completethewholesystemcomponents,circuitprincipledrawing,thefunctionalmodulesofsoftwarecodecompiling,andusingthesimulationsoftwaretesting,proteusverifiedtherealizationofthefunctionofthewholesystem.Keywords:digitaldataacquisitionsingleflatmachineAT89C51DS18B20showathermometer目录课题背影 AT89AT89C2051DS18B201#DS18B202#DS18B203#DS18B2020#VCC=5V1—WIRE图4.8DS18B20硬件连接电路

4.3数字温度传感器原理与应用DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。

2DS18B20的内部结构

DS18B20内部结构如图1所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地,见图4)。

ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8+X5+X4+1)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个

图1DS18B20的内部结构

图2DS18B20的管脚排列

(a)初始化时序

(b)写时序

(c)读时序

图3DS18B20的工作时序图

DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以℃/LSB形式表达,其中S为符号位。例如+125℃的数字输出为07D0H,+℃的数字输出为0191H,-℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

23

22

21

20

2-1

2-2

2-3

2-4

温度值低字节

MSBLSB

S

S

S

S

S

22

25

24

温度值高字节

高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。其中配置寄存器的格式如下:

0

R1

R0

1

1

1

1

1

MSBLSB

R1、R0决定温度转换的精度位数:R1R0=“00”,9位精度,最大转换时间为;R1R0=“01”,10位精度,最大转换时间为;R1R0=“10”,11位精度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;未编程时默认为12位精度。

高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。

3DS18B20的工作时序

DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序,如图3(a)(b)(c)所示。

4DS18B20与单片机的典型接口设计

图4以MCS-51系列单片机为例,画出了DS18B20与微处理器的典型连接。图4(a)中DS18B20采用寄生电源方式,其VDD和GND端均接地,图4(b)中DS18B20采用外接电源方式,其VDD端用3V~电源供电。

假设单片机系统所用的晶振频率为12MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写了3个子程序:INIT为初始化子程序,WRITE为写(命令或数据)子程序,READ为读数据子程序,所有的数据读写均由最低位开始。

DATEQUP1.0

……

INIT:CLREA

INI10:SETBDAT

MOVR2,

a)寄生电源工作方式

(b)外接电源工作方式

图4DS18B20与微处理器的典型连接图

INI11:CLRDAT

DJNZR2,INI11;主机发复位脉冲持续3μs×200=600μs

SETBDAT;主机释放总线,口线改为输入

MOVR2,#30

IN12:DJNZR2,INI12;DS18B20等待2μs×30=60μs

CLRC

ORLC,DAT;DS18B20数据线变低(存在脉冲)吗?

JCINI10;DS18B20未准备好,重新初始化

MOVR6,#80

INI13:ORLC,DAT

JCINI14;DS18B20数据线变高,初始化成功

DJNZR6,INI13;数据线低电平可持续3μs×80=240μs

SJMPINI10;初始化失败,重来

INI14:MOVR2,#240

IN15:DJNZR2,INI15;DS18B20应答最少2μs×240=480μs

RET

;------------------------

WRITE:CLREA

MOVR3,#8;循环8次,写一个字节

WR11:SETBDAT

MOVR4,#8

RRCA;写入位从A中移到CY

CLRDAT

WR12:DJNZR4,WR12

;等待16μs

MOVDAT,C;命令字按位依次送给DS18B20

MOVR4,#20

WR13:DJNZR4,WR13

;保证写过程持续60μs

DJNZR3,WR11

;未送完一个字节继续

SETBDAT

RET

;------------------------

READ:CLREA

MOVR6,#8;循环8次,读一个字节

RD11:CLRDAT

MOVR4,#4

NOP;低电平持续2μs

SETBDAT;口线设为输入

RD12:DJNZR4,RD12

;等待8μs

MOVC,DAT

;主机按位依次读入DS18B20的数据

RRCA;读取的数据移入A

MOVR5,#30

RD13:DJNZR5,RD13

;保证读过程持续60μs

DJNZR6,RD11

;读完一个字节的数据,存入A中

SETBDAT

RET

;------------------------

主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。假设一线仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,可写出完成一次转换并读取温度值子程序GETWD。

GETWD:LCALLINIT

MOVA,#0CCH

LCALLWRITE;发跳过ROM命令

MOVA,#44H

LCALLWRITE;发启动转换命令

LCALLINIT

MOVA,#0CCH;发跳过ROM命令

LCALLWRITE

MOVA,#0BEH;发读存储器命令

LCALLWRITE

LCALLREAD

MOVWDLSB,A

;温度值低位字节送WDLSB

LCALLREAD

MOVWDMSB,A

;温度值高位字节送WDMSB

RET

……

子程序GETWD读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。

如果一线上挂接多个DS18B20、采用寄生电源连接方式、需要进行转换精度配置、高低限报警等,则子程序GETWD的编写就要复杂一些,限于篇幅,这一部分不再详述,请参阅相关内容。

我们已成功地将DS18B20应用于所开发的“家用采暖洗浴器”控制系统中,其转换速度快,转换精度高,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。4.4DS18B20的主要特性

1.1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电

1.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯

1.3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温

1.4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内

1.5、温范围-55℃~+125℃,在-10~+85℃时精度为±℃

1.6、可编程的分辨率为9~12位,对应的可分辨温度分别为℃、℃、℃和℃,可实现高精度测温

1.7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快

4.5DS18B20工作原理

DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1图3:DS18B20测温原理框图DS18B20有4个主要的数据部件:

(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以℃/LSB形式表达,其中S为符号位。表1:DS18B20温度值格式表

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于即可得到实际温度。

例如+125℃的数字输出为07D0H,+℃的数字输出为0191H,℃的数字输出为FF6FH,-55℃的数字输出为表2:DS18B20温度数据表

(3)DS18B20温度传感器的存储器

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

(4)配置寄存器该字节各位的意义如下:表3:配置寄存器结构TMR1R011111

低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)表4:温度分辨率设置表R1R0分辨率温度最大转换时间009位0110位1011位

375ms1112位

750ms

4.6高速暂存存储器

高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表2是对应的一部分温度值。第九个字节是冗余检验字节。表5:DS18B20暂存寄存器分布

寄存器内容字节地址温度值低位(LSByte)0温度值高位(MSByte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8

根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。表6:ROM指令表指令约定代码功能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)

符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。

搜索ROM0FOH用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。

跳过ROM0CCH

忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。

告警搜索命令0ECH

执行后只有温度超过设定值上限或下限的片子才做出响应。表6:RAM指令表指令约定代码功能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为)。结果存入内部9字节RAM中。

读暂存器

0BEH读内部RAM中9字节的内容

写暂存器

4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

复制暂存器

48H

将RAM中第3、4字节的内容复制到EEPROM中。

重调EEPROM

0B8H

将EEPROM中内容恢复到RAM中的第3、4字节。读供电方式0B4H

读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电DS1820发送

/*DS18b20温度传感器作为数据传输口

晶振:

*/

#include<reg51.H>

sbitDQ=P3^4;

inttemperature;

voiddelay(intus)

{ints;

for(s=0;s<us;s++);

}

voidrst(void)

{

DQ=1;

delay(2);

DQ=0;

delay(30);//精确延时480~960us

DQ=1;

delay(8);

}

unsignedintread(void)

{

inti=0;

unsignedintu=0;

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

{

DQ=0;

u>>=1;

DQ=1;

if(DQ)u|=0x8000;

delay(4);

}

return(u);

}

voidwrite(unsignedcharku)

{

inti=0;

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

{

DQ=0;

DQ=ku&0x01;

delay(3);

DQ=1;

ku>>=1;

}

}

voidread0(void)

{

//inttemperature;

unsignedinttp;

unsignedintlsb;

rst();

write(0xCC);

write(0x44);

rst();

write(0xCC);

write(0xBE);

tp=read();

lsb=(unsignedint)(tp*6.25);//

temperature=lsb/100;

}

voidmain(void)

{

while(1)

{

read0();

//读温度子程序读到的温度放在全局变量temperature中可以直接显示这个的内容

}第五章调试测试温度:0~100摄氏度。(模拟多点不同温度值环境)测试仪器及软件:数字万用表,温度计0~100摄氏度,串口调试助手。测试方法:目测。系统的调试以程序为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表或通电检测。软件调试可以先编写显示程序并进行营建的正确性检验,然后分别进主程序、读出温度子程序、温度转换命令子程序、显示数据刷新等子程序的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读写编程时必须严格地保证读写时序,否则将无法读取测量结果。本程序采用单片机C语言编写,用KEIL公司推出的集成开发环境keiluVision进行调试。KeilC51开发系统基本知识KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用。KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。KeilC51工具包的安装1.C51forDos2.C51forWindows的安装及注意事项:在Windows下运行软件包中WIN/Setup.exe,最好选择安装目录与C51forDos相同,这样设置最简单(设安装于C:/C51目录下)。然后将软件包中crack目录中的文件拷入C:/C51/Bin目录下。KeilC51工具包各部分功能及使用简介1.C51与A51(1)C51C51是C语言编译器,其使用方法为:C51sourcefile[编译控制指令]或者C51@commandfile其中sourcefile为C源文件(.C)。大量的编译控制指令完成C51编译器的全部功能。包控C51输出文件C.LST,.OBJ,.I和.SRC文件的控制。源文件(.C)的控制等,详见第五部分的具体介绍。而Commandfile为一个连接控制文件其内容包括:.C源文件及各编译控制指令,它没有固定的名字,开发人员可根据自己的习惯指定,它适于用控制指令较多的场合。(2)A51A51是汇编语言编译器,使用方法为:A51sourcefile[编译控制指令]或A51@commandfile其中sourcefile为汇编源文件(.asm或.a51),而编译控制指令的使用与其它汇编如ASM语言类似,可参考其他汇编语言材料。Commandfile同C51中的Commandfile类似,它使A51使用和修改方便。2.L51和BL51(1)L51L51是KeilC51软件包提供的连接/定位器,其功能是将编译生成的OBJ文件与库文件连接定位生成绝对目标文件(.ABS),其使用方法为:L51目标文件列表[库文件列表][tooutputfile][连接控制指令]或L51@Commandfile源程序的多个模块分别经C51与A51编译后生成多个OBJ文件,连接时,这些文件全列于目标文件列表中,作为输入文件,如果还需与库文件(.LiB)相连接,则库文件也必须列在其后。outputfile为输文件名,缺少时为第一模块名,后缀为.ABS。连接控制指令提供了连接定位时的所有控制功能。Commandfile为连接控制文件,其具体内容是包括了目标文件列表,库文件列表及输出文件、连接控制命令,以取代第一种繁琐的格式,由于目标模块库文件大多不止1个,因而第2种方法较多见,这个文件名字也可由使用者随意指定。(2)Bl51BL51也是C51软件包的连接/定位器,其具有L51的所有功能,此外它还具有以下3点特别之处:a.可以连接定位大于64kBytes的程序。b.具有代码域及域切换功能(CodeBanking&BankSwitching)c.可用于RTX51操作系统RTX51是一个实时多任务操作系统,它改变了传统的编程模式,甚至不必用main()函数,单片机系统软件向RTOS发展是一种趋势,这种趋势对于186和386及68K系列CPU更为明显和必须,对8051因CPU较为简单,程序结构等都不太复杂,RTX51作用显得不太突出,其专业版软件PK51软件包甚至不包括RTX51Full,而只有一个RTX51TINY版本的RTOS。RTX51TINY适用于无外部RAM的单片机系统,因而可用面很窄,在本文中不作介绍。Bankswitching技术因使用很少也不作介绍。3.DScope51,Tscope51及Monitor51(1)dScope51dScope51是一个源级调试器和模拟器,它可以调试由C51编译器、A51汇编器、PL/M-51编译器及ASM-51汇编器产生的程序。它不需目标板(forwindows也可通过mon51接目标板),只能进行软件模拟,但其功能强大,可模拟CPU及其外围器件,如内部串口,外部I/O及定时器等,能对嵌入式软件功能进行有效测试。其使用方法为:DS51[debugfile][INIT(initfile)]其中debugfile是一个Hex格式的8051文件,即待调试的文件其为可选的,可在进入dScope51后用load命令装入。Initfile为一个初使化文件,它在启动dScope51后,在debugfile装入前装入,装有一些dScope的初使化参数及常用调试函数等。下面是一个dScope.ini文件(fordos)的内容:Load../../ds51/8051.iofMap0,0xffffdScope51forWindows则直接用鼠标进入,然后用load装入待调文件。(2)tScope51与dScope51不同的是Scope51必须带目标板,目前它可以通过两种方式访问目标板。(1)通过EMul51在线仿真器,tScope51为该仿真器准备了一个动态连接文件EMUL51.IOT,但该方法必须配合该仿真器。(2)通过Monitov51监控程序,这种方法是可行的,tScope51为访问Monitor51专门带有MON51.IOT连接程序,使用时可通过串口及监控程序来调试目标板。其使用方法为:TS51[INIT(file_name.ini)]其中file_name.ini为一个初使化文件。进入TS51后,必须装入IOT文件,可用的有MON51.IOT及EMUL51.IOT两种,如装入MON51.IOT:Load.C:/C51/TS51/MON51.IOTCPUTYPE(80517)可惜的是tScope51只有forDos的版本。(3)Monitor51Monitor51是一个监控程序通过PC机的串口与目标板进行通信,Monitor操作需要MON51或dScope51forWindows,后面部分将对Monitor51做较为详细的介绍。4.Ishell及uVision(1)IshellforDos这是一个forDos的IDE,直接在命令行键入Ishell,则进入该环境,它使用简单方便。其命令行与DOS命令行具有同样的功能,对单模块的Project直接由菜单进行编译连接,对多模块的project。则通过批处理,BAT文件进行编译连接,然后通过菜单控制由dScope51或tScope51对程序进行调试,因为是fordos的,不做太详细介绍。(2)uVisionforWindowsuVisionforWindows是一个标准的Windows应用程序,它是C51的一个集成软件开发平台,具有源代码编辑、project管理、集成的make等功能,它的人机界面友好,操作方便,是开发者的首选。KeilC51软件使用详解5.4KeilC51编译器的控制指令5.C51编译器的控制指令C51编译器的控制指令分为三类:源文件控制类,目标文件控制类及列表控制类。1.源文件控制类NOEXTEND:C51源文件不允许使用ANSIC扩展功能。DEFINE(DF):定义预处理(在C51命令行)。2.目标文件(Object)控制类:COMPACTLARGESMALL选编译模式DEBUG(DB)包含调试信息,以供仿真器或dSCope51使用。NOAMAKE(NOAM)禁止AutoMake信息记录NOREGPARMS禁止用寄存器传递参数OBJECTEXTEND(OE)Object文件包含附加变量类型信息OPTIMIZE(OT)指定优化级别REGFILE(RF)指定一个寄存器使用的文件以供整体优化用REGISTERBANK(RB)指定一个供绝对寄存器访问的寄存器区名SRC不生成目标文件只生成汇编源文件其它控件不常用。3.列表文件(listing)控制类:CODE(CD):向列表文件加入汇编列表LISTINCLUDE(LC):显示indude文件SYMBOLS(SB):列表文件包括模块内所有符号的列表WARNINGLEVEL(WL):选择警告级别dScope51的使用1.dScope51forDos总的来说dScope51具有以下特性:高级语言显示模式集成硬件环境模拟单步或“GO执行模式存储器、寄存器及变量访问Watch表达式之值函数与信号功能5.5KeilC51库函数参考C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统。本征库函数(intrinsicroutines)和非本征证库函数C51提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALL和LCALL语句来实现,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALL及LCALL调用。C51的本征库函数只有9个,数目虽少,但都非常有用,列如下:_crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回_iror_,_irol_:将int型变量循环向左(右)移动指定位数后返回_lrol_,_lror_:将long型变量循环向左(右)移动指定位数后返回_nop_:相当于插入NOP_testbit_:相当于JBCbitvar测试该位变量并跳转同时清除。_chkfloat_:测试并返回源点数状态。使用时,必须包含#inclucle<intrins.h>一行。如不说明,下面谈到的库函数均指非本征库函数。几类重要库函数1.专用寄存器include文件例如8031、8051均为REG51.h其中包括了所有8051的SFR及其位定义,一般系统都必须包括本文件。2.绝对地址include文件absacc.h该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。3.动态内存分配函数,位于stdlib.h中4.缓冲区处理函数位于“string.h中其中包括拷贝比较移动等函数如:memccpymemchrmemcmpmemcpymemmovememset这样很方便地对缓冲区进行处理。5.输入输出流函数,位于“stdio.h中流函数通8051的串口或用户定义的I/O口读写数据,缺省为8051串口,如要修改,比如改为LCD显示,可修改lib目录中的getkey.c及putchar.c源文件,然后在库中替换它们即可。KeilC51库函数原型列表1.CTYPE.Hbitisalnum(charc);bitisalpha(charc);bitiscntrl(charc);bitisdigit(charc);bitisgraph(charc);bitislower(charc);bitisprint(charc);bitispunct(charc);bitisspace(charc);bitisupper(charc);bitisxdigit(charc);bittoascii(charc);bittoint(charc);chartolower(charc);char__tolower(charc);chartoupper(charc);char__toupper(charc);2.INTRINS.Hunsignedchar_crol_(unsignedcharc,unsignedcharb);unsignedchar_cror_(unsignedcharc,unsignedcharb);unsignedchar_chkfloat_(floatual);unsignedint_irol_(unsignedinti,unsignedcharb);unsignedint_iror_(unsignedinti,unsignedcharb);unsignedlong_irol_(unsignedlongl,unsignedcharb);unsignedlong_iror_(unsignedlongL,unsignedcharb);void_nop_(void);bit_testbit_(bitb);3.STDIO.Hchargetchar(void);char_getkey(void);char*gets(char*string,intlen);intprintf(constchar*fmtstr[,argument]);…charputchar(charc);intputs(constchar*string);intscanf(constchar*fmtstr.[,argument]);…intsprintf(char*buffer,constchar*fmtstr[;argument]);intsscanf(char*buffer,constchar*fmtstr[,argument]);charungetchar(charc);voidvprintf(constchar*fmtstr,char*argptr);voidvsprintf(char*buffer,constchar*fmtstr,char*argptr);4.STDLIB.Hfloatatof(void*string);intatoi(void*string);longatol(void*string);void*calloc(unsignedintnum,unsignedintlen);voidfree(voidxdata*p);voidinit_mempool(void*data*p,unsignedintsize);void*malloc(unsignedintsize);intrand(void);void*realloc(voidxdata*p,unsignedintsize);voidsrand(intseed);5.STRING.Hvoid*memccpy(void*dest,void*src,charc,intlen);void*memchr(void*buf,charc,intlen);charmemcmp(void*buf1,void*buf2,intlen);void*memcopy(void*dest,void*SRC,intlen);void*memmove(void*dest,void*src,intlen);void*memset(void*buf,charc,intlen);char*strcat(char*dest,char*src);char*strchr(constchar*string,charc);charstrcmp(char*string1,char*string2);char*strcpy(char*dest,char*src);intstrcspn(char*src,char*set);intstrlen(char*src);char*strncat(char8dest,char*src,intlen);charstrncmp(char*string1,char*string2,intlen);charstrncpy(char*dest,char*src,intlen);char*strpbrk(char*string,char*set);intstrpos(constchar*string,charc);char*strrchr(constchar*string,charc);char*strrpbrk(char*string,char*set);intstrrpos(constchar*string,charc);intstrspn(char*string,char*set);图5.1程序调试图1图5.2程序调试图2图5.3程序调试图35.6画硬件连线图工具Protel99SE(第二版)是Protel最新完成的视窗环境之印刷电路板设计系统。它凭藉着Protel99原有先进的设计平台,带来了更多既强大又有效用的新增功能,让您在具有最完整的功能特性之情况下,提升您设计上的品质与效率。而且不只是新的PCB增强功能让人兴奋而已,Protel99SE所内含的Protel99ServicePack2还包括一系列的系统问题的修正与改良。重要功能:Protel99SE的档案总管(DesignExplorer)提供多种类型的档案存贮格式(例如一般的Windows档案系统或MicrosoftAccess资料库档案格式)。工作层面的增加(包括32层布线层(SignalLayer)、16个内层电源接地层(Power/GroundPlane)、16层机构标示层(MechanicalLayer)与可以全部自订的层叠结构(LayerStack)与埋孔层对(DrillPair)设定。许多PCB工作编辑区的改良,如加强状态列的说明和具有自我调适能力的自动移镜功能(AutoPan)与防焊及钢板层的个别定义。提供7种新的设计规则(DesignRule)和5种设计规则锁定范围(Scope),并具有设计规则的汇入/汇出功能以及各种的设计规则报告资料输出之特性。新的PCB零件配置功能包括群组零件的定义,动态的鼠线最佳化和鼠线长度的动态分析提示。另外X与Y轴可分别定义的零件配置格点与简易的特殊范围划分,并提供零件安全间距的联机立即检查(ComponentClearancesOn-lineCheck)与整批的设计规则检查(BatchDRC)。全新的PCB强力组合列印(PowerPrint)功能。全新的CAMManager提升PCB后制程的能力支援。全新的3D拟真印刷电路板之浏览功能。全新加强AutoCAD档案格式的双向互转介面。提供全新的OrCAD格式的汇入介面。1)档案总管(DesignExplorer)操作介面的加强Protel独特的档案总管(DesignExplorer)提供强大的工具整合环境、文件管理和团队分工合作的特性。Protel99SE的DesignExplorer已加快您档案开启及关闭的速度,并减少网络拥塞与过多的网络广播(broadcast)与接收(receive)动作,并提供您两种存贮DDB整合设计档的选项,让您可将设计档存成简单的Windows档案系统格式或MicrosoftAccess资料库格式。2)PCB布线层、电源层及机构标示层的增加Protel99SE新增了很多工作层面,包括信号走线层,电源层和机构标示层,让您具有层面堆叠排列的定义能力和设定贯孔(Via)直接连接内层电源层的能力。也因为具有如此完整足够的自订能力,才能去应付现在及未来更严苛的设计需求。3)PCB工作编辑区的加强当您设计一个较复杂的PCB时,系统会时常去进行一些较琐碎的计算和分析,增加了您的工作时间。而现在Protel99SE的PCB编辑介面上,则加强了一些新的特性与功能,让您在PCB布线与编辑上更简单容易,缩短更多的处理时间,并得到更多的生产效益。重点提示:可直接对焊点(Pad)定义防焊与SMT钢板的扩充值(SolderMaskorPasterMaskExpand)可直接对贯孔(Via)定义防焊与SMT钢板的扩充值全新的Pad和Via的反遮罩(Tent)设定选项(所谓的Tent就是将防焊遮罩拿掉,也就是要盖绿漆)全新自动调适移镜(autopanning)速度的功能,提供您在任一倍率的画面下,皆能得到最平顺与最有弹性去调控的画面自动移镜效果所有画面出现的选单或表单都能依实际的数值来排序(避免有A1、A10…A19、A2、A20的排列情形)当光标移动在任何工作区上的物件时,状态列可显示更多详细的信息内容提供可以在单一的DDB档案内,增删其内部所含的个别零件库档案(当DDB含有很多LIB时)可按住CTRL键让物件的锁点功能(electricalgrid)暂时取消可按住ALT键让布线方式暂时从回避障碍物(AvoidObstacle)切换至忽略障碍物(IgnoreObstacle)的方式。开放零件的序号(Designator)与标注(Comment)的整体性编辑(Globalediting)功能提供犁穿方式(PlowThroughMode),可让走线摆置在已铺设的铜箔(Polygon)上面时,该铜箔立即自动避开该走线全新的圆弧绘制方式现在可以将尺寸标示物(Dimensions)、座标标示物(coordinates)和铜箔面(polygons)做分解(炸开)的动作即时信息特性4)PCB设计规则(DesignRule)的新增与加强Protel99SE提供非常多强大的设计规则来驱策PCB设计上必须依循的规范。Protel99为您的PCB设计了很多先进的生产制造所需之规则,让您很轻松地去建立和管理设计规则。而在Protel99SE则再新增一些设计规则与增加设计规则范围(Scope)可应用的参数要件,并让您具有汇入与汇出设计规则的功能和产生种设计规则的报告资料。5)加强PCB的零件配置(PlacementTools)功能一个好的零件配置是一个成功的PCB设计最重要的关键。使用Protel99SE新增强的零件配置工具,并紧密的结合被整合的零件配置之设计规则,让您轻易的完成零件的布局。6)新增的PCB强力组合列印功能(PCBPowerPrint)Protel99SE含有一个强大的列印新功能。PCB强力组合列印功能使您完全掌控所有的PCB列印处理。使用此功能可以让您去列印出您所想要的PCB层面组合。您还可以去设定列印的倍率与旋转方向,并进行精细清晰的列印前预览。7)加强设计配合制造(DFM)之功能设计印刷电路板只是产品制造过程的一部分。通常您需要花费整天的时间去建立和管理所有制造过程所需的文件档案。Protel99SE则增强许多的功能让您很容易的去制作出这些文件档案。8)新增3D拟真印刷电路板预览器(3DPCBViewer)为什么要等到您的板子做出来之后才去看它是长什么样子的呢?Protel99运用了一个非常复杂的3DPCB拟真技术,让您去预览和列印您PCB在零件组装后非常精致美观的立体影像。Protel99SE独特的3D拟真特性让您提前看到您完成后的板子外观。复杂的3D压制与塑型技术描绘出您精致美观的3DPCB影像,而不需要您去输入任何有关零件高度的参数资料。您还可以利用旋转和画面缩放,仔细去观察板子的各方位影像,或者也可以显示或隐藏零件、铜箔、网印面的线条资料或文字等。自检正常,各点温度显示正常,串口传输数据正确。成功地将DS18B20应用于所开发的“数字温度计”的控制系统中,其测温系统简单,测温精度高,连接方便,占用口线少,转换速度快,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期图5.4硬件连线画图工具图第六章设计总结通过本次温度监控系统的设计,我大有收获,在制作过程中,一定要注意的每个工作步骤的检查,确保制作成功。比如在合理布线,检查装配无误的情况下,如果还出现电路无输出的情况,那么可以肯定是原理图错误,这时就要回到原理图进行检查。总体的检查顺序应该是原理图、PCB图、装配情况、焊接工艺。从整体来说这是一个复杂的过程,要细心谨慎,沉着冷静,反复检查,直到找到原因为止。这次毕业设计历时至少1个月,从一开始的确定课题,到后来的资料查找、理论学习,再有就是近来的调试和测试过程,这一切都使我的理论知识和动手能力进一步得到频率合成电路课题中包含了通信电路和单片机部分知识,可以说是对通信电路知识的一次全面综合。在画原理图、PCB布线、安装和调试过程中不可避免地遇到各种问题,这要求保持沉着冷静,联系书本理论知识积极地思考,实在解决不了可以请教同学或指导老师。虽然在制作过程中不可避免地遇到很多问题,但是最后还是在老师以及同学的帮助下圆满解决了这些问题,实现了整个系统设计与最后调试,相关指标达到期望的要求,很好地完成了本次设计任务。经过三年学习的积累,在已经掌握相关专业方面知识及其它各方面知识的情况下,我认真严肃的完成了我的毕业设计。从得到题目到查找资料,从对题目的研究设定到PCB电路板的制作,从电路板的调试到失败后再一次全部重新开始……在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我四年学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做毕业设计的意义所在,和我一样真正投入了身心去做的人也一定会有同样的感触。致谢在本次毕业设计中,我得到了指导老师陈紫强的热心指导。自始至终关心督促毕业设计进程和进度。帮助解决毕业设计中遇到的许多问题。还不断向我们传授分析问题和解决问题的办法,并指出了正确的努力方向,使我在毕设过程中少走很多弯路。同时,他还提供给我们专门的各种设备及场所,在调试过程中能够有充足的时间。在这里非常感谢赵老师的指导和帮助,并致以诚挚的谢意!同时,身边的同学给了我许多的帮助。在此,我向身边关心我的同学致以诚挚的谢意!另外,系里的领导和老师也给了我们必要的指导,我也向系和年级的领导们表示衷心的感谢!最后感谢学院对我这几年的培养。参考文献[1]何立民.单片机应用系统设计系统配置与接口技术[M].北京航空航天大学,1990.[2[M].重庆:重庆大学出版社,2002.[3]徐爱钧.单片机高级语言C51应用程序设计[M].北京:电子工业出版社,2002.[4]谢自美.电子线路设计.实验.测试(第二版)[M].武汉:华中科技大学出版社,2000.[5]张勇.PROTEL99SE电路设计技术入门与应用(第一版).电子工业出版社,2002.[6]DS1820及高精度温度测量的实现振国电子技术应用2000.[7]数字温度传感器在仓库温度检测系统的应用东耀汪仁煌传感器世界2001.[8]DS18B20硬件连接及软件编程月霞孙传友传感器世界2001.[9]传感器实际应用电路设计贤武郑霞曲波成都电子科技大学出版社1997.[10]单线数字温度传感器的原理与应用伟正电子技术应用2000.[11]DS18B20硬件连接及软件编程周月霞孙传友传感器世界2001.附录附录一、原理图附录二、程序流程图图2中断服务程序框图附录三、程序清单#include<AT89C2051.H>#include<INTRINS.h>unsignedcharcodedisplaybit[]={0xfe,0xfd,0xfb,0xf7,//P3口的位选码//0xef,0xdf,0xbf,0x7f};unsignedcharcodedisplaycode[]={0x3f,0x06,0x5b,0x4f,//P1口的显示码//0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};unsignedcharcodedotcode[32]={0,3,6,9,12,16,19,22,25,28,31,34,38,41,44,48,50,53,56,59,63,66,69,72,75,78,81,84,88,91,94,97};unsignedchardisplaycount;unsignedchardisplaybuf[8]={16,16,16,16,16,16,16,16};unsignedchartimecount;unsignedcharreaddata[8];sbitDQ=P3^7;bitsflag;bitresetpulse(void)//初始化代码//{unsignedchari;DQ=0;for(i=255;i>0;i--);DQ=1;for(i=60;i>0;i--);return(DQ);for(i=200;i>0;i--);}voidwritecommandtods18b20(unsignedcharcommand)//写时序//{unsignedchari;unsignedcharj;for(i=0;i<8;i++){if((command&0x01)==0){DQ=0;for(j=35;j>0;j--);DQ=1;}else{DQ=0;for(j=2;j>0;j--);DQ=1;for(j=33;j>0;j--);}command=_cror_(command,1);}}unsignedcharreaddatafromds18b20(void)//读时序//{unsignedchari;unsignedcharj;unsignedchartemp;temp=0;for(i=0;i<8;i++){temp=_cror_(temp,1);DQ=0;_nop_();_nop_();DQ=1;for(j=10;j>0;j--);if(DQ==1){temp=temp|0x80;}else{temp=temp|0x00;}for(j=200;j>0;j--);}return(temp);}voidmain(void){TMOD=0x01;//定时器0方式1//TH0=(65536-4000)/256;TL0=(65536-4000)%256;ET0=1;//允许定时器0中断//EA=1;//允许全局中断//while(resetpulse());writecommandtods18b20(0xcc);writecommandtods18b20(0x44);TR0=1;while(1){;}}voidt0(void)interrupt1using0//定时器中断函数//{unsignedcharx;unsignedintresult;TH0=(65536-4000)/256;TL0=(65536-4000)%256;if(displaycount==2){P1=displaycode[displaybuf[displaycount]]|0x80;}else{P1=displaycode[displaybuf[displaycount]];//调用显示码//}P3=displaybit[displaycount];displaycount++;if(displaycount==8){displaycount=0;}timecount++;if(timecount==150){timecount=0;while(resetpulse());writecommandtods18b20(0xcc);writecommandtods18b20(0xbe);readdata[0]=readdatafromds18b20();readdata[1]=readdatafromds18b20();for(x=0;x<8;x++){displaybuf[x]=16;}sflag=0;if((readdata[1]&0xf8)!=0x00){sflag=1;readdata[1]=~readdata[1];readdata[0]=~readdata[0];result=readdata[0]+1;readdata[0]=result;if(result>255){readdata[1]++;}}readdata[1]=readdata[1]<<4;readdata[1]=readdata[1]&0x70;x=readdata[0];x=x>>4;x=x&0x0f;readdata[1]=readdata[1]|x;x=2;result=readdata[1];while(result/10){displaybuf[x]=result%10;//分离百,十,个位//result=result/10;x++;}displaybuf[x]=result;if(sflag==1){displaybuf[x+1]=17;}x=readdata[0]&0x0f;x=x<<1;displaybuf[0]=(dotcode[x])%10;displaybuf[1]=(dotcode[x])/10;while(resetpulse());writecommandtods18b20(0xcc);writecommandtods18b20(0x44);}}小产权房”并不是一个法律上的概念,它只是人们在社会实践中形成的一种约定俗成的称谓。目前通常所谓的“小产权房”,也称“乡产权房”,是指由乡镇政府而不是国家颁发产权证的房产。所以,“小产权”其实就是“乡产权”,它并不构成真正法律意义上的产权。说的再直白一些,“小产权房”是一些村集体组织或者开发商打着新农村建设等名义出售的、建筑在集体土地上的房屋或是由农民自行组织建造的“商品房”。目前的“小产权房”、“乡产权房”有两种:一种是在集体建设用地上建成的,即“宅基地”上建成的房子,只属于该农村的集体所有者,连外村农民都不能够买;另一种是在集体企业用地或者占用耕地违法建设的。和一般意义上的商品房相比,“小产权房”没有土地出让金概念,也没有开发商疯狂的利润攫取,所以,“小产权房”的价格,一般仅是同地区商品房价格的1/3甚至更低。这是大量城镇居民顶着产权风险购买“小产权房”的根本原因。法律属性那么,乡产权房的法律属性如何,其究竟是否合法、能否购买或转让?首先应当明确的是乡产权房只要依法办理了相关审批手续,其就是合法建筑,法律是允许乡村集体在集体土地上建造住宅的。因此,并非只要是乡产权房就是非法建筑,其只是因销售环节存在的一些问题和现行法律法规发生冲突,才让人误认为是非法建筑。

既然是合法的,那么乡产权房是否可以购买和转让呢?根据《中华人民共和国土地管理法》的规定,农民集体所有的土地的使用权不得出让、转让或者出租用于非农业建设。而农村宅基地属集体所有,村民对宅基地也只有享有使用权,农民将房屋卖给城市居民的买卖行为不能受到的法律认可与保护,也就不能办理土地使用证、房产证、契税证等合法手续。由此可见,乡产权房是不能向非本集体成员的第三人转让或出售的。但这并不是说乡产权房就不能转让,而是说其转让或销售的对象是有限制的,只能在集体成员内部是可以转让、置换。

小产权和大产权1、全部产权(大产权)

国务院《关于继续积极稳妥地进行城镇住房制度改革的通知》中规定:凡按市场价购买的公房,购房者能够拥有全部产权。市场价也就是住宅市场的行市价格或牌价价格。国家和地方政府不予压低和抬高,随行就市,任由买卖双方商定,只要双方能接受,即可成交。按照市场价购得住宅的房主,也就拥有了住宅的各项支配权利,也就是拥有了房屋、住宅的占有权、使用权、收益权和处分权。在这,房屋的全部产权与房屋的所有权是等同的,只不过是二者的提法有所不同。相对于“部分产权”而言,“全部产权”才有存在的意义。2、部分产权。(小产权)

小产权房”并不是一个法律上的概念,它只是人们在社会实践中形成的一种约定俗成的称谓。目前通常所谓的“小产权房”,也称“乡产权房”,是指由乡镇政府而不是国家颁发产权证的房产。所以,“小产权”其实就是“乡产权”,它并不构成真正法律意义上的产权。说的再直白一些,“小产权房”是一些村集体组织或者开发商打着新农村建设等名义出售的、建筑在集体土地上的房屋或是由农民自行组织建造的“商品房”。前的“小产权房”、“乡产权房”有两种:一种是在集体建设用地上建成的,即“宅基地”上建成的房子,只属于该农村的集体所有者,连外村农民都不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论