?? 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)
{
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 + -