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

📄 1602.lst

📁 单片机c语言 用于DY500或同类型的开发板
💻 LST
字号:
C51 COMPILER V7.06   1602                                                                  09/04/2008 08:28:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: d:\Keil2\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          /*1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E
   3           *7-14 DB0-DB7 15-BLA 16-BLK
   4           */
   5          
   6          /*copyright 2007,ShangHai  HaoTun Electronic Technology co.,Ltd
   7           *
   8           *This sample is used for lcm1602 .
   9           *
  10           *write by Shifang 2007-8-11
  11           *
  12           *V1.1
  13           */
  14          #include<reg52.h>
  15          #include<stdio.h>
  16          #include<intrins.h>
  17          
  18          
  19          sbit RS = P2^2;//Pin4
  20          sbit RW = P2^3; //Pin5
  21          sbit E  = P2^4;//Pin6
  22          extern unsigned int temp;
  23          
  24          #define Data  P0    //数据端口
  25          
  26          char data TimeNum[]="                ";
  27          char data Test1[]="                  ";
  28          /******************************************************************/
  29          /*                    函数声明                                    */
  30          /******************************************************************/
  31          
  32          
  33          /***************************************************************/
  34          void DelayUs(unsigned char us)//delay us
  35          {
  36   1       unsigned char uscnt;
  37   1       uscnt=us>>1;/* Crystal frequency in 12MHz*/
  38   1       while(--uscnt);
  39   1      }
  40          /******************************************************************/
  41          void DelayMs(unsigned char ms)//delay Ms
  42          {
  43   1       while(--ms)
  44   1         {
  45   2           DelayUs(250);
  46   2           DelayUs(250);
  47   2               DelayUs(250);
  48   2               DelayUs(250);
  49   2         }
  50   1      }
  51          void WriteCommand(unsigned char c)
  52          {
  53   1       DelayMs(5);//short delay before operation
  54   1       E=0;
  55   1       RS=0;
C51 COMPILER V7.06   1602                                                                  09/04/2008 08:28:16 PAGE 2   

  56   1       RW=0;
  57   1       _nop_();
  58   1       E=1;
  59   1       Data=c;
  60   1       E=0;
  61   1      }
  62          /****************************************************************/
  63          void WriteData(unsigned char c)
  64          {
  65   1       DelayMs(5);   //short delay before operation
  66   1       E=0;
  67   1       RS=1;
  68   1       RW=0;
  69   1       _nop_();
  70   1       E=1;
  71   1       Data=c;
  72   1       E=0;
  73   1       RS=0;
  74   1      }
  75          /*********************************************************************/
  76          void ShowChar(unsigned char pos,unsigned char c)
  77          {
  78   1       unsigned char p;
  79   1       if (pos>=0x10)
  80   1          p=pos+0xb0; //是第二行则命令代码高4位为0xc
  81   1       else 
  82   1          p=pos+0x80; //是第二行则命令代码高4位为0x8
  83   1       WriteCommand (p);//write command
  84   1       WriteData (c);   //write data
  85   1      }
  86          /*************************************************************************/
  87          void ShowString (unsigned char line,char *ptr)
  88          {
  89   1       unsigned char l,i;
  90   1       l=line<<4;
  91   1       for (i=0;i<16;i++)
  92   1        ShowChar (l++,*(ptr+i));//循环显示16个字符
  93   1      }
  94          /*********************************************************************/
  95          void InitLcd()
  96          {
  97   1       DelayMs(15);
  98   1       WriteCommand(0x38); //display mode
  99   1       WriteCommand(0x38); //display mode
 100   1       WriteCommand(0x38); //display mode
 101   1       WriteCommand(0x06); //显示光标移动位置
 102   1       WriteCommand(0x0c); //显示开及光标设置
 103   1       WriteCommand(0x01); //显示清屏
 104   1      
 105   1      }
 106          
 107          
 108          /////////////////////////////////////////////////////////////////
 109          void display(void)
 110          
 111          {
 112   1      
 113   1      
 114   1      sprintf(Test1," www.haotun.com ");//the first line
 115   1      ShowString(0,Test1);
 116   1      
 117   1      
C51 COMPILER V7.06   1602                                                                  09/04/2008 08:28:16 PAGE 3   

 118   1      sprintf(TimeNum,"temperature %02d ",temp);//the first line
 119   1      
 120   1      
 121   1      
 122   1      TimeNum[15]= 'C';//显示自定义字符 温度符号
 123   1      TimeNum[14]= 0x01;
 124   1      ShowString(1,TimeNum);
 125   1      
 126   1      }
 127          ////////////////////////////////////////////////////////////////////
 128          //设定二个自定义字符,(注意:LCD1602中自定义字符的地址为0x00--0x07,即可定义8个字符)
 129          //这里我们设定把一个自定义字符放在0x00位置(000),另一个放在0x01位子(001)
 130          void lcd_sef_chr()
 131          { //第一个自定义字符
 132   1       WriteCommand(0x40); //"01 000 000"  第1行地址 (D7D6为地址设定命令形式

⌨️ 快捷键说明

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