找回密码
 立即注册

QQ登录

只需一步,快速开始

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

c51跑马灯仿真+单片机源代码

[复制链接]
跳转到指定楼层
楼主
学校实训做的,共享一下
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<REGX51.H>
  2. #include<intrins.h>
  3. unsigned char code tablex[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  4. unsigned char code table0[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};              //全部led灯一起闪烁
  5. unsigned char code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        //LED从低位往高位移
  6. unsigned char code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  7. unsigned char code table3[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};        //LED从1个亮到8个都点亮(从低位往高位)
  8. unsigned char code table4[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};   //LED从8个全亮到一个都不亮(从低位往高位)
  9. unsigned char  led00[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};                            //
  10. unsigned char  led01[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
  11. unsigned char  led02[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
  12. unsigned char  led10[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};  
  13. unsigned char  led11[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
  14. unsigned char  led12[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
  15. unsigned char  led20[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};  
  16. unsigned char  led21[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
  17. unsigned char  led22[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};

  18. unsigned char i,j;                        //定义循环变量
  19. unsigned int tt=200;                      //定义时间指数
  20. unsigned int  go=0,to=0;                  //定义跳转变量
  21. //***************************************************************************
  22. void delay(unsigned int time)             //延时函数
  23. {
  24.         unsigned int x,y;
  25.         for(x=time;x>0;x--)
  26.                 for(y=110;y>0;y--);                                                       
  27. }

  28. //————————————————————————————————————————————————————————————————————————————————————————————————————
  29. void INT0ear()interrupt 0
  30. {
  31.         switch(tt)
  32.         {
  33.             case 200:tt=400;break;
  34.                 case 400:tt=600;break;
  35.                 case 600:tt=800;break;
  36.                 case 800:tt=1000;break;
  37.                 case 1000:tt=200;break;
  38.         }
  39. }
  40. void INT1ear()interrupt 2
  41. {
  42.         go=go++;
  43.         if(go==5)go=0;
  44.         switch(go)
  45.         {   
  46.                 case 0:for(j=0;j<8;j++)
  47.                 {
  48.                         led00[j]=table0[j];led01[j]=table0[j];led02[j]=table0[j];
  49.                         led10[j]=table0[j];led11[j]=table0[j];led12[j]=table0[j];
  50.                         led20[j]=table0[j];led21[j]=table0[j];led22[j]=table0[j];
  51.                         P3_4=0;P3_5=0;P3_6=0;P3_7=0;
  52.                 }break;
  53.                 case 1:for(j=0;j<8;j++)
  54.                 {
  55.                         led00[j]=table1[j];led01[j]=table1[j];led02[j]=table1[j];
  56.                         led10[j]=table1[j];led11[j]=table1[j];led12[j]=table1[j];
  57.                         led20[j]=table1[j];led21[j]=table1[j];led22[j]=table1[j];
  58.                         P3_4=1;P3_5=0;P3_6=0;P3_7=0;
  59.                 }break;
  60.                 case 2:for(j=0;j<8;j++)
  61.                 {
  62.                         led00[j]=table2[j];led01[j]=table2[j];led02[j]=table2[j];
  63.                         led10[j]=table2[j];led11[j]=table2[j];led12[j]=table2[j];
  64.                         led20[j]=table2[j];led21[j]=table2[j];led22[j]=table2[j];
  65.                         P3_4=0;P3_5=1;P3_6=0;P3_7=0;
  66.                 }break;
  67.                 case 3:for(j=0;j<8;j++)
  68.                 {
  69.                         led00[j]=table3[j];led01[j]=table3[j];led02[j]=table3[j];
  70.                         led10[j]=table3[j];led11[j]=table3[j];led12[j]=table3[j];
  71.                         led20[j]=table3[j];led21[j]=table3[j];led22[j]=table3[j];
  72.                         P3_4=1;P3_5=1;P3_6=0;P3_7=0;
  73.                 }break;
  74.                 case 4:for(j=0;j<8;j++)
  75.                 {
  76.                         led00[j]=table4[j];led01[j]=table4[j];led02[j]=table4[j];
  77.                         led10[j]=table4[j];led11[j]=table4[j];led12[j]=table4[j];
  78.                         led20[j]=table4[j];led21[j]=table4[j];led22[j]=table4[j];
  79.                         P3_4=0;P3_5=0;P3_6=1;P3_7=0;
  80.                 }break;
  81.         }
  82. }
  83. //————————————————————————————————————————————————————————————————————————————————————————————————————
  84. void main()
  85. {
  86.         EA=1;EX0=1;IT0=1;EX1=1;IT1=1;        //打开总中断开关,打开外部中断,设置初始状态
  87.         P3_4=0;
  88.         P3_5=0;
  89.         P3_6=0;
  90.         P3_7=0;
  91.         while(1)
  92.         {               
  93.         for(i=0;i<8;i++)
  94.         {
  95.                 P0=led00[i];
  96.                                 P1=led01[i];
  97.                                 P2=led02[i];
  98.                 delay(tt);                       
  99.         for(i=0;i<8;i++)
  100.         {
  101.         }
  102.                 P0=led10[i];
  103.                                 P1=led11[i];
  104.                                 P2=led12[i];
  105.                 delay(tt);
  106.         }
  107.         for(i=0;i<8;i++)
  108.         {
  109.                 P0=led20[i];
  110.                                 P1=led21[i];
  111.                                 P2=led22[i];      
  112.                 delay(tt);
  113.         }
  114.         }
  115. }
复制代码

所有资料51hei提供下载:
51跑马灯.zip (20.32 KB, 下载次数: 21)


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

使用道具 举报

沙发
ID:352518 发表于 2018-6-22 15:32 来自手机 | 只看该作者
谢谢楼主
回复

使用道具 举报

板凳
ID:352518 发表于 2018-6-22 15:34 来自手机 | 只看该作者
谢谢楼主
回复

使用道具 举报

地板
ID:431591 发表于 2019-12-12 09:27 | 只看该作者
很好,很高级,正在学习
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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