最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

四位数码管计数演示

来源:动视网 责编:小OO 时间:2025-10-06 22:38:23
文档

四位数码管计数演示

************************************************************************** * 标题: 四位数码管计数演示(C51) * 作者: wentao     http://blog.liuwentao.net                    http://wentao.programfan.com * 日期: 2007.3.2 * 软件: Keil C51 V8.02 * 芯片: ATX51 * 说明: 实验板实测通
推荐度:
导读************************************************************************** * 标题: 四位数码管计数演示(C51) * 作者: wentao     http://blog.liuwentao.net                    http://wentao.programfan.com * 日期: 2007.3.2 * 软件: Keil C51 V8.02 * 芯片: ATX51 * 说明: 实验板实测通
   **************************************************************************   

   * 标题: 四位数码管计数演示(C51)   

   * 作者: wentao     http://blog.liuwentao.net   

                      http://wentao.programfan.com   

   * 日期: 2007.3.2   

   * 软件: Keil C51 V8.02   

   * 芯片: ATX51   

   * 说明: 实验板实测通过,数码管为8位共阳   

   * 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!    

   **************************************************************************/   

      

   #include     

      

   #define uchar unsigned char    

      

   void delay_ms(uchar ms);  // 延时毫秒@12M,ms最大值255    

   void display();           // 显示子程序    

      

   uchar code dis_code[10] = {0xc0,0xf9,0xa4,0xb0,0x99,  //段码表    

                             // 0    1    2    3    4      对应内容    

                              0x92,0x82,0xf8,0x80,0x90};    

                             // 5    6    7    8    9    

      

   uchar data dis_0 = 0;     // 个位值    

   uchar data dis_1 = 0;     // 十位值    

   uchar data dis_2 = 0;     // 百位值    

   uchar data dis_3 = 0;     // 千位值    

      

   void main()    

   {    

       P2 = 0xff;           // 关所有数码管    

      

       while(1)    

       {    

           display();       // 调用显示子程序    

               

           dis_0++;         // 个位值加1    

           if(dis_0 != 10)  // 个位未到10则结束此次循环    

               continue;    

      

           dis_0 = 0;       // 个位到10清零            

           dis_1++;         // 十位值加1(个位到10的进位)    

           if(dis_1 != 10)  // 十位未到10则结束此次循环    

               continue;    

      

           dis_1 = 0;       // 十位到10清零            

           dis_2++;         // 百位值加1(十位到10的进位)    

           if(dis_2 != 10)  // 百位未到10则结束此次循环    

               continue;    

      

           dis_2 = 0;       // 百位到10清零            

           dis_3++;         // 千位值加1(百位到10的进位)    

           if(dis_3 != 10)  // 千位未到10则结束此次循环    

               continue;    

      

           dis_3 = 0;       // 千位到10清零    

       }    

   }    

   void display()                // 显示子程序    

   {    

       uchar data i = 50;        // 用于延长每四位数的显示时间    

       while(i--)                // 直到i减为0    

       {    

           P0 = dis_code[dis_0]; // 取个位的段码    

           P2 = 0x7f;            // 开个位显示(P2.7口控制个位数码管)    

           delay_ms(1);          // 延时1ms使四位数码管动态显示时能看清    

               

           P0 = dis_code[dis_1]; // 取十位的段码    

           P2 = 0xbf;            // 开十位显示(P2.6口控制十位数码管)    

           delay_ms(1);          // 延时1ms作用同上    

               

           P0 = dis_code[dis_2]; // 取百位的段码    

           P2 = 0xdf;            // 开百位显示(P2.5口控制十位数码管)    

           delay_ms(1);          // 延时1ms作用同上    

               

           P0 = dis_code[dis_3]; // 取千位的段码    

           P2 = 0xef;            // 开千位显示(P2.4口控制十位数码管)    

           delay_ms(1);          // 延时1ms作用同上    

       }    

   }    

   void delay_ms(uchar ms)       // 延时毫秒@12M,ms最大值255    

   {    

       uchar i;    

       while(ms--)    

           for(i = 0; i < 124; i++);   

   }    

      

   /* 计数部分还可用如下方式实现   

     

           dis_0++;                     // 个位值加1   

           if(dis_0 == 10)              // 个位未到10则结束   

           {   

               dis_0 = 0;               // 个位到10清零           

               dis_1++;                 // 十位值加1(个位到10的进位)   

               if(dis_1 == 10)          // 十位未到10则结束   

               {   

                   dis_1 = 0;           // 十位到10清零           

                   dis_2++;             // 百位值加1(十位到10的进位)   

                   if(dis_2 == 10)      // 百位未到10则结束   

                   {   

                       dis_2 = 0;       // 百位到10清零           

                       dis_3++;         // 千位值加1(百位到10的进位)   

                       if(dis_3 == 10)  // 千位未到10则结束   

                           dis_3 = 0;   // 千位到10清零   

                   }   

               }   

           }   

   */ 

文档

四位数码管计数演示

************************************************************************** * 标题: 四位数码管计数演示(C51) * 作者: wentao     http://blog.liuwentao.net                    http://wentao.programfan.com * 日期: 2007.3.2 * 软件: Keil C51 V8.02 * 芯片: ATX51 * 说明: 实验板实测通
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top