标题:
stm8的18b20温度显示程序
[打印本页]
作者:
XD1860
时间:
2017-12-4 20:14
标题:
stm8的18b20温度显示程序
基于stm8的18B20温度显示程序
单片机源程序如下:
#include"stm8s.h"
#include"Cry12864.h"
#include"temp.h"
#include"tim1.h"
void LcdDisplay(int temp) ;
uint a;
void main( void )
{ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//内部时钟1分频16m
Ini_Lcd();//液晶初始化
Tim1_Init();//时钟初始化
while(1)
{LcdDisplay(Ds18b20ReadTemp());
}
}
/*******************************************************************************
* 函数名 : LcdDisplay()
* 函数功能 : LCD显示读取到的温度
* 输入 : v
* 输出 : 无
*******************************************************************************/
void LcdDisplay(int temp) //lcd显示
{
unsigned char datas[] = {0, 0, 0, 0, 0}; //定义数组
float tp;
if(temp< 0) //当温度值为负数
{
Write_Cmd(0x80); //写地址 80表示初始地址
Write_Data('-'); //显示负
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算由?.5,还是在小数点后面。
}
else
{
Write_Cmd(0x80); //写地址 80表示初始地址
Write_Data('+'); //显示正
tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算加上0.5,还是在小数点后面。
}
datas[0] = temp / 10000;
datas[1] = temp % 10000 / 1000;
datas[2] = temp % 1000 / 100;
datas[3] = temp % 100 / 10;
datas[4] = temp % 10;
Write_Cmd(0x82); //写地址 80表示初始地址
Write_Data(0x30+datas[0]); //百位
//LcdWriteCom(0x83); //写地址 80表示初始地址
Write_Data(0x30+datas[1]); //十位
//LcdWriteCom(0x84); //写地址 80表示初始地址
Write_Data(0x30+datas[2]); //个位
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
stm8温度显示.rar
(821.4 KB, 下载次数: 102)
2017-12-4 20:13 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xuwuyang
时间:
2020-5-17 10:11
不错,学习了!
作者:
xyllovezuu
时间:
2020-8-25 12:34
正好需要,谢谢分享学习
作者:
xuexi100
时间:
2021-1-20 19:31
感谢分享宝贵资料,学习学习
作者:
ccnnzz315
时间:
2021-1-26 10:11
楼主你好,这个电脑上应该装什么软件能打开你的程序
作者:
wenshengzhu
时间:
2021-1-30 12:16
这是用stm8做的吗?具体单片机的型号如何
作者:
wenshengzhu
时间:
2021-1-31 22:28
请问楼主#define LCD_PSB_H GPIOG->ODR|=0x08 //PD0拉高
#define LCD_CSB_L GPIOG->ODR&=~0x08 //PD0拉低
这是定义的lcd1602上的什么东西
作者:
jack-tommy
时间:
2021-2-2 17:45
宝贵资料,学习学习
作者:
1588848
时间:
2021-7-25 20:56
temp=tp*0.0625*100+0.5; 编译警告
Warning[Pa093]: implicit conversion from floating point to integer
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1