⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lst

📁 2008年山东省大学生电子设计大赛 c题 多功能电子计价秤 单片机用的 c8051f005
💻 LST
📖 第 1 页 / 共 3 页
字号:
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 + -