8位共阴数码管动态扫描自增自减

发布者:cw57324588最新更新时间:2015-07-02 来源: 51hei关键字:共阴数码管  动态扫描  自增自减 手机看文章 扫描二维码
随时随地手机看文章
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit duan=P2^2;//定义P2.2为段操作,爱设置哪个都行
sbit wei=P2^3;//定义P2.3为位操作
/*------------------------------------------------
程序主要作用于动态扫描,没什么实际应用
----------------------查表表格--------------------------*/
unsigned char code shuzhi[]={  
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
          };//数字表0123456789abcdef定义进RAM
unsigned char code weizhi[]={  
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
          };//共阴数码管位置表01234567定义进RAM
unsigned char huanchong[8];//定义一个一维数组做为缓冲区
/*---------------------------定义进入ROM
                  函数声明
------------------------------------------------*/
void yeishi(unsigned int t); //函数声明
/*------------------------------------------------
                    主函数
------------------------------------------------*/
main ()
{
                  
unsigned char i,j;
//定义一个char型变量 i 取值范围 0~255,如果定义j为unsigned long int 就可以实现0~4294967295 
 
while (1)         //主循环
    {
  j=0; 
  j++;    //j不断加1,直到255溢出,如果改成--j就是自减
  
  for(i=0;i<8;i++)//for循环,i初始为0自加小于8,0-7
  {
  ///////////////拆分数j//////////////////////////
  huanchong[0]=shuzhi[j/100];
  huanchong[1]=shuzhi[(j/10)%10];
  huanchong[2]=shuzhi[j%10];
////////通过数学运算得到每个位的数值并赋值给缓冲区因为只有255三位
只定义三位
 别问我为什么要这样算,我数理化英都不好,没看见我的变量定义全是拼音么?而且我都不能保证
拼音是对的
有一定规律:
  huanchong[0]=shuzhi[j/10000000];
  huanchong[1]=shuzhi[(j/1000000)%10];
  huanchong[2]=shuzhi[(j/100000)%10];
  huanchong[3]=shuzhi[(j/10000)%10];
  huanchong[4]=shuzhi[(j/1000)%10];
  huanchong[5]=shuzhi[(j/100)%10];
  huanchong[6]=shuzhi[(j/10)%10];
  huanchong[7]=shuzhi[j%10];
////////////////////只用P0口,P0的定义已经在头文件里面了////////////*/
   P0=weizhi[i];  
   wei=1;//位开关,1为开,0为关
   wei=0;
   P0=huanchong[i];//通过前面的运算,调用缓冲区数值
   duan=1;//段开关,1为开,0为关
   duan=0;
 yeishi(300);//延时函数调用设置为300,按情况定,越大没效果,越小有重影
  }
  }
}
/*------------------------------------------------
含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是
 0~65535
------------------------------------------------*/
void yeishi(unsigned int t)
{
 while(--t);
}
关键字:共阴数码管  动态扫描  自增自减 引用地址:8位共阴数码管动态扫描自增自减

上一篇:自制的电子表程序
下一篇:函数的复用性表现为库

推荐阅读最新更新时间:2024-03-16 14:23

串行动态LED扫描电路
4中采用C2051单片机,同时用廉价易得的74LS164和74LS138作为扩展芯片。74LS164是一个8位串入并出的移位寄存器,其此处的功能是将C2051串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED数码管。 74LS138 是一个3-8译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。但74LS138电流驱动能力较小,为此,电路使用了未级驱动三极管2SA1015作为地址驱动。 将4只LED的段位都连在一起,它们的公共端则由74LS138分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。使用串行口进行LED通信,程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,
[单片机]
串行<font color='red'>动态</font>LED<font color='red'>扫描</font>电路
8位LED动态扫描时钟演示程序
//使用12MHz晶振,P0口输出段码,P2口作列扫描,用共阳LED数码管 // #include reg51.h code char dis_7 ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; /* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 */ code char sCAN_con ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 列扫描控制字 data char disdata ={0x00,0x00,0x00,0x00,0x00,0x00};
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved