Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2003411
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类: LINUX

2009-12-12 16:15:06

/*
#include
#define uint unsigned int
uint yy[]={0xf7,0xfb,0xfd,0xfe,0xf7,0xfb,0xfd,0xfe,0xf7,0xfb};
#define wei P1
#define duan P2
uint dot[]={0x40,0x7c,0x09,0x03,0x26,0x12,0x10,0x47,0x00,0x02};//0-9共阳,带小数点
uint xx[]={0xc0,0xfc,0x89,0x83,0xa6,0x92,0x90,0xc7,0x80,0x82};//0-9共阳,不带小数点
void delay(uint z)
{
 uint x,y;
 for(x=11;x>0;x--)
  for(y=z;y>0;y--);
}
void main()
{
 uint aa=12345678;
 while(1)
 {
  
   wei=yy[0];
   duan=xx[0];
   delay(10);
   wei=yy[1];
   duan=xx[1];
   delay(10);
   wei=yy[2];
   duan=xx[2];
   delay(10);
   wei=yy[3];
   duan=xx[3];
   delay(10);
 
 }
}
*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define uint unsigned int
#define uchar unsigned char
uint ww[]={0xf7,0xfb,0xfd,0xfe,0xf7,0xfb,0xfd,0xfe,0xf7,0xfb};
#define wei P1
#define duan P2
uint dot[]={0x40,0x7c,0x09,0x03,0x26,0x12,0x10,0x47,0x00,0x02};//0-9共阳,带小数点
uint nodot[]={0xc0,0xfc,0x89,0x83,0xa6,0x92,0x90,0xc7,0x80,0x82};//0-9共阳,不带小数点
void delay_ms(uint z)
{
 uint x,y;
 for(x=11;x>0;x--)
  for(y=z;y>0;y--);
}
sbit DQ=P1^4; //数据传输线接单片机的相应的引脚
/*********************************定义全局变量******************************/
unsigned char tempL=0; //临时变量低位
unsigned char tempH=0; //临时变量高位
float temperature; //温度值
/****************************************************************************
函数功能:延时子程序
入口参数:k
出口参数:
****************************************************************************/
void delay(unsigned int k)
{
unsigned int n;
n=0;
while(n < k)
{n++;}
return;
}
/****************************************************************************
函数功能:数码管扫描延时子程序
入口参数:
出口参数:
****************************************************************************/
void delay1(void)
{
int k;
for(k=0;k<400;k++);
}
 
/****************************************************************************
函数功能:DS18B20初始化子程序
入口参数:
出口参数:
****************************************************************************/
Init_DS18B20(void)
{
unsigned char x=0;
DQ=1; //DQ先置高
delay(8); //延时
DQ=0; //发送复位脉冲
delay(85); //延时(>480ms)
DQ=1; //拉高数据线
delay(14); //等待(15~60ms)
}
/****************************************************************************
函数功能:向DS18B20读一字节数据
入口参数:
出口参数:dat
****************************************************************************/
ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat=0;
for (i=8;i>0;i--)
{
DQ=1;
delay(1);
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
/****************************************************************************
函数功能:向DS18B20写一字节数据
入口参数:dat
出口参数:
****************************************************************************/
WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
/****************************************************************************
函数功能:向DS18B20读温度值
入口参数:
出口参数:temperature
****************************************************************************/
float ReadTemperature(void)
{
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0x44); //启动温度转换
delay(125); //转换需要一点时间,延时
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0xbe); //读温度寄存器(头两个值分别为温度的低位和高位)
tempL=ReadOneChar(); //读出温度的低位LSB
tempH=ReadOneChar(); //读出温度的高位MSB
//温度转换,把高低位做相应的运算转化为实际温度
temperature=((tempH*256)+tempL)*0.0625;
delay(200);
return(temperature);
}
void display(float temperature )
{
/*
 temperature=ReadTemperature();
 LED7=tt[(int)(temperature/10)];
 LED6=tt1[(((int)temperature)%100)%10];
 LED5=tt[((int)(temperature*10))%10];
 */
int temp_shi;
int temp_ge;
int temp_dot;
temperature=ReadTemperature();
temp_shi=(int)(temperature/10);
temp_ge=((((int)temperature)%100)%10);
temp_dot=((int)(temperature*10))%10;
wei=ww[2];
duan=nodot[temp_shi];
delay_ms(60);
wei=ww[1];
duan=dot[temp_ge];
delay_ms(60);
wei=ww[0];
duan=nodot[temp_dot];
//delay_ms(5);
 
/*
wei=ww[2];
duan=nodot[2];
delay_ms(5);
wei=ww[1];
duan=dot[1];
delay_ms(5);
wei=ww[0];
duan=nodot[0];
delay_ms(5);
*/
}
/*
void init()
{
 LED0=0;
 LED1=0;
 LED2=0;
 LED3=0;
 LED4=0;
 LED5=0;
 LED6=0;
 LED7=0;
 
}
*/
void main()
{
 float i;
 //init();
 while(1)
 {
     display(i);
 //delay(500);
 }
 
}
阅读(2584) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~