打印

帮忙看看数码管什么情况

[复制链接]
2209|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bigvan|  楼主 | 2012-1-19 10:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式



数码管动态显示,为什么有的不显示,乱了,接了上拉电阻啊!



/********************************************************************
* 文件名  : 动态显示.c
* 描述    :  
* 创建人  : 东流,2009年8月30日
* 版本号  : 1.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code LED_W[8] = {0,1,2,3,4,5,6,7};
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=120;x++);
}
/********************************************************************
* 名称 : Main()
* 功能 : 数码管的显示
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
uchar i = 0,j = 0;
while(1)
{
  P0 = table;   // i 值的 个位数
  P2 = LED_W[j];   //点亮第一位数码管
  Delay(2);
  j++;
  i++;
  if(j == 8)    //利用 j 值的变化,来控制数码管数值变化间隔的时间
  {
   j = 0;
   i = 0;
  }
}
}

相关帖子

沙发
yewuyi| | 2012-1-19 11:00 | 只看该作者
你的总线画的对吗?

使用特权

评论回复
板凳
bigvan|  楼主 | 2012-1-19 11:40 | 只看该作者
2# yewuyi 刚才看了下,数码管dp有几个标错了,可是这个不影响显示啊!望老鸟不吝赐教!

使用特权

评论回复
地板
yewuyi| | 2012-1-19 13:03 | 只看该作者
P0 = table;   // i 值的 个位数
这句是不是错了?

你这么赋值给的显示值是什么呢?

使用特权

评论回复
5
NE5532| | 2012-1-19 13:21 | 只看该作者
看到这种初哥用仿真就头疼,就像婴儿,站都站不稳就像开始学降龙十八掌了……

楼主,电路应该怎么调?你的问题不在程序上,在最基础的方法上。

使用特权

评论回复
6
bigvan|  楼主 | 2012-1-19 14:45 | 只看该作者
5# NE5532
老鸟怎讲?望指教!

使用特权

评论回复
7
bigvan|  楼主 | 2012-1-19 14:46 | 只看该作者
本帖最后由 bigvan 于 2012-1-19 14:49 编辑

4# yewuyi
void Main(void)
{
uchar i = 0,j = 0;
while(1)
{
   P0 = table;   // i 值的 个位数
  P2 = LED_W[j];   //点亮第一位数码管
  Delay(2);
  j++;
  i++;
  if(j == 8)    //利用 j 值的变化,来控制数码管数值变化间隔的时间
  {
   j = 0;
   i = 0;
  }
}
}

复制不出P0 = table;

使用特权

评论回复
8
bigvan|  楼主 | 2012-1-19 14:51 | 只看该作者
本帖最后由 bigvan 于 2012-1-19 14:53 编辑

4# yewuyi
是有P0 = table;   // i 值的 个位数
中括弧里就是不显示。

使用特权

评论回复
9
NE5532| | 2012-1-19 15:16 | 只看该作者
先不要慌着写程序,先把单片机取掉,直接用电源来连,看段码显示是不是正确。

使用特权

评论回复
10
bigvan|  楼主 | 2012-1-19 15:41 | 只看该作者
9# NE5532

使用特权

评论回复
11
NE5532| | 2012-1-19 16:02 | 只看该作者
在单片机哪里测,不是在这里。因为你不知道口线到数码管这段有没有画好。

使用特权

评论回复
12
NE5532| | 2012-1-19 16:03 | 只看该作者
还有你373的LE端是咋接的?开关SW1拿来干嘛的??

使用特权

评论回复
13
tttu| | 2012-1-19 16:49 | 只看该作者
学习了,谢谢!

使用特权

评论回复
14
Cortex-M0| | 2012-1-20 08:51 | 只看该作者
NE5532老师讲解的真详细,赞一个~~~

使用特权

评论回复
15
NE5532| | 2012-1-20 10:06 | 只看该作者
NE5532老师讲解的真详细,赞一个~~~
Cortex-M0 发表于 2012-1-20 08:51


是呀,劝不听,要用仿真,那就把仿真当硬件来用咯,更重要的是,如果我遇到这个问题,我也是这样来找问题哈。

使用特权

评论回复
16
bigvan|  楼主 | 2012-1-20 13:44 | 只看该作者
15# NE5532
菜鸟感谢老鸟的帮助!
现在发现了一个关键点:程序中
/****************************
P2 = LED_W[j];   //点亮第一位数码管
  Delay(2);
  j++;
  i++;

****************************/
只要延时改长点如Delay(200),就能显示正确,不知为何,望老鸟帮忙。
我把程序和电路图打包添加了附件,那个573的LE加个选择开关是希望可以选择单片机和手动控制573锁存器的使能。谢谢

新建文件夹.zip

22.43 KB

使用特权

评论回复
17
bigvan|  楼主 | 2012-1-20 13:48 | 只看该作者
延时时间不同出现的状况

使用特权

评论回复
18
NE5532| | 2012-1-20 16:24 | 只看该作者
1.你那个开关上有一边的标号是RD,我不知道你是不是想用外部总线,如果是的话,那应该接到WR上。
2.动态扫描应该怎么做,请自己画张流程图来看。
3.延时肯定影响显示效果,但是这些效果在仿真上体现不出来,这就是我告诉新手不要玩仿真的原因,你不知道动态显示的基本原理,再怎么编程都是徒劳。

使用特权

评论回复
19
xuling425300| | 2012-1-22 00:42 | 只看该作者
你的段选就错了,po口是数字p2是段选段选怎么用那样赋值的不乱才怪

使用特权

评论回复
20
forgot| | 2012-1-22 12:34 | 只看该作者
确实是动态显示造成的问题,LZ按照NE大叔说的自己画个动态流程图看看就知道了

看你的程序像是跟着郭天祥学的,他的数码管那课视频中有讲道动态显示的原理以及延时造成的问题

谢谢NE5532,学习了:handshake

使用特权

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

本版积分规则

2

主题

19

帖子

1

粉丝