找回密码
 立即注册

QQ登录

只需一步,快速开始

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

PIC单片机开发板之流水灯代码

[复制链接]
ID:103513 发表于 2016-1-17 02:22 | 显示全部楼层 |阅读模式
这个是我自己diy的单片机开发板:http://www.51hei.com/bbs/dpj-42590-1.html
  1. /*
  2. 这是自已写的流水灯,速度为500ms
  3. */
  4. #include<pic.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. __CONFIG(0x3B31);
  8. void delay(uint x)
  9. {
  10.      uint a,b;        for(a=x;a>0;a--)
  11.       for(b=110;b>0;b--);
  12. }
  13. void main()
  14. {
  15.      uchar i;             //变量定义最好放在第一行,否则会出错(提示一大堆的错误)
  16.      TRISD=0x00;                        

  17.      TRISC=0x00; PORTC=0x00;  //把数码管屏蔽掉
  18. //------------左移效果,向高位移动------------------------------
  19.      while(1)
  20.      {
  21.           PORTD=0x01;

  22. /*        RD0=1;    //这是静态的,PORTD=0x??是动态的,如果加了蜂鸣器就得用动态的,用静态的蜂鸣器会一直响。

  23.         同样,573锁存器是静态的,而38译码器是动态的,无法做到静态同时选中8个数码管。38译码器每次译一个码,每次只能选中一个数码管,所以无法做到同时选中8个数码管*/
  24.           for(i=8;i>0;i--)

  25.                {
  26.                delay(500);
  27.                PORTD=PORTD<<1;   //左移(向高位移动,显示效果为向右边高位移动),移动形成流水效果
  28.               }
  29. //------------右移效果,向低位移动------------------------
  30. /*
  31. 心得:通过调试窗口,实践得知PORTD=0x80才能形成右移效果。
  32. 犯的错:之前设为0x08则为0000 1000。而0x80则为1000 0000
  33. */
  34.           PORTD=0x80;

  35.           for(i=8;i>0;i--)  //循环8次

  36.                {
  37.                delay(500);
  38.                PORTD=PORTD>>1;   //右移(向低位移动,显示效果为向左边高位移动),移动形成流水效果
  39.               }
  40.           }
  41. }
复制代码




回复

使用道具 举报

ID:468294 发表于 2020-1-4 06:46 | 显示全部楼层
学习了,受益良多,感谢楼主分享,顶一下!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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