📄 lcd.lst
字号:
C51 COMPILER V8.08 LCD 09/11/2007 23:01:22 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include<intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5 #define x1 0x80
6 #define x2 0x88
7 #define y 0x80
8 #define comm 0
9 #define dat 1
10
11 sbit cs = P2^7; //液晶显示片选信号即(RS)
12 sbit sid = P2^6; //*液晶显示的数据线即(R/W)
13 sbit sclk = P2^5; //*液晶显示时钟信号即(E)
14 sbit gg = P1^5;
15
16 void wr_lcd (uchar dat_comm,uchar content); //对LCD写数据或指令
17 void delay (uint us); //延时子程序
18 void delay1 (uint ms);
19 /*以下部分为常用的数据表*/
20 /*表一: 兰州交通大学毛题字字模代码*/
21 uchar code tab1[]={
22 /*-- 宽度x高度=128x64 --*/
23 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
24 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,
25 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,
26 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,
27 0X00,0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,
28 0X00,0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,
29 0X00,0X60,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,
30 0X00,0X60,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X01,0XE0,
31 0X00,0X60,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X20,0X00,0X03,0XCE,
32 0X00,0X71,0XF0,0X00,0X00,0X00,0X03,0X00,0X00,0X01,0XE0,0X00,0X30,0X00,0X83,0XBE,
33 0X00,0X71,0XF0,0X00,0X00,0X00,0X03,0X80,0X00,0X03,0XE0,0X00,0X30,0X00,0XC7,0X7E,
34 0X00,0X7B,0XF0,0X00,0X00,0X00,0X03,0XC0,0X00,0X07,0XC0,0X00,0X38,0X00,0XC6,0XCE,
35 0X00,0X73,0X80,0X00,0X00,0X00,0X03,0XDC,0X00,0X07,0X80,0X00,0X38,0X00,0XEF,0X8E,
36 0X00,0X77,0X0C,0X00,0X00,0X00,0X01,0XFE,0X00,0X0F,0X80,0X00,0X38,0X00,0X6F,0X8C,
37 0X00,0XFE,0X1C,0X00,0X00,0X00,0X03,0XFE,0X00,0X1F,0X00,0X00,0X38,0X00,0X6F,0X9C,
38 0X03,0XFC,0X3C,0X00,0X00,0X20,0X01,0XFE,0X00,0X3B,0X00,0X00,0X38,0X00,0X6F,0XDC,
39 0X0F,0X7C,0X3C,0X00,0X00,0X60,0X03,0XFC,0X00,0X37,0X80,0X00,0X70,0X00,0X6F,0XD8,
40 0X1F,0X18,0X7C,0X00,0X00,0X60,0X03,0XF0,0X00,0X73,0X80,0X00,0X70,0X03,0X6E,0XF0,
41 0X0E,0X38,0XD8,0X00,0X00,0X60,0X07,0XE0,0X01,0XF3,0X80,0X00,0X70,0X01,0X7E,0XF0,
42 0X02,0X30,0XD8,0X00,0X00,0XE0,0X07,0X40,0X01,0XE7,0X00,0X00,0X70,0X01,0X7C,0XF0,
43 0X00,0X61,0XB8,0X01,0X00,0XE0,0X1F,0X00,0X00,0XC7,0X80,0X00,0X7C,0X01,0XFD,0XE0,
44 0X00,0XDB,0XB8,0X01,0X19,0XE0,0X1C,0X00,0X00,0X03,0X80,0X00,0X7C,0X01,0XBF,0X60,
45 0X01,0XDF,0XB8,0X01,0X99,0XE0,0X00,0X20,0X00,0X07,0X80,0X00,0XFC,0X01,0XDF,0X60,
46 0X03,0XBF,0XB8,0X01,0X99,0XE0,0X02,0X70,0X00,0X07,0XC0,0X00,0XFC,0X01,0XDE,0XC0,
47 0X03,0X7F,0XB8,0X01,0X99,0XE0,0X02,0X78,0X00,0X0D,0X80,0X00,0XFC,0X01,0XBE,0XDC,
48 0X00,0X6F,0X38,0X09,0X99,0X60,0X06,0XF8,0X00,0X1D,0X80,0X01,0XF8,0X00,0XB6,0XFC,
49 0X00,0XC5,0XB8,0X19,0X9B,0X60,0X07,0XF8,0X00,0X7D,0X80,0X0F,0XE0,0X00,0X67,0XEC,
50 0X00,0XCF,0XB8,0X19,0XBB,0X60,0X07,0XF0,0X00,0X7D,0X80,0X0F,0XC0,0X00,0X87,0X9C,
51 0X08,0X8F,0XB0,0X1B,0XBB,0X60,0X0F,0XE0,0X00,0X7D,0X80,0X07,0XC0,0X01,0X8F,0X7C,
52 0X09,0X8F,0X30,0X1F,0XFF,0X60,0X0F,0X60,0X00,0X7D,0X80,0X03,0XC0,0X01,0X98,0XF8,
53 0X09,0X9F,0X30,0X1F,0XFF,0XE0,0X1E,0X00,0X0C,0X7F,0X80,0X01,0XC0,0X01,0X33,0XF0,
54 0X09,0X3E,0X30,0X1F,0XFF,0XE0,0X1C,0XC0,0X0C,0X6F,0X80,0X01,0X80,0X03,0X67,0XC0,
55 0X1B,0X7C,0X30,0X3B,0XFA,0XE0,0X1C,0XE0,0X0E,0X6F,0X80,0X03,0X80,0X02,0XC6,0X00,
C51 COMPILER V8.08 LCD 09/11/2007 23:01:22 PAGE 2
56 0X1B,0XF8,0X30,0X3B,0XF8,0XE0,0X1C,0XE0,0X06,0X7D,0X80,0X03,0X80,0X07,0XC7,0X00,
57 0X1B,0XFC,0X30,0X3B,0XB8,0XE0,0X06,0XE0,0X06,0X7D,0X80,0X03,0X80,0X05,0X9F,0X00,
58 0X1E,0XBC,0X30,0X33,0XB8,0XE0,0X03,0XE0,0X06,0X7D,0X80,0X03,0XC0,0X0F,0X7F,0X00,
59 0X1E,0X3C,0X30,0X33,0XB8,0XE0,0X03,0XE0,0X04,0X6D,0X80,0X07,0X60,0X0E,0X36,0XC0,
60 0X1E,0X34,0X38,0X17,0X38,0XE0,0X01,0XC0,0X00,0XED,0X80,0X07,0X70,0X0E,0X0D,0XE0,
61 0X1E,0X7C,0X38,0X07,0X38,0XE0,0X01,0XC0,0X06,0XED,0X80,0X07,0X70,0X0C,0X0F,0XF0,
62 0X1D,0XFC,0X38,0X07,0X38,0XE0,0X01,0XC0,0X06,0XED,0X80,0X0E,0X38,0X04,0X0F,0XF0,
63 0X1D,0XFC,0X38,0X07,0X38,0XE0,0X01,0XC0,0X07,0X4D,0X80,0X0E,0X3F,0X80,0X1F,0XE0,
64 0X1C,0XFC,0X38,0X0E,0X38,0XE0,0X03,0XE0,0X03,0X0F,0X80,0X1C,0X1F,0X80,0X3F,0XC0,
65 0X1C,0X7C,0X38,0X0E,0X18,0XE0,0X03,0XE0,0X03,0X0F,0X80,0X1C,0X1F,0X01,0XFE,0X00,
66 0X1C,0XFE,0X38,0X0E,0X18,0XE0,0X03,0XF0,0X0E,0X1F,0X80,0X18,0X0F,0X01,0XF4,0X00,
67 0X18,0XFF,0X38,0X0E,0X00,0XE0,0X07,0X70,0X0F,0X03,0X80,0X38,0X0E,0X01,0XE6,0X00,
68 0X18,0XFF,0X38,0X0E,0X00,0XE0,0X07,0X78,0X07,0XC3,0X00,0X30,0X06,0X00,0XC6,0X00,
69 0X18,0XFF,0X38,0X0C,0X00,0X60,0X0E,0X38,0X03,0XF0,0X00,0X70,0X00,0X00,0X06,0X00,
70 0X19,0XFF,0X38,0X0C,0X00,0X60,0X0E,0X3C,0X00,0XF8,0X00,0X60,0X00,0X00,0X06,0X00,
71 0X19,0XDF,0X38,0X00,0X00,0X20,0X1E,0X3E,0X00,0X7E,0X38,0XC0,0X00,0X00,0X06,0X00,
72 0X19,0XDE,0X38,0X00,0X00,0X20,0X1C,0X1F,0X00,0X1F,0XF1,0XC0,0X00,0X00,0X0E,0X00,
73 0X18,0X86,0X38,0X00,0X00,0X00,0X38,0X1F,0X80,0X0F,0XF1,0X80,0X00,0X03,0X0E,0X00,
74 0X00,0X03,0XB8,0X00,0X00,0X00,0X38,0X1F,0XC0,0X0F,0XE0,0X00,0X00,0X01,0XCE,0X00,
75 0X00,0X03,0XF8,0X00,0X00,0X00,0X70,0X0F,0X80,0X07,0XC0,0X00,0X00,0X00,0XFE,0X00,
76 0X00,0X00,0XF8,0X00,0X00,0X00,0XE0,0X04,0X00,0X03,0X80,0X00,0X00,0X00,0X7E,0X00,
77 0X00,0X00,0X78,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3E,0X00,
78 0X00,0X00,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1E,0X00,
79 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1C,0X00,
80 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,
81 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
82 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
83 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
84 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
85 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
86 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
87 };
88 unsigned char tab2[]={"兰州交通大学"};
89
90 /*------------------初始化-----------------*/
91 void init_lcd (void)
92 {
93 1 wr_lcd (comm,0x30); /*30---基本指令动作*/
94 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
95 1 delay (100);
96 1 wr_lcd (comm,0x06); /*光标的移动方向*/
97 1 wr_lcd (comm,0x0c); /*开显示,关游标*/
98 1 wr_lcd (comm,0x14);
99 1 }
100 /*---------------显示汉字或字符----------------*/
101 void Chinese_disp0 (uchar code *chn) /*此程序为整屏显示,所提供的数据必须是完整的一屏数据否则会出现乱码
-*/
102 { /*空格也应该提供数据*/
103 1 uchar i,j;
104 1 wr_lcd (comm,0x30); /*30---基本指令动作*/
105 1 wr_lcd (comm,0x80);
106 1 for(j=0;j<4;j++)
107 1 {for (i=0;i<16;i++)
108 2 wr_lcd (dat,chn[j*16+i]);
109 2 }
110 1 }
111
112 /*-------------显示汉字或字符-----Haoyf----*/
113 void Chinese_disp1(uchar code *chn) /*单行显示数据*/
114 { int i; /*30---基本指令动作*/
115 1 wr_lcd (comm,0x30); /*显示位置为第一行*/
116 1 wr_lcd (comm,0x80); /*显示16个字符*/
C51 COMPILER V8.08 LCD 09/11/2007 23:01:22 PAGE 3
117 1 for (i=0;i<16;i++)
118 1 { wr_lcd (dat,chn[i]); /*写显示数据*/
119 2 }
120 1 }
121 /*-------------显示汉字或字符-----Haoyf----*/
122 void Chinese_disp2(uchar *chn) /*单行显示数据*/
123 { int i; /*30---基本指令动作*/
124 1 wr_lcd (comm,0x30); /*显示位置为第一行*/
125 1 wr_lcd (comm,0x80); /*显示16个字符*/
126 1 for (i=0;chn[i]!='\0';i++)
127 1 wr_lcd (dat,chn[i]); /*写显示数据*/
128 1 }
129 /*----------在特定的位置显示数据----Haoyf---*/
130 void Chn_dat_disp(uchar address,uchar High,uchar Low ) /*adress要显示的地址,data为要显示汉字的内码*/
131 { /*第一行地址为0x80-0x87;第二行地址为0x90-0x97;第三行地址为0x88-0x8f;第四行地址为0x98-0x9f;*/
132 1 wr_lcd(comm,address);
133 1 wr_lcd(dat,High);
134 1 wr_lcd(dat,Low);
135 1 }
136 /*-------------图片显示-----------------*/
137 void img_disp (uchar code *img) /*通过字模提取工具提取128*64图像的字模*/
138 {
139 1 uchar i,j;
140 1 for(j=0;j<32;j++)
141 1 {
142 2 for(i=0;i<8;i++)
143 2 {
144 3 wr_lcd (comm,0x34);
145 3 wr_lcd (comm,y+j);
146 3 wr_lcd (comm,x1+i);
147 3 wr_lcd (comm,0x30);
148 3 wr_lcd (dat,img[j*16+i*2]);
149 3 wr_lcd (dat,img[j*16+i*2+1]);
150 3 }
151 2 }
152 1 for(j=32;j<64;j++)
153 1 {
154 2 for(i=0;i<8;i++)
155 2 {
156 3 wr_lcd (comm,0x34);
157 3 wr_lcd (comm,y+j-32);
158 3 wr_lcd (comm,x2+i);
159 3 wr_lcd (comm,0x30);
160 3 wr_lcd (dat,img[j*16+i*2]);
161 3 wr_lcd (dat,img[j*16+i*2+1]);
162 3 }
163 2 }
164 1 wr_lcd (comm,0x36);
165 1 }
166 /*--------------清除RAM------------------*/
167 void clrram (void)
168 {
169 1 wr_lcd (comm,0x30);
170 1 wr_lcd (comm,0x01);
171 1 delay (180);
172 1 }
173 /*------------对LCD写数据或指令 -----------------------*/
174 void wr_lcd (uchar dat_comm,uchar content)
175 {
176 1 uchar a,i,j;
177 1 delay (50);
178 1 a=content;
C51 COMPILER V8.08 LCD 09/11/2007 23:01:22 PAGE 4
179 1 cs=1;
180 1 sclk=0;
181 1 sid=1;
182 1 for(i=0;i<5;i++)
183 1 {
184 2 sclk=1;
185 2 sclk=0;
186 2 }
187 1 sid=0;
188 1 sclk=1;
189 1 sclk=0;
190 1 if(dat_comm)
191 1 sid=1; //数据为要现实的data
192 1 else
193 1 sid=0; //所送出的数据为命令command
194 1 sclk=1;
195 1 sclk=0;
196 1 sid=0;
197 1 sclk=1;
198 1 sclk=0;
199 1 for(j=0;j<2;j++)
200 1 {
201 2 for(i=0;i<4;i++)
202 2 {
203 3 a=a<<1;
204 3 sid=CY;
205 3 sclk=1;
206 3 sclk=0;
207 3 }
208 2 sid=0;
209 2 for(i=0;i<4;i++)
210 2 {
211 3 sclk=1;
212 3 sclk=0;
213 3 }
214 2 }
215 1 }
216 /*延时子程序*/
217 void delay (uint us)
218 {
219 1 while(us--);
220 1 }
221 /*延时子程序*/
222 void delay1 (uint ms)
223 {
224 1 uint i,j;
225 1 for(i=0;i<ms;i++)
226 1 for(j=0;j<15;j++)
227 1 delay(1);
228 1 }
229
230 /*液晶显示主函数*/
231
232 main()
233 {
234 1 SP=0x5f;
235 1 init_lcd ();
236 1 clrram();
237 1 img_disp(tab1);
238 1 delay(2000);
239 1 clrram();
240 1 Chinese_disp2(tab2);
C51 COMPILER V8.08 LCD 09/11/2007 23:01:22 PAGE 5
241 1
242 1 while(1);
243 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 673 ----
CONSTANT SIZE = 1024 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 23
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -