void initLcd() { LcdEn = 0; WriteCom(0x38); WriteCom(0x0c); WriteCom(0x06); WriteCom(0x01); }
uint displayChar(uint row, uint column, char str) { if((row > 2 || row < 1) || (column > 15 || column < 0)) return -1; WriteCom(0x80 + (0x40 * (row-1)) + column); //定位置指定行列 WriteData(str); return 0; }
int eputs(char *s) { // only writes to the comms port at the moment if (!ComOpen) return -1; while (*s) WriteCom(1,s++); return 0; }
void WriteChar_RVS(const unsigned char *str,unsigned char page,unsigned char row,unsigned char chipselect) { unsigned char currentpage=0,currentrow=0,i=0,j=0; currentpage=0xb8+page; currentrow=0x40+row; for(j=0;j<2;j++) { WriteCom(currentpage,chipselect); //set start page; WriteCom(currentrow,chipselect); //set start row; for(i=0;i<8;i++) { WriteData(~(*str),chipselect); str++; } currentpage++; } currentpage++; }
//=============================== //写入汉字,从左到右依次写入; //参数page为第几行取值0~3; //参数row为第几列,取值为0~63-16; //参数length为汉字长度; //=============================== void WriteChinese(const unsigned char *p,unsigned char page,unsigned char row,unsigned char chipselect) { unsigned char i=0,j=0,currentpage=0,currentrow=0; currentpage=page*2+0xb8; currentrow=row+0x40; for(j=0;j<2;j++) { WriteCom(currentpage,chipselect); //set start page; WriteCom(currentrow,chipselect); //set start row; for(i=0;i<16;i++) { WriteData(*p,chipselect); p++; } currentpage++; } }
uint displayStr(uint row, uint column, char* str, int len) { uchar i; if((row > 2 || row < 1) || (column > 15 || column < 0) || (str == NULL)) return -1; WriteCom(0x80 + (0x40 * (row-1)) + column); //定位置指定行列 for(i = 0; i < len; i++) { WriteData(*(str+i)); delay(5); } return 0; }
//=============================== //写入大小为192*64 的bmp位图图像; //=============================== void WriteBmp(const unsigned char *ptr) { unsigned char l=0,r=0,startpage=0xb8; //startline=0xc0, for(r=0;r<8;r++) { //WriteComL(startline); //set start line; WriteCom(startpage,'L'); //set start page; WriteCom(0x40,'L'); //set start row; for(l=0;l<64;l++) { WriteData(*ptr,'L'); //pgm_read_byte()为读取flash内容的函数; ptr++; } //startline+=8; startpage+=1; ptr+=128; } startpage=0xb8; ptr-=1472; //注意计算地址指针的位置;上面最后又加了一次128 所以上面地址就已经到了最后。所以此处地址为ptr-(192*64-64); for(r=0;r<8;r++) { WriteCom(startpage,'M'); //set start page; WriteCom(0x40,'M'); //set start row; for(l=0;l<64;l++) { WriteData(*ptr,'M'); ptr++; } //startline+=8; startpage+=1; ptr+=128; } startpage=0xb8; ptr-=1472; for(r=0;r<8;r++) { WriteCom(startpage,'R'); //set start page; WriteCom(0x40,'R'); //set start row; for(l=0;l<64;l++) { WriteData(*ptr,'R'); ptr++; } //startline+=8; startpage+=1; ptr+=128; } }
int displayInt(unsigned int row, unsigned int column, int value) { unsigned char buf[4]; unsigned char i; if((row > 2 || row < 1) || (column > 15 || column < 0)) return -1; if(value <= 0) { value = 0; } sprintf(buf, "%4d", value); WriteCom(0x80 + (0x40 * (row-1)) + column); //定位置指定行列 delay(5); for(i = 0; i < 4; i++) { WriteData(buf[i]); delay(5); } return 0; }
void ClearLCM() { unsigned char l=0,r=0,startpage=0xb8; //startline=0xc0, for(r=0;r<8;r++) { //WriteComL(startline); //set start line; WriteCom(startpage,'L'); //set start page; WriteCom(0x40,'L'); //set start row; for(l=0;l<64;l++) { WriteData(0x00,'L'); //pgm_read_byte()为读取flash内容的函数; } //startline+=8; startpage+=1; } startpage=0xb8; for(r=0;r<8;r++) { WriteCom(startpage,'M'); //set start page; WriteCom(0x40,'M'); //set start row; for(l=0;l<64;l++) { WriteData(0x00,'M'); } //startline+=8; startpage+=1; } startpage=0xb8; for(r=0;r<8;r++) { WriteCom(startpage,'R'); //set start page; WriteCom(0x40,'R'); //set start row; for(l=0;l<64;l++) { WriteData(0x00,'R'); } //startline+=8; startpage+=1; } }
void WriteComChar(char b) { WriteCom(&b, 1); }
void clearAll() { WriteCom(0x01); }
int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; init_device(); InitLCM(); WriteCom(0x3f,'L');//play on; WriteCom(0x3f,'R'); ClearLCM(); checkflash(); P6SEL|=0x01; ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V; ADC12CTL1=SHP; ADC12MCTL0=SREF_1; WriteChinese(hzstr,0,0,'L'); WriteChinese(hzstr+32,0,16,'L'); WriteChinese(hzstr+64,0,32,'L'); WriteChinese(hzstr+96,2,0,'L'); WriteChinese(hzstr+128,2,16,'L'); WriteChinese(hzstr+160,2,32,'L'); WriteChar(Ezk+16*('m'-0x20),6,40,'L'); WriteChar(Ezk+16*('V'-0x20),6,48,'L'); ADC12CTL0|=ENC; ADC12CTL0|=ADC12SC; while(1) { kkk_showAD(0); k=keyscan(); if(k==12) { while(k)//等待按键弹起 { k=keyscan(); } close_timerA(); ClearLCM(); kkk_setparameter(); ClearLCM(); WriteChinese(hzstr,0,0,'L'); WriteChinese(hzstr+32,0,16,'L'); WriteChinese(hzstr+64,0,32,'L'); WriteChinese(hzstr+96,2,0,'L'); WriteChinese(hzstr+128,2,16,'L'); WriteChinese(hzstr+160,2,32,'L'); WriteChar(Ezk+16*('m'-0x20),6,40,'L'); WriteChar(Ezk+16*('V'-0x20),6,48,'L'); kkk_showAD(0); init_timerA(); } if(k==15)//reset { while(k)//等待按键弹起 { k=keyscan(); } WDTCTL =WDT_MRST_32; while(1); } delay(2000); } }