黄淮学院综合实验报告
——单片机课程设计
学生姓名:
学 号: ,
所在院(系):电子科学与工程系
班 级:电子科学与技术1201B班
专 业: 电子科学与技术
指导老师:
实验题目:电子温度计设计与调试实验
一、实验要求与目的
1、设计要求
1、了解一线总线技术在单片机系统中的应用。
2、熟悉数字温度传感器DS18B20扩展接口和编程方法。
3、掌握单片机应用系统开发步骤和方法。
2、实验目的
1、 利用Proteus软件设计仿真电路原理图。
2、 系统控制能够完成:
(1) 每隔1s,读取温度传感器数据,并转换结果从串口送到虚拟终端显示。
(2) 设计一温度报警电路,当温度≤20℃或≥28℃时,有声、光、文字提示。要求上限报警和下限报警具有明显的区别。报警器件选择
建议
关于小区增设电动车充电建议给教师的建议PDF智慧城市建议书pdf给教师的36条建议下载税则修订调整建议表下载
:声-蜂鸣器;光-LED;文字-LED显示器或LCD显示器。
2、实验原理
实验电路原理图:
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机;8重达林顿反相驱动器ULN2803包含8个NPN达林顿管,是一种大功率驱动芯片,多用于智能仪器、PLC、步进电机控制,具有工作电压高,电路增益高,可以提供大功率负载的特点,适应于各种功率驱动电路;数码管显示模块能显示电机的转速和电机的运动趋势,方便直观。
软件主要模块流程图:
3、设计思路
本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~125℃,最高分辨率可达0.0625℃。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的热点。
单片机89C52是本设计中的控制核心,是一个40管脚的集成芯片构成。引脚部分:单片机引脚基本电路部分与普通设计无异,40脚接Vcc+5V,20脚接地。X1,X2两脚接12MHZ的晶振,可得单片机机器周期为1微秒。RST脚外延一个RST复位键,一端通过10K电阻接Vcc,一端通过10K电阻接地。AT89S52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash 存储器。
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小。
四、实验内容
1、打开ISIS 7 Professional,参照按照实验要求设计仿真电路原理图。
2、编写程序实现:DS18B20的读写系统控制。
5、实验数据记录
开始时
调到10时
调到30时
调到60时
编写的程序如下:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P2^7;
uchar T;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void delay1(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay(uint N)//廷迟时间为(24+N*16)us
{
int i;
for(i=0;i>= 1; //右移一位
}
}
uchar read()
{
uint i, value=0;
DQ=1;
_nop_(); //一个机器周期:(1/11.0952(即晶振频率))*12=1.085us
for (i=0; i<8; i++)
{
value = value>>1; //15us 之内必须读完一位
DQ = 0; //设i=0 :value=0101 0101 >>1 得到:0010 1010
_nop_(); // 读到的DQ=1,0010 1010|1000 0000=1010 1010
_nop_(); // i=1: value=01010101
DQ = 1; //读到的DQ=0, value=01010101
_nop_(); //i=2: value=0010 1010
_nop_();
if (DQ) //先读最低位
value|=0x80;
delay(2); // 56us
DQ=1;
}
return(value);
}
void display(uchar num)
{
uchar a,b;
a=num/10;
b=num%10;
P0=table[a];
P2=0xfe;
delay1(5);
P2=0xff;
delay1(5);
P0=table[b];
P2=0xfd;
delay1(5);
P2=0xff;
delay1(5);
}
uchar read_wen_du()
{
uchar HB,LB,temp;
init(); // 复位
write(0xcc); // 跳过ROM 即不必读64位序列号的ROM
write(0x44); // 启动温度转换
init();
write(0xcc); // 跳过ROM 即不必读64位序列号的ROM
write(0xbe); // 读命令
LB=read(); // 低八位 1011 1010
HB=read(); // 高八位 1111 1010
HB=HB<<4; // 1011 000
HB+=(LB&0XF0)>>4; // (LB&0xF0)=1011 0000 >>4 :0000 1011 +HB :1010 1011
temp=HB;
return temp; // 返回温度值
}
void main()
{
while(1)
{ T=read_wen_du();
display(T);
}
}
六、实验总结
通过本次试验我进一步了解了一线总线技术在单片机系统中的应用,并熟悉了数字温度传感器DS18B20扩展接口和编程方法。同时掌握了单片机应用系统开发步骤和方法。然后利用其操作方法进行并完成了电子温度计设计与调试实验。
7、实验心得
通过本次试验课,我们进一步熟悉了运用Proteus软件进行仿真调试,使我对这个软件应用更加熟悉准确,使我掌握了在嵌入式试验中仿真和调试的办法,以及最终实现实验的过程,并让我对Proteus这个软件有了更深入的了解。
八、指导教师评语和成绩评定:
实验报告成绩:
指导教师签字:
年 月 日