8位数码管动态显示时间,可调节,调节的数闪烁显示

发布者:huijiazi5210最新更新时间:2016-09-22 来源: eefocus关键字:8位数码管  动态显示 手机看文章 扫描二维码
随时随地手机看文章
//8位数码管动态显示时间,可调节,

//调节时间时,调节的数闪烁显示;
//比较两种闪烁的方法;


#include
#define uint unsigned int 
#define uchar unsigned char
sbit tiaojie=P1^0;
sbit jia=P1^1;
sbit jian=P1^2;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
     0x80,0x90,0xbf};
uchar a,b,num1,num2,flag100ms,flag1s,flagtj;
uchar miao,fen,shi,flagjia,flagjian;
bit flag_1s;
uchar code wela[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar  dula[8]={0,0,1,1,2,2,3,3};
void delay(uint z);
void intc();
void keyscan();
void disp();
void main()
{intc();

  while(1)
  {
    
  keyscan();
        disp();

  }
}

//================
void intc()
{
 TMOD=0x01;
    TH0=(65536-10000)/256;
 TL0=(65536-10000)%256;
    ET0=1;
 EA=1;
    TR0=1;
}

void timer0() interrupt 1
{
 TH0=(65536-10000)/256;
 TL0=(65536-10000)%256;
 a++;
    if(a==10)
     {flag100ms=1;}
    if(a==100)
     {a=0,flag1s=1,miao++;flag_1s=~flag_1s;}
 if(miao==60)
     {miao=0,fen++;}
 if(fen==60)
     {fen=0,shi++;
  if(shi>12)
       shi=1;}
    
   
}
//====================
void disp()
{uchar i,n;
 dula[7]=miao%10;
    dula[6]=miao/10;
 dula[5]=0x0a;
 dula[4]=fen%10;
 dula[3]=fen/10;
  dula[2]=0x0a;
 dula[1]=shi%10;
 dula[0]=shi/10;

     for(i=0;i<8;i++)
  {
   switch(flagtj)
       { 
       case 1 : n=6;
                break;
        case 2 : n=3;
                break;
        case 3 : n=0;
                break;
        default:break;
            
  }
  if(flagtj!=0)
           if((n==i)||(n+1==i))
            {if(flag_1s==1)
              P0=0xff;
             else
             P0=table[dula[i]];}
           else
             P0=table[dula[i]];
         if(flagtj==0)
   P0=table[dula[i]];
          
     P2=wela[i];
        delay(5);
       P0=0xff;
        }

  /*第二种显示的方法。相对来说比较代码长些
 for(i=0;i<8;i++)
    {
       
  switch(flagtj)
          {
  case 1:
    if(i>5&&i<8)
        {if(flag_1s==1)
          P0=0xff;
         else        
    P0=table[dula[i]];}
               else
               P0=table[dula[i]];break;
   case 2:
    if(i>2&&i<5)
        {if(flag_1s==1)
          P0=0xff;
         else        
    P0=table[dula[i]];}
               else
               P0=table[dula[i]];break;
  case 3:
    if(i>=0&&i<2)
        {if(flag_1s==1)
          P0=0xff;
         else        
    P0=table[dula[i]];}
               else
               P0=table[dula[i]];break;
        case 0:
   P0=table[dula[i]];break;
          }
     P2=wela[i];
        delay(10);
        P0=0xff;
        }


*/

}
//=====================
void delay(uint z)
{
 uint x;
 uchar y;
   for(x=0;x      for(y=0;y<112;y++);
}

//===========================
void keyscan()
{
  if(tiaojie==0)
   delay(100);
  if(tiaojie==0)
    {while(!tiaojie);
  flagtj++;
    if(flagtj>3)
      flagtj=0;
 }
   if(jia==0)
   delay(100);
  if(jia==0)
    {while(!jia);
 flagjia=1;
 }
   if(jian==0)
   delay(100);
  if(jian==0)
    {while(!jian);
 flagjian=1;
 }
  if(flagtj!=0)
   switch(flagtj)
    { case 1: if(flagjia==1)
    {flagjia=0;miao++;
     if(miao>60)
     miao=0;
    }
  
            if(flagjian==1)
    {flagjian=0;
     if(miao<1)
     miao=1;
     miao--;
    }
   break;
   case 2: if(flagjia==1)
    {flagjia=0;fen++;
     if(fen>60)
       fen=0;
    }
  
            if(flagjian==1)
    {flagjian=0;
     if(fen<1)
     fen=1;
     fen--;
    }
   break;
 case 3: if(flagjia==1)
    {flagjia=0;shi++;
     if(shi>12)
     shi=1;
    }
  
            if(flagjian==1)
    {flagjian=0;
     if(shi<1)
     shi=1;
     shi--;
    }
   break;
 }
}

//===============

关键字:8位数码管  动态显示 引用地址:8位数码管动态显示时间,可调节,调节的数闪烁显示

上一篇:模拟风扇控制电路(单片机C程序设计)
下一篇:ADC0832实现输出频率为50HZ的正弦波

推荐阅读最新更新时间:2024-03-16 15:11

密码锁设计(4×4键盘及8位数码管)
1.实验任务 用4×4组成0-9数字键及确认键构成的密码锁。 用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声;若密码不正确,禁止按键输入3秒,同时发出“嘀、嘀”报警声;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。 2.电路原理图 图4.33.1 3. 系统板上硬件连线 (1)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。 (2)把“单片机系统“区域中的P2.0-P2.7用8芯排线连接
[单片机]
密码锁设计(4×4键盘及<font color='red'>8位数码管</font>)
LED点阵显示屏动态显示和远程监控的实现
1、引言 LED点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。 目前大多数的LED点阵显示系统自带字库。其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。而实际上经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。这时一般的显示系统就很难达到要求。 另
[安防电子]
LED点阵显示屏<font color='red'>动态显示</font>和远程监控的实现
基于proteus的51单片机仿真实例六十、8位数码管显示实例
1、本例实现在8位数码管上同时显示多个不同字符。 2、本例使用了8只集成式7段共阳数码管(pruteus中元件标识为7seg-mpx8-ca-blu,共阳为ca,共阴为cc),所有8个数码管的段码引脚a,b,c,d,e,f,g,dp都是分别并联在一起,任何时候发送的段码均会传送到所有数码管上,所有的数码管的共阳极是独立的,本例中个数码管的共阳极分别与8只NPN三极管射极相连,程序运行时,任意时刻仅允许一只数码管的共阳极连接+5V,当向连接段码的端口发送段码值时,相应数字只会显示在某一只数码管上。 3、为了使不同数码管显示不同字符,本例使用的是集成式多位数码管常用的动态扫描显示技术,他利用了人的视觉暂留特征,选通第一只数码管
[单片机]
基于proteus的51单片机仿真实例六十、<font color='red'>8位数码管</font>显示实例
51单片机 数码动态显示
#include #include #define uchar unsigned char #define uint unsigned int #define SEG P0 sbit latch1=P2^7; //段驱动锁存信号 sbit latch2=P2^6; //位驱动锁存信号 uchar code DSY_CODE = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; void DelayMS(uint x) { uchar t; while(x--) { for(t=12
[单片机]
定时器中断使用+数码管动态显示
先上图 主要用到 EA:中断总控制 1 开启 0关闭 ET0 :定时器0溢出中断 1开启 0关闭 要点:中断号计算 公式:中断向量=8 中断号+3 timer0为例 中断向量=0x0b (11十进制) 中断号=(11-3)/8=1 中断函数: void timer0_interrupt() interrupt 1 //中断号为1 中断优先级可以查书。 数码管动态显示就是用一组io口 显示多个led数码管 扫描频率1~10ms 代码如下: #include reg52.h typedef unsigned char uint8; typedef unsi
[单片机]
定时器中断使用+数码管<font color='red'>动态显示</font>
一种新颖的LED动态显示方法(图)(ULN2003)
  单片机应用系统中常使用LED作为显示器,在需多位LED显示时,为了简化电路,降低成本,常将所有门的选线并联在一起,由一个8位I/O口控制,而共阴(阳)I/O线受控制,实现各部分时选通。如图1所示为6位LED动态显示接口电路。 表1 控制符号 段选2 段选1 a b c d e f g dp Led1 led2 led3 第1次 0 1 1 1 1 1 1 1 0 1 1 第2次 1 0 1 1 1 1 1 1 1 1 1 第3次 1
[电源管理]
一种新颖的LED<font color='red'>动态显示</font>方法(图)(ULN2003)
单片机控制LCD1602显示屏动态显示字符串
仿真电路图: 仿真实验结果: C语言程序代码: //------------------------------------------------*/ #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include intrins.h sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0
[单片机]
单片机控制LCD1602显示屏<font color='red'>动态显示</font>字符串
8051单片机动态显示数码管
本*表示看了独立键盘和LED直接串联起来的东西,表示比之前的提升了一个档次,所以研究了有一会儿。这段程序之后和按键一起写奉上。 数码管是个很神奇的东西-。- 本*表示数码管分两种,共阴和共阳。一般开发板上都是共阴,我这块x宝买的也是一样。 我先看了郭天祥的视频,发现他只介绍了静态数码管。而静态数码管的显示简单很多,硬件设计上也简单很多,用到了两块74HC573。 但是动态又提升了一个档次,首先是寄存器不一样,其次,设计上也负责了很多,本*表示研究了半天还一知半解。什么级联什么的,表示电路分析,模电,数电还没学好有难度。但是大致意思就是一个锁存器是8位,两个就是16位,相当于当做16位用,然后在传输数据时候一个个退一
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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