新闻中心

EEPW首页>嵌入式系统>设计应用> AVR M16实验之八 AT24C02测试

AVR M16实验之八 AT24C02测试

作者: 时间:2016-11-25 来源:网络 收藏



//读一个字节
unsigned char IICReadOneChar(unsigned char ucAck) //1-返回ACK信号,0-返回NACK信号
{
if (ucAck)
{
TWCR = (1< }
else
{
TWCR = (1< }
while(!(TWCR & (1 << TWINT))); //等待读取完成

return (TWDR); //返回读到的数据
}


//在指定位置写一个字节
void IICWriteOneCharOnAddr(unsigned char ucData,unsigned char ucAddr)
{
IICStart(); //起始信号
IICWriteOneChar(IICDEVICEADDR);//写器件地址
IICWriteOneChar(ucAddr); //写存储地址
IICWriteOneChar(ucData); //写数据
IICStop(); //停止信号
_delay_ms(10); //延时等待从机操作
}


/
//从指定位置读一个字节
unsigned char IICReadOneCharFromAddr(unsigned char ucAddr)
{
unsigned char ucBackValue = 0;

IICStart(); //起始信号
IICWriteOneChar(IICDEVICEADDR);//写器件地址
IICWriteOneChar(ucAddr); //写存储地址

IICStart(); //起始信号
IICWriteOneChar(IICDEVICEADDR | 0x01);//读器件地址
ucBackValue = IICReadOneChar(0); //无应答读取
IICStop(); //停止信号

return (ucBackValue);
}

//忙检测
void LCD1602BusyCheck(void)
{
unsigned char i = 254;
DDRB = 0x00; //设置最高位为输入
CLRLCD1602RS;
SETLCD1602RW;
SETLCD1602EN;
_delay_us(5);
while((i--) && (PINB & 0x80));
DDRB = 0xff;
_delay_us(5);
CLRLCD1602EN;
_delay_us(5);
}



//写操作
void LCD1602WriteOperation(unsigned char Data,unsigned char ComOrData)
{
LCD1602BusyCheck(); //ComOrData=0为命令,1为数据

if(0 == ComOrData)
CLRLCD1602RS;
else if(1 == ComOrData)
SETLCD1602RS;
CLRLCD1602RW;
SETLCD1602EN;
_delay_us(5);
PORTB = Data;
_delay_us(5);
CLRLCD1602EN;
_delay_us(100);
}


void LCD1602Init(void) //初始化
{
LCD1602WriteOperation(0x38,0);
_delay_ms(15);
LCD1602WriteOperation(0x38,0);
_delay_ms(5);
LCD1602WriteOperation(0x38,0);
_delay_ms(5);
LCD1602WriteOperation(0x38,0);
_delay_ms(5);

LCD1602WriteOperation(0x0c,0);
_delay_ms(1);
LCD1602WriteOperation(0x06,0);
_delay_ms(1);
LCD1602WriteOperation(0x01,0);
_delay_ms(1);
}



void LCD1602MoveToPosition(unsigned char ucx,unsigned char ucy)
{
if(0 == ucx) //第一行
{
LCD1602WriteOperation(0x80 + ucy,0); //第Y列
}
if(1 == ucx) //第二行
{
LCD1602WriteOperation(0xC0 + ucy,0); //第Y列
}
}


void LCD1602PrintString(unsigned char const * str)
{
while(*str != )
{
LCD1602WriteOperation(*str,1);
str++;
}

}

本文引用地址: //m.amcfsurvey.com/article/201611/321117.htm

视频地址:http://v.youku.com/v_show/id_XMTYxNDk0MjA4.html


上一页 1 2 3 下一页

评论


技术专区

关闭