/***************************************************/
uchar DS18B20_ReadByte(void) //读1个字节数据函数
{
uchar i,j,dat;
dat = 0;
for( i = 1; i <= 8; i++ )
{
j = DS18B20_Readbit();
dat = ( j << 7 ) | ( dat >> 1 );
}
return(dat);
}
/***************************************************/
/* DS18B20函数:void DS18B20_WriteByte() */
/* 功能:向DQ18B20写一个字节数据函数 */
/***************************************************/
void DS18B20_WriteByte(uchar dat) //向DQ18B20写一个字节数据函数
{
uint i;
uchar j;
bit testb;
for( j=1; j<=8; j++)
{
testb = dat&0x01;
dat= dat>>1;
if(testb) //写1
{
DQ = 0;
i++;i++;
DQ = 1;
i = 8;while(i>0)i--;
}
else
{
DQ = 0; //写0
i = 8;while(i>0)i--;
DQ = 1;
i++;i++;
}
}
}
/***********************************************/
/* LCD函数:void LCD_WriteCom() */
/* 功能:向LCD写入命令 */
/***********************************************/
void LCD_WriteCom(uchar com)
{
rs = 0;
P0 = com;
delay(5);
lcden = 0;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
/***********************************************/
/* LCD函数:void LCD_WriteData(uchar dat) */
/* 功能:向LCD写入数据 */
/***********************************************/
void LCD_WriteData(uchar dat)
{
rs = 1; //选择LCD为写入数据状态
lcden = 0;
P0 = dat; //将待写入数据放到总线上
delay(5);
lcden = 1; //给LCD使能端一个脉冲
delay(5); //信号将之前放到总线上
lcden = 0; //的数据写入LCD
delay(5);
}
/***********************************************/
/* LCD函数:void LCD_Init() */
/* 功能:初始化LCD,设定LCD的初始状态 */
/***********************************************/
void LCD_Init()
{
LCD_WriteCom(0x38); //LCD显示模式设定
delay(15);
LCD_WriteCom(0x08); //关闭LCD显示
delay(3);
LCD_WriteCom(0x01); //LCD显示清屏
delay(3);
LCD_WriteCom(0x06); //设定光标地址指针为
自动加1
delay(3);
LCD_WriteCom(0x0c); //打开LCD显示,但不显示光标
}
下边是2只18B20测温并显示函数:(也试验通过)
/***************************** DQ18B20函数 **************************************/
void tempchange(void) //DQ18B20开始获取温度并转换
{
DQ18B20_Reset();
delay(1);
DQ18B20_WriteByte(0xCC); //写跳过读ROM指令
DQ18B20_WriteByte(0x44); //写温度转换指令
}
/***************************** DQ18B20函数 **************************************/
uint get_temp() //读取寄存器中存储的温度数据
{
uchar a,b;
// DQ18B20_Reset(); //调用18B20复位函数
// delay(1);
// DQ18B20_WriteByte(0xcc); //写跳过读ROM指令
DQ18B20_WriteByte(0xbe); //读暂存存储器指令
a=DQ18B20_ReadByte(); //读低8位
上一页 [1] [2] [3] 下一页
本文关键字:程序设计 电脑-单片机-自动控制,电子学习 - 基础知识 - 电脑-单片机-自动控制