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

📄 ts12864a.lst

📁 基于8051F实现数字电压表功能.用液晶作为显示界面,精度很高.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   TS12864A                                                              03/29/2008 22:13:16 PAGE 1   


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

line level    source

   1          /*===============================================================*/
   2          /*函数名称: TS12864A.c                                          */
   3          /*函数功能: 液晶显示启动                                        */ 
   4          /*入口参数: P2---------------------------------------液晶数据传输
   5                       P3----------------------------------------液晶控制脚*/       
   6          /*有无返回: 无                                                  */
   7          /*修改记录: 无修改记录                                          */
   8          /*编写作者: t483-4-19chenyong                                   */
   9          /*编写日期: 2007-4-06                                           */
  10          /*===============================================================*/
  11          #include  "common.h"
  12          #include  "TS12864A.h"
  13          #include  "String_pixel.h"
  14          /*===============================================================*/
  15          /*判断状态                                                       */
  16          /*===============================================================*/                              
  17          void LCD_Busy(void)     
  18          {
  19   1         SFRPAGE=0x0f;
  20   1              LCD_RS=0;                   // 状态标志位和地址计数读入DB7和DB6-DB0                      
  21   1              delay_17us();
  22   1              LCD_RW=1;                                                
  23   1              delay_17us();
  24   1              LCD_DATA=0xff;                  //初始化
  25   1              while (1) 
  26   1              {
  27   2                LCD_EN=1;
  28   2                delay_17us();
  29   2                if (LCD_DATA<0x80)break;//判断是否忙
  30   2                LCD_EN=0;
  31   2                delay_17us();
  32   2              } 
  33   1              LCD_EN=0;
  34   1              delay_17us();
  35   1      }
  36          
  37          /*===============================================================*/
  38          /*写数据                                                         */
  39          /*===============================================================*/
  40          void LCD_Write_Data(uchar ddata)
  41          {
  42   1              uchar temp=0;
  43   1              LCD_Busy();            //检测是否处于忙的状态   
  44   1              LCD_RS = 1;
  45   1              delay_17us();
  46   1              LCD_RW = 0;
  47   1              delay_17us();
  48   1              temp=ddata;     
  49   1              SFRPAGE=0x0f;
  50   1              LCD_DATA = temp;
  51   1              LCD_EN = 1;
  52   1              delay_17us();
  53   1              LCD_EN = 0;
  54   1              delay_17us();
  55   1      }
C51 COMPILER V8.02   TS12864A                                                              03/29/2008 22:13:16 PAGE 2   

  56          /*===============================================================*/
  57          /*写命令                                                         */
  58          /*===============================================================*/
  59          
  60          void LCD_Write_Command(uchar command)
  61          {
  62   1              uchar temp=0;
  63   1              LCD_Busy();            //检测是否处于忙的状态
  64   1              LCD_RS = 0;
  65   1              delay_17us();
  66   1              LCD_RW = 0;
  67   1              delay_17us();
  68   1              temp=command;
  69   1              SFRPAGE=0x0f;
  70   1              LCD_DATA = temp;
  71   1              LCD_EN = 1;
  72   1              delay_17us();
  73   1              LCD_EN = 0;
  74   1              delay_17us();
  75   1      }
  76          
  77          void CleanScreen(void)
  78          {
  79   1        uchar i, j, k;
  80   1      
  81   1        for (i=0;i<8;i++)                     
  82   1        {
  83   2        LCD_CSA = 1;
  84   2        delay_17us();
  85   2        LCD_CSB = 1;
  86   2        delay_17us();
  87   2        LCD_Write_Command(0x40);              //设置列地址
  88   2        delay_17us();                   
  89   2        LCD_Write_Command(0xb8+i);      //设置页地址
  90   2        delay_17us();
  91   2        LCD_CSA = 1;
  92   2        delay_17us();
  93   2        LCD_CSB = 0;
  94   2        for(j=0;j<128;j++) 
  95   2        LCD_Write_Data(0x00);
  96   2        delay_17us();
  97   2        LCD_CSA = 0;
  98   2        delay_17us();
  99   2        LCD_CSB = 1;
 100   2        delay_17us();
 101   2        for(k=64;k<128;k++) 
 102   2        LCD_Write_Data(0x00);
 103   2        delay_17us();
 104   2        }
 105   1      }  
 106          
 107          /*===============================================================*/
 108          /* 清屏                                                        
 109          
 110             y ------------------------------------------------------纵轴位置
 111             yy------------按LCD显示4行字来计算,0,代表第一行,3,代表第四行;
 112             mod---------------------------清屏方式,
 113             0-------------------------------------------------------按行清屏;
 114             1-------------------------------------------------------全部清屏;
 115          */
 116          /*===============================================================*/
 117          /*void LCD_Cls_xy(uchar mod, uchar yy)
C51 COMPILER V8.02   TS12864A                                                              03/29/2008 22:13:16 PAGE 3   

 118          {
 119                  uchar x, y;
 120                  uchar value_temp = 0;
 121                  value_temp = 2*yy;
 122                  switch(mod)
 123                  {
 124                          case 0:         //按行清屏
 125                                  {       
 126                                  for (y=value_temp;y<value_temp+1;y++)
 127                                          for(x=0;x<128;x++) 
 128                                  Dis_Play(x,y,0);
 129                                   }
 130          
 131                          case 1:    //全部清屏
 132                                   {      
 133                                          for (y=0;y<8;y++)                        //清屏
 134                                          {
 135                                                  for(x=0;x<128;x++) 
 136                                                  Dis_Play(x,y,0);
 137                                          }
 138          
 139                                   }  
 140                  }
 141          
 142          }  */
 143          /*===============================================================*/
 144          /*设置x,y位置                                                   */
 145          /*===============================================================*/
 146          void LCD_Set_xy(unsigned char x,unsigned char y)

⌨️ 快捷键说明

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