单片机应用课程设计(电子时钟和温度测量,两份合集)绝对靠谱 -(6)

2019-03-27 16:52

中原工学院信息商务学院课程设计

3.2 DS18B20初始化

开始C51寄存器初始化N18B20存在?Y温度转换命令读取温度温度数据处理温度显示N温度比较超出范围?Y报警

图 5-2 DS18B20初始化流程图

3.3部分电路图设计 3.3.1 晶振设计

80C52单片机内部带有时钟电路,只需在片外通过XTAL1和XTAL2引脚接入定时控制元件(12MHZ晶振和电容)即可构成一个稳定的自激振荡器。XTAL1和XTAL2分别是80C52内部高增益反响放大器的输入端和输出端 时钟频率为 12MHz.

此部分为其使能和复位电路,该电路采用上电自动复位方式,通过复位电容

25

中原工学院信息商务学院课程设计

C1的充电来实现,接通电源就实现了系统的复位初始化。

3.3.2 报警电路设计

单片机一个引脚控制蜂鸣器,当温度超过设定的值时,他就可以报警,下图为PNP型三极管给低电平即可以实现报警。

3.4 软件流程图

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。

3.4.1 主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。

26

中原工学院信息商务学院课程设计

初始化 调用显示子程序 N 1S到? Y Y 初次上电 N 读出温度值温度计算处理显示数据刷新

发DS18B20 复位命令 发跳过ROM命令 发读取温度命令 读取操作,CRC校验 Y 发温度转换开始命令 结束 移入温度暂存器 N 9字节完? Y CRC校验正?N

3.12主程序流程图 图3-13 读温度流程图

3.4.2 读温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示

发DS18B20复位命令 发跳过ROM命令

发温度转换开始命令 27

结束 中原工学院信息商务学院课程设计

图3.13 温度转换流程图

3.4.3 温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图3.14所示

3.4.4 计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.15所示

开始 N 温度零下? Y N 温度数据移入显示寄存器 十位数0? 温度值取补码置置“+”标志 Y 百位数0? N 计算小数位温度BCD值 Y 十位数显示符号百位数显示数据(不显示符号) 计算整数位温度BCD值 百位数不显示

结束 结束 图3-14 计算温度流程图 图3-15显示数据刷新流程图

3.4.5软件总程序:

//DS18B20 的读写程序,数据脚

P2.5 //

28

中原工学院信息商务学院课程设计

//温度传感器18B20 汇编程序,采用器件默认的12 位转化//

//最大转化时间750 微秒,显示温度-55 到+125 度,显示精度//

//为0.1 度,显示采用4 位LED 共阳显示测温值//

//P0 口为段码输入,P20~P24 为位选//

/***************************************************/

#include \#include

\

//_nop_();延时函数用

#define dm P0 //段码输出口 #define uchar unsigned char #define uint unsigned int sbit DQ=P2^5; //温度输入口 sbit w0=P2^3; //数码管4 sbit w1=P2^2; //数码管3 sbit w2=P2^1; //数码管2 sbit w3=P2^0; //数码管1 sbit beep=P1^7; //蜂鸣器和指示灯

sbit set=P1^0; //温度设置切换键

sbit add=P1^1; //温度加 sbit dec=P1^2;

int temp1=0; //显示当前温度和设置温度的标志位为0 时显示当前温度

uint h; uint temp; uchar r;

uchar high=40,low=15;

uchar sign; uchar q=0; uchar tt=0; uchar scale;

//**************温度小数部分用查表法***********//

uchar

code

ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

//小数断码表 uchar

code

table_dm[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

//共阴LED 段码表\\不亮\

uchar

table_dm1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //个位带小数点的断码表

uchar data

temp_data[2]={0x00,0x00}; //读出

温度暂放

uchar

data

display[5]={0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4 个数据和一个运算暂用

/*****************11us 延时函数*************************/

void delay(uint t) {

for (;t>0;t--);

2


单片机应用课程设计(电子时钟和温度测量,两份合集)绝对靠谱 -(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中级财务会计大纲(管院64学时) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: