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

📄 12864串口.lst

📁 12864液晶显示器的串口驱动。一般网上的都是并口的。
💻 LST
字号:
C51 COMPILER V8.01   12864串口                                                             03/14/2007 21:56:31 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE 12864串口
OBJECT MODULE PLACED IN 12864串口.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE 12864串口.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          128*64 LCD (ST7920)驱动程序
   3          
   4          */
   5          
   6          #include <regx52.H>
   7          /******************************引脚定义*************************************/
   8          
   9          #define CS    P2_0      //片选 高电平有效 单片LCD使用时可固定高电平
  10          #define SID   P2_1      //数据
  11          #define SCLK  P2_2      //时钟
  12          #define PSB   P3_6      //低电平时表示用串口驱动,可固定低电平
  13          #define RESET P3_7      //LCD复位,LCD模块自带复位电路。可不接
  14          
  15          /******************************函数声明**************************************/
  16          
  17          void write(bit start, unsigned char ddata);
  18          void sendbyte(unsigned char bbyte);
  19          void delaynms(unsigned int di);
  20          void lcdinit(void);
  21          void lcdtest(void);
  22          void lcdcls(void);
  23          
  24          
  25          
  26          
  27          /*******************************初始化函数*************************************/
  28          
  29          void lcdinit(void)      //初始化LCD 
  30          {
  31   1        delaynms(10); //启动等待,等LCM讲入工作状态
  32   1        PSB=0; ;       //串口驱动模式
  33   1        RESET=0; delaynms(1); RESET=1; // 复位LCD
  34   1        CS=1;
  35   1        write(0,0x30);  //8 位介面,基本指令集
  36   1        write(0,0x0c);  //显示打开,光标关,反白关
  37   1        write(0,0x01);  //清屏,将DDRAM的地址计数器归零  
  38   1      }
  39          
  40          /********************************写数据函数*************************************/
  41          void write(bit start, unsigned char ddata) //写指令或数据
  42          {
  43   1        unsigned char start_data,Hdata,Ldata;
  44   1        if(start==0) start_data=0xf8;  //写指令
  45   1          else       start_data=0xfa;  //写数据
  46   1        
  47   1        Hdata=ddata&0xf0;               //取高四位
  48   1        Ldata=(ddata<<4)&0xf0;  //取低四位
  49   1        sendbyte(start_data);   //发送起始信号
  50   1        delaynms(5); //延时是必须的
  51   1        sendbyte(Hdata);            //发送高四位
  52   1        delaynms(1);  //延时是必须的
  53   1        sendbyte(Ldata);                //发送低四位
  54   1        delaynms(1);  //延时是必须的
  55   1      }
C51 COMPILER V8.01   12864串口                                                             03/14/2007 21:56:31 PAGE 2   

  56          
  57          /********************************发送字节函数************************************/
  58          void sendbyte(unsigned char bbyte) //发送一个字节
  59          {
  60   1       unsigned char i;
  61   1       for(i=0;i<8;i++)
  62   1         {
  63   2         SID=bbyte&0x80; //取出最高位
  64   2         SCLK=1;
  65   2         SCLK=0;
  66   2         bbyte<<=1; //左移
  67   2         }  
  68   1      }
  69          
  70          /**********************************延时函数**************************************/
  71          void delaynms(unsigned int di) //延时
  72          {
  73   1       unsigned int da,db;
  74   1       for(da=0;da<di;da++)
  75   1         for(db=0;db<10;db++);
  76   1      }
  77          
  78          /***********************************图形方式下屏幕全黑**************************/
  79          void lcdtest(void)      //图形方式下屏幕全黑
  80          { 
  81   1      unsigned char i,j;
  82   1      for(i=0;i<32;i++)
  83   1        { write(0,0x80+i);write(0,0x80);
  84   2          for(j=0;j<16;j++) write(1,0xff);
  85   2        }
  86   1      
  87   1       for(i=0;i<32;i++)
  88   1        { write(0,0x80+i);write(0,0x88);
  89   2          for(j=0;j<16;j++) write(1,0xff);
  90   2        }
  91   1      }
  92          
  93          /***********************************图形方式下清屏******************************/
  94          void lcdcls(void)  //图形方式下清屏
  95          { 
  96   1      unsigned char i,j;
  97   1      for(i=0;i<32;i++)
  98   1        { write(0,0x80+i);write(0,0x80);
  99   2          for(j=0;j<16;j++) write(1,0x00);
 100   2        }
 101   1      
 102   1       for(i=0;i<32;i++)
 103   1        { write(0,0x80+i);write(0,0x88);
 104   2          for(j=0;j<16;j++) write(1,0x00);
 105   2        }
 106   1      }
 107          
 108          
 109          
 110          
 111          
 112          
 113          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    347    ----
C51 COMPILER V8.01   12864串口                                                             03/14/2007 21:56:31 PAGE 3   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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