📄 lcd.lst
字号:
C51 COMPILER V7.20 LCD 09/18/2008 18:08:21 PAGE 4
180 2 LCD_SCK=1; //时钟电平上升沿 数据位送给LCD
181 2 delay(10);
182 2 }
183 1 LCD_CS=1; //片选关
184 1 delay(20);
185 1 }
186
187
188
189 //----------------------------------------------------
190 //发送数据
191 //----------------------------------------------------
192 void lcd_send_data(uchar dat)
193 {
194 1 uchar i;
195 1 LCD_CS=0; //片选选通
196 1 LCD_A0=1; //选择发送数据
197 1 LCD_SCK=1;
198 1 for(i=0;i<8;i++)
199 1 {
200 2 dat<<=1; //将要发送位送人CY寄存器
201 2 LCD_DA=CY; //发送CY中字节
202 2 LCD_SCK=0;
203 2 delay(10);
204 2 LCD_SCK=1; //时钟电平上升沿 数据位送给LCD
205 2 delay(10);
206 2 }
207 1 LCD_CS=1; //片选关
208 1 delay(20);
209 1 }
210
211
212
213 //--------------------------------------------
214 //显示1个阿拉伯数字
215 //每个数字宽8 高16
216 //wordx:数字列位置(0-119) wordy:数组行(页)(1-8) num:显示的数字(10-0之间的浮点数)
217 //--------------------------------------------
218
219
220 void lcd_display_one_num(uchar wordx,uchar wordy,uchar n)
221 {
222 1 uchar i;
223 1 lcd_set_page(wordy);
224 1 lcd_set_colume(wordx);
225 1 for(i=0;i<8;i++)
226 1 lcd_send_data(*(albnum[n]+i));
227 1 lcd_set_page(wordy+1);
228 1 lcd_set_colume(wordx);
229 1 for(i=0;i<8;i++)
230 1 lcd_send_data(*(albnum[n]+i+8));
231 1 }
232
233
234
235
236 //--------------------------------------------
237 //显示一个浮点数
238 //在wordx wordy位置
239 //第4小数位用舍去法 没有四舍五入
240 //--------------------------------------------
241 void lcd_display_float(uchar wordx,uchar wordy,float num)
C51 COMPILER V7.20 LCD 09/18/2008 18:08:21 PAGE 5
242 {
243 1 uint num_int; //整数部分
244 1 uint num_fra; //小数部分
245 1 if(num<0)
246 1 {
247 2 num=0;
248 2 }
249 1 // num+=0.0004;
250 1 num_int=(uint)num;
251 1 num_fra=(uint)((num-num_int)*10000);
252 1 // num_fra/=10;
253 1
254 1 //--------------------------------------------显示整数部分
255 1 if(num_int>=10000)
256 1 {
257 2 lcd_display_one_num(wordx,wordy,num_int/10000); //显示万位
258 2 wordx+=8;
259 2 lcd_display_one_num(wordx,wordy,(num_int%10000)/1000);//显示千位
260 2 wordx+=8;
261 2 lcd_display_one_num(wordx,wordy,(num_int%1000)/100); //显示百位
262 2 wordx+=8;
263 2 lcd_display_one_num(wordx,wordy,(num_int%100)/10); //显示十位
264 2 wordx+=8;
265 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
266 2 }
267 1
268 1 else if(num_int>=1000)
269 1 {
270 2 lcd_display_one_num(wordx,wordy,num_int/1000); //显示千位
271 2 wordx+=8;
272 2 lcd_display_one_num(wordx,wordy,(num_int%1000)/100);//显示百位
273 2 wordx+=8;
274 2 lcd_display_one_num(wordx,wordy,(num_int%100)/10); //显示十位
275 2 wordx+=8;
276 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
277 2 }
278 1 else if(num_int>=100)
279 1 {
280 2 lcd_display_one_num(wordx,wordy,num_int/100); //显示百位
281 2 wordx+=8;
282 2 lcd_display_one_num(wordx,wordy,(num_int%100)/10); //显示十位
283 2 wordx+=8;
284 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
285 2 }
286 1 else if(num_int>=10)
287 1 {
288 2 lcd_display_one_num(wordx,wordy,num_int/10); //显示十位
289 2 wordx+=8;
290 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
291 2 }
292 1 else
293 1 {
294 2 lcd_display_one_num(wordx,wordy,num_int); //显示个位
295 2 }
296 1 wordx+=8;
297 1 lcd_display_one_num(wordx,wordy,0x0a); //显示小数点
298 1 wordx+=8;
299 1 //-----------------------------------------------显示小数部分
300 1 lcd_display_one_num(wordx,wordy,num_fra/1000); //显示十分位
301 1 wordx+=8;
302 1 lcd_display_one_num(wordx,wordy,(num_fra%1000)/100); //显示百分位
303 1 wordx+=8;
C51 COMPILER V7.20 LCD 09/18/2008 18:08:21 PAGE 6
304 1 lcd_display_one_num(wordx,wordy,(num_fra%100)/10); //显示千分位
305 1 wordx+=8;
306 1 lcd_display_one_num(wordx,wordy,num_fra%10); //显示万分位
307 1 wordx+=8;
308 1
309 1 //-----------------------------------------------显示部分
310 1 }
311
312 //--------------------------------------------
313 //显示一个金额
314 //在wordx wordy位置
315 //第3小数位用舍去法 没有四舍五入
316 //--------------------------------------------
317 void lcd_display_yuan(uchar wordx,uchar wordy,float num)
318 {
319 1 uint num_int; //整数部分
320 1 uint num_fra; //小数部分
321 1 if(num<0)
322 1 {
323 2 num=0;
324 2 }
325 1 num_int=(uint)num;
326 1 num_fra=(uint)((num-num_int)*100);
327 1 // num_fra/=10;
328 1
329 1 //--------------------------------------------显示整数部分
330 1 if(num_int>=10000)
331 1 {
332 2 lcd_display_one_num(wordx,wordy,num_int/10000); //显示万位
333 2 wordx+=8;
334 2 lcd_display_one_num(wordx,wordy,(num_int%10000)/1000);//显示千位
335 2 wordx+=8;
336 2 lcd_display_one_num(wordx,wordy,(num_int%1000)/100); //显示百位
337 2 wordx+=8;
338 2 lcd_display_one_num(wordx,wordy,(num_int%100)/10); //显示十位
339 2 wordx+=8;
340 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
341 2 }
342 1
343 1 else if(num_int>=1000)
344 1 {
345 2 lcd_display_one_num(wordx,wordy,num_int/1000); //显示千位
346 2 wordx+=8;
347 2 lcd_display_one_num(wordx,wordy,(num_int%1000)/100);//显示百位
348 2 wordx+=8;
349 2 lcd_display_one_num(wordx,wordy,(num_int%100)/10); //显示十位
350 2 wordx+=8;
351 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
352 2 }
353 1 else if(num_int>=100)
354 1 {
355 2 lcd_display_one_num(wordx,wordy,num_int/100); //显示百位
356 2 wordx+=8;
357 2 lcd_display_one_num(wordx,wordy,(num_int%100)/10); //显示十位
358 2 wordx+=8;
359 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
360 2 }
361 1 else if(num_int>=10)
362 1 {
363 2 lcd_display_one_num(wordx,wordy,num_int/10); //显示十位
364 2 wordx+=8;
365 2 lcd_display_one_num(wordx,wordy,num_int%10); //显示个位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -