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

📄 12864串口.lst

📁 12864液晶驱动源程序,为12864使用提供方便
💻 LST
字号:
C51 COMPILER V8.01   12864串口                                                             12/07/2007 20:52:14 PAGE 1   


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

line level    source

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

  56   1        sendbyte(start_data);   //发送起始信号
  57   1        delaynms(5); //延时是必须的
  58   1        sendbyte(Hdata);            //发送高四位
  59   1        delaynms(1);  //延时是必须的
  60   1        sendbyte(Ldata);                //发送低四位
  61   1        delaynms(1);  //延时是必须的
  62   1      }
  63          
  64          /********************************发送字节函数************************************/
  65          void sendbyte(unsigned char bbyte) //发送一个字节
  66          {
  67   1       unsigned char i;
  68   1       for(i=0;i<8;i++)
  69   1         {
  70   2         SID=bbyte&0x80; //取出最高位
  71   2         SCLK=1;
  72   2         SCLK=0;
  73   2         bbyte<<=1; //左移
  74   2         }  
  75   1      }
  76          
  77          /**********************************延时函数**************************************/
  78          void delaynms(unsigned int di) //延时
  79          {
  80   1       unsigned int da,db;
  81   1       for(da=0;da<di;da++)
  82   1         for(db=0;db<10;db++);
  83   1      }
  84          
  85          /***********************************图形方式下屏幕全黑**************************/
  86          void lcdtest(void)      //图形方式下屏幕全黑
  87          { 
  88   1      unsigned char i,j;
  89   1      for(i=0;i<32;i++)
  90   1        { write(0,0x80+i);write(0,0x80);
  91   2          for(j=0;j<16;j++) write(1,0xff);
  92   2        }
  93   1      
  94   1       for(i=0;i<32;i++)
  95   1        { write(0,0x80+i);write(0,0x88);
  96   2          for(j=0;j<16;j++) write(1,0xff);
  97   2        }
  98   1      }
  99          
 100          /***********************************图形方式下清屏******************************/
 101          void lcdcls(void)  //图形方式下清屏
 102          { 
 103   1      unsigned char i,j;
 104   1      for(i=0;i<32;i++)
 105   1        { write(0,0x80+i);write(0,0x80);
 106   2          for(j=0;j<16;j++) write(1,0x00);
 107   2        }
 108   1      
 109   1       for(i=0;i<32;i++)
 110   1        { write(0,0x80+i);write(0,0x88);
 111   2          for(j=0;j<16;j++) write(1,0x00);
 112   2        }
 113   1      } 
 114          
 115          
 116          
 117          
C51 COMPILER V8.01   12864串口                                                             12/07/2007 20:52:14 PAGE 3   

 118          
 119          
 120          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    334    ----
   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 + -