打印
[51单片机]

我在学习的时候数码管怎么显示很暗啊

[复制链接]
6238|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhoufeng0918 于 2016-7-18 16:29 编辑

开始好好的 忽然烧个程序 数码管便暗了 数码管是好的 没坏 其他程序我测试过了。之前也碰到过 个位与十位打开的时候中间加个延时液显示很暗,后来发现了 把延时去掉就变亮了 也不知道为什么 延时是5ms,现在同样的一个 延时液去掉了 还是很暗 求大神啊 没人交都是自学的
问题找到了 就是把按键去抖的5ms去掉就变得很亮了 不知道怎么回事啊 这个去抖延时不能省啊

QQ图片20160718161354.png (15.55 KB )

这个是显示程序,我其他都屏蔽了

这个是显示程序,我其他都屏蔽了

QQ图片20160718162807.png (23.89 KB )

按键程序

按键程序

相关帖子

沙发
joyme| | 2016-7-20 15:48 | 只看该作者
用定时器的方式做,不要用while方式延时

使用特权

评论回复
板凳
datouyuan| | 2016-7-21 11:43 | 只看该作者
楼主的代码只能演示,不能用于实际的工程.
每个函数或功能都用掉了mcu的大量时间,想添加新功能都会对现有功能造成影响.

数码管显示要分成2个函数
void display(uchar* data );//
void display_proc(void);//中断调用,每隔5mS执行一次,每次只显示一位

按键稍微麻烦些.

这些代码主体思想是不要用软延时阻塞的方式写代码.

使用特权

评论回复
地板
datouyuan| | 2016-7-21 13:51 | 只看该作者

uchar dsp_data[2];        //dsp_data[0]为个位数值,dsp_data[1]为十位数值,

void display(uchar* data )//
{
        dsp_data[0]=*data;
        dsp_data[1]=*(data+1);
}
void display_proc(void)//中断调用,每隔5mS执行一次,每次只显示一位
{
        static uchar dsp_bit=1;        //0表示显示个位 1表示显示十位

        d0=0;
        P0=tab[dsp_data[dsp_bit]];
        d0=1;
        P0=0xff;

        //循环显示每个位       
        if(0==dsp_bit) dsp_bit=1;
        else dsp_bit--;

}

根据楼主的代码改写的关于显示的驱动.
下面是使用示范

//使用示范
void display_num(uchar* num)//
{
        uchar data[2];
        data[0]=num%10;
        data[1]=num/10;
        display( data );
}


使用特权

评论回复
5
gx_huang| | 2016-7-21 19:50 | 只看该作者
数码管亮和暗,首先要知道硬件原理,要亮度均匀,每个发光单元的导通时间和导通电流要一致才行。
最佳办法是定时器中断显示,每进一次中断,显示一位,保证亮度均匀。
如果不用中断,可以把显示程序做成延时函数,显示一次等于延时一段时间,主程序要不停的调用这个显示延时函数。
按键延时,也是调用显示函数。

使用特权

评论回复
6
jackhwang| | 2016-7-22 07:59 | 只看该作者
你是不是有按键按下,数码管就变暗了。

使用特权

评论回复
7
yaosongjin| | 2016-7-26 11:58 | 只看该作者
把按键延时改成定时器延时就好了,比如将定时器设置1ms溢出,在主程序里记数当记到10次也就是10ms如果按键还是按下的就执行按键程序

使用特权

评论回复
8
shuiqinghan2012| | 2016-8-10 11:32 | 只看该作者
datouyuan 发表于 2016-7-21 11:43
楼主的代码只能演示,不能用于实际的工程.
每个函数或功能都用掉了mcu的大量时间,想添加新功能都会对现有功 ...

感谢这段回复,我也遇到了类似的问题,一直在思考如何改写

使用特权

评论回复
9
icecut| | 2016-8-10 11:44 | 只看该作者
本帖最后由 icecut 于 2016-8-10 11:46 编辑
shuiqinghan2012 发表于 2016-8-10 11:32
感谢这段回复,我也遇到了类似的问题,一直在思考如何改写

看我签名里,百度传课免费单片机教程的资料.以前也上传到21ic 过.中断驱动刷新数码管
视频看前面.文字简介:http://antriver.com/mcudoc/546330dea501fb6e04d74c3b下载连接还在21ic

使用特权

评论回复
10
shuiqinghan2012| | 2016-8-10 11:46 | 只看该作者
icecut 发表于 2016-8-10 11:44
看我签名里,百度传课免费单片机教程的资料.以前也上传到21ic 过.中断驱动刷新数码管
视频看前面.文字简介: ...

这个链接打不开,视频链接可以发下

使用特权

评论回复
11
icecut| | 2016-8-10 11:53 | 只看该作者
本帖最后由 icecut 于 2016-8-10 11:55 编辑
shuiqinghan2012 发表于 2016-8-10 11:46
这个链接打不开,视频链接可以发下

http://antriver.com/mcudoc/546330dea501fb6e04d74c3b
我更新了.应该能打开,以前后面多了个.所以打不开
优酷地址http://v.youku.com/v_show/id_XODI0NjA4MTAw.html

文件下载:https://bbs.21ic.com/icview-831950-1-1.html
视频讲解:http://www.chuanke.com/3359313-127775.html

使用特权

评论回复
12
shuiqinghan2012| | 2016-8-10 12:06 | 只看该作者
icecut 发表于 2016-8-10 11:53
http://antriver.com/mcudoc/546330dea501fb6e04d74c3b
我更新了.应该能打开,以前后面多了个.所以打不开
...

Tks

使用特权

评论回复
13
datouyuan| | 2016-8-10 16:14 | 只看该作者
shuiqinghan2012 发表于 2016-8-10 11:32
感谢这段回复,我也遇到了类似的问题,一直在思考如何改写

数码管,按键扫描等功能的延时(大于几十mS)不要采用死等的方式,要采用计数的方式.

使用特权

评论回复
14
kk118a| | 2016-8-10 23:35 | 只看该作者
你的打印函数呢?定时器

使用特权

评论回复
15
duhemayi| | 2016-8-11 08:39 | 只看该作者
延时太短了吧

使用特权

评论回复
16
ahui1105| | 2016-8-15 11:37 | 只看该作者
锦锐客户带LCD/LED驱动的MCU,可以了解一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

73

帖子

1

粉丝