找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

C51单片机程序595一位共阳数码管显示0-9代码问题,求指教

查看数: 1935 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-9-5 16:35

正文摘要:

/*程序主要功能:通过按开关K1来实现一位7段共阳数码管从0-9循环显示,每看一下数字加1*/ //程序里有一个变量i没有使用,编译时候有一个警告,但删掉程序运行就不对了  不报错。  求大神指点 ...

回复

ID:440585 发表于 2022-9-6 08:09
188610329 发表于 2022-9-5 22:23
void main(void) //主函数
{

谢谢  问题解决了   主循环忘写了  
ID:440585 发表于 2022-9-6 08:07
wulin 发表于 2022-9-5 22:01
楼主主函数写法不规范导致的异常。

谢谢 问题解决了   少了主循环
ID:624769 发表于 2022-9-5 22:23
void main(void) //主函数
{

        u8 num;
while(1)                  // 问题的关键 是缺少这个,不是那个i
{
            if(K1==0)
      
                {      
                          num++;
                          if(num==10)
                          num=0;

            }
                        while(!K1);      
            HC595SendByte(shengduan[num]);
            delay(1);//延时      
}
}
ID:213173 发表于 2022-9-5 22:01
楼主主函数写法不规范导致的异常。
  1. #include<reg51.h>
  2. #define  u16  unsigned int
  3. #define  u8  unsigned char
  4. sbit SH_CP=P2^0;      //595_11脚
  5. sbit DS=P2^1;         //595_14脚
  6. sbit ST_CP=P2^2;      //595_12脚
  7. sbit K1=P1^0;

  8. unsigned char shengduan[10]={0x02,0x9F,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08};

  9. void delay(u16 y)
  10. {        
  11.         u16 i,j;
  12.         for(i=0;i<y;i++)
  13.         {
  14.                 for(j=0;j<120;j++);
  15.         }
  16. }

  17. void HC595SendByte(u8 dat)
  18. {
  19.         unsigned char a;
  20.         SH_CP=0;
  21.         ST_CP=0;
  22.         DS=0;
  23.         for(a=0;a<8;a++)
  24.         {
  25.                 DS=dat<<7;
  26.                 dat>>=1;
  27.                
  28.                 SH_CP=1;
  29.                 delay(1);//延时
  30.                 SH_CP=0;        
  31.                 delay(1);//延时
  32.         }
  33.         ST_CP=1;
  34.         delay(1);
  35.         ST_CP=0;
  36. }

  37. void main(void) //主函数
  38. {
  39.         u8 num;
  40. //        u8 i; //没有使用的变量,还不能删
  41.         while(1)
  42.         {
  43.                 if(K1==0)
  44.                 {        
  45.                         delay(10);
  46.                         if(K1==0)
  47.                         {
  48.                                 num++;
  49.                                 if(num==10)
  50.                                 num=0;
  51.                                 while(!K1);      
  52.                         }
  53.                 }
  54. //                while(!K1);        
  55.                 HC595SendByte(shengduan[num]);
  56. //                delay(1);//延时      
  57.         }
  58. }
复制代码

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

Powered by 单片机教程网

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