📄 iic1111111111111.c
字号:
SSPSTAT=0XC0;
TRISC=0X00;
}
//---------------------------------------
//名称: 使用SPI接口写数据到LCD
//参数:dt:写入的数据 command: 1-数据/0-命令
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void LCD_write_byte(unsigned char dt, unsigned char command)
{
unsigned char i;
sce=0;
dc=command;
SSPBUF=dt;
do
{
;
}while(SSPIF==0);
SSPIF=0;
dc=1;
sce=1;
sdin=1;
}
//---------------------------------------
//名称: 5110LCD初始化函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void LCD_init(void)
{
sce=1;
res=1;
sdin=1;
dc=1;
sclk=1;
delay_1ms();
res=0;
delay_1ms();
res=1;
LCD_write_byte(0x21,0);//LCD功能设置:芯片活动,水平寻址,使用扩展指令
LCD_write_byte(0xd0,0);//设置VOP值,室温下的编程范围为3.00-10.68
//Vlcd=3.06+(VOP)*0.06,本例VOP为0B0101 0000为十进制的80,Vlcd=7.86V
LCD_write_byte(0x20,0);//LCD功能设置:芯片活动,水平寻址,使用基本指令
LCD_write_byte(0x0C,0);//设定显示配置:普通模式
}
//---------------------------------------
//名称: 设置坐标函数
//参数:X:0-83 Y:0-5
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void LCD_set_XY(unsigned char X, unsigned char Y)
{
LCD_write_byte(0x40 | Y, 0);// column
LCD_write_byte(0x80 | X, 0);// row
}
//---------------------------------------
//名称: LCD清屏函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void LCD_clear(void)
{
unsigned char t;
unsigned char k;
LCD_set_XY(0,0);
for(t=0;t<6;t++)
{
for(k=0;k<84;k++)
{
LCD_write_byte(0x00,1);
asm("CLRWDT");
}
}
}
//---------------------------------------
//名称: 写一个字符到LCD函数
//参数:row,page:写入汉字的地址 c: 写入字符在shuzi表格中的位置
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符
{
unsigned char i;
asm("CLRWDT");
LCD_set_XY(row*8, page);// 列,页
for(i=0; i<16;i++)
{
LCD_write_byte(shuzi[c*32+i],1);
}
asm("CLRWDT");
LCD_set_XY(row*8, page+1);// 列,页
for(i=16; i<32;i++)
{
LCD_write_byte(shuzi[c*32+i],1);
}
}
//---------------------------------------
//名称: 写一个汉字到LCD函数
//参数:row,page:写入汉字的地址 c: 写入汉字在han表格中的位置
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符
{
unsigned char i;
asm("CLRWDT");
LCD_set_XY(row*8, page);// 列,页
for(i=0; i<16;i++)
{
LCD_write_byte(hanzi[c*32+i],1);
}
asm("CLRWDT");
LCD_set_XY(row*8, page+1);// 列,页
for(i=16; i<32;i++)
{
LCD_write_byte(hanzi[c*32+i],1);
}
}
//---------------------------------------
//名称: 延时函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void delay(void)
{
unsigned char k;
for(k=0;k<180;k++)
asm("CLRWDT");
}
//---------------------------------------
//名称: 启动I2C总线函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void i2cstart(void)
{
TRISB3=0;
TRISB4=0;
scl=1;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
sda=1;
delay();
sda=0;
delay();
scl=0;
delay();
}
//---------------------------------------
//名称: 终止I2C总线函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void i2cstop(void)
{
sda=0;
TRISB3=0;
TRISB4=0;
sda=0;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
scl=1;
delay();
sda=1;
delay();
scl=0;
delay();
}
//---------------------------------------
//名称: 从I2C总线读入一位数据函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void bitin(void)
{
eepromdi=1;
TRISB4=0;
TRISB3=1;
scl=1;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
eepromdi=sda;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
scl=0;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
}
//---------------------------------------
//名称: 向I2C总线写入一位数据函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void bitout(void)
{
TRISB3=0;
TRISB4=0;
sda=eepromdo;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
scl=1;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
scl=0;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
}
//---------------------------------------
//名称: 向I2C总线写入一字节函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void i2cwrite(unsigned char sedata)
{
unsigned char k;
for(k=0;k<8;k++)
{
if(sedata&0x80)
{
eepromdo=1;
}
else
{
eepromdo=0;
}
sedata=sedata<<1;
bitout();
}
bitin();
}
//---------------------------------------
//名称: 从I2C总线读出一字节函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
unsigned char i2cread(void)
{
unsigned char redata;
unsigned char m;
for(m=0;m<8;m++)
{
redata=redata<<1;
bitin();
if(eepromdi==1)
{
redata|=0x01;
}
else
{
redata&=0xfe;
}
asm("NOP");
}
eepromdo=1;
bitout();
return redata;
}
//---------------------------------------
//名称: 从AT24C02指定地址上读出1字节数据函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
unsigned char read(unsigned char address)
{
unsigned char eebuf3;
i2cstart();
i2cwrite(0xa0);
i2cwrite(address);
i2cstart();
i2cwrite(0xa1);
eebuf3=i2cread();
i2cstop();
return eebuf3;
}
//---------------------------------------
//名称: 向AT24C02指定地址上写入1字节数据函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void write(unsigned char address1,unsigned char byte)
{
i2cstart();
i2cwrite(0xa0);
i2cwrite(address1);
i2cwrite(byte);
i2cstop();
}
//---------------------------------------
//名称: 主函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081216
//-----------------------------------------
void main(void)
{
init();
SPIINT();
LCD_init(); //初始化LCD模块
LCD_clear(); //清屏幕
back_led=0;
/*write(0x18,0xaa);
databuf=read(0x18);*/
LCD_write_hanzi(0,2,0); //地
LCD_write_hanzi(2,2,1); //址
/*LCD_write_shu(4,1,47); */ //:
/*LCD_write_shu(5,1,0); //0
LCD_write_shu(6,1,33); //x
LCD_write_shu(7,1,1); //1
LCD_write_shu(8,1,8);*/ //8
LCD_write_hanzi(4,2,2); //数
LCD_write_hanzi(6,2,3); //据
LCD_write_hanzi(8,2,4); //据
LCD_write_hanzi(0,4,5); //数
LCD_write_hanzi(2,4,6); //据
LCD_write_hanzi(4,4,7); //据
LCD_write_hanzi(6,4,8); //据
LCD_write_hanzi(8,4,9); //据
/*LCD_write_shu(4,3,47); //:
LCD_write_shu(5,3,0); //0
LCD_write_shu(6,3,33); //x*/
/*LCD_write_shu(7,3,(databuf>>4)&0x0f); */ //*
/*LCD_write_shu(8,3,databuf&0x0f); */ //*
while(1)
{
asm("CLRWDT");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -