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

📄 pinlvji4.lst

📁 频率计 闸门时间0.1s 1s 10s 频率范围0~99khz 可以切换 里面有四个源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   PINLVJI4                                                              10/26/2008 13:11:34 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PINLVJI4
OBJECT MODULE PLACED IN pinlvji4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pinlvji4.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          //液晶1602子程序,文件名:1602.c
   3          /**************************************************
   4          ;连线图:
   5          ;        DB0---DPROT.0  DB4---DPROT.4    RS-------------P3.5
   6          ;        DB1---DPROT.1  DB5---DPROT.5    RW-------------P3.6
   7          ;        DB2---DPROT.2  DB6---DPROT.6    E--------------P3.7
   8          ;        DB3---DPROT.3  DB7---DPROT.7    VLCD接10K可调电阻到GND*
   9          ;        需要11根单片机口线       
  10          ;80C51的晶振频率为12MHz
  11          ;液晶显示程序
  12          ;**************************************************/
  13          #include <reg52.h>
  14          #include <intrins.h>
  15          #define uint unsigned int
  16          #define uchar unsigned char
  17          
  18          sbit    RS    =    P3^7;
  19          sbit    RW    =    P3^6;
  20          sbit    EN =    P3^5;
  21          sbit    KEY=    P1^0;
  22              
  23          #define  DPORT    P2
  24          
  25          void LcdPos(uchar,uchar);    //确定光标位置
  26          void LcdWd(uchar);            //写字符
  27          void LcdWc(uchar);            //送控制字(检测忙信号)
  28          void LcdWcn(uchar );        //送控制字子程序(不检测忙信号)
  29          void mDelay(uchar );        //延时,毫秒数由j决定
  30          void WaitIdle();            //正常读写操作之前检测LCD控制器状态
  31          
  32          //在指定的行与列显示指定的字符,xpos:行,ypos:列,c:待显示字符
  33          void WriteChar(uchar c,uchar xPos,uchar yPos)
  34          {    
  35   1          LcdPos(xPos,yPos);
  36   1          LcdWd(c);
  37   1      }
  38          
  39          void WriteString(uchar *s,uchar xPos,uchar yPos)
  40          {    uchar i;
  41   1          if(*s==0)        //遇到字符串结束
  42   1              return;    
  43   1          for(i=0;;i++)
  44   1          {    
  45   2              if(*(s+i)==0)
  46   2                  break;
  47   2              WriteChar(*(s+i),xPos,yPos);
  48   2              xPos++;
  49   2              if(xPos>=15)    //如果XPOS中的值未到15(可显示的最多位)
  50   2                  break;
  51   2      
  52   2          }
  53   1      }
  54          void SetCur(uchar Para)    //设置光标
  55          {    mDelay(2);
C51 COMPILER V7.50   PINLVJI4                                                              10/26/2008 13:11:34 PAGE 2   

  56   1          switch(Para)
  57   1          {    case 0:
  58   2              {    LcdWc(0x08);    //关显示
  59   3                  break;
  60   3              }
  61   2              case 1:
  62   2              {    LcdWc(0x0c);    //开显示但无光标
  63   3                  break;
  64   3              }
  65   2              case 2:
  66   2              {    LcdWc(0x0e);    //开显示有光标但不闪烁
  67   3                  break;
  68   3              }
  69   2              case 3:
  70   2              {    LcdWc(0x0f);    //开显示有光标且闪烁
  71   3                  break;
  72   3              }
  73   2              default:
  74   2                  break;
  75   2          }
  76   1      }
  77          
  78          void ClrLcd()    //清屏命令
  79          {    LcdWc(0x01);
  80   1      }            
  81          
  82          //    正常读写操作之前检测LCD控制器状态
  83          void WaitIdle()
  84          {    uchar tmp;
  85   1          RS=0;
  86   1          RW=1;
  87   1          EN=1;
  88   1          _nop_();
  89   1          for(;;)
  90   1          {    tmp=DPORT;    
  91   2              tmp&=0x80;
  92   2              if(    tmp==0)
  93   2                  break;
  94   2          }
  95   1          EN=0;
  96   1      }
  97          
  98          void LcdWd(uchar c)        //写字符子程序
  99          {    WaitIdle();
 100   1          RS=1;    
 101   1          RW=0;
 102   1          DPORT=c;            //将待写数据送到数据端口
 103   1          EN=1;
 104   1          _nop_();
 105   1          _nop_();
 106   1          EN=0;
 107   1      }
 108          void LcdWc(uchar c)        //送控制字子程序(检测忙信号)
 109          {    WaitIdle();    
 110   1          LcdWcn(c);
 111   1      }
 112          
 113          void LcdWcn(uchar c)    //送控制字子程序(不检测忙信号)
 114          {    RS=0;
 115   1          RW=0;
 116   1          DPORT=c;
 117   1          EN=1;
C51 COMPILER V7.50   PINLVJI4                                                              10/26/2008 13:11:34 PAGE 3   

 118   1          _nop_();
 119   1          EN=0;
 120   1      }
 121          void LcdPos(uchar xPos,uchar yPos)    //设置第(xPos,yPos)个字符的DDRAM地址
 122          {    unsigned char tmp;
 123   1          xPos&=0x0f;        //x位置范围是0~15
 124   1          yPos&=0x01;        //y位置范围是0~1
 125   1          if(yPos==0)        //显示第一行
 126   1              tmp=xPos;
 127   1          else
 128   1              tmp=xPos+0x40;
 129   1          tmp|=0x80;
 130   1          LcdWc(tmp);
 131   1      }
 132          
 133          void RstLcd()        //复位LCD控制器
 134          {    mDelay(15);        //如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30
 135   1          LcdWc(0x38);    //显示模式设置
 136   1          LcdWc(0x08);    //显示关闭
 137   1          LcdWc(0x01);    //显示清屏
 138   1          LcdWc(0x06);    //显示光标移动位置
 139   1          LcdWc(0x0c);    //显示开及光标设置
 140   1      }    
 141          
 142          void mDelay(uchar j)    //延时,毫秒数由j决定
 143          {   uint i=0;
 144   1          for(;j>0;j--)
 145   1          {  for(i=0;i<124;i++)
 146   2              {;}
 147   2          }
 148   1      }
 149          
 150          
 151          //主函数:
 152          
 153                                                                                       
 154          //;==================================================================================
 155          
 156          //;主程序开始
 157          //;==================================================================================
 158          
 159          
 160          
 161          unsigned char code table1[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0123456789
 162          
 163          //unsigned char code table2[]={0x41,0x42,0x43,0x44,0x45,0x46};//abcdef
 164          uchar *h="     CYMOMETER"; 
 165          uchar *s1=" FREQ:       Hz ";
 166          uchar *s2=" over range ";
 167          
 168          
 169          uchar  T0count;        //从T0的计数单元中读取计数的数值
 170          uint timecount;       //
 171          uchar mark=1;
 172          bit flag;                     //标志位
 173          unsigned long x;
 174          uchar xPos,yPos;
 175          uchar i;
 176          
 177          
 178          void main(void)
 179          {   
C51 COMPILER V7.50   PINLVJI4                                                              10/26/2008 13:11:34 PAGE 4   

 180   1          
 181   1      
 182   1          RstLcd();        //初始化LCD
 183   1          ClrLcd();        //清屏

⌨️ 快捷键说明

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