搜索
bottom↓
回复: 9

设置数码管闲事数值,设置当前位闪烁显示

[复制链接]

出0入0汤圆

发表于 2012-10-17 15:59:00 | 显示全部楼层 |阅读模式
最近想做个时钟,用的动态扫描数码管显示,段码部分用的IO口直接驱动,位选端口用的595,显示正常,但是现需要设置时间,想所需设置当前位闪烁,然后可加减,不知道该怎么做,有能指点的么。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-10-17 16:02:56 | 显示全部楼层
你用动态扫描的话,你只需要改下延迟时间,
其他位的延迟不变,只把你想要闪烁的那位显示延迟加长
试试吧,个人想法,没实践不知道行不行

出0入0汤圆

 楼主| 发表于 2012-10-17 16:05:44 | 显示全部楼层
扫描的时候是一起扫描的,如果加长了需闪烁的那位,那总体的时间不久变长了么,所有的都会闪烁了。
这是我现在的显示函数,不知道怎么修改,谢谢!
void    display(void)
{
        if(posit==24)
                posit=0;
        else
                posit++;
        switch(posit)
                {
                         case  0 : HC595_disp(0xFF,0xFF,0XFE);break;
                        case  1 : HC595_disp(0xFF,0xFF,0XFD);break;
                        case  2 : HC595_disp(0xFF,0xFF,0XFB);break;
                        case  3 : HC595_disp(0xFF,0xFF,0XF7);break;
                        case  4 : HC595_disp(0xFF,0xFF,0XEF);break;
                        case  5 : HC595_disp(0xFF,0xFF,0XDF);break;
                        case  6 : HC595_disp(0xFF,0xFF,0XBF);break;
                        case  7 : HC595_disp(0xFF,0xFF,0X7F);break;
                       
                        case  8 : HC595_disp(0xFF,0xFE,0XFF);break;
                        case  9 : HC595_disp(0xFF,0xFD,0XFF);break;
                        case 10 : HC595_disp(0xFF,0xFB,0XFF);break;
                        case 11 : HC595_disp(0xFF,0xF7,0XFF);break;
                        case 12 : HC595_disp(0xFF,0xEF,0XFF);break;
                        case 13 : HC595_disp(0xFF,0xDF,0XFF);break;
                        case 14 : HC595_disp(0xFF,0xBF,0XFF);break;
                        case 15 : HC595_disp(0xFF,0x7F,0XFF);break;
                       
                        case 16 : HC595_disp(0xFE,0xFF,0XFF);break;
                        case 17 : HC595_disp(0xFD,0xFF,0XFF);break;
                        case 18 : HC595_disp(0xFB,0xFF,0XFF);break;
                        case 19 : HC595_disp(0xF7,0xFF,0XFF);break;
                        case 20 : HC595_disp(0xEF,0xFF,0XFF);break;
                        case 21 : HC595_disp(0xDF,0xFF,0XFF);break;
                        case 22 : HC595_disp(0xBF,0xFF,0XFF);break;
                        case 23 : HC595_disp(0x7F,0xFF,0XFF);break;
                       
                        default:  HC595_disp(0xFF,0xFF,0XFF);break;
                }
}                 


void    time_to_disbuffer(void)
{
    unsigned char  i,pos=0;
    for(i=0;i<=11;i++)
    {
              disbuffer[pos++]=time[i]/10;
              disbuffer[pos++]=time[i]%10;
    }       
        PORTA=0XFF;
        PORTA=led_7[disbuffer[posit]];
}                 

出0入4汤圆

发表于 2012-10-17 16:08:15 | 显示全部楼层
老老实实的向该位显示缓冲写0xff吧。

出0入0汤圆

 楼主| 发表于 2012-10-17 16:14:02 | 显示全部楼层
我现在显示为对time[]赋值后执行void    display(void),void    time_to_disbuffer(void),不知道如果想让time[1]闪烁,而其余正常显示怎么做,能说的详细点么。

出0入0汤圆

发表于 2012-10-17 16:43:51 | 显示全部楼层
去看看我做的LED闹钟
http://www.amobbs.com/thread-5480294-1-1.html

出0入0汤圆

发表于 2012-10-17 17:16:51 | 显示全部楼层
设定位要闪烁,就是在动态扫描的时候,就是对该位进行显示关闭个大概250ms。然后再正常显示250ms.如此就可以看到该位闪烁了。

要是想闪的慢点,就时间再改长些。

出0入0汤圆

发表于 2012-10-17 17:49:58 | 显示全部楼层
假设time_to_disbuffer()为2mS刷新一次

void    time_to_disbuffer(void)
{
    uchar sszq;   //  闪烁周期

     unsigned char  i,pos=0;
     for(i=0;i<=11;i++)
     {
               disbuffer[pos++]=time[i]/10;
               disbuffer[pos++]=time[i]%10;
     }        
        PORTA=0XFF;
         PORTA=led_7[disbuffer[posit]];

       if(++sszq>250)  sszq=0;    // 周期0.5S
       if(posit==闪烁位 && sszq>125)    PORTA=0XFF;   // 后半周期,该位不显示

}           

在你程序基础上小改一下。实现了之后,把程序大改一下,太原始了。

出0入0汤圆

 楼主| 发表于 2012-10-18 08:58:17 | 显示全部楼层
回复 zhanan
按照你提供的方法修改,所有的数码管都会闪烁。

出0入0汤圆

发表于 2012-10-18 09:53:22 | 显示全部楼层
drz123321 发表于 2012-10-17 22:25
去看看我做的LED闹钟

你是建筑工人?盖楼的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-12 09:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表