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

📄 lcd.lst

📁 一款硬盘MP3的源代码
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   11/27/2005 23:13:44 PAGE 1   


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

line level    source

   1          /* LCD.C File
   2             Created by Computer-lov. Date: 2005.3.19
   3             Last edited date: 2005.5.31
   4             Copyright (c) 2005 Computer-lov
   5             version 1.1
   6          */
   7          
   8          #include "AT89C51SND1C.H"
   9          #include "hardware.h"
  10          #include "LCD.H"
  11          #include "file_system.h"
  12          #include "unicode.h"
  13          
  14          unsigned char black;   //是否反显
  15          
  16          //////////////////////////  等待LCD忙碌  ////////////////////////////////////////////////////////
  17          void wait_LCD_busy(void)
  18          {
  19   1      do
  20   1        {
  21   2         LCD_DATA=0xFF;
  22   2         LCD_EN=0;
  23   2         LCD_RS=0;
  24   2         LCD_RW=1;
  25   2         LCD_EN=1;
  26   2        }while(LCD_DATA&0x80);
  27   1      }
  28          ////////////////////////////////////////////////////////////////////////////////////////////////
  29          
  30          ////////////////////////////////////////   写一个字节显示数据   ///////////////////////////////
  31          void write_LCD_data(unsigned char lcd_data)
  32          {
  33   1      wait_LCD_busy();
  34   1      LCD_RS=1;
  35   1      LCD_RW=0;
  36   1      LCD_EN=1;
  37   1      LCD_DATA=lcd_data;
  38   1      LCD_EN=0;
  39   1      LCD_DATA=0xFF;
  40   1      }
  41          //////////////////////////////////////////////////////////////////////////////////////////////
  42          
  43          ///////////////////////////////////////////////////////////////////////////////////////////////
  44          /*unsigned char read_LCD_data(void)
  45          {
  46          unsigned char read_data;
  47          wait_LCD_busy();
  48          LCD_DATA=0xFF;
  49          LCD_RS=1;
  50          LCD_RW=1;
  51          LCD_EN=1;
  52          read_data=LCD_DATA;
  53          LCD_EN=0;
  54          return read_data;
  55          }*/
C51 COMPILER V7.50   LCD                                                                   11/27/2005 23:13:44 PAGE 2   

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

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


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 + -