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

📄 pinlvji2.lst

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


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

line level    source

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

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

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

⌨️ 快捷键说明

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