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

📄 340_lcd.lst

📁 与320*240相连的DS1302时钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   340_LCD                                                              05/16/2009 15:36:50 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 340_LCD
OBJECT MODULE PLACED IN 340_lcd.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE 340_lcd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************************
   2          由于LV595芯片片选引脚与以太网控制芯片CP2200中断引脚复用因些在此例程中加入了将
   3          CP2200芯片中断关闭的代码。还要在建立工程文件时将CP220X_REG.C文件包含到工程中.
   4          ******************************************************************************/
   5          
   6          
   7          #include "C8051F340.h"
   8          #include "INTRINS.H"
   9          #include "cp220x_reg.h"
  10          //#include "DS1302.h"
  11          
  12          #define  uchar unsigned char
  13          #define  uint  unsigned int
  14          #define  BASE_ADDRESS   0x10
  15          #define EMIF_TIMING     0x9E 
  16          //***************DS1302*******************************
  17          //**************************************************
  18          
  19          sbit LcdCs=P0^3;
  20          sbit led=P2^4;
  21          bit SPI_BUSY;
  22          
  23          
  24          
  25          
  26          uchar xdata virt_port;
  27          uchar xdata discode;//开关显示、光标、闪烁的命令字暂存单元
  28          uint Count1ms;
  29          
  30          
  31          //signed char xdata tab1[16]={0x20,0x20,0x42,0x54,0x20,0x46,0x33,0x34,0x30,0x20,0x56,0x31,0x2e,0x30,0x20,0
             -x20};
  32          unsigned char xdata Netdata[16]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,0x6d,0x2e,0x63,0x6e,0x2
             -0,0x20}; 
  33          //void delay(uint timer);
  34          void writelcd(uchar spi_data);
  35          void writecode(uchar ins);
  36          void writedata(uchar d);
  37          void lcdinit();
  38          void lcdchar (void);
  39          void lcdaddr(uchar DDRAM);
  40          void cursoropen(uchar position);//开光标,关闪烁
  41          void displayopen(void);                 //开显示,光标、闪烁不变
  42          void ether_reset_low();
  43          void ether_reset_high (void);
  44          void Delay1ms(uint T);
  45          void EMIF_Init (void);
  46          
  47          uint da;             
  48           void delay1us(void)
  49                  {
  50   1              uchar xdata i;
  51   1              for(i=10;i>0;i--);
  52   1              } 
  53          
C51 COMPILER V8.05a   340_LCD                                                              05/16/2009 15:36:50 PAGE 2   

  54             #define  NOP  _nop_()
  55             #define  uchar   unsigned char
  56             sbit    IO=P3^1;
  57             sbit    SCLK=P3^2;
  58             sbit    RSTB=P3^3;
  59             
  60             void  delay(uchar i)
  61              { 
  62   1           while (--i);
  63   1              }
  64          
  65          //*****************************RESET  FUNCTION///////////////
  66             void reset()
  67             {
  68   1                  RSTB=0;
  69   1                  SCLK=0;
  70   1                  delay(100);
  71   1                  RSTB=1;
  72   1                      delay(100);
  73   1         }
  74          //***************************BYTE  WRITE************//
  75          void  wbyte(uchar w_byte)
  76          {
  77   1              uchar i;
  78   1              for(i=0;i<8;++i)
  79   1              { 
  80   2                      IO=0;
  81   2                      if(w_byte&0x01) IO=1;
  82   2                      SCLK=0;
  83   2                      delay(20);
  84   2                      SCLK=1;
  85   2                      delay(20);
  86   2                      w_byte>>=1;
  87   2              
  88   2              }
  89   1      }
  90          //***********************        BYTE READ******************//
  91          uchar rbyte()
  92          {
  93   1              uchar i;
  94   1              uchar R_BYTE;
  95   1              uchar TMPBYTE;
  96   1              R_BYTE=0X00;
  97   1              IO=1;
  98   1              for(i=0;i<8;++i)
  99   1              {
 100   2                 
 101   2                      SCLK=1;
 102   2                      delay(20);
 103   2                  SCLK=0;
 104   2                      TMPBYTE=(uchar)IO;
 105   2                      TMPBYTE<<=7;
 106   2                      R_BYTE>>=1;
 107   2                      R_BYTE|=TMPBYTE;
 108   2                      delay(20);
 109   2              }
 110   1              return(R_BYTE);
 111   1      }
 112          
 113          uchar time_data[8]={0,0,1,1,1,1,1,1};//sec,min,hrs,dte,mon,day,yr
 114          uchar time_diplay[14]={0x31,0x35,0x38,0x32,0x39,0x33,0x34,0x33,0x32,0x37,0x31};
 115          
