资源简介
单片机实验板ds18b20控制,数码管显示温度
代码片段和文件信息
#include
#include“temp.h“
sbit baiweix=P2^4;
sbit shiweix=P2^5;
sbit geweix=P2^6;
sbit xiaoweix=P2^7;
unsigned char code table[]={0xc00xf90xa40xb00x990x920x820xf80x800x90} ;
unsigned char DisplayData[4];
//用来存放要显示的4位数的值
void LcdDisplay(int);
void DigDisplay();
void main()
{
while(1)
{
LcdDisplay(Ds18b20ReadTemp());
}
}
// LCD显示读取到的温度
void LcdDisplay(int temp) //lcd显示
{
float tp;
if(temp< 0) //当温度值为负数
{
DisplayData[0] = 0xbf; //显示负号
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*10+0.5;
//留yi个小数点就*10,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算由?.5,还是在小数点后面。
}
else
{
tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*0.0625*10+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算加上0.5,还是在小数点后面。
}
DisplayData[1] = table[temp / 1000];
DisplayData[2] = table[temp % 1000 / 100];
DisplayData[3] = table[temp % 100 / 10] & 0x7f;
DisplayData[4] = table[temp % 10 ];
// DisplayData[5] = DIG_CODE[temp % 10];
DigDisplay(); //扫描显示
}
// 使用数码管显示
void DigDisplay()
{
unsigned char i;
unsigned int j;
for(i=1;i<5;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(1):
baiweix=0;
P0=DisplayData[i];
j=50; //扫描间隔时间设定
while(j--);
P0=0xff;//消隐
baiweix=1;
break;//显示第1位
case(2):
shiweix=0;
P0=DisplayData[i];
j=50; //扫描间隔时间设定
while(j--);
P0=0xff;//消隐
shiweix=1;
break;//显示第2位
case(3):
geweix=0;
P0=DisplayData[i];
j=50; //扫描间隔时间设定
while(j--);
P0=0xff;//消隐
geweix=1;
break;//显示第3位
case(4):
xiaoweix=0;
P0=DisplayData[i];
j=50; //扫描间隔时间设定
while(j--);
P0=0xff;//消隐
xiaoweix=1;
break;//显示第4位
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2354 2016-12-29 12:12 数码管显示\main.c
文件 6367 2016-12-29 12:09 数码管显示\main.LST
文件 4522 2016-12-29 12:09 数码管显示\main.OBJ
文件 10428 2016-12-29 12:09 数码管显示\pro
文件 4380 2016-12-29 12:09 数码管显示\pro.hex
文件 53 2016-12-29 12:09 数码管显示\pro.lnp
文件 15106 2016-12-29 12:09 数码管显示\pro.M51
文件 1035 2016-12-29 12:12 数码管显示\pro.plg
....... 57394 2016-12-29 12:12 数码管显示\pro.uvopt
文件 13556 2013-09-02 13:54 数码管显示\pro.uvproj
....... 57433 2016-12-28 20:33 数码管显示\pro_uvopt.bak
文件 6376 2009-05-07 14:37 数码管显示\STARTUP.A51
文件 14048 2016-12-29 12:09 数码管显示\STARTUP.LST
文件 749 2016-12-29 12:09 数码管显示\STARTUP.OBJ
文件 3974 2016-12-28 20:14 数码管显示\temp.c
文件 448 2016-12-29 12:05 数码管显示\temp.h
文件 7925 2016-12-29 12:09 数码管显示\temp.LST
文件 5652 2016-12-29 12:09 数码管显示\temp.OBJ
目录 0 2016-12-29 12:12 数码管显示
----------- --------- ---------- ----- ----
211800 19
相关资源
- DS18B20 STC1T系列单片机驱动程序
- 单片机程序DS18B20-液晶1602显示温度和
- 51单片机DS18B20程序及proteus仿真
- 基于VHDL控制的DS18B20温度测量程序
- 2线DS18B20程序 二线DS18B20程序 18B20寄生
- 单片机c51设计简易计算器数码管显示
- 基于DSP2812的DS18B20温度采集
- 基于单片机的温室大棚温湿度亮度自
- DS18B20中文资料--新版.pdf
- 51单片机 经典4位数码管显示,带闪烁
- 单片机控制冒泡排序 数码管显示
- DS18B20温度采集+串口发送+模块化编程
- 四位数码管+DS3231做电子时钟源码.in
- 4位串行595数码管资料
- 电子万年历制作 数码管显示
- 基于STM32的温控系统原理图
- 驱动7段LED数码管实验
- TM1620测试程序
- ADC基于stm32的电压电流采集.用4位8段数
- MSP430F149+DS18B20+1602程序绝对好用
- 数字电压表的源代码及PROTEUS仿真5V
- PID方式PWM输出温度控制stc12c5a+ds18b20
- DS18b20的VHDL程序
- dS18b20的C8051F020程序
- EDA实现8位数码管动态扫描实验
- 51单片机的数字温度,使用DS18B20,数
- msp430 模块程序 包括DS18B20 PS2 串口 电
- 七段共阴极数码管引脚及原理
- 138译码器控制数码管位选的1到999显示
- 基于C8051F020的ds18b20的驱动程序,包可
评论
共有 条评论