標(biāo)題: c51跑馬燈仿真+單片機源代碼 [打印本頁]

作者: 阡陌浮云    時間: 2018-5-24 21:58
標(biāo)題: c51跑馬燈仿真+單片機源代碼
學(xué)校實訓(xùn)做的,共享一下
仿真原理圖如下(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;                        //定義循環(huán)變量
  19. unsigned int tt=200;                      //定義時間指數(shù)
  20. unsigned int  go=0,to=0;                  //定義跳轉(zhuǎn)變量
  21. //***************************************************************************
  22. void delay(unsigned int time)             //延時函數(shù)
  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;        //打開總中斷開關(guān),打開外部中斷,設(shè)置初始狀態(tài)
  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. }
復(fù)制代碼

所有資料51hei提供下載:
51跑馬燈.zip (20.32 KB, 下載次數(shù): 21)



作者: 本來無一物    時間: 2018-6-22 15:32
謝謝樓主
作者: 本來無一物    時間: 2018-6-22 15:34
謝謝樓主
作者: 該賬號已注銷    時間: 2019-12-12 09:27
很好,很高級,正在學(xué)習(xí)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1