找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机流水灯Proteus仿真(带逻辑分析仪)

[复制链接]
跳转到指定楼层
楼主
给51黑电子论坛的朋友们分享一个带逻辑分析仪的单片机流水灯的proteus仿真.



流水灯仿真的所有资料下载: 流水灯仿真(Proteus KEIL含逻辑分析仪).rar (100.37 KB, 下载次数: 51)

单片机源程序:

  1. //采用移位字符<<实现,且赋值后做加1调整处理
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar a,arrow;
  6. void DeLay (uint);


  7. void main ()
  8.         {
  9.                 arrow=0xfe;
  10.                 a=0;
  11.                 while (1)
  12.                 {
  13.                         P1=arrow;
  14.                         arrow=arrow<<1;
  15.                         arrow++;

  16.                         DeLay (200);
  17.                         a++;                 //写成a=a++,其实a不自加
  18.                         if(a==8)
  19.                                 {
  20.                                          a=-1;
  21.                                         arrow=0xfe;

  22.                                 }


  23.                 }
  24.         }

  25. void        DeLay( uint xms)

  26.         {        uint i,j;

  27.                  for (i=xms;i>0;i--)
  28.                          for (j=110;j>0;j--);        
  29.         }








  30. /*
  31. #include <reg52.h>
  32. #include <intrins.h>
  33. #define uint unsigned int

  34. uint a,arrow;

  35. void DeLay (uint);
  36. void main ()
  37.         {
  38.                 a=0;
  39.                 arrow=0xfe;

  40.                 while (1)
  41.                 {
  42.                         P1=arrow;
  43.                         DeLay (200);
  44.                         arrow=_crol_(arrow,1);



  45.                         if(a==7)
  46.                                 {
  47.                                          a=-1;
  48.                                 }
  49.                         a++;                 //写成a=a++,其实a不自加

  50.                 }
  51.         }


  52. void        DeLay( uint xms)

  53.         {        uint i,j;

  54.                  for (i=xms;i>0;i--)
  55.                          for (j=110;j>0;j--);        
  56.         }
  57. */

  58. /*
  59. //流水灯,去掉数组语句实现对各个P1端口赋值,
  60. #include <reg52.h>
  61. #define uint unsigned int

  62. sbit led1=P1^0;
  63. sbit led2=P1^1;  
  64. sbit led3=P1^2;
  65. sbit led4=P1^3;
  66. sbit led5=P1^4;
  67. sbit led6=P1^5;
  68. sbit led7=P1^6;
  69. sbit led8=P1^7;
  70. //P1=0x00;
  71. signed char a=0;
  72. //unsigned char P1array[8]; //定义一维数组

  73. void DeLay (uint);
  74. void P1Value(void);        //P1各端口赋值函数

  75. void main ()
  76.         {
  77. //led1=0;
  78. //        P1=0x00;
  79. //        unsigned char a=0;
  80.                 while (1)
  81.                 {
  82.                         P1Value();
  83.                         DeLay(200);
  84.                         P1Value();
  85.                         DeLay(1000);
  86. //                        P1array[a];


  87.                         if(a==7)
  88.                                 {
  89.                                          a=-1;
  90.                                 }
  91.                         a++;                 //写成a=a++,其实a不自加

  92.                 }
  93.         }


  94. void        DeLay( uint xms)

  95.         {        uint i,j;

  96.                  for (i=xms;i>0;i--)
  97.                          for (j=110;j>0;j--);        
  98.         }


  99. void P1Value(void)
  100.         {
  101.                 switch(a)
  102.                         {
  103.                                 case 0        :        led1=!led1; break;
  104.                                 //写成case 0        :        P1^0=P1array[a]; break;语句语法提示错误
  105.                                 //break;语句必不可少
  106.                                 case 1        :        led2=!led2; break;
  107.                                 case 2        :        led3=!led3; break;
  108.                                 case 3        :        led4=!led4; break;
  109.                                 case 4        :        led5=!led5; break;
  110.                                 case 5        :        led6=!led6; break;
  111.                                 case 6        :        led7=!led7; break;
  112.                                 case 7        :        led8=!led8; break;
  113.                                 default  :  break;
  114.                         }
  115.         }

  116. */

  117. /*
  118. #include <reg52.h>
  119. #define uint unsigned int

  120. sbit led1=P1^0;
  121.   
  122. void DeLay (uint);

  123. void main ()
  124.         {

  125.         //        P1=0xaa;
  126.                 while (1)
  127.                 {
  128.                         led1=0;
  129.                         DeLay(200);
  130.                         led1=1;
  131.                         DeLay(1000);

  132.                 }
  133.         }


  134. void        DeLay( uint xms)

  135.         {        uint i,j;

  136.                  for (i=xms;i>0;i--)
  137.                          for (j=110;j>0;j--);

  138.        
  139.         }

  140. */



  141. /*
  142. //流水灯,由数组语句实现对各个P1端口赋值
  143. #include <reg52.h>
  144. #define uint unsigned int

  145. sbit led1=P1^0;
  146. sbit led2=P1^1;  
  147. sbit led3=P1^2;
  148. sbit led4=P1^3;
  149. sbit led5=P1^4;
  150. sbit led6=P1^5;
  151. sbit led7=P1^6;
  152. sbit led8=P1^7;
  153. //P1=0x00;
  154. unsigned char a=0;
  155. unsigned char P1array[8]; //定义一维数组

  156. void DeLay (uint);
  157. void P1Value(void);        //P1各端口赋值函数

  158. void main ()
  159.         {
  160. //led1=0;
  161. //        P1=0x00;
  162. //        unsigned char a=0;
  163.                 while (1)
  164.                 {
  165.                         P1array[a]=0;
  166.                         P1Value();
  167.                         DeLay(200);
  168.                         P1array[a]=1;
  169.                         P1Value();
  170.                         DeLay(1000);
  171.                         a++;                 //写成a=a++,其实a不自加
  172. //                        P1array[a];


  173.                         if(a==7)
  174.                                 {
  175.                                          a=0;
  176.                                 }

  177.                 }
  178.         }


  179. void        DeLay( uint xms)

  180.         {        uint i,j;

  181.                  for (i=xms;i>0;i--)
  182.                          for (j=110;j>0;j--);        
  183.         }


  184. void P1Value(void)
  185.         {
  186.                 switch(a)
  187.                         {
  188.                                 case 0        :        led1=P1array[a]; break;
  189.                                 //写成case 0        :        P1^0=P1array[a]; break;语句语法提示错误
  190.                                 //break;语句必不可少
  191.                                 case 1        :        led2=P1array[a]; break;
  192.                                 case 2        :        led3=P1array[a]; break;
  193.                                 case 3        :        led4=P1array[a]; break;
  194.                                 case 4        :        led5=P1array[a]; break;
  195.                                 case 5        :        led6=P1array[a]; break;
  196.                                 case 6        :        led7=P1array[a]; break;
  197.                                 case 7        :        led8=P1array[a]; break;
  198.                                 default  :  break;
  199.                         }
  200.         }
  201. */
复制代码



评分

参与人数 1黑币 +3 收起 理由
784721214 + 3

查看全部评分

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

使用道具 举报

沙发
ID:69481 发表于 2016-11-21 13:23 | 只看该作者
不错!顶一个
回复

使用道具 举报

板凳
ID:748788 发表于 2020-10-20 07:58 | 只看该作者
逻辑分析仪怎么设置呢?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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