#include <avr/io.h> #include <avr/delay.h> //ST7565R 128*32 //4L-SPI ATMEGA16A 4M //#define SCK 7 //PB7 SCK //#define SDI 5 //PB5 MOSI #define DC 3 //DC=0 DC=1 A0 #define RST 2 //RESET=0 /RES #define CS 4 ///CS=0 /CS #define DC_SET (PORTB|=(1<<DC)) #define RST_SET (PORTB|=(1<<RST)) #define CS_SET (PORTB|=(1<<CS)) #define DC_CLR (PORTB &=~(1<<DC)) #define RST_CLR (PORTB &=~(1<<RST)) #define CS_CLR (PORTB &=~ (1<<CS)) #define NOP() asm("nop") #define uchar unsigned char unsigned char ascii[]; // void Initial(void) { RST_SET; _delay_ms(1); RST_CLR; _delay_ms(2); RST_SET; _delay_ms(12); write_ins(0xE2); // _delay_us(10); write_ins(0xA2); //SET LCD BIAS(#0A2 1/9;1/8;1/6 or #0A3 1/7;1/6;1/5) _delay_us(10); write_ins(0xA0); //ADC SELECT ON (#A0H #A1H) segment _delay_us(10); write_ins(0xC8); //SHL SELECT COM1-COM64(#0C0H #0C8) common _delay_us(10); write_ins(0x22); //REGULATOR RESISTOR SELECT (R2 R1 R0) RR 0X20-0X27(3.0-6.5) _delay_us(10); write_ins(0x81); //ELECTRONIC VOLUME SET (LCD) _delay_us(10); write_ins(0x12); //SET EV(0X00-0X3F) _delay_us(10); write_ins(0x2F); //SET POWER CONTROL (VB VR VF)=111 _delay_us(10); } //V0=RR*[(99+EV)/162]*2.1 = (4.0*(99+18)/162*2.1)=6.06V /************************************************************** Function Name: Clear screen Function: Write DAT data to CGRAM Entry Parameters: dat Export Parameters: Remarks: DDRAM 128*32 **************************************************************/ void clear_display(uchar dat) { uchar page,column; write_ins(0xAF); // write_ins(0x40); // for(page=0;page<4;page++) { write_ins(0xB0 | page); // write_ins(0x10); // write_ins(0x00); // for(column=0;column<128;column++) { write_dat(dat); } } } /************************************************************** Function Name: Display Frame Function: Entry Parameters: Export Parameters: Remarks: DDRAM 128*32 **************************************************************/ box_display() { uchar x,y; write_ins(0x40); write_ins(0xB0 ); // write_ins(0x10); // write_ins(0x01); // for(x=0;x<126;x++) write_dat(0x01); write_ins(0x40); write_ins(0xB3 ); // write_ins(0x10); // write_ins(0x01); // for(x=0;x<126;x++) write_dat(0x80); for(y=0;y<4;y++) { write_ins(0x40); write_ins(y|0xB0 ); // write_ins(0x10); // write_ins(0x00); // write_dat(0xFF); write_ins(0x40); write_ins(y|0xB0 ); // write_ins(0x17); // write_ins(0x0F); // write_dat(0xFF); } } /*************************************************************/ void write_ins(unsigned char cmd) { DC_CLR; // CS_CLR; // SPDR = cmd; while(!(SPSR & (1<<SPIF))) ; CS_SET; } void write_dat(unsigned char dat) { DC_SET; // CS_CLR; // SPDR = dat; while(!(SPSR & (1<<SPIF))) ; CS_SET; } /************************************************************** Function Name: SPI Initialization Function: Entry Parameters: Export Parameters: Remarks: **************************************************************/ void spi_init(void) { DDRB |= (1<<DDB2)|(1<<DDB3)|(1<<DDB5)|(1<<DDB7)|(1<<DDB4); //MOSI SCK AND SS SPCR = (1<<SPE)|(1<<MSTR); //fosc/4 } /*************************************************************/ int main(void) { uchar page, x; unsigned int i; spi_init(); Initial(); while(1) { clear_display(0x00); box_display(); _delay_ms(500); clear_display(0xff); _delay_ms(500); i=0; for(page=0;page<4;page++) { write_ins(0x40); write_ins(page|0xB0); // write_ins(0x10); // write_ins(0x00); // for(x=0;x<128;x++) { i++; write_dat(ascii[i]); } } _delay_ms(500); } } uchar ascii[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //" "=00 0x00,0x00,0x00,0x4F,0x00,0x00,0x00,0x00, //"!"=01 0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00, //"."=02 0x00,0x14,0x7F,0x14,0x7F,0x14,0x00,0x00, //"#"=03 0x00,0x24,0x2A,0x7F,0x2A,0x12,0x00,0x00, //"$"=04 0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x00, //"%"=05 0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00, //"&"=06 0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00, //"'"=07 0x00,0x00,0x1C,0x22,0x41,0x00,0x00,0x00, //"("=08 0x00,0x00,0x41,0x22,0x1C,0x00,0x00,0x00, //")"=09 0x00,0x14,0x08,0x3E,0x08,0x14,0x00,0x00, //"*"=0A 0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00, //"+"=0B 0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x00, //"//"=0C 0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00, //"-"=0D 0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00, //"."=0E 0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00, //"/"=0F 0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00, //"0"=10 0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00, //"1"=11 0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00, //"2"=12 0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00, //"3"=13 0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00, //"4"=14 0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00, //"5"=15 0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00, //"6"=16 0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00, //"7"=17 0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //"8"=18 0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00, //"9"=19 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00, //":"=1A 0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x00, //"//"=1B 0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00, //"<"=1C 0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00, //"="=1D 0x00,0x00,0x14,0x22,0x14,0x08,0x00,0x00, //">"=1E 0x00,0x02,0x01,0x51,0x09,0x06,0x00,0x00, //"?"=1F 0x00,0x32,0x49,0x79,0x41,0x3E,0x00,0x00, //"@"=20 0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00, //"A"=21 0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00, //"B"=22 0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00, //"C"=23 0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00, //"D"=24 0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00, //"E"=25 0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00, //"F"=26 0x00,0x3E,0x41,0x41,0x49,0x7A,0x00,0x00, //"G"=27 0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00, //"H"=28 0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x00, //"I"=29 0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00, //"J"=2A 0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00, //"K"=2B 0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00, //"L"=2C 0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00, //"M"=2D 0x00,0x7F,0x06,0x08,0x30,0x7F,0x00,0x00, //"N"=2E 0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00, //"O"=2F 0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00, //"P"=30 0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00, //"Q"=31 0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00, //"R"=32 0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00, //"S"=33 0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00, //"T"=34 0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00, //"U"=35 0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00, //"V"=36 0x00,0x7F,0x20,0x18,0x20,0x7F,0x00,0x00, //"W"=37 0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00, //"x"=38 0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x00, //"Y"=39 0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00, //"Z"=3A 0x00,0x00,0x7F,0x41,0x41,0x00,0x00,0x00, //"["=3B 0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00, //"\"=3C 0x00,0x00,0x41,0x41,0x7F,0x00,0x00,0x00, //"]"=3D 0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x00, //"^"=3E 0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00, //"_"=3F 0x00,0x01,0x02,0x04,0x00,0x00,0x00,0x00, //"|"=40 0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00, //"a"=41 0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00, //"b"=42 0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x00, //"c"=43 0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00, //"d"=44 0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00, //"e"=45 0x00,0x00,0x08,0x7E,0x09,0x02,0x00,0x00, //"f"=46 0x00,0x0C,0x52,0x52,0x4C,0x3E,0x00,0x00, //"g"=47 0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00, //""=48 0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00, //"i"=49 0x00,0x20,0x40,0x44,0x3D,0x00,0x00,0x00, //"j"=4A 0x00,0x00,0x7F,0x10,0x28,0x44,0x00,0x00, //"k"=4B 0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00, //"l"=4C 0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00, //"m"=4D 0x00,0x7C,0x08,0x04,0x04,0x78,0x00,0x00, //"n"=4E 0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00, //"o"=4F 0x00,0x7E,0x0C,0x12,0x12,0x0C,0x00,0x00, //"p"=50 0x00,0x0C,0x12,0x12,0x0C,0x7E,0x00,0x00, //"q"=51 0x00,0x7C,0x08,0x04,0x04,0x08,0x00,0x00, //"r"=52 0x00,0x58,0x54,0x54,0x54,0x64,0x00,0x00, //"s"=53 0x00,0x04,0x3F,0x44,0x40,0x20,0x00,0x00, //"t"=54 0x00,0x3C,0x40,0x40,0x3C,0x40,0x00,0x00, //"u"=55 0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00, //"v"=56 0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00, //"w"=57 0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, //"x"=58 0x00,0x1C,0xA0,0xA0,0x90,0x7C,0x00,0x00, //"y"=59 0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00, //"z"=5A 0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00, //"{"=5B 0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00, //"|"=5C 0x00,0x00,0x00,0x41,0x36,0x08,0x00,0x00, //"}"=5D 0x00,0x02,0x01,0x02,0x04,0x02,0x00,0x00, //"~"=5E 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, //" "=5F };