找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1203|回复: 9
打印 上一主题 下一主题
收起左侧

为什么这个程序十位数字总是闪烁,还请大神帮助?

[复制链接]
跳转到指定楼层
楼主
ID:350005 发表于 2019-10-16 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit wela=P2^7;
sbit dula=P2^6;        
uint num,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z)
{
uint x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void main()
{
while(1)
{
  dula=1;
  P0=table[shi];
  dula=0;
  wela=1;
  P0=0xfe;
  wela=0;
  delay(5);

  dula=1;
  P0=table[ge];
  dula=0;
  wela=1;
  P0=0xfd;
  wela=0;
  delay(5);

  num++;
  delay(1000);
  if(num==100)
  {
   num=0;
  }
  shi=num/10;
  ge=num%10;
}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277531 发表于 2019-10-16 16:30 | 只看该作者
把单片机主频率提高,或者把delay减少
回复

使用道具 举报

板凳
ID:235200 发表于 2019-10-16 18:28 | 只看该作者
这是因为没有消影,在程序中P0=table[shi]; P0=table[ge];前各加一个消影就行了,即加入dula=1;
  P0=0;  dula=0;
回复

使用道具 举报

地板
ID:469368 发表于 2019-10-17 07:17 | 只看该作者
把代码改成下面的试试:
回复

使用道具 举报

5#
ID:469368 发表于 2019-10-17 07:19 | 只看该作者
#include"reg51.h" #define uint unsigned int #define uchar unsigned char sbit wela=P2^7; sbit dula=P2^6;         uint num,shi,ge; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z) { uint x,y;   for(x=z;x>0;x--)    for(y=110;y>0;y--); } void main() {  while(1) {   dula=1;   P0=table[shi];   dula=0;P0=0;   wela=1;   P0=0xfe;   wela=0;    delay(5);   dula=1;   P0=table[ge];   dula=0;   wela=1;   P0=0xfd;   wela=0;    delay(5);   num++;   delay(1000);   if(num==100)   {    num=0;   }   shi=num/10;   ge=num%10; }  }
回复

使用道具 举报

6#
ID:469368 发表于 2019-10-17 07:21 | 只看该作者
dula=1;   P0=table[shi];   dula=0;P0=0xff   wela=1;   P0=0xfe;   wela=0;    delay(5);   dula=1;   P0=table[ge];   dula=0; P0=0xff  wela=1;   P0=0xfd;   wela=0;    delay(5);
回复

使用道具 举报

7#
ID:350005 发表于 2019-10-20 15:41 | 只看该作者
还是不行
是不是delay()延时一秒达不到
只能用中断
回复

使用道具 举报

8#
ID:213173 发表于 2019-10-20 19:30 | 只看该作者
你这是郭天祥的示例改的,其原程序本身就有缺陷。给你改了,你试试。对比一下就明白问题在哪里。楼上讲的都不在重点上。

  1. #include"reg51.h"
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit wela=P2^7;
  5. sbit dula=P2^6;        
  6. uint num,num1,shi,ge;
  7. uchar code table[]={
  8. 0x3f,0x06,0x5b,0x4f,
  9. 0x66,0x6d,0x7d,0x07,
  10. 0x7f,0x6f,0x77,0x7c,
  11. 0x39,0x5e,0x79,0x71};
  12. bit flag=0;

  13. void delay(uint z)
  14. {
  15.         uint x,y;
  16.         for(x=z;x>0;x--)
  17.                 for(y=110;y>0;y--);
  18. }
  19. void main()
  20. {
  21.         while(1)
  22.         {
  23.                 P0=0x00;//消隐
  24.                 dula=1;
  25.                 dula=0;
  26.                 if(!flag)
  27.                 {
  28.                         P0=0xfe;
  29.                         wela=1;
  30.                         wela=0;
  31.                         P0=table[shi];
  32.                         dula=1;
  33.                         dula=0;
  34.                         flag=1;
  35.                 }
  36.                 else
  37.                 {
  38.                         P0=0xfd;
  39.                         wela=1;
  40.                         wela=0;
  41.                         P0=table[ge];
  42.                         dula=1;
  43.                         dula=0;
  44.                         flag=0;
  45.                 }
  46.                 delay(1);
  47.                 num++;
  48.                 if(num>=1000)
  49.                 {
  50.                         num=0;
  51.                         num1++;
  52.                         if(num1>=100)
  53.                                 num1=0;
  54.                 }
  55.                 shi=num1/10;
  56.                 ge=num1%10;
  57.         }
  58. }
复制代码
回复

使用道具 举报

9#
ID:350005 发表于 2019-10-26 17:15 | 只看该作者
wulin 发表于 2019-10-20 19:30
你这是郭天祥的示例改的,其原程序本身就有缺陷。给你改了,你试试。对比一下就明白问题在哪里。楼上讲的都 ...

嗯 谢谢
这个标志位太好了
万分感谢  
回复

使用道具 举报

10#
ID:630813 发表于 2019-10-27 10:50 | 只看该作者
都是大神.....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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