帮忙看看数码管什么情况

[复制链接]
 楼主| 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 值的 个位数
这句是不是错了?

你这么赋值给的显示值是什么呢?
NE5532 发表于 2012-1-19 13:21 | 显示全部楼层
看到这种初哥用仿真就头疼,就像婴儿,站都站不稳就像开始学降龙十八掌了……

楼主,电路应该怎么调?你的问题不在程序上,在最基础的方法上。
 楼主| bigvan 发表于 2012-1-19 14:45 | 显示全部楼层
5# NE5532
老鸟怎讲?望指教!
 楼主| 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;

 楼主| bigvan 发表于 2012-1-19 14:51 | 显示全部楼层
本帖最后由 bigvan 于 2012-1-19 14:53 编辑

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

本帖子中包含更多资源

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

×
NE5532 发表于 2012-1-19 15:16 | 显示全部楼层
先不要慌着写程序,先把单片机取掉,直接用电源来连,看段码显示是不是正确。
 楼主| bigvan 发表于 2012-1-19 15:41 | 显示全部楼层
9# NE5532

本帖子中包含更多资源

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

×
NE5532 发表于 2012-1-19 16:02 | 显示全部楼层
在单片机哪里测,不是在这里。因为你不知道口线到数码管这段有没有画好。
NE5532 发表于 2012-1-19 16:03 | 显示全部楼层
还有你373的LE端是咋接的?开关SW1拿来干嘛的??
tttu 发表于 2012-1-19 16:49 | 显示全部楼层
学习了,谢谢!
Cortex-M0 发表于 2012-1-20 08:51 | 显示全部楼层
NE5532老师讲解的真详细,赞一个~~~
NE5532 发表于 2012-1-20 10:06 | 显示全部楼层
NE5532老师讲解的真详细,赞一个~~~
Cortex-M0 发表于 2012-1-20 08:51


是呀,劝不听,要用仿真,那就把仿真当硬件来用咯,更重要的是,如果我遇到这个问题,我也是这样来找问题哈。
 楼主| bigvan 发表于 2012-1-20 13:44 | 显示全部楼层
15# NE5532
菜鸟感谢老鸟的帮助!
现在发现了一个关键点:程序中
/****************************
P2 = LED_W[j];   //点亮第一位数码管
  Delay(2);
  j++;
  i++;

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

本帖子中包含更多资源

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

×
 楼主| bigvan 发表于 2012-1-20 13:48 | 显示全部楼层
延时时间不同出现的状况

本帖子中包含更多资源

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

×
NE5532 发表于 2012-1-20 16:24 | 显示全部楼层
1.你那个开关上有一边的标号是RD,我不知道你是不是想用外部总线,如果是的话,那应该接到WR上。
2.动态扫描应该怎么做,请自己画张流程图来看。
3.延时肯定影响显示效果,但是这些效果在仿真上体现不出来,这就是我告诉新手不要玩仿真的原因,你不知道动态显示的基本原理,再怎么编程都是徒劳。
xuling425300 发表于 2012-1-22 00:42 | 显示全部楼层
你的段选就错了,po口是数字p2是段选段选怎么用那样赋值的不乱才怪
forgot 发表于 2012-1-22 12:34 | 显示全部楼层
确实是动态显示造成的问题,LZ按照NE大叔说的自己画个动态流程图看看就知道了

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

谢谢NE5532,学习了:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

19

帖子

1

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

2

主题

19

帖子

1

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