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

📄 lcdinterface.lst

📁 这是C8051F330的LCD驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   LCDINTERFACE                                                          03/15/2009 20:48:19 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCDINTERFACE
OBJECT MODULE PLACED IN LCDinterface.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe LCDinterface.c DB OE

line level    source

   1          //-----------------------------------------------------------------------------
   2          // LCDInterface.c
   3          //-----------------------------------------------------------------------------
   4          // Copyright 2004 Silicon Laboratories, Inc.
   5          //
   6          // AUTH: GP
   7          // DATE: 9 DEC 04
   8          //
   9          // This program interfaces a C8051F330 device with an example LCD.
  10          //
  11          // Target: C8051F33x
  12          // Tool Chain : Keil
  13          //
  14          
  15          //-----------------------------------------------------------------------------
  16          // Includes
  17          //-----------------------------------------------------------------------------
  18          
  19          #include <c8051F330.h>
  20          #include <stdio.h>
  21          
  22          //-----------------------------------------------------------------------------
  23          // 16-bit SFR Definitions for 'F3xx
  24          //-----------------------------------------------------------------------------
  25          
  26          extern int printf   (const char *, ...);
  27          sfr16 TMR2RL   = 0xca;                 // Timer2 reload value
  28          sfr16 TMR2     = 0xcc;                 // Timer2 counter
  29          
  30          sfr16 TMR3RL   = 0x92;                 // Timer3 reload value
  31          sfr16 TMR3     = 0x94;                 // Timer3 counter
  32          
  33          //-----------------------------------------------------------------------------
  34          // Structures, Unions, Enumerations, and Type Definitions
  35          //-----------------------------------------------------------------------------
  36          
  37          // The translation table provides the mapping between ASCII characters
  38          // and the segment pin values
  39          
  40          // The first 32 characters (except 10) just produce a space;
  41          // Character 10 (newline) clears the LCD digits
  42          // Characters that can't be translated produce a space
  43          // The MSB in the byte is meaningless because there are only 7 segments
  44          
  45          // If the bit is low, the corresponding bar in the digit is active
  46          // The 'diagram' below shows which bit corresponds to which bar in the LCD digit
  47          
  48          //      0
  49          //      _
  50          //   5 | | 1        the middle inner bar is bit 6
  51          //      -
  52          //   4 | | 2
  53          //      -
  54          //      3
  55          
