工控论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 0|回复: 0

51单片机花样流水灯程序+Proteus仿真

[复制链接]

269

主题

272

帖子

217

积分

初级会员

Rank: 2

工控币
217
发表于 2020-2-1 17:11:36 | 显示全部楼层 |阅读模式
仿真时需要注意:有4个按键控制4种不同样式的流水灯,按下第一个按键后,需等第一的样式结束后,才能进行其他的样式仿真

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
212915ac92xlb1j29jsb66.png
单片机源程序如下:

#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code led1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code led2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar code led3[]={0x55,0xaa,0x00,0xff,0x55,0xaa,0x00,0xff};
uchar code led4[]={0x0f,0xf0,0xaa,0x55,0x0f,0xf0,0xaa,0x55};
uchar key_value,key_value_pre;
//sbit K1=P1^0;
//sbit K2=P1^1;
//sbit K3=P1^2;
//sbit K4=P1^3;
void delayms(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);        
}
uchar keyscan()
{
uchar key;
if(P1!=0xff)
{
delayms(10);
if(P1!=0xff)
        {
        switch(P1)
        {
                case 0xfe:key=1;break;
                case 0xfd:key=2;break;
                case 0xfb:key=3;break;
                case 0xf7:key=4;break;
        }
        while(P1!=0xff); //按键松手检测
}
        return key;//如果有按键按下,返回具体键值
}return key=0;//如果没有按键按下,返回键值为0
}
//利用数组查表的方法实现任意花样灯的点亮控制子程序
void led(uchar *pt,uint time)
{
        uchar i;
        for(i=0;i<8;i++)

剩下程序请下载文件浏览: 花样流水灯.zip  [预览压缩包] (21.58 KB, 售价: 1 工控币)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|工控技术网 |网站地图

GMT+8, 2020-2-25 23:34

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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