/***************************************************************************
星梦电子
更多资料请点击:
http://shop66571709.m.taobao.com
QQ:1027733767
QQ讨论群:145504983
******************************************************************************/
//头文件:
#include "reg51.h"
#include "ds18b20.h" //引入DS18B20头文件
//变量定义:
unsigned char ly_dis[4];//定义显示缓冲区
unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6};
//表:共阳数码管 0-9 C
//引脚定义:
sbit SMG_q = P1^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)
//函数声明:
void display(void);//显示函数,显示缓冲区内容
void delay(void);
//主函数,C语言的入口函数:
void main()
{
unsigned int i=0;
char ltemp;
while(1){
if(i==0) //先发转换命令,再读数值,以减少速度慢带来的显示抖动
tmpchange(); //温度转换
if(i==100){
ltemp=tmp()/16; //得到十进制温度值,因为DS18B20可以精确到0.0625度,这里取整数显示
if(ltemp<0){ //判断第一位显示整数还是负号
ly_dis[0]=0xbf;
ltemp=0-ltemp;
}
else
ly_dis[0]=ltemp/100;//显示百位值
ltemp=ltemp%100;
ly_dis[1]=ltemp/10; //显示温度十位值
ly_dis[2]=ltemp%10; //显示温度个位值
ly_dis[3]=10; //最后一位显示一个C单位
}
i++;
if(i==3000) //3000一个读取周期
i=0;
display(); //调用显示
}
}
//显示函数,显示缓冲区内容
void display(void)
{
SMG_q=0; //选择千位数码管
P0=table[ly_dis[0]];
delay(); //
P0=0XFF; //
SMG_q=1; //
SMG_b=0; //选择百位数码管
P0=table[ly_dis[1]];//
delay(); //延时
P0=0XFF; //
SMG_b=1; //
SMG_s=0; //选择十位数码管
P0=table[ly_dis[2]];//
delay(); //
P0=0XFF; //
SMG_s=1; //
SMG_g=0; //选择个位数码管,
P0=table[ly_dis[3]];//
delay(); //
P0=0XFF; //
SMG_g=1; //
}
//延时子函数,短暂延时
void delay(void){
unsigned char i=10;
while(i--);
}
xiyuan375
- 粉丝: 3
- 资源: 17
最新资源
- java毕业设计-基于SSM框架的传统服饰文化体验平台【代码+部署教程】
- 优化领域的模拟退火算法详解与实战
- NewFileTime-x64.zip.fgpg
- 基于Python和HTML的Chinese-estate-helper房地产爬虫及可视化设计源码
- 基于SpringBoot2.7.7的当当书城Java后端设计源码
- 基于Python和Go语言的开发工具集成与验证设计源码
- 基于Python与JavaScript的国内供应商管理系统设计源码
- aspose.words-20.12-jdk17
- 基于czsc库的Python时间序列分析设计源码
- 基于Java、CSS、JavaScript、HTML的跨语言智联平台设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