云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 课程设计--基于51单片机与DS18B20的数字温度计设计

课程设计--基于51单片机与DS18B20的数字温度计设计

  • 62 次阅读
  • 3 次下载
  • 2025/7/1 2:31:43

Y

Y

Y

N

Y

N

Y

N

Y

N

N

Y

N

N

Y

N

图19 温度设定、报警模块流程图

5.6 数码管驱动模块

本设计数码管通过锁存器接单片机P0口,采用动态扫描驱动7段LED数码管进行显示,需调用延时子程序以稳定显示。 模块流程图如下:

图20 数码管驱动模块流程图

6 源程序

#include

#define uchar unsigned char #define uint unsigned int

/*************************变量定义************************************/ sbit DQ=P2^2;//ds18b20 端口 sbit beep=P2^3;//蜂鸣器使能端 sbit dula=P2^6;//数码管段选使能 sbit wela=P2^7;//数码管位选使能 sbit add=P3^5;//加键 sbit sub=P3^4;//减键

sbit alarm=P3^6;//设定报警功能键

sbit record=P3^7;//查询温度记录功能键 uchar code tabled[]={

0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, //0~9的七段数码管段码 0x40,0x63,0x39};//- c 的段码

uchar code tablew[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};//1~8个数码管的位选码 uchar recordtable[10];//存储过去的十个温度值 uchar temperature;//温度值

uchar countsec,recordnum,count;//计数变量 uint countmin;//计数变量

uchar alanum=30;//报警温度值,初始值为30摄氏度 uchar z=65;//消抖延时函数入口参数

/**********************函数声明***************************************/ void delay1(uchar MS);//动态扫描延时子程序 void delay(uchar i);//DS18B20工作延时子程序 void Init_DS18B20();//DS18B20初始化子程序

void WriteOneChar(unsigned char dat);//向DS18B20写一字节数据 uchar ReadOneChar(void);//向DS18B20读一字节数据 void GetTemperature();//由DS18B20产生温度值

void Display(uchar wei,uchar duan);//数码管驱动子程序 void Alarm();//温度报警

void Showtemperature(uchar tt);//温度显示 void Keeprecord();//记录温度值

void Showrecord();//显示记录的温度值

/*********************主函数*******************************************/ void main() { TMOD=0x01;//定时器初始化,定时器0方式1 TH0=(65536-50000)/256;//50ms TL0=(65536-50000)%6; EA=1;//开中断

ET0=1;

TR0=1;//启动定时器 while(1) {

Showtemperature(temperature);//显示实时温度 Alarm();//温度设定、报警 Showrecord();//查询温度记录值 } }

/************************动态扫描延时函数********************************/ void delay1(uchar MS) { int i,j; for(i=80;i>0;i--) for(j=MS;j>0;j--); }

/************************DS18B20工作延时函数*****************************/ void delay(uchar i) {

while(i--); }

/*************************DS18B20初始化函数******************************/ void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 delay(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay(10); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5); while(!x) { x=DQ; } }

/*************************读一个字节**************************************/ uchar ReadOneChar(void) {

unsigned char i=0;

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Y Y Y N Y N Y N Y N N Y N N Y N 图19 温度设定、报警模块流程图 5.6 数码管驱动模块 本设计数码管通过锁存器接单片机P0口,采用动态扫描驱动7段LED数码管进行显示,需调用延时子程序以稳定显示。 模块流程图如下:

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com