标题: 大佬们可以抽时间帮忙看看嘛,谢谢各位大佬 [打印本页]

作者: 桦木醇    时间: 2024-1-29 00:33
标题: 大佬们可以抽时间帮忙看看嘛,谢谢各位大佬
有大佬可以帮忙看一下这个嘛,下面是程序,然后这个所运行出来的效果如视频所示,如果我想达到照片中的效果,这个程序应该怎么改呀,感谢各位大佬https://v.youku.com/v_show/id_XNjM3MDY0OTA0MA==.html
  1. #include <REGX52.H>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define smg_port P0

  5. sbit smg_a=P2^2;
  6. sbit smg_b=P2^3;
  7. sbit smg_c=P2^4;

  8. uchar smg_code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x4f};

  9. void Delay1000ms(void)
  10. {
  11.         unsigned char data i, j, k;

  12.         _nop_();
  13.         i = 8;
  14.         j = 1;
  15.         k = 243;
  16.         do
  17.         {
  18.                 do
  19.                 {
  20.                         while (--k);
  21.                 } while (--j);
  22.         } while (--i);
  23. }



  24. void smg_play(void)
  25. {
  26.         uchar i=0;
  27.        
  28.         for(i=0;i<8;i++)
  29.         {
  30.                 switch(i)
  31.                 {
  32.                         case 0:smg_c=1;smg_b=1;smg_a=1;break;
  33.                         case 1:smg_c=1;smg_b=1;smg_a=0;break;
  34.                         case 2:smg_c=1;smg_b=0;smg_a=1;break;
  35.                         case 3:smg_c=1;smg_b=0;smg_a=0;break;
  36.                         case 4:smg_c=0;smg_b=1;smg_a=1;break;
  37.                         case 5:smg_c=0;smg_b=1;smg_a=0;break;
  38.                         case 6:smg_c=0;smg_b=0;smg_a=1;break;
  39.                         case 7:smg_c=0;smg_b=0;smg_a=0;break;
  40.                 }
  41.                 smg_port=smg_code[i];
  42.                 Delay1000ms();
  43.         }
  44. }
  45.                
  46. void main()
  47. {
  48.         while(1)
  49.         {
  50.                  smg_play();
  51.         }
  52. }
复制代码


c638f47f28d87ad90586dbba9b8a84ed.jpg (1.35 MB, 下载次数: 72)

想要达到的效果

想要达到的效果

作者: 桦木醇    时间: 2024-1-29 00:36
就是想要这8个数字同时显现,但是我运行出来一次只能显现出一个数字,应该在程序上加一些东西还是删掉一些东西啊,麻烦各位大佬给我这个门槛还没有摸到的小虾米解答一下,谢谢谢谢谢谢谢谢!!!
作者: wulin    时间: 2024-1-29 06:25
桦木醇 发表于 2024-1-29 00:36
就是想要这8个数字同时显现,但是我运行出来一次只能显现出一个数字,应该在程序上加一些东西还是删掉一些 ...

你把延时函数改为1ms就能达到想要的效果。
作者: glinfei    时间: 2024-1-29 06:56
把Delay1000ms();去掉
作者: zch5200    时间: 2024-1-29 08:15
是你的延时时间太长了,改成几毫秒看看吧
作者: lxdm163    时间: 2024-1-29 08:23
Delay1000ms();延时时间太长
作者: dyhh    时间: 2024-1-29 08:29
桦木醇 发表于 2024-1-29 00:36
就是想要这8个数字同时显现,但是我运行出来一次只能显现出一个数字,应该在程序上加一些东西还是删掉一些 ...

每个数字显示几ms就行了,同时显示其实就是利用眼睛视觉残留达到同时亮的效果。
作者: Hephaestus    时间: 2024-1-30 04:17
楼主解决了问题吱一声也让热心群众不失望。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1