找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21671|回复: 13
收起左侧

基于51单片机的流水灯实验(适合新手练习)

  [复制链接]
ID:407257 发表于 2018-10-10 21:30 | 显示全部楼层 |阅读模式
基于51单片机的流水灯实验
K1键流水灯交替闪烁。
K2键流水灯从两边向中间移动闪烁。
K3键流水灯全部闪烁。
K4键流水灯从LED7到LED0流水闪烁。

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

流水灯实验仿真图

流水灯实验仿真图


单片机源程序如下:
  1. #include<reg51.h>
  2. sbit S5=P1^4;
  3. sbit S6=P1^5;
  4. sbit S7=P1^6;
  5. sbit S8=P1^7;
  6. unsigned char keyval;
  7. void key_scan(void);
  8. void forward(void);
  9. void backward(void);
  10. void Alter(void);
  11. void blink(void);
  12. void led_delay(void);
  13. void delay10ms(void);
  14. void main(void)
  15. {
  16.     keyval=0;
  17.         while(1)
  18.         {
  19.            key_scan();
  20.            switch(keyval)
  21.            {
  22.                case 5:Alter();
  23.                           break;
  24.            case 6:forward();
  25.                           break;
  26.                    case 7:blink();
  27.                           break;
  28.            case 8:backward();
  29.                           break;
  30.            }
  31.         }
  32. }
  33. void key_scan(void)
  34. {
  35.     P1=0xff;
  36.         if((P1&0xf0)!=0xf0)
  37.         {
  38.            delay10ms();
  39.            if(S5==0)
  40.            keyval=5;
  41.            if(S6==0)
  42.            keyval=6;
  43.            if(S7==0)
  44.            keyval=7;
  45.            if(S8==0)
  46.            keyval=8;
  47.     }
  48. }
  49. void Alter(void)
  50. {
  51.     P3=0xaa;
  52.         led_delay();
  53.         P3=0x55;
  54.         led_delay();
  55. }

  56. void forward(void)
  57. {
  58.     P3=0x7e;
  59.         led_delay();
  60.         P3=0xbd;
  61.         led_delay();
  62.         P3=0xdb;
  63.         led_delay();
  64.         P3=0xe7;
  65.         led_delay();
  66.         P3=0xe7;
  67.         led_delay();
  68.         P3=0xdb;
  69.         led_delay();
  70.         P3=0xbd;
  71.         led_delay();
  72.         P3=0x7e;
  73.         led_delay();
  74. }

  75. void blink(void)
  76. {
  77.     P3=0xff;
  78.         led_delay();
  79.         P3=0x00;
  80.         led_delay();
  81. }

  82. void backward(void)
  83. {
  84.     P3=0x7f;
  85.         led_delay();
  86.         P3=0xbf;
  87.         led_delay();
  88.         P3=0xdf;
  89.         led_delay();
  90.         P3=0xef;
  91.         led_delay();
  92.         P3=0xf7;
  93.         led_delay();
  94.         P3=0xfb;
  95.         led_delay();
  96.         P3=0xfd;
  97.         led_delay();
  98.         P3=0xfe;
  99.         led_delay();
  100. }

  101. void led_delay(void)
  102. {
  103.     unsigned char i,j;
  104.         for(i=0;i<220;i++)
  105.         for(j=0;j<220;j++);
  106. }
  107.   
  108. void delay10ms(void)
  109. {   
  110.     unsigned char i,j;
  111.         for(i=0;i<100;i++)
  112.         for(j=0;j<100;j++);
  113. }
复制代码

所有资料51hei提供下载:
实验二.zip (84.67 KB, 下载次数: 183)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:563688 发表于 2019-6-16 16:24 | 显示全部楼层
太棒了
回复

使用道具 举报

ID:562520 发表于 2019-6-16 17:08 | 显示全部楼层
很有用感谢
回复

使用道具 举报

ID:654162 发表于 2019-12-2 12:01 | 显示全部楼层
很有用感谢
回复

使用道具 举报

ID:129858 发表于 2019-12-2 17:47 | 显示全部楼层
我是新手决定学习
回复

使用道具 举报

ID:604301 发表于 2020-5-15 12:39 | 显示全部楼层
很有用感谢作者
回复

使用道具 举报

ID:752659 发表于 2020-5-15 16:16 | 显示全部楼层
太棒了,对新手很有用
回复

使用道具 举报

ID:822120 发表于 2020-10-4 17:59 | 显示全部楼层
感谢作者
回复

使用道具 举报

ID:864648 发表于 2020-12-22 09:33 来自手机 | 显示全部楼层
这个可以用来做呼吸灯吗
回复

使用道具 举报

ID:862762 发表于 2020-12-22 15:11 来自手机 | 显示全部楼层
可以用来做呼吸灯吗
回复

使用道具 举报

ID:931365 发表于 2021-6-2 11:23 | 显示全部楼层
感谢作者 太有用了
回复

使用道具 举报

ID:82810 发表于 2021-6-6 20:35 | 显示全部楼层
学学  这玩意琢磨看看 模仿就是学习
回复

使用道具 举报

ID:934069 发表于 2021-6-7 10:58 | 显示全部楼层
这个应该要PROTEUS软件好用点
回复

使用道具 举报

ID:946012 发表于 2021-6-28 14:02 | 显示全部楼层
牛皮,非常有用,就是代码看不懂
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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