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

📄 74hc164.lst

📁 用两个8字数码管循环的从左到右的显示0-7数字.
💻 LST
字号:
C51 COMPILER V8.09   74HC164                                                               04/08/2009 20:03:20 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE 74HC164
OBJECT MODULE PLACED IN 74HC164.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 74HC164.c BROWSE DEBUG OBJECTEXTEND TABS(2)

line level    source

   1          
   2          /***********************************************************************
   3          *
   4          * 试验74HC164
   5          * 功能:8个数码管上循环显示不同的数字及字母,且每一次只有一位数码亮
   6          * 点亮的顺序是从右到左循环的显示
   7          * 日期:2009-04-08
   8          * 版本:V1.1
   9          ************************************************************************/
  10          
  11          #include<reg52.h>
  12          #include<intrins.h>
  13          
  14          #define uchar unsigned char
  15          #define uint unsigned int
  16          
  17          char code reserve[3] _at_ 0x3b; //保留0x3b开始的3个字节【ICE52】
  18          
  19          sbit Led = P2^0;
  20          
  21          sbit Ls164_Dat = P2^2;
  22          sbit Ls164_Clk = P2^1;
  23          sbit a0=ACC^0;
  24          //共阴极数码管码表  
  25          uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};//
             -0-.
  26          
  27          
  28          //共阳极数码管码表
  29          //uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f};
             -//0-.
  30          
  31          void Delay_Ls164(uint i)
  32          {
  33   1      uint j;
  34   1      for(;i>0;i--)
  35   1        for(j=13000;j>0;j--)
  36   1          {;}
  37   1      }  
  38          
  39          void SendByte(uchar Byte)//网上找到的1,测试OK ,【产生的代码是CODE:126 】
  40          {
  41   1      uchar i,Date;
  42   1      i=8;
  43   1      do
  44   1        {
  45   2         Date = Byte & 0x80;  //低7位清0
  46   2         Byte <<= 1;         //向左移一位
  47   2         
  48   2         Ls164_Clk=0;
  49   2         
  50   2         Ls164_Dat=Date;
  51   2         
  52   2         //Ls164_Clk=0;
  53   2         Ls164_Clk=1;    //上升沿脉冲触发移位
C51 COMPILER V8.09   74HC164                                                               04/08/2009 20:03:20 PAGE 2   

  54   2        }
  55   1      while(--i != 0);
  56   1      }  
  57          
  58          
  59          
  60          /*void SendByte(uchar Byte) //网上找到的2,测试OK  ,【产生的代码是CODE:129 】
  61          {
  62          uchar num,t;
  63          num=tab[Byte];
  64          for(t=0;t<8;t++)
  65            {
  66            Ls164_Clk=0;
  67            Ls164_Dat = num & 0x80;
  68            //Ls164_Dat = num & 0x01; //如果是共阳,用此行代码
  69            Ls164_Clk=1;      //上升沿脉冲触发移位
  70            num <<= 1;
  71            //num >>= 1;    //如果是共阳,用此行代码
  72            }
  73          } */     
  74          
  75          /*void SendByte(uchar Byte)  //唐 ,会显示,经修改,测试ok【产生的代码是CODE:131 】
  76          {
  77          uchar num,t;
  78          num=tab[Byte];
  79          for(t=0;t<8;t++)
  80            {
  81            if(num&0x80)  Ls164_Dat=1;
  82            //  if(num&0x01)  Ls164_Dat=1;//如果是共阳,用此行代码
  83            else Ls164_Dat=0;
  84          
  85              num <<= 1;
  86              //num >>= 1;    //如果是共阳,用此行代码
  87              Ls164_Clk=0;
  88              Ls164_Clk=1;     //上升沿脉冲触发移位
  89          
  90            }
  91          }    */
  92          
  93          /*void SendByte(uchar Byte)  //维纳,测试ok ,【产生的代码是CODE:129 】
  94          {
  95          uchar i;
  96          for(i=0;i<8;i++)
  97            {
  98            if(Byte&0x80)  //从数据的高位开始送
  99            // if(Byte&0x01) //如果是共阳,用此行代码
 100              Ls164_Dat=1;
 101            else 
 102              Ls164_Dat=0;
 103          
 104            Byte <<=1;     //向左移一位
 105            //Byte >>=1;   //如果是共阳,用此行代码
 106          
 107            Ls164_Clk=0; //下降沿将数据写入164
 108          
 109          //  _nop_();
 110            Ls164_Clk=1;      //上升沿脉冲触发移位
 111            }
 112          }    */
 113          
 114          
 115          
C51 COMPILER V8.09   74HC164                                                               04/08/2009 20:03:20 PAGE 3   

 116          void main()
 117          {
 118   1      uchar h,Shift;
 119   1          
 120   1          Shift=0xef;    //位扫描初值
 121   1          Led=0;
 122   1          Ls164_Clk=0;
 123   1          P0=0xff; //关闭显示,数码管位
 124   1        
 125   1          SendByte(0x00);   //关闭数码管显示【共阴极】
 126   1          
 127   1          _nop_();_nop_();
 128   1          _nop_();_nop_();
 129   1          _nop_();_nop_();
 130   1      
 131   1      while(1)
 132   1        {
 133   2      
 134   2        for(h=0;h<8;h++)   //循环字形表里面的7个数
 135   2          {
 136   3        
 137   3          SendByte(tab[h]); //适用维纳函数,网上找到的1,送段码
 138   3          
 139   3          P0 = Shift;         //送位码
 140   3          Shift = _crol_ (Shift,1);  //左移一位,修改位码
 141   3      
 142   3        //  SendByte(h);     //适用网上找到的2 , 唐
 143   3      
 144   3          Delay_Ls164(15);
 145   3      
 146   3          }
 147   2          h=0;
 148   2        }
 149   1      }
 150          
 151          
 152          
 153          
 154          
 155          
 156          
 157          
 158          
 159          
 160          
 161          
 162          
 163          
 164          
 165          
 166          
 167          
 168          
 169          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    112    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
C51 COMPILER V8.09   74HC164                                                               04/08/2009 20:03:20 PAGE 4   

   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 + -