找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LED彩灯设计proteus仿真及程序

[复制链接]
跳转到指定楼层
楼主
这个是LED彩灯设计,详情见附件

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

单片机源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar a ;
  6. void delayms(uint ms)                                                 //延时
  7. {
  8.         uint i;
  9.         while(ms --)
  10.         {
  11.                 for(i=0;i<120;i++);
  12.         }
  13. }
  14. void LED1(void)                                   //左移花样
  15. {
  16.         uchar i,j;
  17.         j=0x01;
  18.         for(i=0;i<8;i++)
  19.         {
  20.                 P0=~j;
  21.                 delayms(250);
  22.                 j=j<<1;
  23.         }
  24. }               
  25. void LED2(void)                                   //右移花样
  26. {
  27.         uchar i,j;
  28.         j=0x80;
  29.         for(i=0;i<8;i++)
  30.         {
  31.                 P0=~j;
  32.                 delayms(250);
  33.                 j=j>>1;
  34.         }
  35. }        
  36. void LED3(void)                                                //拉幕式与闭幕式花样
  37. {
  38.         uchar i,j,k,LED;                        //拉幕开始参数式设置
  39.         j=0x10;
  40.         k=0x08;
  41.         for(i=0;i<4;i++)
  42.         {
  43.                 LED=j|k;
  44.                 P0=~LED;
  45.                 delayms(250);
  46.                 j=_crol_(j,1);
  47.                 k=_cror_(k,1);                        //循环左移一位
  48.         }
  49.                 LED=0xFF;
  50.                 P0=~LED;
  51.                 delayms(250);
  52.                 j=0x80;
  53.                 k=0x01;                        //闭幕式开始参数设置
  54.                 for(i=0;i<4;i++)
  55.                 {
  56.                 LED=j|k;
  57.                 P0=LED;
  58.                 delayms(250);
  59.                 j=_cror_(j,1)+0x80;
  60.                 k=_crol_(k,1)+0x01;                        //循环左移一位
  61.                 }
  62. }        
  63. void int_1()interrupt 2
  64. {
  65.         delayms(100);
  66.         if(INT1==0);
  67.         {
  68.                 a++;
  69.                 if(a>3);
  70.                 {
  71.                         a=1;
  72.                 }
  73.         }
  74. }
  75. void INT1_init(void)                //初始化
  76. {
  77.          EX1=1;                                          //打开外部中断1
  78.         IT1=1;                                          //下降沿触发中断INT1
  79.         EA=1;                                         //全局中断允许
  80. }
  81. void main(void)
  82. {
  83.         INT1_init();
  84. ……………………

  85. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
我的作品.zip (52.66 KB, 下载次数: 23)


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

使用道具 举报

沙发
ID:1 发表于 2017-5-15 02:56 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:763207 发表于 2020-5-28 10:53 | 只看该作者
非常好 能用到 谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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