📄 sed1520_zongxian.lst
字号:
164 1 unsigned char show_DATA;
165 1 unsigned char state_temp;
166 1 while(state_temp&0x80==1) //判"忙"标志为"0"否, 否再读
167 1 state_temp=CRADD2; //设置读状态字地址
168 1 show_DATA=DRADD2; // 读数据
169 1 return(show_DATA); //返回显示区数据
170 1 }//--------------------------------------------------------------------------------------------------
171 // 函数名称: LCD_Command
172 // 入口参数: nCommand 命令字
173 // 函数功能: 把命令字写入两个SED1520
174 //--------------------------------------------------------------------------------------------------
175 void LCD_Command(unsigned char nCommand)
176 {
177 1 LCD_Command1(nCommand);
178 1 LCD_Command1(nCommand);
179 1 }
C51 COMPILER V7.06 SED1520_ZONGXIAN 06/08/2005 22:56:46 PAGE 4
180 //--------------------------------------------------------------------------------------------------
181 // 函数名称: LCD_SetRam
182 // 入口参数: bChip2,ndata
183 // bChip2用于选择控制器 bChip2=0选择SED1520-1
184 // bChip2=1选择SED1520-2
185 // ;ndata是要写入的数据
186 // 函数功能: 把显示数据写入其中一个SED1520
187 //--------------------------------------------------------------------------------------------------
188 void LCD_SetRam(bit bChip2,unsigned char ndata)
189 {
190 1 if(!bChip2)
191 1 {
192 2 WRITE_showDATA1(ndata);
193 2 }
194 1 else
195 1 {
196 2 WRITE_showDATA2(ndata);
197 2 }
198 1 }
199 //--------------------------------------------------------------------------------------------------
200 // 函数名称: LCD_Write
201 // 入口参数: npage, ncolumn,ndata
202 // npage取值0~7;当取0~3时在SED1520-1;
203 // 当取4~1时在SED1520-2;
204 // ncolumn取 0~60
205 // ;ndata是要写入的数据
206 // 函数功能: 把显示数据写入指定的位置
207 //--------------------------------------------------------------------------------------------------
208 void LCD_Write(unsigned char npage,unsigned char ncolumn,unsigned char ndata)
209 {
210 1 LCD_SetPage(npage%4);
211 1 LCD_SetColumn(ncolumn);
212 1 LCD_SetRam(npage>3,ndata);
213 1 }
214 //--------------------------------------------------------------------------------------------------
215 // 函数名称: LCD_PageWrite
216 // 入口参数: npage,*ndata
217 // npage取值0~7;当取0~3时在SED1520-1;
218 // 当取4~1时在SED1520-2;
219 // *ndata是要写入的数据的地址指针
220 // 函数功能: 把显示数据写入指定的位置
221 //--------------------------------------------------------------------------------------------------
222 void LCD_PageWrite(unsigned char npage,unsigned char idata *ndata)
223 {
224 1 unsigned char i;
225 1 bit bChip2=npage>3;
226 1 LCD_SetPage(npage%4);
227 1 LCD_SetColumn(0);
228 1 for(i=0;i<61;i++)
229 1 LCD_SetRam(bChip2,ndata[i]);
230 1 }
231 //--------------------------------------------------------------------------------------------------
232 // 函数名称: LCD_Init
233 // 函数功能: 初始化SED1520
234 //--------------------------------------------------------------------------------------------------
235 void LCD_Init()
236 {
237 1 LCD_Command(LCD_RESET);
238 1 LCD_Command(0xa0);
239 1 LCD_Command(LCD_DUTY32);
240 1 LCD_Command(0xa4);
241 1 }
C51 COMPILER V7.06 SED1520_ZONGXIAN 06/08/2005 22:56:46 PAGE 5
242 //--------------------------------------------------------------------------------------------------
243 // 函数名称: GetIndex
244 // 入口参数: szText
245 // szText表示要显示的字符
246 // 返回值: GetIndex
247 // 要显示的字符在字摩存储区的位置(第几个子模)
248 // 函数功能: 查询字符在字模存储区的位置
249 //--------------------------------------------------------------------------------------------------
250 unsigned char GetIndex(unsigned char szText)
251 {
252 1 unsigned char code TAB[100]={ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q'
253 1 ,'R','S','T','U','V','W','X','Y','Z'};
254 1 unsigned char i;
255 1 for(i=0;i<=26;i++)
256 1 if(szText==TAB[i]) return i;
257 1 return 0x00;
258 1 }
259 //--------------------------------------------------------------------------------------------------
260 // 函数名称: GetTextFont
261 // 入口参数: index
262 // index表示要查询第几个字模(所有的子模预先存在程序存储区)
263 // 返回值: Font
264 // 6个字节的font用于存储字模,返回字模存储区的首地址
265 // 函数功能: 查询字符的字模
266 //--------------------------------------------------------------------------------------------------
267 unsigned char *GetTextFont(unsigned char index)
268 {
269 1 static unsigned char Font[6];
270 1 unsigned char i;
271 1 for(i=0;i<6;i++)
272 1 Font[i]=ASCII[index][i];
273 1 return Font;
274 1 }
275 //--------------------------------------------------------------------------------------------------
276 // 函数名称: LCD_TextOut
277 // 入口参数: x,y,*szText
278 // x,y用于指定显示区的位置
279 // *szText是要显示字符字模存储区的首地址
280 // 函数功能: 在指定的位置显示一个字符
281 //--------------------------------------------------------------------------------------------------
282 void LCD_TextOut(unsigned char x,unsigned char y,unsigned char *szText)
283 {
284 1 unsigned char i;
285 1 bit bChip2;
286 1 x%=20;
287 1 y%=4;
288 1 if(x>=10)
289 1 {
290 2 x-=10;
291 2 y+=4;
292 2 }
293 1 bChip2=y>3;
294 1 LCD_SetPage(y%4);
295 1 LCD_SetColumn(x*6);
296 1 for(i=0;i<6;i++) LCD_SetRam(bChip2,szText[i]);
297 1 }
298 //--------------------------------------------------------------------------------------------------
299 // 函数名称:Printf
300 // 入口参数: x,y,*szText
301 // x,y用于指定显示区的初始位置
302 // *SHOW_WORD指向要显示字符数组
303 // 函数功能: 从指定的位置开始连续显示字符,最多显示20个字符
C51 COMPILER V7.06 SED1520_ZONGXIAN 06/08/2005 22:56:46 PAGE 6
304 //--------------------------------------------------------------------------------------------------
305 void Printf(unsigned char x,unsigned char y,unsigned char *SHOW_WORD)
306 {
307 1 unsigned char *Text;
308 1 while(*SHOW_WORD)
309 1 {
310 2 Text=GetTextFont(GetIndex(*SHOW_WORD));
311 2 LCD_TextOut(x++,y,Text);
312 2 if(x==20) break;
313 2 SHOW_WORD++;
314 2 }
315 1 }
316
317
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 360 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -