51单片机直接驱动数码管,,

[复制链接]
9702|22
 楼主| OUCHANGHUA 发表于 2010-8-3 14:28 | 显示全部楼层 |阅读模式
各位大侠前辈,,有空帮忙看下,,小弟想用51单片机直接驱动2个5位的数码管,,如附件电路,,三个按是修改0~9的数,,由于小弟初入门,,不会组织好程序,,希望大伙能给些例子和指导下,,麻烦你们帮忙,,非常感谢,,,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| OUCHANGHUA 发表于 2010-8-3 14:30 | 显示全部楼层
自己顶下
欧阳青云 发表于 2010-8-3 15:05 | 显示全部楼层
你可以用译码器来控制位选。
chueng1021 发表于 2010-8-3 15:09 | 显示全部楼层
搞个驱动数码管的芯片,不要搞这么原始复杂的
 楼主| OUCHANGHUA 发表于 2010-8-3 15:24 | 显示全部楼层
我的只是用来显示数字,,单片机没做其他事的,,想以最小元件实现,,
zhoukok 发表于 2010-8-3 15:29 | 显示全部楼层
直接用动态扫描呀
mage心寒 发表于 2010-8-3 15:39 | 显示全部楼层
你图上面有数码管吗。。就看到是个共阳的LED,你接地电平就亮了。。
 楼主| OUCHANGHUA 发表于 2010-8-3 15:57 | 显示全部楼层
呵呵小弟不才画得不像不经见怪
 楼主| OUCHANGHUA 发表于 2010-8-3 16:01 | 显示全部楼层
多谢你ZHOUKOK,,怎么个架构程序呢,,,

6# zhoukok
mage心寒 发表于 2010-8-3 16:19 | 显示全部楼层
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num,aa,bb,cc,num1,num2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code tablewe[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
void delay(unit);
void main()
{
while(1)
{
for(num=0;num<8;num++)
{
P0=table[num];
P2=tablewe[num1];
num1++;
if(num1==8)
num1=0;
delay(1);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
这是我板子上的程序。你可以参考下。。
 楼主| OUCHANGHUA 发表于 2010-8-3 16:28 | 显示全部楼层
好的多谢你,,,我研究下你给这个例
 楼主| OUCHANGHUA 发表于 2010-8-3 16:34 | 显示全部楼层
我要5位显示不同的数怎么搞呢,,
 楼主| OUCHANGHUA 发表于 2010-8-3 16:35 | 显示全部楼层
还有按键呢,,头痛吖,,万事开头难看来真的,,只有自已经历过才知到,,
seabada 发表于 2010-8-3 16:43 | 显示全部楼层
图画错了吧,那个你给个邮箱我发点给你
 楼主| OUCHANGHUA 发表于 2010-8-3 16:49 | 显示全部楼层
[email=2007OU@163.COM,,,多谢你seabada 2007OU@163.COM,,,多谢你seabada [b[/email]] 14# seabada
 楼主| OUCHANGHUA 发表于 2010-8-3 16:54 | 显示全部楼层
我的邮箱,麻烦并多谢seabada你了,,2007OU@163.COM
zhoukok 发表于 2010-8-3 17:23 | 显示全部楼层
呵呵  你同样用定时器啊,可以定时去扫描按键和刷新显示的
定时20ms  设置标志位,20ms到了进行按键扫描,20ms没有到,我就去执行数码管显示。你不就是改变键值么,20ms处理那些够用了,如果长了,还可以把时间缩短啊,多多利用好定时器吧
biyveddd 发表于 2010-8-4 09:38 | 显示全部楼层
如上,动态扫描呀.你的图的EA引脚电平不对
 楼主| OUCHANGHUA 发表于 2010-8-4 09:52 | 显示全部楼层
动态扫同时显示相同的数字,,我用10楼例的可以做一到,,,,但我要10位各显示不同的数字,,并能用按键来修改,,,,,这可怎么搞,,有人能给个详细点的实方法吗,,
zhoukok 发表于 2010-8-4 18:27 | 显示全部楼层
这个也好解决啊 你改变键值没有问题的啊  不是说了定时扫描啊  在按键处理那一部分可以改变键值,然后就是动态扫描了 就举一个简单的例子 你开始键值为0,你按下键后,你数值加1,然后输出00000001在数码管上,你再按一下就成了00000010,你改变键值和你扫描并不冲突的啊,改变了键值我就把键值一样的输出就好了啊
按键扫描-——按键处理——动态扫描——循环不就可以了,你改变键值是在按键处理里进行的啊,与动态扫描没关系,唯一关联的就是你的输出值。所以,假如你能做出2位数码管动态扫描,你就可以做出10位的,只是时间调一下,不让自己看到闪烁就OK了
哎呀,说了那么多废话,不知道你看的懂我的意思么,表达能力不够啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

109

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部