AVR M16实验之八 AT24C02测试
//读一个字节
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++;
}
}
本文引用地址:https://www.eepw.com.cn/article/201611/321117.htm视频地址:http://v.youku.com/v_show/id_XMTYxNDk0MjA4.html
评论