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

📄 lcd.lst

📁 51单片机硬盘MP3播放器 的原理图及源代码 增加了USB下载文件功能; 汉字LCD显示功能;子文件夹功能等。并对软件做了一些修改。并将硬件电路图画出来了。由于做得仓促
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   03/02/2006 23:11:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /************************************************************************************
   2            本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
   3          
   4             LCD.C File
   5             Created by Computer-lov. Date: 2005.3.19
   6             Last edited date: 2005.5.31
   7             version 1.1
   8             Copyright (c) 2005 Computer-lov
   9             All rigths reserved
  10          **************************************************************************************/
  11          
  12          #include "AT89C51SND1C.H"
  13          #include "hardware.h"
  14          #include "LCD.H"
  15          #include "file_system.h"
  16          #include "unicode.h"
  17          
  18          unsigned char black;   //是否反显
  19          
  20          //////////////////////////  等待LCD忙碌  ////////////////////////////////////////////////////////
  21          void wait_LCD_busy(void)
  22          {
  23   1       do
  24   1        {
  25   2         LCD_DATA=0xFF;
  26   2         LCD_EN=0;
  27   2         LCD_RS=0;
  28   2         LCD_RW=1;
  29   2         LCD_EN=1;
  30   2        }while(LCD_DATA&0x80);
  31   1      }
  32          ////////////////////////////////////////////////////////////////////////////////////////////////
  33          
  34          ////////////////////////////////////////   写一个字节显示数据   ///////////////////////////////
  35          void write_LCD_data(unsigned char lcd_data)
  36          {
  37   1       wait_LCD_busy();
  38   1       LCD_RS=1;
  39   1       LCD_RW=0;
  40   1       LCD_EN=1;
  41   1       LCD_DATA=lcd_data;
  42   1       LCD_EN=0;
  43   1       LCD_DATA=0xFF;
  44   1      }
  45          //////////////////////////////////////////////////////////////////////////////////////////////
  46          
  47          ///////////////////////////////////////////////////////////////////////////////////////////////
  48          /*unsigned char read_LCD_data(void)
  49          {
  50           unsigned char read_data;
  51           wait_LCD_busy();
  52           LCD_DATA=0xFF;
  53           LCD_RS=1;
  54           LCD_RW=1;
  55           LCD_EN=1;
C51 COMPILER V7.06   LCD                                                                   03/02/2006 23:11:51 PAGE 2   

  56           read_data=LCD_DATA;
  57           LCD_EN=0;
  58           return read_data;
  59          }*/
  60          ////////////////////////////////////////////////////////////////////////////////////////////////
  61          
  62          ///////////////////////////     写LCD 指令  ////////////////////////////////////////////////////
  63          void write_LCD_command(unsigned char command)
  64          {
  65   1       wait_LCD_busy();
  66   1       LCD_RS=0;
  67   1       LCD_RW=0;
  68   1       LCD_EN=1;
  69   1       LCD_DATA=command;
  70   1       LCD_EN=0;
  71   1       LCD_DATA=0xFF;
  72   1      }
  73          /////////////////////////////////////////////////////////////////////////////////////////////////
  74          
  75          /////////////////////////// LCD清屏 ////////////////////////////////////////////////////////////
  76          void LCD_cls(void)
  77          {
  78   1       write_LCD_command(0x01);
  79   1      }
  80          ////////////////////////////////////////////////////////////////////////////////////////////////
  81          
  82          ////////////////////////////   LCD 从第一行开始显示  ///////////////////////////////////////////
  83          void LCD_go_home(void)
  84          {
  85   1       write_LCD_command(0x80);
  86   1      }
  87          ////////////////////////////////////////////////////////////////////////////////////////////////
  88          
  89          ////////////////////////////   LCD 换到第二行开始  /////////////////////////////////////////////
  90          void LCD_line_feed(void)
  91          {
  92   1       write_LCD_command(0x90);
  93   1      }
  94          ////////////////////////////////////////////////////////////////////////////////////////////////
  95          
  96          ////////////////////////////   LCD 初始化  //////////////////////////////////////////////////////
  97          void LCD_initial(void)
  98          {
  99   1       wait_LCD_busy();
 100   1       write_LCD_command(0x18);
 101   1       write_LCD_command(0x01);
 102   1       write_LCD_command(0x0C);
 103   1       LCD_cls();
 104   1       black=0;
 105   1       prints("开机......");
 106   1       write_LCD_command(0x8E);
 107   1       write_LCD_data(' ');
 108   1      }
 109          /////////////////////////////////////////////////////////////////////////////////////////////////
 110          
 111          ////////////////////////////   LCD显示一字符串  ////////////////////////////////////////////////
 112          void prints(unsigned char * temp)
 113          {
 114   1       while((*temp)!='\0')
 115   1        {
 116   2         write_LCD_data(*temp);
 117   2         temp++;
C51 COMPILER V7.06   LCD                                                                   03/02/2006 23:11:51 PAGE 3   

 118   2        }
 119   1      }
 120          /////////////////////////////////////////////////////////////////////////////////////////////////
 121          
 122          //////////////////////////   LCD显示一个长整数  /////////////////////////////////////////////////
 123          void printf(unsigned long int x)
 124          {
 125   1       signed char i;
 126   1       unsigned char display_buffer[10];
 127   1       display_buffer[10]=0;
 128   1       for(i=9;i>=0;i--)
 129   1        {
 130   2         display_buffer[i]='0'+x%10;
 131   2         x/=10;
 132   2        }
 133   1       for(i=0;i<9;i++)
 134   1        {
 135   2         if(display_buffer[i]!='0')break;
 136   2        }
 137   1       for(;i<10;i++)write_LCD_data(display_buffer[i]);
 138   1      }
 139          /////////////////////////////////////////////////////////////////////////////////////////////////
 140          
 141          //////////////////////////////      将Unicode编码转换为 GB编码 ///////////////////////////////////
 142          void change_code(unsigned int * x)
 143          {
 144   1       unsigned int a,b,c;
 145   1       if(((*x)>=0x0020)&&((*x)<=0x007E)){if((*x)>='a'&&(*x)<='z')(*x)-='a'-'A';*x+=0xA380;return;}
 146   1       if((*x)<Unicode[0][0]){*x=0x3F3F;return;}
 147   1       if((*x)>Unicode[UNICODE_MAX-1][0]){*x=0x3F3F;return;}
 148   1       a=0;
 149   1       b=UNICODE_MAX-1;
 150   1       do                  //采用二分查表法,因为该表为顺序表
 151   1        {
 152   2         c=(a+b)/2;
 153   2         if((*x)==Unicode[c][0]){*x=Unicode[c][1];return;}
 154   2         if((*x)<Unicode[c][0]){b=(a+b)/2;}
 155   2         else {a=(a+b+1)/2;}
 156   2        }while(a!=b);
 157   1       if((*x)==Unicode[a][0]){*x=Unicode[a][1];return;}
 158   1       *x=0x3F3F;  //如果找不到,则显示??
 159   1      }
 160          ////////////////////////////////////////////////////////////////////////////////////////////////////


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    597    ----
   CONSTANT SIZE    =  29795    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      21
   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 + -