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

📄 lcddev.lst

📁 RA8806液晶的底层驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LCDDEV                                                                04/21/2009 22:23:54 PAGE 1   


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

line level    source

   1          #include "lcddev.h"
   2          #include "ctypedef.h"
   3          
   4          //初始化8051
   5          void Port_IO_Init()
   6          {
   7   1          XBR0    = 0x00;                    
   8   1          XBR1    = 0x00;
   9   1          XBR2    = 0x40;                     //io交叉配置允许
  10   1          P0MDOUT = 0xff;
  11   1              P3MDOUT = 0xff;
  12   1      }
  13          
  14          void Oscillator_Init()  //选用内部振荡器
  15          {
  16   1          OSCICN    = 0x05;
  17   1      }  
  18          
  19          void SYSCLK_Init (void)
  20          {
  21   1         int i;                              
  22   1         OSCXCN = 0x67;                      // 外部晶振,大于6.7MHz
  23   1         for (i=0; i < 2000; i++) ;           // 等待起振
  24   1         while (!(OSCXCN & 0x80)) ;         // 检测是否起振
  25   1         OSCICN = 0x88;                      // 设置为系统时钟为外部晶振,且开启时钟丢失检测
  26   1      } 
  27          
  28          // Initialization function for device,
  29          // Call Init_Device() from your main program
  30          void Init_Device(void)
  31          {
  32   1              SYSCLK_Init ();
  33   1          //Oscillator_Init();
  34   1              Port_IO_Init();
  35   1      }
  36          
  37          /*
  38            
  39          */
  40          void Delay(uchar t)
  41          {
  42   1        while(t--);
  43   1      }
  44          
  45          
  46          /*--------------------------------
  47           函数名:void LCD_ChkBusy(void);
  48          函数功能:检查LCD是否忙
  49          使用说明:
  50          使用说明:
  51                     状态字格式:bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
  52                             状态字说明:
  53                                          bit7:  存储器读写状态        0 准备好    1 忙 
  54                                                          bit6:  扫描状态              0 准备好    1 忙
  55                                                          bit5:  睡眠模式              0 正常      1 睡眠
C51 COMPILER V8.02   LCDDEV                                                                04/21/2009 22:23:54 PAGE 2   

  56                                                          bit4  bit3:    不用
  57                                                          bit2: 唤醒状态位
  58                                                          bit1: KS状态
  59                                                          bit0: TP状态
  60          
  61          
  62          -----------------------------------*/
  63          
  64          void Lcd_ChkBusy(void)
  65          {
  66   1       uchar temp;
  67   1       do{
  68   2          //LcdDataPort_InPut(); 
  69   2          RS = 0;
  70   2              CS = 1;
  71   2              WR = 1;
  72   2              RD = 1;
  73   2              Delay(2);
  74   2              RS = 1;
  75   2          Delay(2);
  76   2              CS = 0;
  77   2              Delay(5);
  78   2              RD = 0;//开始读状态
  79   2          temp = Lcd_DataPort;
  80   2              Delay(10);
  81   2              RD = 1;
  82   2          Delay(2);
  83   2              CS = 1;
  84   2          RS = 0;
  85   2              }while(temp & 0xC0);
  86   1      }
  87          
  88          
  89          /*void Lcd_writedatatocmd(uchar CmdReg,uchar udata)  ///写数据到到寄存器
  90          { 
  91                  CS = 0;
  92                  RS = 1;
  93                  Delay(2);//
  94                  WR = 0;
  95                  Lcd_DataPort = CmdReg;
  96                  Delay(10);// 最小20ns
  97                  WR = 1;// 完成写寄存器
  98                  Delay(2);
  99                  CS = 1;
 100                  RS = 0;
 101                  Delay(20);
 102                  CS = 0;
 103                  Delay(10);//
 104                  WR = 0;
 105                  Lcd_DataPort = udata;
 106                  Delay(30);//最小50ns
 107                  WR = 1;
 108                  CS = 1;
 109                  RS = 1;
 110          }*/
 111          
 112          
 113          void Lcd_writecmd(uchar CmdReg) //写命令
 114          {
 115   1              CS = 0;
 116   1              RS = 1;
 117   1              WR = 0;
C51 COMPILER V8.02   LCDDEV                                                                04/21/2009 22:23:54 PAGE 3   

 118   1              Lcd_DataPort = CmdReg;
 119   1              Delay(10);// 最小20ns
 120   1              WR = 1;// 完成写寄存器
 121   1              Delay(2);
 122   1              CS = 1;
 123   1              RS = 0;
 124   1      }
 125          void Lcd_writedata(uchar DatValue)//写数据
 126          {
 127   1              CS = 0;
 128   1              RS = 0;
 129   1              Delay(10);//
 130   1              WR = 0;
 131   1              Lcd_DataPort = DatValue;
 132   1              Delay(30);//最小50ns
 133   1              WR = 1;
 134   1              CS = 1;
 135   1              RS = 1;
 136   1      }
 137          void Lcd_writedatatocmd(uchar CmdReg,uchar udata)  ///写数据到到寄存器
 138          {
 139   1              Lcd_writecmd(CmdReg);
 140   1              Lcd_writedata(udata);
 141   1      }
 142          
 143          /*
 144          函数名:
 145          */
 146          /*uchar Lcd_readcmd(void)
 147          {
 148           uchar CmdReg;
 149           LcdDataPort_InPut(); 
 150           CS = 0;
 151           RS = 0;
 152           WR = 1;
 153           RD = 0;
 154           CmdReg = Lcd_DataPort;
 155           Delay(4);
 156           RD = 1;
 157           CS = 1;
 158           return CmdReg;
 159          }
 160          */
 161          
 162          
 163          /*
 164          函数名:
 165          
 166          */
 167          uchar Lcd_readdatafromcmd(uchar CmdReg)
 168          {
 169   1       uchar udata;
 170   1       CS = 0;
 171   1       RS = 1;
 172   1       Delay(2);
 173   1       WR = 0;
 174   1       Lcd_DataPort = CmdReg;
 175   1       Delay(10);//完成写寄存器
 176   1       WR = 1;
 177   1       Delay(2);
 178   1       CS = 1;
 179   1       RS = 0;
C51 COMPILER V8.02   LCDDEV                                                                04/21/2009 22:23:54 PAGE 4   

 180   1       Delay(200);
 181   1       CS = 0;
 182   1       Delay(5);
 183   1       RD = 0;
 184   1       udata = Lcd_DataPort;
 185   1       Delay(10);//完成读寄存器
 186   1       RD = 1;
 187   1       CS = 1;
 188   1       RS = 1;
 189   1       return udata;
 190   1      }
 191          
 192          
 193          /*
 194          uchar Lcd_readdata(void)
 195          {
 196           uchar udata;
 197           //Lcd_ChkBusy();
 198           LcdDataPort_InPut();  //
 199           CS = 0;
 200           RS = 0;//读数据
 201           WR = 1;
 202           RD = 1;
 203           Delay(5);
 204           RD = 0;
 205           udata = Lcd_DataPort;
 206           Delay(10);//
 207           RD = 1;
 208           RS = 1;
 209           CS = 1;
 210           return udata;
 211          }
 212          */
 213          
 214           //开显示
 215          void LCD_ON(void)
 216          {
 217   1              uchar temp;
 218   1              temp = Lcd_readdatafromcmd(WLCR);

⌨️ 快捷键说明

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