/*******************************************************
* 程序名称:main.c
* 程序功能:主程序文件
* 程序作者:吴鉴鹰
* 创建时间:2014-3-10
* 修改时间:
* 程序版本:V0.1
******************************************************/
#include "reg51.h" // SFR declarations
#include "stdio.h"
#include "INTRINS.H"
#include "inc/hc595.h"
#include "inc/delay.h"
#define uchar unsigned char
#define uint unsigned int
code unsigned char ucDataOneTab[10] = {0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,0x6f};
//uchar code LEDSEG1[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xc6,0X89};//0~9,C,H,正
uchar code LEDSEG2[]= {0xC0,0xCF,0xA4,0x86,0x8B,0x92,0x90,0xC7,0x80,0x82,0xF0,0X89};//0~9,C,H,倒
code unsigned char ucDataTwoTab[8] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
sbit DQ = P2^4;
uchar disbuf[8] = {0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07};
/************************************************/
//延时函数
/************************************************/
void delay(unsigned int k)
{
while(k--);
}
/******************************************************
*程序:Init_DS18B20(void)
** 功能描述: //初始化函数
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 06.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
Init_DS18B20(void)
{
DQ=1;
delay(1);
DQ=0;
delay(660);
DQ=1;
while(DQ);
delay(660);
DQ=1;
}
/******************************************************
*程序:ReadOneChar(void)
** 功能描述: 读一个字节
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 06.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
ReadOneChar(void)
{
unsigned char i,dat;
DQ=1;
delay(1);
for(i=8;i>0;i--)
{
DQ=0;
delay(1);
DQ=1;
dat>>=1;
delay(11);
if(DQ)
dat|=0x80;
delay(68);
DQ=1;
delay(1);
}
return(dat);
}
/******************************************************
*程序:WriteOneChar(unsigned char dat)
** 功能描述: //写一个字节
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 06.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
WriteOneChar(unsigned char dat)
{
unsigned int a=0;
for(a=8;a>0;a--)
{
DQ = 0;
DQ = dat&0x01;
delay(74);
DQ = 1;
dat>>=1;
delay(1);
}
delay(65);
}
/******************************************************
*程序:void inttohex(uint t)
** 功能描述: //读取温度
** //读温度值(低位放tempL;高位放tempH;温度值存在temperature.)
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 06.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
ReadTemperature(void)
{
unsigned char tempL = 0;
unsigned char tempH = 0;
float temperature; //温度值保存在temperature里
uint Ttemp;
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0x44); //启动温度转换
delay(1500); //转换需要一点时间,延时 加大延时原来是 delay(125);
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0xbe); //读温度寄存器(头两个值分别为温度的低位和高位)
tempL = ReadOneChar(); //读出温度的低位LSB
tempH = ReadOneChar(); //读出温度的高位MSB
//temperature = ((tempH*256)+tempL)*0.0625; //温度转换,把高低位做相应的运算转化为实际温度
// delay(200);
//Ttemp = (uint)(temperature*100);
Ttemp = (uint)((tempH<<8)|tempL);
return(Ttemp);
}
/******************************************************
*程序:void inttohex(uint t)
** 功能描述: //数据格式转化 //这里只提供正温度的显示
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 06.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
void inttohex(uint t)
{
/*uint temp,reg;
bit floatflag,floatflag1;
if((t/100)<10)
{
floatflag=1;//判断小数点位置
}
else
{
floatflag1=1;
}
temp=t/1000;
reg=t%1000;
disbuf[2]=ucDataOneTab[temp];
if(floatflag)
{
// disbuf[2] |= 0x80;
floatflag=0;
}
temp=reg/100;
disbuf[3]=ucDataOneTab[temp];
if(floatflag1)
{
//disbuf[3] |= 0x80;
floatflag1=0;
}
temp=reg%100;
reg=temp/10;
disbuf[4]=LEDSEG2[reg];
//reg=temp%10;
//disbuf[5]=LEDSEG2[reg];
//disbuf[5]&=0x7f;
disbuf[5]=LEDSEG2[10]; */
//disbuf[5]&=0x7f;
disbuf[0] = disbuf[(t%10000)/1000];
disbuf[1] = disbuf[(t%1000)/100];
disbuf[2] = disbuf[(t%100)/10];
disbuf[3] = disbuf[t%10];
}
/******************************************************
*程序:void main (void)
** 功能描述: 主程序
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 06.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
void main (void)
{
uint DS18B20T;
unsigned char i;
DS18B20T=ReadTemperature(); //上电第一次采集可能数据不对
//delay(65535);
//delay(65532);
delay(65535);
DS18B20T=ReadTemperature(); //上电进行第二次采集
inttohex(DS18B20T);
while(1)
{
//DS18B20T = ReadTemperature(); //上电第一次采集可能数据不对
//inttohex(DS18B20T);
//display();
for (i = 0; i < 8; i++ )
{
SendData(disbuf[i], ucDataTwoTab[i]);
Delay1ms(1);
}
}
}
单片机程序在哪里?什么也没有?在完成百度的提问任务吧。
单片机程序在哪里?什么也没有?在完成百度的提问任务
where is the code?
什么东西????