1、 0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00, 0x40,0x42,0x44,0xCC,0x00,0xF4,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF6,0x04,0x00, 0x00,0x40,0x20,0x1F,0x20,0x51,0x48,0x44,0x42,0x7F,0x42,0x44,0x4C,0x61,0x20,0x00, 0x00,0x00,0xFE,0x12,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0
2、x12,0xFF,0x02,0x00,0x00, 0x40,0x48,0x49,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x4D,0x68,0x40,0x00, 0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E,0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00, 0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00, 0x00,0x00,0xFE,0x82,0x92,0x92,0x
3、92,0xFE,0x92,0x9A,0xD2,0x82,0xFF,0x02,0x00,0x00, 0x40,0x20,0x1F,0x00,0x00,0x7E,0x22,0x22,0x22,0x3F,0x42,0x80,0x7F,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0xA0,0x90,0x88,0x84,0x86,0x80,0xC0,0x80,0x00, 0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x23,0x04,0x08,0x10,0x20,0x60,0x20,0x00,0x00, 0x00,0x0
4、6,0x09,0x09,0xE6,0xF0,0x18,0x08,0x08,0x08,0x18,0x30,0x78,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x07,0x0F,0x18,0x30,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00, 0x80,0x40,0x20,0xF8,0x47,0x48,0x48,0x48,0xC8,0x7F,0x48,0x48,0x4C,0x68,0x40,0x00, 0x00,0x00,0x00,0xFF,0x00,0x00,0x02,0x0B,0x12,0x62,0xD2,0x0A,0x06,
5、0x02,0x00,0x00;uchar code b=/8*160x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x3F,0x21,0x21,0x21,0x21,0x21,0x00,0x00,0x08,0x08,0x08,0x08,0x
6、08,0xF8,0x00,0x00,0x21,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x21,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x3F,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0x
7、08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x3F,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x01,0x01,0x3E,0x01,0x
8、01,0x3E,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x13,0x24,0x24,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
9、00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x3F,0x06,0x09,0x10,0x20,0x00,0x00,/17,k0x00,0xC0,0x00,0x00,0x
10、00,0x00,0x00,0x00,0x00,0x3F,0x02,0x02,0x02,0x3E,0x00,0x00/18,h/延时程序,延时10usvoid Delay_10_uS(void)char i=10;while(i-);/n mS delayvoid Delay_N_mS( unsigned int n_milisecond) /* n mS delay */unsigned char i;while(n_milisecond-)i=37;/启动传送bit I2C_Start(void)Delay_10_uS();I2C_SDA =1;I2C_SCK =1;if ( I2C_SDA
11、 = 0) return 0;if ( I2C_SCK = 0) return 0;I2C_SDA = 0;I2C_SCK = 0;return 1;/停止信号void I2C_Stop(void)I2C_SCK = 1;I2C_SDA = 1;/无应答的时序,有应答时需要在第9位输出0,没有应答时,第9位为高void I2C_Nack(void)I2C_SDA=1;I2C_SCK=1;I2C_SCK=0;/如果发送完成并且在第9个脉冲处得到ack,那么返回0,表示成功bit I2C_Send_Byte( unsigned char d)unsigned char i = 8;bit bit_
12、ack;while( i- )if ( d &0x80 ) I2C_SDA =1;else I2C_SDA =0;d = d 1;bit_ack = I2C_SDA;I2C_SCK =0;return bit_ack;/接收一个8位数据unsigned char I2C_Receive_Byte(void)unsigned char i = 8, d;while ( i-)if ( I2C_SDA ) d+;return d;/写EEPROM操作void AT24C64_W(void *mcu_address, unsigned int AT24C64_address, unsigned in
13、t count )while(count-)I2C_Start();I2C_Send_Byte( 0xa0 );I2C_Send_Byte( AT24C64_address/256 );I2C_Send_Byte( AT24C64_address %256 );I2C_Send_Byte( *(unsigned char*)mcu_address );I2C_Stop();Delay_N_mS(10);(unsigned char*)mcu_address)+;AT24C64_address+;/读EEPROM函数void AT24C64_R(void *mcu_address,unsigne
14、d int AT24C64_address,unsigned int count)I2C_Send_Byte( AT24C64_address % 256 );I2C_Send_Byte( 0xa1 );*(unsigned char*)mcu_address = I2C_Receive_Byte();I2C_Nack(); /单总线延时void ds18s20delay(int useconds)int s;for(s=0;suseconds;s+);/单总线复位uchar ds18s20reset()uchar presencesignal;ds18s20_dq=0;ds18s20dela
15、y(30);ds18s20_dq=1;ds18s20delay(3);presencesignal=ds18s20_dq;return presencesignal;/单总线位写入void ds18s20writebit(char val)if(val=1)elseds18s20delay(5);/单总线字节写入void ds18s20writebyte(char val)uchar i;uchar temp;for(i=0;ii;temp&=0x01;ds18s20writebit(temp);/单总线位读取uchar ds18s20readbit(void)3;return ds18s20
16、_dq;/单总线字节读取uchar ds18s20readbyte(void)uchar value=0;if(ds18s20readbit()value|=0x01ds18s20delay(7);return(value); /实时时钟复位函数void resetds1302()ds18s20delay(1);sclk=0;rstb=0;rstb=1;/时钟字节读取函数uchar readbyteds1302()uchar rbyte;uchar tempbyte; rbyte=0x00; i_o=1; ds18s20delay(1); for(i=0;+i) sclk=1; sclk=0;
17、 tempbyte=(uchar)i_o; tempbyte=1; rbyte|=tempbyte; return rbyte;/时钟字节写入函数void writebyteds1302(uchar w_byte) i_o=0; if(w_byte&0x01)i_o=1; w_byte/时钟初始化函数void initds1302()resetds1302();writebyteds1302(0x8e);writebyteds1302(0);writebyteds1302(0x90);writebyteds1302(0xab);writebyteds1302(0xbe);void writec
18、lkbyte(uchar adress,uchar date)adress=(adress*2)|0x80);writebyteds1302(adress);writebyteds1302(date); /状态检查 ,void CheckState() unsigned char dat; DI=0; RW=1; do GDM12864ADataPort=0x00; EN=1; dat=GDM12864ADataPort; EN=0; dat=0x80 & dat; /仅当第7位为0时才可操作(判别busy信号) while(!(dat=0x00);/向LCD发送命令/command :命令v
19、oid SendCommandToLCD(unsigned char command) CheckState(); RW=0; GDM12864ADataPort=command;/写显示数据/dat:显示数据void WriteByte(unsigned char dat) DI=1; GDM12864ADataPort=dat;/设定行地址(页)-X 0-7void SetLine(unsigned char line) line=line & 0x07; / 0=line=7 line=line|0xb8; /1011 1xxx SendCommandToLCD(line);/设定列地址
20、-Y 0-63void SetColumn(unsigned char column) column=column &0x3f; / 0=column=63 感觉多余的,column已近小于64了。 column=column | 0x40; /01xx xxxx SendCommandToLCD(column);/设定显示开始行-XXvoid SetStartLine(unsigned char startline) /0-63 startline=startline & startline=startline|0xc0; /1100 0000 SendCommandToLCD(startl
21、ine);/开关显示void SetOnOff(unsigned char onoff)onoff=0x3e | onoff; /0011 111xSendCommandToLCD(onoff);/选择屏幕/screen: 0-全屏,1-左屏,2-右屏void SelectScreen(unsigned char screen) /cs1: 1-左; cs2: 1-右switch(screen) case 0: cs1=0;/全屏_nop_(); _nop_();cs2=0;break;case 1:/左屏cs2=1; break;case 2: cs1=1;/右屏/延时delay(unsigned int t )unsigned int i=t,m,n;for(m=0;mm+)for(n=0;n100;n+);/清屏 0-全屏,1-左屏,2-右 ?分屏干嘛,直接全屏不好吗void ClearScreen(unsigned char screen) unsigned char i,j;SelectScreen(screen);i+)SetLine(i);for(j=0;j128;j+)WriteByte
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1