程序文件:
文件顺序依次:5110.c 5110.h delay.c delay.h KeyRead.c KeyRead.h main.c StepMotor.c StepMotor.h
诺基亚5110的显示驱动程序的source文件:
1 #include <reg52.h> 2 #include "5110.h" 3 #include "delay.h" 4 sbit CE=P0^1; 5 sbit DC=P0^2; 6 sbit SCLK=P0^4; 7 sbit DIN=P0^3; 8 sbit REST=P0^0; 9 code unsigned char font6x8[][6]={//code指令的作用在于将不变化的数组变量或者固定值存放在ROM区域以节省RAM的空间(51单片机的RAM不够用,所以一定要用code指令) 10 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 11 { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, 12 { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, 13 { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, 14 { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, 15 { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, 16 { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, 17 { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, 18 { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, 19 { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, 20 { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, 21 { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, 22 { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, 23 { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, 24 { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, 25 { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, 26 { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, 27 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, 28 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, 29 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, 30 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, 31 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, 32 { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, 33 { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, 34 { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, 35 { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, 36 { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, 37 { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, 38 { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, 39 { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, 40 { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, 41 { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, 42 { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, 43 { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, 44 { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, 45 { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, 46 { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, 47 { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, 48 { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, 49 { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, 50 { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, 51 { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, 52 { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, 53 { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, 54 { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, 55 { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, 56 { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, 57 { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, 58 { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, 59 { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, 60 { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, 61 { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, 62 { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, 63 { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, 64 { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, 65 { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, 66 { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, 67 { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, 68 { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, 69 { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, 70 { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, 71 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, 72 { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, 73 { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, 74 { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, 75 { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, 76 { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, 77 { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, 78 { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, 79 { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, 80 { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, 81 { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, 82 { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, 83 { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, 84 { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, 85 { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, 86 { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, 87 { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, 88 { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, 89 { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, 90 { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, 91 { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, 92 { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, 93 { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, 94 { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, 95 { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, 96 { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, 97 { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, 98 { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, 99 { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, 100 { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, 101 { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }, 102 }; 103 void N5110_WriteData(unsigned char D) 104 { 105 int i=0; 106 CE=0; 107 DC=1; NOP(); 108 for(i=0;i<8;i++) 109 { 110 SCLK=0; NOP(); 111 if(D&0x80) DIN=1; else DIN=0; 112 SCLK=1; NOP(); 113 D<<=1; 114 } 115 DC=1; 116 CE=1; 117 } 118 void N5110_WriteCom(unsigned char C) 119 { 120 int i=0; 121 CE=0; 122 DC=0; NOP(); 123 for(i=0;i<8;i++) 124 { 125 SCLK=0; NOP(); 126 if(C&0x80) DIN=1; else DIN=0; 127 SCLK=1; NOP(); 128 C<<=1; 129 } 130 DC=1; 131 CE=1; 132 } 133 void N5110_SetPos(unsigned char x,unsigned char y) 134 { 135 N5110_WriteCom(0x40|y); 136 N5110_WriteCom(0x80|x); 137 } 138 void N5110_Clear(void) 139 { 140 int j=0,i=0; 141 N5110_SetPos(0,0); 142 for(i=0;i<6;i++) 143 { 144 for(j=0;j<84;j++) 145 { 146 N5110_WriteData(0x00); 147 } 148 } 149 } 150 void N5110_Init(void) 151 { 152 REST=0; delay(2); REST=1; 153 CE=0; delay(2); CE=1; 154 N5110_WriteCom(0x21); 155 N5110_WriteCom(0xc8); 156 N5110_WriteCom(0x06); 157 N5110_WriteCom(0x13); 158 N5110_WriteCom(0x20); 159 N5110_Clear(); 160 N5110_WriteCom(0x0C); 161 CE=0; 162 } 163 void N5110_ShowChar(unsigned char x,unsigned char y,unsigned char c) 164 { 165 unsigned char i; 166 c-=32; 167 N5110_SetPos(x,y); 168 for(i=0; i<6;i++) 169 N5110_WriteData(font6x8[c][i]); 170 } 171 void N5110_ShowString(unsigned char x,unsigned char y,unsigned char *string) 172 { 173 unsigned char i=0; 174 while(*(string+i)!='