📄 yejing.lst
字号:
129 void LcdWriteData( char dataW )
130 {
131 1 WaitForEnable(); ////检测忙信号////
132 1 RS = 1;
133 1 RW = 0;
134 1 _nop_();
135 1 DataPort = dataW; ///将显示字符的代码送往数据口////
136 1 _nop_();
137 1 E = 1;
138 1 _nop_();
139 1 _nop_();
140 1 E = 0;
141 1 }
142
143 /**************************** 显示字符串函数 *****************************
144 * 功能:从坐标x,y处开始显示指针ptr指定的字符串
145 **************************************************************************/
146 void Disp_strings(uchar x,uchar y, uchar *ptr)
147 {
148 1 while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
149 1 {
150 2 LocateXY( x, y ); // 定位显示地址///
151 2 LcdWriteData(*ptr++ );////对于汉字一个地址要连续写两次,才能构成一个完整的汉字//////
152 2 LcdWriteData(*ptr++ );////对于字母、数字一个地址可写一次,显示时中间有一个空格//////
153 2 ///////////////////////////当然也可连续写两次,显示时中间没有空格///////
154 2 // LcdWriteCommand(0x18,1);//当主程序只有文字信息显示时,此处可用于滚屏显示/////,
155 2 // Delay400Ms(); //////滚屏显示要注意延时///////
156 2 x++;////连续写两次后,地址(横坐标)加1////////
157 2 }
158 1 }
159
160 /**************************** 显示数值函数 *****************************
161 * 功能:从指定的坐标位置x,y处开始显示"-999.999---+999.999"范围的一个数值.
162 **************************************************************************/
163 void Disp_data(uchar x,uchar y, float ndata)
164 {
165 1 unsigned long z;
166 1 uchar tab1[10],tab2[10];
167 1 if(ndata<0) //////////////////第一个if-else结构开始///////////////////////////
168 1 { //
169 2 tab1[0]=array4[12]; //
170 2 ndata=fabs(ndata); //对正负数分别赋符号///////
171 2 } //
172 1 else{tab1[0]=array4[11];} ////第一个if-else结构结束///////////////////////////
173 1 ////////////////////////////////////////////////////////////////////////////////
174 1 //////////////////第二个if-else结构开始/////////////////////////////////////////
175 1 if((ndata<1000)&&(ndata>=0.001))////显示的数其绝对值必须在0.001-1000之间
176 1 {
177 2 z=(unsigned long)(ndata*1000);////强制类型转换//////
178 2 //tab1[0]是符号位////////////////下面是获取各位数值///////
C51 COMPILER V7.50 YEJING 04/10/2008 22:19:37 PAGE 4
179 2 tab1[1]=array4[z/100000]; ////获得千位信息'0-9'中的某一个/////
180 2 tab1[2]=array4[z%100000/10000];////获得百位信息'0-9'中的某一个/////
181 2 tab1[3]=array4[z%10000/1000]; ////获得十位信息'0-9'中的某一个/////
182 2 tab1[4]=array4[10];/////tab1[4]是小数点位////////
183 2 tab1[5]=array4[z%1000/100]; ////获得十分位信息'0-9'中的某一个/////
184 2 tab1[6]=array4[z%100/10]; ////获得百分位信息'0-9'中的某一个/////
185 2 tab1[7]=array4[z%10]; ////获得千分位信息'0-9'中的某一个/////
186 2 tab1[8]=array4[13]; ////tab1[9]表示的是空格字符/////
187 2 tab1[9]=array4[14]; ////tab1[8]表示的是'%'字符,数组结束必须有'%'/////
188 2 ////////////////////////////////////
189 2 if(tab1[1]=='0') ////考虑千位为'0'的情况////注意应该是tab1[1]=='0'////
190 2 { ////而不是tab1[1]==0/////////
191 3 if(tab1[2]=='0') ////考虑百位为'0'的情况////
192 3 { //
193 4 tab2[0]=tab1[0]; //符号位////
194 4 tab2[1]=tab1[3]; //个位////
195 4 tab2[2]=tab1[4]; //小数点////
196 4 tab2[3]=tab1[5]; //十分位///
197 4 tab2[4]=tab1[6]; //百分位///
198 4 tab2[5]=tab1[7]; //千分位///
199 4 tab2[6]=tab1[8]; ////数组结束必须有%/////
200 4 } //
201 3 else ////百位不为'0'的情况////
202 3 { //
203 4 tab2[0]=tab1[0]; ////符号位////
204 4 tab2[1]=tab1[2]; ////十位///
205 4 tab2[2]=tab1[3]; ////个位////
206 4 tab2[3]=tab1[4]; ////小数点////
207 4 tab2[4]=tab1[5]; ////十分位///
208 4 tab2[5]=tab1[6]; ////百分位///
209 4 tab2[6]=tab1[7]; ////千分位///
210 4 tab2[7]=tab1[8]; /////根据实际情况添加的空格//与Disp_strings()有关////
211 4 tab2[8]=tab1[9]; ////数组结束必须有%/////
212 4 } //
213 3 } //
214 2 else ////千位不为'0'的情况////
215 2 {
216 3 tab2[0]=tab1[0];//符号位////
217 3 tab2[1]=tab1[1];//千位///
218 3 tab2[2]=tab1[2];//百位///
219 3 tab2[3]=tab1[3];//个位////
220 3 tab2[4]=tab1[4];//小数点////
221 3 tab2[5]=tab1[5];//十分位///
222 3 tab2[6]=tab1[6];//百分位///
223 3 tab2[7]=tab1[7];//千分位///
224 3 tab2[8]=tab1[9]; ////数组结束必须有%/////
225 3 }
226 2 ////////////////////////////////////
227 2 Disp_strings(x,y,tab2);/////////////////显示数值////
228 2 }
229 1 else{ Disp_strings(x,y,array5);}//////数值超过显示范围,报错!
230 1 ////////////////////////////////////////////////////////////////////////////////
231 1 //////////////////第二个if-else结构结束/////////////////////////////////////////
232 1 }
233
234 /****************************** 初始化函数 ******************************
235 * 功能:向LCD模块写入不同命令,完成必要的初始化过程
236 *************************************************************************/
237 void Lcd_initilize( void )
238 {
239 1 LcdWriteCommand( 0x38, 0); /* 设置显示模式(不检测忙信号) */
240 1 Delay5Ms(); /* 短延时 */
C51 COMPILER V7.50 YEJING 04/10/2008 22:19:37 PAGE 5
241 1 LcdWriteCommand( 0x38, 0); /* 共进行三次 */
242 1 Delay5Ms();
243 1 LcdWriteCommand( 0x38, 0);
244 1 Delay5Ms();
245 1 LcdWriteCommand( 0x38, 1); /* 设置显示模式(以后均检测忙信号) */
246 1 LcdWriteCommand( 0x08, 1); /* 显示关闭 */
247 1 LcdWriteCommand( 0x01, 1); /* 显示清屏 */
248 1 LcdWriteCommand( 0x06, 1); /* 设置显示光标移动 */
249 1 LcdWriteCommand( 0x0c, 1); /* 设置显示开及光标位置 */
250 1 }
251
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 747 ----
CONSTANT SIZE = 29 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 33
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 + -