找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4544|回复: 1
收起左侧

自己琢磨的8*8点阵滚动循环显示数字程序觉得太复杂了,求改进

[复制链接]
ID:411460 发表于 2018-10-25 10:54 | 显示全部楼层 |阅读模式
本人新手,自己琢磨的8*8点阵滚动循环显示数字的程序,实验板测试正常,但就是觉得这个程序复杂了,哪位大神帮忙看看,有什么需要改进的!

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define dig P0
  6. sbit ser=P3^4;
  7. sbit rclk=P3^5;
  8. sbit srclk=P3^6;
  9. uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  10. uchar xdata table2[]=                                                            // 只能存放在xdata了,code不能修改,data放不下
  11. {
  12.         0x00,0x00,0x7E,0x81,0x81,0x81,0x7E,0x00,                // 0
  13.         0x00,0x00,0x00,0x41,0xFF,0x01,0x00,0x00,                // 1
  14.         0x00,0x00,0x63,0x85,0x89,0x91,0x61,0x00,                // 2
  15.         0x00,0x00,0x42,0x81,0x91,0x91,0x6E,0x00,                // 3       
  16.         0x00,0x00,0x0c,0x34,0x44,0xFF,0x04,0x00,                // 4         
  17.         0x00,0x00,0xF2,0x91,0x91,0x91,0x8E,0x00,                // 5          
  18.         0x00,0x00,0x7E,0x91,0x91,0x91,0x4E,0x00,            // 6
  19.         0x00,0x00,0xC0,0x80,0x9F,0xa0,0xc0,0x00,            // 7
  20.         0x00,0x00,0x6E,0x91,0x91,0x91,0x6E,0x00,            // 8
  21.         0x00,0x00,0x72,0x89,0x89,0x89,0x7E,0x00,            // 9
  22.         0x00,0x01,0x1F,0xE4,0x1C,0x07,0x01,0x00,                // A
  23.         0x00,0x00,0x81,0xFF,0x91,0x91,0x6E,0x00,                // B
  24.         0x00,0x00,0x7E,0x81,0x81,0x81,0x42,0x00,                // C
  25.         0x00,0x00,0x81,0xFF,0x81,0x81,0x7E,0x00,                // D
  26.         0x00,0x00,0x81,0xFf,0x91,0xB9,0xC3,0x00,                // E
  27.         0x00,0x00,0X81,0xFF,0x91,0xB8,0xC0,0x00,                // F
  28.         0x00                                                                                        // 辅助数据,与table2[0]一致,方便滚动
  29. };

  30. void hc595(uchar dat)
  31. {
  32.         uchar a;
  33.         rclk=0;
  34.         srclk=0;
  35.         for(a=0;a<8;a++)
  36.         {
  37.                 ser=dat>>7;
  38.                 dat<<=1;
  39.                 srclk=1;
  40.                 _nop_();
  41.                 _nop_();
  42.                 srclk=0;
  43.         }
  44.         rclk=1;
  45.         _nop_();
  46.         _nop_();
  47.         rclk=0;
  48. }


  49. void main()
  50. {
  51.         uint i,j;
  52.         while(1)
  53.         {
  54.         j=20;                                         //滚动速度
  55.         while(j--)
  56.         {
  57.                 for(i=0;i<8;i++)
  58.                 {
  59.                        
  60.                         dig=table1[i];
  61.                         hc595(table2[i]);
  62.                         hc595(0x00);
  63.                 }
  64.         }
  65.                 table2[128]=table2[0];                                //table2[]数据左移
  66.                 for(i=0;i<128;i++)
  67.                 {
  68.                         table2[i]=table2[i+1];
  69.                 }                                                          
  70.                                                   
  71.         }       
  72.   }
复制代码

所有资料51hei提供下载:
点阵滚动.rar (17.3 KB, 下载次数: 48)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:864224 发表于 2020-12-20 21:16 | 显示全部楼层
有没有仿真图啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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