📄 fyd12864.lst
字号:
C51 COMPILER V8.02 FYD12864 10/15/2008 12:11:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE FYD12864
OBJECT MODULE PLACED IN FYD12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FYD12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "FYD12864.h"
2
3 //IO输入输出控制
4 unsigned char code AC_TABLE[]={
5 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
6 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
7 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
8 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, //第四行汉字位置
9 };
10
11 //短延时函数:ShortDelay()
12 void ShortDelay(uchar i)
13 {
14 1 for(;i>0;i--) ;
15 1 }
16
17 //长延时函数:LongDelay()
18 void LongDelay(uint i)
19 {
20 1 uint j;
21 1 for(;i>0;i--)
22 1 { for(j=1000;j>0;j--);}
23 1 }
24
25
26
27
28 ////////////////////////////////////////////////
29 ///////////////////////////////////////////////
30 void SendByteLCD(uchar WLCDData)
31 {
32 1 uchar i;
33 1 for(i=0;i<8;i++)
34 1 {
35 2 if((WLCDData<<i)&0x80)SID=1;
36 2 else SID=0;
37 2 SCLK=0;
38 2 SCLK=1;
39 2 }
40 1 }
41
42 SPIWR(uchar Wdata,uchar RS)
43 {
44 1 SendByteLCD(0xf8+(RS<<1));
45 1 SendByteLCD(Wdata&0xf0);
46 1 SendByteLCD((Wdata<<4)&0xF0);
47 1 }
48
49
50
51 //写指令函数:WriteInstruc()
52 void WriteInstruc(uchar CMD)
53 {
54 1 SPIWR(CMD,0);
55 1 ShortDelay(90);//
C51 COMPILER V8.02 FYD12864 10/15/2008 12:11:27 PAGE 2
56 1 }
57
58 //写一字节数据函数:WriteOneByte()
59 void WriteOneByte(uchar Data)
60 {
61 1 SPIWR(Data,1);
62 1 }
63
64 //初始化函数:InitLCD()
65 void InitLCD(void)
66 {
67 1 RST=0;
68 1 ShortDelay(50);
69 1 RST=1;
70 1
71 1 WriteInstruc(0x30);//功能设置,一次送8位数据,基本指令集
72 1 WriteInstruc(0x0C);//0000,1100 整体显示,游标off,游标位置off
73 1 WriteInstruc(0x01);//0000,0001 清DDRAM
74 1 WriteInstruc(0x02);//0000,0010 DDRAM地址归位
75 1 WriteInstruc(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC//
76 1 // WriteInstruc(0x04);//点设定,显示字符/光标从左到右移位,DDRAM地址加 一//
77 1 // WriteInstruc(0x0C);//显示设定,开显示,显示光标,当前显示位反白闪动
78 1 }
79
80 //显示一个汉字(16x16)函数:DispOneWord()
81 void DispOneWord(uchar X,uchar Y,uint Word)
82 {
83 1 uchar Disp_Address;
84 1 uchar Address_H;
85 1 uchar Address_L;
86 1
87 1 if((X == 0x00)||(X == 0x02)) // 0,2行
88 1 Address_H = 0x80;
89 1 else // 1,3行
90 1 Address_H = 0x90;
91 1
92 1 if((X == 0x00)||(X == 0x01)) // 0,1行
93 1 Address_L = Y;
94 1 else // 2,3行
95 1 Address_L = Y + 0x08;
96 1 Disp_Address = (Address_H | Address_L) & 0xff;
97 1 SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
98 1 WriteOneByte(((Word & 0xff00) >> 8) & 0xff); // H_Byte
99 1 WriteOneByte(Word & 0xff); // L_Byte
100 1 }
101
102
103 /*void disparr(uchar X,uchar Y,char *ptr) //从x y连续显示三个汉字
104
105 { uchar Disp_Address;
106 uchar Address_H;
107 uchar Address_L;
108 uchar dispname[6]={0,0,0,0,0,0};
109 uchar i;
110
111 if((X == 0x00)||(X == 0x02)) // 0,2行
112 Address_H = 0x80;
113 else // 1,3行
114 Address_H = 0x90;
115
116 if((X == 0x00)||(X == 0x01)) // 0,1行
117 Address_L = Y;
C51 COMPILER V8.02 FYD12864 10/15/2008 12:11:27 PAGE 3
118 else // 2,3行
119 Address_L = Y + 0x08;
120 Disp_Address = (Address_H | Address_L) & 0xff;
121 SetDDRAM_Add(Disp_Address);
122 for(i=0;i<6;i++)
123 dispname[i]=*(ptr+i);
124 WriteOneByte(dispname[0] & 0xff);
125 WriteOneByte(dispname[1] & 0xff);
126 Disp_Address = (Address_H | Address_L+1) & 0xff;
127 SetDDRAM_Add(Disp_Address);
128 WriteOneByte(dispname[2] & 0xff);
129 WriteOneByte(dispname[3] & 0xff);
130 Disp_Address = (Address_H| Address_L+2) & 0xff; //h+2显示正常
131 SetDDRAM_Add(Disp_Address);
132 WriteOneByte(dispname[4] & 0xff);
133 WriteOneByte(dispname[5] & 0xff);
134
135
136 }*/
137 /*//显示两个字符(8x16)函数:DispTwoCharacter()
138 void DispTwoCharacter(uchar X,uchar Y,uchar Character1,uchar Character2)
139 {
140 uchar Disp_Address;
141 uchar Address_H;
142 uchar Address_L;
143
144 if((X == 0x00)||(X == 0x02)) // 0,2行
145 Address_H = 0x80;
146 else // 1,3行
147 Address_H = 0x90;
148
149 if((X == 0x00)||(X == 0x01)) // 0,1行
150 Address_L = Y;
151 else // 2,3行
152 Address_L = Y + 0x08;
153 Disp_Address = Address_H | Address_L;
154 SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
155 WriteOneByte(Character1);
156 WriteOneByte(Character2);
157 }
158 */
159 //显示一个字符函数
160 void DispOneCharacter(uchar X,uchar Y,uchar Character)
161 { uchar Disp_Address;
162 1 uchar Address_H;
163 1 uchar Address_L;
164 1
165 1 if((X == 0x00)||(X == 0x02)) // 0,2行
166 1 Address_H = 0x80;
167 1 else // 1,3行
168 1 Address_H = 0x90;
169 1
170 1 if((X == 0x00)||(X == 0x01)) // 0,1行
171 1 Address_L = Y;
172 1 else // 2,3行
173 1 Address_L = Y + 0x08;
174 1 Disp_Address = Address_H | Address_L;
175 1 SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
176 1 WriteOneByte(Character);
177 1 }
178
179
C51 COMPILER V8.02 FYD12864 10/15/2008 12:11:27 PAGE 4
180 //连续显示n个字符的数组 最多16个字符
181
182 void disponelinechar(uchar X,uchar Y,uchar *ptr,uchar m)
183 {uchar Disp_Address;
184 1 uchar Address_H;
185 1 uchar Address_L;
186 1 uchar i,n,k;
187 1 uchar dispchar[16];
188 1 n=m;
189 1 if((X == 0x00)||(X == 0x02)) // 0,2行
190 1 Address_H = 0x80;
191 1 else // 1,3行
192 1 Address_H = 0x90;
193 1
194 1 if((X == 0x00)||(X == 0x01)) // 0,1行
195 1 Address_L = Y;
196 1 else // 2,3行
197 1 Address_L = Y + 0x08;
198 1 for(i=0;i<n;i++)
199 1 dispchar[i]=*(ptr+i);
200 1 k=ceil(n/2);
201 1 for(i=0;i<k;i++)
202 1 {Disp_Address = (Address_H | Address_L+i)& 0xff;
203 2 SetDDRAM_Add(Disp_Address);
204 2 WriteOneByte(dispchar[2*i]& 0xff);
205 2 WriteOneByte(dispchar[2*i+1]& 0xff);
206 2 }
207 1
208 1 }
209
210
211 /*void disponelinehanzi(uchar X,uchar Y,char *ptr) //从x y连续显示一行8个汉字
212
213 { uchar Disp_Address;
214 uchar Address_H;
215 uchar Address_L;
216 uchar dispname[16];
217 uchar i;
218
219 if((X == 0x00)||(X == 0x02)) // 0,2行
220 Address_H = 0x80;
221 else // 1,3行
222 Address_H = 0x90;
223
224 if((X == 0x00)||(X == 0x01)) // 0,1行
225 Address_L = Y;
226 else // 2,3行
227 Address_L = Y + 0x08;
228 Disp_Address = (Address_H | Address_L) & 0xff;
229
230 for(i=0;i<16;i++)
231 dispname[i]=*(ptr+i);
232 for(i=0;i<8;i++)
233 { Disp_Address = (Address_H | Address_L+i) & 0xff;
234 SetDDRAM_Add(Disp_Address);
235 WriteOneByte(dispname[2*i] & 0xff);
236 WriteOneByte(dispname[2*i+1] & 0xff); }
237
238
239 }
240
241 void readtwocharacter(uchar X,uchar Y,uchar Character1,char Character2)
C51 COMPILER V8.02 FYD12864 10/15/2008 12:11:27 PAGE 5
242 { uchar Disp_Address;
243 uchar Address_H;
244 uchar Address_L;
245
246 if((X == 0x00)||(X == 0x02)) // 0,2行
247 Address_H = 0x80;
248 else // 1,3行
249 Address_H = 0x90;
250
251 if((X == 0x00)||(X == 0x01)) // 0,1行
252 Address_L = Y;
253 else // 2,3行
254 Address_L = Y + 0x08;
255 Disp_Address = Address_H | Address_L;
256 SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
257 Character1=ReadOneByte( );
258 Character2=ReadOneByte( );
259 }
260 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 373 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 30 27
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 + -