C51 COMPILER V8.05a   340_LCD                                                              05/16/2009 15:36:50 PAGE 3   

 116          //*********************时间初始校准与初始化**************************************//
 117          void time_int_DS1302()      //24小时模式
 118          {       
 119   1              uchar time[8]={0,0,0x12,1,1,1,0,0};//sec,min,hrs,dte,mon,day,yr
 120   1      //      uchar i;
 121   1              reset();
 122   1              wbyte(0x8e);//写保护控制寄存器
 123   1              wbyte(0);//允许写入
 124   1              reset();
 125   1              wbyte(0x90); //涓流充电控制寄存器
 126   1              wbyte(0);    //禁止充电
 127   1              reset();
 128   1              wbyte(0x80);  //秒         //2000年1月1日12点0分13秒 星期一
 129   1              wbyte(0x13);
 130   1              reset(); 
 131   1          wbyte(0x82);  //分
 132   1          wbyte(0x00);
 133   1              reset(); 
 134   1              wbyte(0x84);  //HR
 135   1          wbyte(0x12);
 136   1              reset(); 
 137   1              wbyte(0x86);  //DATA
 138   1          wbyte(0x00);
 139   1              reset(); 
 140   1              wbyte(0x88);  //MOUTH
 141   1          wbyte(0x00);
 142   1              reset(); 
 143   1              wbyte(0x8A);  //DAY
 144   1          wbyte(0x00);
 145   1          reset(); 
 146   1              wbyte(0x8C);  //YEAR
 147   1          wbyte(0x20);
 148   1          reset(); 
 149   1      //      for(i=0;i<8;i++) 
 150   1      //      wbyte(time[i]);    
 151   1      //      reset();
 152   1      }
 153          //****************************************************************************
 154          //****************DS1302显示数据         ASCII码数字转化           ***********************/
 155          //******************************************************************************
 156          
 157          /*void  display_xlat()
 158          {       
 159                  uchar i,j=0,num1,num2;
 160                  for(i=0;i<7;i++)
 161                  {  
 162                          num1=time_data[i]&0x0F;
 163                          num2=time_data[i];
 164                          num2>>=4;
 165                          time_diplay[j]=num1+0x30;
 166                          time_diplay[j+1]=num2+0x30;
 167                          j+=2;
 168                  }
 169          }
 170             */uchar time_sec=0;
 171          //**********************时间显示***************************************
 172          void  time_display_DS1302()
 173          {  
 174   1          
 175   1              reset();
 176   1              wbyte(0x81);            
 177   1              time_sec=rbyte();    
C51 COMPILER V8.05a   340_LCD                                                              05/16/2009 15:36:50 PAGE 4   

 178   1              reset();
 179   1              time_data[0]=(time_sec>>4)+0x30;
 180   1              time_data[1]=(time_sec&0x0f)+0x30;
 181   1      
 182   1      }
 183          
 184          void SPI_Init()
 185          {
 186   1          SPI0CFG   = 0x70;
 187   1          SPI0CN    = 0x01;
 188   1          SPI0CKR   = 0x3B;
 189   1        
 190   1      
 191   1      } 
 192          
 193          void writelcd(uchar spi_data)      //向LV595写数据以SPI方式
 194          {
 195   1      
 196   1              uint xdata i,j;
 197   1              for(i=0;i<3;i++)
 198   1              LcdCs=0;
 199   1              SPI_BUSY=1;
 200   1              delay1us();
 201   1              SPI0DAT=spi_data;
 202   1           for(j=0;j<500;j++)
 203   1                      {
 204   2                 if(!SPI_BUSY)break;
 205   2                      } 
 206   1              delay1us();
 207   1              LcdCs=1;
 208   1              delay1us();
 209   1              delay1us();
 210   1              delay1us();
 211   1              delay1us();
 212   1              delay1us();
 213   1              delay1us();
 214   1              delay1us();
 215   1      //      for(j=0;j<5000;j++);
 216   1      
 217   1      }

⌨️ 快捷键说明

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