单片机论文 数字温度计Word文档格式.docx
- 文档编号:18964516
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:220.94KB
单片机论文 数字温度计Word文档格式.docx
《单片机论文 数字温度计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机论文 数字温度计Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
方法是:
右键选中工程,选择Addnewtoproject-library-schematiclibrary在第四象限画出需要的元件。
4)左边的显示栏左下角选择file,并选择最下面的PCBBoardwizard新建一块PCB板。
(修改相应的参数:
keepoutdistancefromboardedge改为0,powerplanes改为0,即可看到一块PCB板。
)
5)在新建的PCB板中右键选择option中的boardoption修改相应的参数。
6)保存原理图和PCB板。
7)回到原理图界面,选择design的第一项update…在弹出的对话框中勾掉最后两项依次点击第一个按键和第二个按键,完成元件导入PCB板的过程。
8)对元器件布局。
9)设置自动布线规则,选择design-rules-routing-width右键选择newrule,设定两个布线规则,一个是all一个是VCCorGND,其中,all的线宽是10,VCCorGND的线宽是25,并且优先级高。
10)开始自动布线,选择autoroute-all。
11)对显示器部分的线进行手动布线,对其他部分不太好看的线用手动布线调整。
12)裁剪板子design-boardshape中的第一项。
13)
背板布地。
(二)用proteus仿真
Proteus是英国Labcenterelectronics公司研发的EDA设计软件,是一个基于ProSPICE混合模型仿真器的,完整的嵌入式系统软、硬件设计仿真下台。
Proteus不仅可以做数字电路、模拟电路、数模混合电路的仿真,还可进行多种CPU的仿真,涵盖了51、PIC、AVR、HCll、ARM等处理器,真正实现了在计算机上从原理设计、电路分析、系统仿真、测试到PCB板完整的电子设计,实现了从概念到产品的全过程。
ProteusISIS的工作界而是一种标准的Windows界面。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
设计步骤如下:
1)新建一个仿真文件,选择file-newdesign,在弹出的对话框中选择第一个空白的。
2)点那个“P”的按钮选择元器件,绘制仿真原理图,部分电路可以省略,编制。
3)等到程序编好后点击图上的单片机,选择程序的.Hex文件将程序放入单片机中即可进行仿真,就能看到显示屏上显示的温度。
2、用uvision编写程序:
1)打开uvision,新建一个工程,project-newuvisionproject,选择一个位置保存
2)新建一个.c文件,选择file-new
3)添加代码并保存。
4)将.c文件添加到工程中去,方法是右键单击sourcegroup1选择addfiletogroup..在弹出的对话框中选择刚才的.c文件
5)编译,并点击倒数第三个targetoption按钮,在output选项中勾选creatHEXfile生成.HEX文件(此文件即可用于上面所说的仿真中)
(三)用KeiluVision2编译
Keil软件是美国KeilSoftware公司出品的51系列兼容单片机C语言和汇编语言软件开发系统,而且是目前最流行开发MCS-51系列单片机的软件。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
1)建立一个新工程,单击Project菜单,在弹出的下拉菜单中选中NewProject选项
2)选择要保存的路径,输入工程文件的名字,然后点击保存
3)这时会弹出一个对话框,根据需要使用的单片机来选择要求的型号,KEILC51几乎支持所有的51核的单片机,实验中选择Atmel的89C51,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定完成
4)单击“File”菜单,再在下拉菜单中单击“New”选项
5)单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);
如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮。
6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出下拉菜单中单击“AddFiletoGroupSourceGroup1”选中上一步中保存的文件,然后单击“Add
”再单击“Close”,则在“SourceGroup1”文件夹中多一个子项。
7)在*.C文件中输入源代码
8)点击Project->
Buildtarget或者使用快捷键F9,编译工程。
当OutputWindows中提示“0Error”时,则程序编译成功,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5),生成可执行文件l.HEX
9)单击“Project”菜单,再在下拉菜单中单击“OptionsforTarget‘Target1’”再单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。
把程序下载到Proteus软件中的AT89S51单片机中。
(四)下载和调试
1)按照电路板布局,将相应的元器件完整无错地焊接到电路板上。
(尽量不使用松香)。
2)在电脑上安装SmartPRO_Programmer_Setup.EXE驱动。
3)用SmartPROX5编程器连接SmartPROProgrammer软件,在SmartPROProgrammer软件界面下,点击芯片>
选择芯片,选择AT89C51芯片,然后点击操作一键通,将AT89C51单片机先进行擦除,再将*.HEX文件下载到AT89C51单片机上。
4)将AT89C51插回电路板上,用USB连接电脑进行供电,适当调节电位器,LCD显示器则可以显示温度变化。
【程序代码】
#include<
reg51.h>
intrins.h>
absacc.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P2^0;
sbitRS=P3^5;
sbitRW=P3^6;
sbitE=P3^7;
sbitLED=P3^0;
uchartemp_data_l,temp_data_h;
ucharcodeLCDData[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
ucharcodeditab[16]={0x30,0x31,0x31,0x32,0x33,0x33,0x34,0x34,0x35,0x36,
0x36,0x37,0x38,0x38,0x39,0x39};
ucharcodetable2[16]={0x74,0x65,0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,
0x65,0x20,0x69,0x53,0x20,0x3a};
uchardisplay[7]={0x00,0x00,0x00,0x2e,0x00,0xdf,0x43};
voiddelay(uintN)
{
uinti;
for(i=0;
i<
N;
i++);
}
bitresetpulse(void)
DQ=0;
delay(40);
DQ=1;
delay(4);
return(DQ);
voidds18b20_init(void)
while
(1)
{
if(!
resetpulse())
{
DQ=1;
delay(40);
break;
}
else
resetpulse();
}
ucharread_bit(void)
_nop_();
ucharread_byte(void)
uchari,shift,temp;
shift=1;
temp=0;
8;
i++)
if(read_bit())
temp=temp+(shift<
<
i);
delay(7);
return(temp);
voidwrite_bit(uchartemp)
if(temp==1)
delay(5);
voidwrite_byte(ucharval)
uchari,temp;
temp=val>
>
i;
temp=temp&
0x01;
write_bit(temp);
voidread_T(void)
ds18b20_init();
write_byte(0xCC);
write_byte(0x44);
delay(50);
write_byte(0xBE);
temp_data_l=read_byte();
temp_data_h=read_byte();
voidcheck_busy(void)
P1=0xff;
E=0;
RS=0;
RW=1;
E=1;
if((P1&
0x80)==0)
break;
voidwrite_command(uchartempdata)
RW=0;
P1=tempdata;
check_busy();
voidwrite_data(uchartempdata)
E=0;
RS=1;
voidconvert_T()
uchartemp;
if((temp_data_h&
0xf0)==0xf0)
temp_data_l=~temp_data_l;
if(temp_data_l==0xff)
temp_data_l=temp_data_l+0x01;
temp_data_h=~temp_data_h;
temp_data_h=temp_data_h+0x01;
}
else
display[4]=ditab[temp_data_l&
0x0f];
temp=((temp_data_l&
0xf0)>
4)|((temp_data_h&
0x0f)<
4);
display[0]=0x2d;
display[1]=LCDData[(temp%100)/10];
display[2]=LCDData[(temp%100)%10];
{
display[4]=ditab[temp_data_l&
display[0]=LCDData[temp/100];
voidinit()
write_command(0x01);
write_command(0x38);
write_command(0x0C);
write_command(0x06);
voiddisplay_T(void)
uchari;
write_command(0x80);
16;
write_data(table2[i]);
write_command(0xc0);
7;
write_data(display[i]);
}
voidmain(void)
init();
delay(60000);
LED=~LED;
delay
(1);
delay(10);
read_T();
convert_T();
display_T();
五、实验总结
通过几天的单片机实验,终于完成了我们的数字温度计。
本次实验利用了传感器DS18B20,再辅之以部分外围电路实现对环境温度的测控,性能稳定,精度教高,而且扩展性能很强大。
由于DS18B20的测量精度只有±
0.5度,往往很多场合需要更加确的温度,在所测温度精度不变的基础上必须对数据进行校正。
由于DS18B20是基于带隙结构的数字式温度传感器,它的测温精度较高,但存在着一定的误差不过其误差在时间和外部环境变化的条件下保持相当高的稳定性。
它充分利用监控计算机的处理能力,在监控计算机上用线性插补的数学方法对其进行误差校正补偿,能轻易地将其提高其精度。
在本次实验的过程中,我发现很多的问题,虽然以前还做过这样的实验,但这次实验真的让我长进了很多,单片机C语言课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,有好多的东西,只有我们去试着做了,才能真正的掌握。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机论文 数字温度计 单片机 论文 数字 温度计