找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机LED流水灯Proteus仿真(含c和汇编语言版本)

[复制链接]
跳转到指定楼层
楼主


单片机源程序如下:

  1. /*******************************************************************************
  2. * 实 验 名                 : LED流水灯实验
  3. * 实验说明       : 软件延时实现LED流水灯效果
  4. * 连接方式       : 见仿真图
  5. * 注    意                 :
  6. *******************************************************************************/

  7.         ORG 0000H         ;程序从000H地址开始运行
  8.         AJMP MAIN         ;跳转到 MAIN程序

  9.         ORG 030H          ;MAIN程序从030H开始运行
  10. MAIN:       
  11.     MOV P1,#0FEH
  12.         ACALL DEL           ;调用延时子程序
  13.         MOV P1,#0FCH
  14.         ACALL DEL           ;调用延时子程序
  15.         MOV P1,#0F8H
  16.         ACALL DEL
  17.         MOV P1,#0F0H
  18.         ACALL DEL
  19.         MOV P1,#0E0H
  20.         ACALL DEL
  21.         MOV P1,#0C0H
  22.         ACALL DEL
  23.         MOV P1,#080H
  24.         ACALL DEL
  25.         MOV P1,#000H
  26.         ACALL DEL
  27.         MOV P1,#0FFH
  28.         AJMP MAIN           ;跳转到MAIN程序

  29. ; 延时子程序
  30. DEL:        MOV R5,#02H
  31. DEL1:        MOV R6,#0F0H
  32. DEL2:        MOV R7,#0F0H
  33. DEL3:        DJNZ R7, DEL3
  34.         DJNZ R6, DEL2
  35.         DJNZ R5, DEL1
  36.         RET
  37.         END
复制代码

  1. /*******************************************************************************
  2. * 实 验 名                 : 流水灯实验
  3. * 实验说明     : 软件延时实现LED流水灯效果
  4. * 连接方式     : 见仿真图
  5. * 注    意                 :
  6. *******************************************************************************/

  7. //--包含你要使用的头文件
  8. #include <reg52.h>          //此文件中定义了51的一些特殊功能寄存器
  9. #include <intrins.h>

  10. //--声明全局函数--//
  11. void Delay10ms(unsigned int c);   //延时10ms            

  12. /*******************************************************************************
  13. * 函 数 名       : main
  14. * 函数功能                   : 主函数
  15. * 输    入       : 无
  16. * 输    出       : 无
  17. *******************************************************************************/

  18. main()
  19. {
  20.         unsigned char LED;

  21.         LED = 0xfe;          //0xfe = 1111 1110

  22.         while (1)
  23.         {
  24.      P1 = LED;
  25.                  Delay10ms(25);                //延时250ms
  26.                  LED = LED << 1;  //循环左移1位,点亮下一个LED ,"<<"为左移
  27.                   if (P1 == 0x00)        //当它全亮的时候,重新赋值
  28.                  {
  29.                          LED = 0xfe;            // 0xfe = 1111 1110
  30.                  }
  31.                                      
  32.         }
  33. }

  34. /*******************************************************************************
  35. * 函 数 名       : Delay10ms
  36. * 函数功能                   : 延时函数,延时10ms
  37. * 输    入       : 无
  38. * 输    出       : 无
  39. *******************************************************************************/

  40. void Delay10ms(unsigned int c)   //误差 0us
  41. {
  42.         unsigned char a, b;

  43.         //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
  44.   for (;c>0;c--)
  45.         {
  46.                 for (b=38;b>0;b--)
  47.                 {
  48.                         for (a=130;a>0;a--);
  49.                 }
  50.            
  51.         }      
  52. }




复制代码

所有资料51hei提供下载:
LED流水灯.rar (80.38 KB, 下载次数: 89)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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