蓝桥杯一等奖选手代码底层

1.显示界面功能

	switch(mode)
	{
		case 0:
			SMG[0]=10;
			SMG[1]=1;
			SMG[2]=16;
			SMG[3]=16;
			SMG[4]=16;
			SMG[5]=16;
			SMG[6]=(uchar)r_temperature/10%10;
			SMG[7]=(uchar)r_temperature%10;
		break;
		case 1:
			SMG[0]=11;
			SMG[1]=2;
			SMG[2]=16;
			SMG[3]=16;
			SMG[4]=16;
			SMG[5]=distance/100%10;
			SMG[6]=distance/10%10;
			SMG[7]=distance%10;
		break;
		case 2:
			SMG[0]=time_data[0]/10%10;
			SMG[1]=time_data[0]%10;
			SMG[2]=16;
			SMG[3]=time_data[1]/10%10;
			SMG[4]=time_data[1]%10;
			SMG[5]=16;
			SMG[6]=time_data[2]/10%10;
			SMG[7]=time_data[2]%10;
		break;
		case 3:
			SMG[0]=12;
			SMG[1]=16;
			SMG[2]=(uchar)Vol%10;
			SMG[3]=(uint)(Vol*100)/10%10;
			SMG[4]=(uint)(Vol*100)%10;
			SMG[5]=light/100%10;
			SMG[6]=light/10%10;
			SMG[7]=light%10;
		break;
		case 4:
			SMG[0]=13;
			SMG[1]=16;
			SMG[2]=16;
			SMG[3]=Fre/10000%10;
			SMG[4]=Fre/1000%10;
			SMG[5]=Fre/100%10;
			SMG[6]=Fre/10%10;
			SMG[7]=Fre%10;
		break;		

(小编这里直接一点用switch更加简单一点)

界面切换功能如下

按键5按下,mode标志位切换四个界面

	if(Key_down==5)
	{
		if(++mode==5)
			mode=0;
	}

2.超声波测距底层

sbit TX=P1^0;
sbit RX=P1^1;

uchar wave_send()
{
	uchar temp,num=10;
	TX=0;
	CL=0xf3;
	CH=0xff;
	CR=1;
	while(num--)
	{
		while(!CF);
		TX^=1;
		CL=0xf3;
		CH=0xff;
		CF=0;
	}
	CR=0;
	CL=0;
	CH=0;
	CR=1;
	while(RX && !CF);
	CR=0;
	if(CF)
	{
		CF=0;
		temp=0;
	}
	else
	{
		temp=((CH<<8)|CL)*0.017;
	}
	return temp;
}

小编在用这套发现了点问题,就是有时候超声波的会有时候闪烁。小编以为是中断导致的时许问题,于是在开头和最后分别加了个EA=0和EA=1,但是发现还是存在这种问题,不知各位遇到过没有,小编是没有搞定,有没有人可以帮小编解决一下困惑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值