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

📄 1602.lst

📁 用C8051F310实现LCD1602的显示
💻 LST
字号:
C51 COMPILER V8.02   1602                                                                  05/27/2009 09:54:39 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <C8051f310.h> 
   2          #define SYSCLK 24500000
   3          #define std  65536-1*(SYSCLK/12000)       //初值1ms
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          sbit LCM_RS = P2^0; 
   7          sbit LCM_RW = P2^1;
   8          sbit LCM_E = P2^2;
   9          uchar sec,minu;         //定义分钟和秒
  10          uint count;
  11          uchar xdata table[]="Used time: ";
  12          //=============================子程序声明
  13          void delay(uint z);
  14          void init(void);
  15          void write_data(uchar date);
  16          void write_com(uchar com);
  17          void disp(void);
  18          void lcd_init();
  19          void timer0_init(void) ;
  20          void init()
  21          {       
  22   1              OSCICN=0x83;
  23   1              CLKSEL=0x00;
  24   1              PCA0MD &= ~0x40;
  25   1              PCA0MD= 0x00;
  26   1              XBR0=0x00;
  27   1              XBR1=0x40;
  28   1              //P2MDIN |=0xee;
  29   1              P2MDOUT |=0x07;
  30   1              //P0MDIN |=0x0f;
  31   1              P0MDOUT |=0x00;
  32   1              
  33   1      }
  34          void delay(uint z)      //延时
  35          {
  36   1              uint x,y;
  37   1              for(x=z;x>0;x--)
  38   1                      for(y=300;y>0;y--);
  39   1      }
  40          
  41          
  42          void write_com(uchar com) //写命令
  43          {
  44   1              delay(10);
  45   1              LCM_RS=0;
  46   1              LCM_RW=0  ;
  47   1              LCM_E=0;
  48   1              P0=com;
  49   1              delay(5);
  50   1              LCM_E=1;                           
  51   1              delay(5);                        
  52   1              LCM_E=0;
  53   1      }                                                         
  54          
  55          void write_data(uchar date)      //写数据
C51 COMPILER V8.02   1602                                                                  05/27/2009 09:54:39 PAGE 2   

  56          {
  57   1              delay(10);
  58   1              LCM_RS=1;
  59   1              LCM_RW=0;
  60   1              LCM_E=0;
  61   1              P0=date;
  62   1              delay(5);
  63   1              LCM_E=1;
  64   1              delay(5);
  65   1              LCM_E=0;
  66   1      }
  67          
  68          void lcd_init()   //lcd初始化
  69          {
  70   1              delay(10);
  71   1              write_com(0x38);  //4bit        2line frot
  72   1              write_com(0x06);   //Mode set  显示右移
  73   1              write_com(0x0c);  //开屏幕,开光标,不闪烁
  74   1              write_com(0x01);   //清屏
  75   1              delay(5);
  76   1      }
  77          void  disp(void)
  78          {        unsigned char i,a,b,c,d;
  79   1           a=minu/10;
  80   1               b=minu%10;
  81   1               c=sec/10;
  82   1               d=sec%10;
  83   1               write_com(0x80);                               
  84   1               while(table[i] != '\0')
  85   1             {
  86   2              write_data(table[i]);//显示字符
  87   2              i++;    
  88   2             }
  89   1                write_com(0x8b);
  90   1            write_data(0x30+a);
  91   1            write_data(0x30+b);
  92   1                write_data(':');
  93   1                write_data(0x30+c);
  94   1                write_data(0x30+d);                   
  95   1      }
  96          void timer0_init(void)
  97           {
  98   1        CKCON=0x00;      //使用系统时钟不分频
  99   1        //TMOD&=~0x0f;
 100   1        TMOD=0x01;       //16位定时方式
 101   1        TL0= std;
 102   1        TH0=std>>8;    //定时1ms
 103   1        ET0=1;
 104   1        TR0=0;
 105   1       }
 106           
 107          //=============================//主程序
 108          void main(void)
 109          {
 110   1              
 111   1              init();
 112   1              lcd_init();
 113   1              timer0_init();
 114   1          TR0=1;
 115   1          EA=1;
 116   1              while(1)
 117   1              { 
C51 COMPILER V8.02   1602                                                                  05/27/2009 09:54:39 PAGE 3   

 118   2              disp( );
 119   2          }   
 120   1              
 121   1      }
 122          
 123          void timer0_isr(void) interrupt 1  using 0
 124          {
 125   1      TF0=0;
 126   1      TL0+=std;
 127   1      TH0=std>>8;              //重装初值
 128   1      count++;
 129   1      if(count==1000)
 130   1      {count=0; 
 131   2       sec++;
 132   2       if(sec==60)
 133   2         {sec=0;
 134   3          minu++;
 135   3          if(minu==60)
 136   3                minu=0; 
 137   3        }
 138   2       }
 139   1      }  
 140                                                                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    330    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     12    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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