C51 COMPILER V8.02   LCDINTERFACE                                                          03/15/2009 20:48:19 PAGE 2   

  56          
  57          unsigned char code translation_table[128] = {
  58          
  59          0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,     // 0 - 7
  60          0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,     // 8 - 15
  61          0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,     // 16 - 23
  62          0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,     // 24 - 31
  63          
  64          0xFF, 0xCF, 0xDD, 0xFF, 0x92, 0x9B, 0xFF, 0xDF,     // 32 - 39
  65          0xC6, 0xF0, 0xFF, 0xFF, 0xDF, 0xBF, 0xEF, 0xFF,     // 40 - 47
  66          0x40, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x02, 0xF8,     // 48 - 55
  67          0x00, 0x10, 0xF9, 0xF9, 0x9E, 0xB7, 0xBC, 0x18,     // 56 - 63
  68          
  69          0xFF, 0x08, 0x00, 0xC6, 0x21, 0x06, 0x0E, 0x02,     // 64 - 71
  70          0x09, 0xF9, 0xE1, 0x07, 0xC7, 0xFF, 0x48, 0x40,     // 72 - 79
  71          0x0C, 0x18, 0xAF, 0x92, 0xF8, 0x41, 0xE3, 0xFF,     // 80 - 87
  72          0x09, 0x11, 0xA4, 0x06, 0xFF, 0xF0, 0xDC, 0xF7,     // 88 - 95
  73          
  74          0xDF, 0x20, 0x03, 0xA7, 0x21, 0x04, 0x0E, 0x10,     // 96 - 103
  75          0x0B, 0xFB, 0x61, 0x07, 0xF9, 0xFF, 0xAB, 0x23,     // 104 - 111
  76          0x0C, 0x18, 0xAF, 0x92, 0x07, 0xE3, 0xE3, 0xFF,     // 112 - 119
  77          0x09, 0x11, 0xA4, 0xC6, 0xF9, 0xF0, 0xBF, 0xFF,     // 120 - 127
  78          };
  79          
  80          //-----------------------------------------------------------------------------
  81          // Global Constants
  82          //-----------------------------------------------------------------------------
  83          
  84          #define SYSCLK       24500000          // SYSCLK frequency in Hz
  85          #define TIMER2_RATE  1000              // Timer 2 overflow rate in Hz
  86          #define TIMER3_RATE  2000              // Timer 3 overflow rate in Hz
  87          #define PULSE_LENGTH 25
  88          
  89          //-----------------------------------------------------------------------------
  90          // Port names
  91          //-----------------------------------------------------------------------------
  92          
  93          sbit SRCLK = P1^1;                     // shift register clock
  94          sbit RCLK  = P1^2;                     // shift register latch
  95          sbit SER   = P1^3;                     // shift register serial in
  96          
  97          sbit COM1  = P1^4;                     // COM1 pin on LCD
  98          sbit COM2  = P1^5;                     // COM2 pin on LCD
  99          sbit COM3  = P1^6;                     // COM3 pin on LCD
 100          sbit COM4  = P1^7;                     // COM4 pin on LCD
 101          
 102          
 103          //-----------------------------------------------------------------------------
 104          // Global LCD Variables
 105          //-----------------------------------------------------------------------------
 106          
 107          unsigned char com_cycle = 1;           // start at COM 1
 108          unsigned char com_invert = 0;          // start with positive cycle
 109          
 110          // Below are the bit maps for each of the bars on the LCD;  If the bit is low
 111          // then the bar is opaque (ON). If the bit is high, the bar is transparent (OFF).
 112          
 113          // one char per digit on the LCD; initialized to OFF
 114          unsigned char bdata LCD_digits[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
 115          
 116          // The naming scheme: D1A means the A segment of digit 1
 117          
C51 COMPILER V8.02   LCDINTERFACE                                                          03/15/2009 20:48:19 PAGE 3   

 118          // Digit 1 (D1) is the leftmost digit on the LCD
 119          sbit D1A = LCD_digits[0] ^ 0;
 120          sbit D1B = LCD_digits[0] ^ 1;          // D1 is controlled by S1 and S2
 121          sbit D1C = LCD_digits[0] ^ 2;
 122          sbit D1D = LCD_digits[0] ^ 3;
 123          sbit D1E = LCD_digits[0] ^ 4;
 124          sbit D1F = LCD_digits[0] ^ 5;
 125          sbit D1G = LCD_digits[0] ^ 6;
 126          
 127          sbit D2A = LCD_digits[1] ^ 0;          // D2 is controlled by S3 and S4
 128          sbit D2B = LCD_digits[1] ^ 1;
 129          sbit D2C = LCD_digits[1] ^ 2;
 130          sbit D2D = LCD_digits[1] ^ 3;
 131          sbit D2E = LCD_digits[1] ^ 4;
 132          sbit D2F = LCD_digits[1] ^ 5;
 133          sbit D2G = LCD_digits[1] ^ 6;
 134          
 135          sbit D3A = LCD_digits[2] ^ 0;          // D3 is controlled by S5 and S6
 136          sbit D3B = LCD_digits[2] ^ 1;
 137          sbit D3C = LCD_digits[2] ^ 2;
 138          sbit D3D = LCD_digits[2] ^ 3;
 139          sbit D3E = LCD_digits[2] ^ 4;
 140          sbit D3F = LCD_digits[2] ^ 5;
 141          sbit D3G = LCD_digits[2] ^ 6;
 142          
 143          sbit D4A = LCD_digits[3] ^ 0;          // D4 is controlled by S7 and S8
 144          sbit D4B = LCD_digits[3] ^ 1;
 145          sbit D4C = LCD_digits[3] ^ 2;
 146          sbit D4D = LCD_digits[3] ^ 3;
 147          sbit D4E = LCD_digits[3] ^ 4;
 148          sbit D4F = LCD_digits[3] ^ 5;
 149          sbit D4G = LCD_digits[3] ^ 6;
 150          
 151          sbit D5A = LCD_digits[4] ^ 0;          // D5 is controlled by S9 and S10
 152          sbit D5B = LCD_digits[4] ^ 1;
 153          sbit D5C = LCD_digits[4] ^ 2;
 154          sbit D5D = LCD_digits[4] ^ 3;
 155          sbit D5E = LCD_digits[4] ^ 4;
 156          sbit D5F = LCD_digits[4] ^ 5;
 157          sbit D5G = LCD_digits[4] ^ 6;
 158          
 159          sbit D6A = LCD_digits[5] ^ 0;          // D6 is controlled by S11 and S12
 160          sbit D6B = LCD_digits[5] ^ 1;
 161          sbit D6C = LCD_digits[5] ^ 2;
 162          sbit D6D = LCD_digits[5] ^ 3;
 163          sbit D6E = LCD_digits[5] ^ 4;
 164          sbit D6F = LCD_digits[5] ^ 5;
 165          sbit D6G = LCD_digits[5] ^ 6;
 166          
 167          //-----------------------------------------------------------------------------
 168          // Function Prototypes
 169          //-----------------------------------------------------------------------------
 170          
 171          void SYSCLK_Init (void);
 172          void Port_IO_Init();
 173          void Timer2_Init (int);
 174          void Timer3_Init (int);
 175          char putchar(char);
 176          void Strobe();
 177          void wait_one_ms(unsigned int);
 178          
 179          //-----------------------------------------------------------------------------
C51 COMPILER V8.02   LCDINTERFACE                                                          03/15/2009 20:48:19 PAGE 4   

 180          // MAIN Routine
 181          //-----------------------------------------------------------------------------
 182          
 183          void main(void)
 184          {
 185   1         PCA0MD &= ~0x40;                    // WDTE = 0 (clear watchdog timer enable)
 186   1      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -