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

📄 lcd128_64.lst

📁 无线单片机CC1110的一些使用源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   LCD128_64                                                             01/09/2008 13:45:48 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE LCD128_64
OBJECT MODULE PLACED IN lcd128_64.obj
COMPILER INVOKED BY: d:\program files\Keil\C51\BIN\C51.EXE source\lcd128_64.c BROWSE INCDIR(.\source;D:\Program Files\Ke
                    -il\C51\INC) DEFINE(CC1110) DEBUG OBJECTEXTEND PRINT(.\lcd128_64.lst) OBJECT(lcd128_64.obj)

line level    source

   1          #include <chipcon/ioCC1110.h>
   2          #include <intrins.h>
   3          
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          #define ulong unsigned long
   7          
   8          #define NOP _nop_()
   9          
  10          #define RECALIB_TIMEOUT     12000 // Every 2 minutes
  11          #define MSG_PING           0x00
  12          #define MSG_SEND           0x10
  13          #define MSG_RECIVE         0x20
  14          #define MSG_NEEDSEND       0x30
  15          
  16          sbit LCD_RST            = P1^4;
  17          sbit LCD_RS                     = P0^0;
  18          sbit LCD_CS         = P0^2;
  19          sbit LCD_CLK            = P1^5;
  20          sbit LCD_SDO            = P1^6;
  21          sbit LCD_PWR            = P0^1;
  22          
  23          
  24          uchar ContrastValue = 0x38;
  25          uchar BT_State;
  26          
  27          void ClearScreen(void);
  28          void Print(uchar y, uchar x, uchar ch[], uint yn);
  29          void Print6(uchar xx,uchar  yy,uchar ch1[],uchar yn);
  30          //void LoadICO(uchar y , uchar x , uchar n);
  31          
  32          extern code const uchar FontSystem6x8[];                        
  33          extern code const uchar Font8X8[];
  34          extern code const uchar FontNew16X16[];
  35          extern code const uchar FontNew8X16_Index[];
  36          extern code const uchar WXL112X64[];
  37          
  38          extern void halWait(uchar wait);
  39          
  40          
  41          
  42          
  43          /*******************************************************************************
  44          //函数名:void delaylcd (uint x)
  45          //功能:廷时
  46          //输入:时间
  47          //输出:无
  48          ********************************************************************************/
  49          void delaylcd (uint x)
  50          {
  51   1              uchar j;
  52   1              while (x--)
  53   1              {
  54   2                      for (j=0;j<115;j++);
C51 COMPILER V8.08   LCD128_64                                                             01/09/2008 13:45:48 PAGE 2   

  55   2              }
  56   1      }
  57          /*******************************************************************************
  58          //函数名:void fdelay(unsigned int n)
  59          //功能:廷时
  60          //输入:时间
  61          //输出:无
  62          ********************************************************************************/
  63          void fdelay(unsigned int n) /* wait n seconds*/
  64          {
  65   1              uint i;
  66   1              uint j;
  67   1              for (i=0;i<5;i++)
  68   1              for (j=0;j<n*2;j++) ;
  69   1      }
  70          
  71          
  72          /*******************************************************************************
  73          //函数名:void Lcdwritecom(uchar com)
  74          //功能:lcd写指令
  75          //输入:com指令
  76          //输出:无
  77          ********************************************************************************/
  78          void Lcdwritecom(uchar com)
  79          {
  80   1              uchar i, temp;
  81   1              LCD_CLK = 0;
  82   1              LCD_CS = 0;
  83   1              LCD_RS = 0;
  84   1              temp = com;
  85   1      
  86   1              for(i=0; i<8; i++)
  87   1              {
  88   2                      if(temp & 0x80)
  89   2                      {
  90   3                              LCD_SDO = 1;
  91   3                      }
  92   2                      else LCD_SDO = 0;
  93   2                      temp <<= 1;
  94   2                      LCD_CLK = 1;
  95   2                      NOP;
  96   2                      NOP;
  97   2                      LCD_CLK = 0;
  98   2              }
  99   1              LCD_CS = 1;
 100   1      }
 101          
 102          /*******************************************************************************
 103          //函数名:void Lcdwritedata(uchar dat)
 104          //功能:lcd写数据
 105          //输入:dat数据
 106          //输出:无
 107          ********************************************************************************/
 108          void Lcdwritedata(uchar dat)
 109          {
 110   1              uchar i, temp;
 111   1              LCD_CS = 0;
 112   1              LCD_RS = 1;
 113   1              temp = dat;
 114   1      
 115   1              for(i=0; i<8; i++)
 116   1              {
C51 COMPILER V8.08   LCD128_64                                                             01/09/2008 13:45:48 PAGE 3   

 117   2                      if(temp & 0x80)
 118   2                      {
 119   3                              LCD_SDO = 1;
 120   3                      }
 121   2                      else LCD_SDO = 0;
 122   2                      temp <<= 1;
 123   2                      LCD_CLK = 1;
 124   2                      NOP;
 125   2                      NOP;
 126   2                      LCD_CLK = 0;
 127   2              }
 128   1              LCD_CS = 1;
 129   1      }
 130          
 131          /*******************************************************************************
 132          //函数名:void Prog_Reset(void)
 133          //功能:lcd复位
 134          //输入:无
 135          //输出:无
 136          ********************************************************************************/
 137          void Prog_Reset(void)
 138          {
 139   1              LCD_RST = 0;
 140   1              delaylcd(100);
 141   1              LCD_RST = 1;
 142   1      }
 143          /*******************************************************************************
 144          //函数名:void Resetchip(void)
 145          //功能:lcd软件复位
 146          //输入:无
 147          //输出:无
 148          ********************************************************************************/
 149          void Resetchip(void)
 150          {
 151   1              Prog_Reset();
 152   1      }
 153          
 154          /*******************************************************************************
 155          //函数名:void SetRamAddr (uchar Page, uchar Col)
 156          //功能:lcd位置选择
 157          //输入:Page-页,Col-列
 158          //输出:无
 159          ********************************************************************************/
 160          void SetRamAddr (uchar Page, uchar Col)
 161          {
 162   1              Lcdwritecom(0xB0 + Page);
 163   1              Lcdwritecom(Col & 0x0f); //Set lower column address
 164   1              Lcdwritecom(0x10 | ((Col & 0xf0) >> 4)); //Set higher column address
 165   1      }
 166          /*******************************************************************************
 167          //函数名:void SetContrast(uchar Gain, uchar Step)
 168          //功能:lcd对比度设定
 169          //输入:Page-页,Col-列
 170          //输出:无
 171          ********************************************************************************/
 172          void SetContrast(uchar Step)
 173          {
 174   1              Lcdwritecom(0x81);
 175   1              Lcdwritecom(Step);
 176   1      }
 177          
 178          void LcdPortInit(void)
