蓝桥杯备赛

本文介绍了参加蓝桥杯第六届省赛的单片机项目——温度记录器的设计思路与实现过程。内容包括模块划分、模式设计、界面布局,详细讲解了DS18B20和DS1302的底层代码实现,定时器配置,按键及数码管显示功能的编程。提供完整代码下载链接。
摘要由CSDN通过智能技术生成

Emmmm,第一次写博客,冲冲冲!!!

蓝桥杯单片机第六届省赛“温度记录器”

  先来看看题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、思路提炼

1、模块划分

    数码管、独立按键、DS18B20、DS1302、一个LED

2、模式划分

    参数设置
    时钟显示
    温度显示

3、界面划分

    参数设置界面
    时钟显示界面
    温度显示界面

二、程序过程实现

1、DS18B20底层代码

 比赛会提供一个选手资料包,里面有DS18B20的底层驱动代码,我们只需要修改一下就能使用了。
 由于时序的问题,需要将延时函数扩大12倍。

void Delay_onewire(unsigned int t )
{
	unsigned char i;
	while(t--){
	for(i=12;i>0;i--);
	};
}

接下来是需要自己写的代码
unsigned char rd_temperature()
{
	unsigned char LSB,MSB  // 分别读取高字节和低字节
	char temp  
	EA = 0;						//进行温度转换时关闭中断,避免干扰时序
	init_ds18b20();				//DS18B20复位
	Write_DS18B20(0xCC);		//写入字节0xCC,跳过ROM指令
	Write_DS18B20(0x44);		//写入字节0x44,开始温度转换
	Delay_onewire(200);			//延时700~900us
	init_ds18b20();				//DS18B20复位
	Write_DS18B20(0xCC);		//写入字节0xCC,跳过ROM指令
	Write_DS18B20(0xBE);		//写入字节0xBE,读取高速暂存器
	LSB = Read_DS18B20();   	//读取低8位
	MSB = Read_DS18B20();		//读取高8位

   	temp = MSB << 4;			//读取数据
	temp |= (LSB >> 4);

	EA = 1;

	return temp;
}

2、DS1302底层代码

unsigned char code a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值