找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机实现仿真从左到右再从右到左的流水灯源程序

[复制链接]
ID:415088 发表于 2019-11-8 15:03 | 显示全部楼层 |阅读模式
这是自己做的文档中一个题目,运用自己学习的定时器加中断你来写一个流水灯,主要是用来检测自己对定时器的掌握。亮灯的代码没有封装函数,如有需要可以自己封装

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. #include<reg51.h>

  2. /*
  3. sbit LED  = P1^0;
  4. sbit LED1 = P1^1;
  5. sbit LED2 = P1^2;
  6. sbit LED3 = P1^3;
  7. sbit LED4 = P1^4;
  8. sbit LED5 = P1^5;
  9. sbit LED6 = P1^6;
  10. sbit LED7 = P1^7;
  11. */



  12. unsigned char cnt = 0;

  13. void main(void)                          
  14. {
  15.         unsigned char i = 0;
  16.         unsigned char num = 1;
  17.        
  18.         EA = 1;
  19.         TMOD = 0x01;
  20.         TH0 = 0xFC;//1ms定时器 0xFC67
  21.         TL0 = 0x67;
  22.         TR0 = 1;
  23.         ET0 = 1;

  24.         while(1)
  25.         {       
  26.                 switch(num)
  27.                 {
  28.                         case 1:
  29.                                 if(cnt >= 100)
  30.                                 {
  31.                                         cnt  = 0;
  32.                                         P1 = ~(0x01 << i);
  33.                                         i++;
  34.                                         if(i >= 8)
  35.                                         {       
  36.                                                 i = 0;
  37.                                                 num = 0;
  38.                                         }
  39.                                 }       
  40.                                 break;
  41.                        
  42.                         case 0:
  43.                                 if(cnt >= 100)
  44.                                 {
  45.                                         cnt  = 0;
  46.                                         P1 = ~(0x80 >> i);
  47.                                         i++;
  48.                                         if(i >= 8)
  49.                                         {       
  50.                                                 i = 0;
  51.                                                 num = 1;
  52.                                         }
  53.                                 }
  54.                                 break;
  55.                        
  56.                         default:
  57.                                 break;
  58.                 }
  59.         }
  60.        
  61.         //return 0;
  62. }

  63. void InterruptTimer0() interrupt 1
  64. {
  65.                 ET0 = 0;
  66.                 TH0 = 0xFC;//1S定时器 0xFC67
  67.                 TL0 = 0x67;

  68.                 cnt++;
  69.                 ET0 = 1;
  70. }
复制代码

所有资料51hei提供下载:
LED-CESHI.rar (80.16 KB, 下载次数: 11)
回复

使用道具 举报

ID:639666 发表于 2019-11-11 14:30 | 显示全部楼层
我需要这个程序。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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