C51 COMPILER V8.08   LCD128_64                                                             01/09/2008 13:45:48 PAGE 4   

 179          {
 180   1              P0DIR = 0X07;
 181   1              P1DIR = 0X70;
 182   1      }
 183          
 184          
 185          /*******************************************************************************
 186          //函数名:void InitLcd(void)
 187          //功能:lcd初始化
 188          //输入:无
 189          //输出:无
 190          ********************************************************************************/
 191          void InitLcd(void)
 192          {
 193   1              LcdPortInit();
 194   1              LCD_PWR = 0;    //OLED POWER ON
 195   1              LCD_CS = 1;
 196   1              LCD_RS = 1;
 197   1              LCD_RST = 1;
 198   1              LCD_CLK = 1;
 199   1              LCD_SDO = 1;
 200   1      
 201   1              Resetchip();
 202   1              Lcdwritecom(0xAE);
 203   1              Lcdwritecom(0xAD);      //dc-dc off
 204   1              Lcdwritecom(0x8a);
 205   1              halWait(100);
 206   1              Lcdwritecom(0x00);
 207   1              Lcdwritecom(0x10);
 208   1              Lcdwritecom(0x40);
 209   1              Lcdwritecom(0x81);
 210   1              Lcdwritecom(ContrastValue);
 211   1              Lcdwritecom(0xA0);
 212   1              Lcdwritecom(0xA4);
 213   1              Lcdwritecom(0xA6);
 214   1              Lcdwritecom(0xA8);
 215   1              Lcdwritecom(0x3f);
 216   1              Lcdwritecom(0xD3);
 217   1              Lcdwritecom(0x00);
 218   1              Lcdwritecom(0xD5);
 219   1              Lcdwritecom(0x20);
 220   1              Lcdwritecom(0xD8);
 221   1              Lcdwritecom(0x00);
 222   1              Lcdwritecom(0xDA);
 223   1              Lcdwritecom(0x12);
 224   1              Lcdwritecom(0xDB);
 225   1              Lcdwritecom(0x00);
 226   1              Lcdwritecom(0xD9);
 227   1              Lcdwritecom(0x22);
 228   1              Lcdwritecom(0xc8);
 229   1              Lcdwritecom(0xAF);
 230   1              ClearScreen();
 231   1      }
 232          /*******************************************************************************
 233          //函数名:void LoadICO(uchar y , uchar x , uchar Ico[])
 234          //功能:打开一个指定指针的图标
 235          //输入:x,y坐标      Ico[]图片
 236          //输出:无
 237          ********************************************************************************
 238          void LoadICO(uchar y , uchar x , uchar n)
 239          {
 240          
C51 COMPILER V8.08   LCD128_64                                                             01/09/2008 13:45:48 PAGE 5   

 241                  uchar adder = 0;
 242                  uchar wm;
 243          
 244                  SetRamAddr(y , x);
 245                  for(wm = 0;wm < 16;wm++)
 246                  {
 247                          Lcdwritedata(ICOBattery[n][adder]);
 248                          adder += 1;
 249                  }
 250          }
 251          */
 252          
 253          /*******************************************************************************
 254          //函数名:void LoadICO(uchar y , uchar x , uchar Ico[])
 255          //功能:打开一个指定指针的图标
 256          //输入:x,y坐标      Ico[]图片
 257          //输出:无
 258          ********************************************************************************/
 259          void LoadICO(void)
 260          {
 261   1      
 262   1              uchar i,j;
 263   1              for(i=0; i<8; i++)
 264   1              {
 265   2                      SetRamAddr(i , 0);
 266   2                      for(j = 0;j < 112;j++)
 267   2                      {
 268   3                              Lcdwritedata(WXL112X64[j+i*112]);
 269   3                      }
 270   2              }
 271   1      }
 272          /*******************************************************************************
 273          //函数名:void ClearScreen(void)
 274          //功能:清屏
 275          //输入:无
 276          //输出:无
 277          ********************************************************************************/
 278          void ClearScreen(void)
 279          {
 280   1              uchar i , j;
 281   1              
 282   1              for (i = 0 ; i < 8 ; i++)
 283   1              {
 284   2                      SetRamAddr(i,0);
 285   2                      for (j=0;j<132; j++) Lcdwritedata(0x00);
 286   2              }
 287   1      }
 288          
 289          
 290          /*******************************************************************************
 291          //函数名:void Printn(uchar xx ,uchar yy , ulong no,uchar yn,uchar le)
 292          //功能:显示一个6*8无符号数据
 293          //输入:xx , yy屏幕当中位置,no待显示数据 yn=0正常显示 yn=1反黑显示  le有效位
 294          //输出:无
 295          ********************************************************************************/
 296          void Printn(uchar xx ,uchar yy , ulong no,uchar yn,uchar le)
 297          {
 298   1              uchar ch2[6];
 299   1              uchar ii;
 300   1      
 301   1              for(ii = 1 ; ii <= le ;)
 302   1              {
C51 COMPILER V8.08   LCD128_64                                                             01/09/2008 13:45:48 PAGE 6   

 303   2                      ch2[le - ii] = no % 10 + 0x30;
 304   2                      no /= 10;
 305   2                      ii += 1;
 306   2              }
 307   1              ch2[le] = '\0';
 308   1              Print6(xx ,yy ,ch2 ,yn);

⌨️ 快捷键说明

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