📄 12864.lst
字号:
C51 COMPILER V7.09 12864 08/06/2007 14:13:53 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE 12864
OBJECT MODULE PLACED IN 12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*------------------------------------------------------------------------------------------
2 [文件名] 12864.c
3 [功能] 128X64驱动程序
4 ===========================================================================================*/
5
6 #include "12864.h"
*** ERROR C202 IN LINE 15 OF 12864.H: 'P2': undefined identifier
*** ERROR C202 IN LINE 16 OF 12864.H: 'P2': undefined identifier
*** ERROR C202 IN LINE 17 OF 12864.H: 'P1': undefined identifier
*** ERROR C202 IN LINE 18 OF 12864.H: 'P2': undefined identifier
*** ERROR C202 IN LINE 19 OF 12864.H: 'P2': undefined identifier
*** ERROR C202 IN LINE 21 OF 12864.H: 'P3': undefined identifier
7 #include "ASCII816.h"
8
9
10 /*----------------------------------------------------------------------------------------------------*/
11 /* ****函数列表****
12
13 //开关显示
14 void SetOnOff(unsigned char onoff)
15
16 //选择屏幕
17 //screen: 0-全屏,1-左屏,2-右
18 void SelectScreen(unsigned char screen)
19
20 //清屏
21 //screen: 0-全屏,1-左屏,2-右
22 void ClearScreen(unsigned char screen)
23
24 //显示8*8点阵
25 //旋转90度:字模被竖着切分
26 //lin:行(0-7), column: 列(0-15)
27 //address : 字模区首地址
28 void Show88(unsigned char lin,unsigned char column,unsigned int address)
29
30 //显示8*16字符
31 //旋转90度:字模被竖着切分
32 //lin:行(0-3), column: 列(0-15)
33 //character:字符代码(标准ASCII码)
34 void ShowChar(unsigned char lin,unsigned char column,unsigned char character)
35
36 //显示8*16字符串
37 //!!!只能显示在一行上即: 串长+column <=15
38 //旋转90度:字模被竖着切分
39 //lin:行(0-3), column: 列(0-15)
40 //address : 字模区首地址
41 void ShowString(unsigned char lin,unsigned char column, unsigned char *string)
42
43 //显示一个汉字
44 //旋转90度:字模被竖着切分
45 //lin:行(0-3), column: 列(0-15)
46 //hzcode: 汉字代码(自定义的)
47 void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
48
49 //显示图片
C51 COMPILER V7.09 12864 08/06/2007 14:13:53 PAGE 2
50 //旋转90度 :字模被竖着切分
51 //startline :开始行
52 //startcolumn:开始列
53 //linechar :图片行点除8(图片以8*8点阵为单位)
54 //columnchar :图片列点除8(图片以8*8点阵为单位)
55 //address : 字模区首地址
56 void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char co
-lumnchar,unsigned int address)
57 //!!问题大户
58 //显示一行汉字
59 //lin:行
60 //lineheadaddr: 此行汉字代码区首地址
61 void ShowLine(unsigned char lin,unsigned int lineheadaddr)
62
63 //显示一屏汉字
64 //pageheadaddr:此屏汉字代码地址区首地址
65 void ShowPage(unsigned int pageheadaddr)
66
67 //反显一个8*8字块
68 //lin:行(0-3), column: 列(0-7)
69 void ReverseShow88(unsigned char lin,unsigned char column)
70
71
72 //反显一个字符
73 //lin:行(0-4), column: 列(0-15)
74 void ReverseShowChar(unsigned char lin,unsigned char column)
75
76
77 //反显一个汉字
78 //lin:行(0-3), column: 列(0-7)
79 ReverseShowHZ(unsigned char lin,unsigned char column)
80
81 //反显一行汉字
82 //lin:行
83 ReverseShow(unsigned char lin)
84
85 //初始化LCD
86 void InitLCD()
87
88 ****函数列表结束**** */
89 /*----------------------------------------------------------------------------------------------------*/
90 /*--基本函数源程序------------------------------------------------------------------------------------*/
91 //延时
92 void LCDdelay()
93 {
94 1 unsigned int i=500;
95 1 while(i--) {;}
96 1 }
97 /*----------------------------------------------------------------------------------------------------*/
98 //状态检查
99 void CheckState()
100 {
101 1 unsigned char dat;
102 1 di=0;
*** ERROR C202 IN LINE 102 OF 12864.C: 'di': undefined identifier
103 1 rw=1;
*** ERROR C202 IN LINE 103 OF 12864.C: 'rw': undefined identifier
104 1 do{
105 2 LCD12864DataPort=0xff;
*** ERROR C202 IN LINE 105 OF 12864.C: 'P0': undefined identifier
106 2 en=1; dat=LCD12864DataPort; en=0;
*** ERROR C202 IN LINE 106 OF 12864.C: 'en': undefined identifier
C51 COMPILER V7.09 12864 08/06/2007 14:13:53 PAGE 3
*** ERROR C202 IN LINE 106 OF 12864.C: 'P0': undefined identifier
*** ERROR C202 IN LINE 106 OF 12864.C: 'en': undefined identifier
107 2 dat=0x90 & dat; //仅当第4,7位为0时才可操作
108 2 }while(!(dat==0x00));
109 1 }
110 /*----------------------------------------------------------------------------------------------------*/
111 //写显示数据
112 //dat:显示数据
113 void WriteByte(unsigned char dat)
114 {
115 1 CheckState();
116 1 di=1; rw=0;
*** ERROR C202 IN LINE 116 OF 12864.C: 'di': undefined identifier
*** ERROR C202 IN LINE 116 OF 12864.C: 'rw': undefined identifier
117 1 LCD12864DataPort=dat;
*** ERROR C202 IN LINE 117 OF 12864.C: 'P0': undefined identifier
118 1 en=1; en=0;
*** ERROR C202 IN LINE 118 OF 12864.C: 'en': undefined identifier
*** ERROR C202 IN LINE 118 OF 12864.C: 'en': undefined identifier
119 1 }
120 /*-----------------------------------------------------------------------------------------------------*/
121 //向LCD发送命令,主要被以下几个函数调用
122 //command :命令
123 SendCommandToLCD(unsigned char command)
124 {
125 1 CheckState();
126 1 rw=0;
*** ERROR C202 IN LINE 126 OF 12864.C: 'rw': undefined identifier
127 1 LCD12864DataPort=command;
*** ERROR C202 IN LINE 127 OF 12864.C: 'P0': undefined identifier
128 1 en=1; en=0;
*** ERROR C202 IN LINE 128 OF 12864.C: 'en': undefined identifier
*** ERROR C202 IN LINE 128 OF 12864.C: 'en': undefined identifier
129 1 }
130 /*----------------------------------------------------------------------------------------------------*/
131 //设定行地址(页)--X 0-7
132 void SetLine(unsigned char line)
133 {
134 1 line=line & 0x07; // 0<=line<=7
135 1 line=line|0xb8; //1011 1xxx
136 1 SendCommandToLCD(line);
137 1 }
138 //设定列地址--Y 0-63
139 void SetColumn(unsigned char column)
140 {
141 1 column=column &0x3f; // 0=<column<=63
142 1 column=column | 0x40; //01xx xxxx
143 1 SendCommandToLCD(column);
144 1 }
145 //设定显示开始行--XX
146 void SetStartLine(unsigned char startline) //0--63
147 {
148 1 startline=startline & 0x07;
149 1 startline=startline|0xc0; //1100 0000
150 1 SendCommandToLCD(startline);
151 1 }
152 //开关显示,1为开, 0为关。
153 void SetOnOff(unsigned char onoff)
154 {
155 1 onoff=0x3e | onoff; //0011 111x
156 1 SendCommandToLCD(onoff);
157 1 }
C51 COMPILER V7.09 12864 08/06/2007 14:13:53 PAGE 4
158 /*---------------------------------------------------------------------------------------------------*/
159 //选择屏幕
160 //screen: 0-全屏,1-右屏,2-左屏
161 void SelectScreen(unsigned char screen)
162 { //北京显示器:负有效 cs1: 0--右; cs2: 0--左
163 1 switch(screen)
164 1 { case 0: cs1=0;//全屏
*** ERROR C202 IN LINE 164 OF 12864.C: 'cs1': undefined identifier
165 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
166 2 cs2=0;
*** ERROR C202 IN LINE 166 OF 12864.C: 'cs2': undefined identifier
167 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
168 2 break;
169 2 case 1: cs1=1;//左屏
*** ERROR C202 IN LINE 169 OF 12864.C: 'cs1': undefined identifier
170 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
171 2 cs2=0;
*** ERROR C202 IN LINE 171 OF 12864.C: 'cs2': undefined identifier
172 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
173 2 break;
174 2 case 2: cs1=0;//右屏
*** ERROR C202 IN LINE 174 OF 12864.C: 'cs1': undefined identifier
175 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
176 2 cs2=1;
*** ERROR C202 IN LINE 176 OF 12864.C: 'cs2': undefined identifier
177 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
178 2 break;
179 2 }
180 1 }
181 /*---------------------------------------------------------------------------------------------------*/
182 //清屏
183 //screen: 0-全屏,1-左屏,2-右
184 void ClearScreen(unsigned char screen)
185 { unsigned char i,j;
186 1 SelectScreen(screen);
187 1 for(i=0;i<8;i++)
188 1 { SetLine(i);
189 2 for(j=0;j<64;j++)
190 2 {
191 3 WriteByte(0x00);
192 3 }
193 2 }
194 1 }
195 /*--------------------------------------------------------------------------------------------------*/
196 //显示8*8点阵
197 //旋转90度:字模被竖着切分
198 //lin:行(0-7), column: 列(0-15)
199 //address : 字模区首地址
200 void Show88(unsigned char lin,unsigned char column,unsigned int address)
201 { unsigned char i;
202 1 if(column>16) {return;}
203 1 if(column<8) SelectScreen(2); //如果列数<8(0,1,2,3,4,5,6,7)则写在第二屏上
204 1 else {
205 2 SelectScreen(1); //否则 (8,9,10,11,12,13,14,15)写在第一屏上
206 2 column=column & 0x07; //防止越界
207 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -