51单片机求数组最大值并花样流水及16个LED

回复https://bbs.csdn.net/topics/394580568

#include "reg51.h"
#include<intrins.h>	
//#include "math.h"

sbit duan = P2^6;//数码段
sbit wei = P2^7;//数码位
sbit NanBeiHong = P2^0;
sbit NanBeiHuan = P2^1;

bit k=0, d=0;//中断标记//红绿灯倒换标记
unsigned char code ShuMaGuan[/*数码段*/]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0X80};//0~9隐.小数点共阴,(FFFF)65535-或取反(~)即是共阳.
unsigned char code WeiXuanBiao[/*数码位*/] = { 0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };
//unsigned char code ShaoMiaoZhi[/*扫描值*/]={238,237,235,231,222,221,219,215,190,189,187,183,126,125,123,119};
unsigned char HuaDeng[/*流水灯 ,先一个个亮,再两个的亮,再三个亮,最后8个一起亮。后从第八个开始灭,依次全灭。*/]
	={255,254,253,251,247,239,223,191,127,252,249,243,231,207,159,63,248,241,227,199,143,31,240,225,195,135,15,224,193,131,7,192,129,3,128,1,0};
unsigned char YanS=0;//主循环延时专用
void ShuMaXianShi(unsigned char s,unsigned char w,unsigned char d)
{
	P0=WeiXuanBiao[w];
	wei=1;
	wei=0;
	P0=ShuMaGuan[s]|ShuMaGuan[d];//d显示小数点11,10关闭
	duan=1;
	while(++YanS);
	if(!YanS);
	{
		P0=ShuMaGuan[10];
		duan=0;
	}
}
void ZhengShuXianShi(unsigned char wei,unsigned long i/*整数拆分到数码管显示*/)
{
	do
	{
		ShuMaXianShi(i % 10,wei--,10);
		//wei>0;
	}while(i/=10);
}
char ZuiDaZhi(unsigned char i[],unsigned char x)
{
	unsigned char Lin=0;
	do
	{
		if(i[x]>Lin)Lin=i[x];
	}
	while(x--);
	return Lin;
}
void LedXunHuan(unsigned char s)
{
    unsigned char i = 0, t = 0, Cnt = 0;
    while(1)
    {
        if(!i) P1 = 0xff;
        else if(i==9)P1 = 254;
        else if(i>8) P1 = _crol_(P1,1);
        else P1<<=1;//逐个递亮,_crol_(P1,1);单个亮,点亮16个的把其中一个P1改为P2即可.
        Cnt=1;
        while(Cnt) if(!++t) --Cnt; else ZhengShuXianShi(8,s);
        if(++i>16)i=0;//if(++i>8)i=0;if(i++>=8)i=0;if(++i>=9)i=0;等价3式
    }
}
void main()
{
	
	unsigned char aa[]={93,9,40,1,8},d = ZuiDaZhi(aa, sizeof(aa) / sizeof(aa[0])-1);
	LedXunHuan(d);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值