最近的感悟及易错点

本文介绍了嵌入式编程中易错点,如确保温度读取、正确初始化系统和LED控制方法,以及高效切换界面和时间显示的技巧,强调了状态管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.易错点

显示温度之前一定要读取温度,千万不要忘了,我就忘记了....

刚做这个题的时候,我发现切换界面很困难,于是我不断寻找,发现一定要在初始化系统里面加上read_ds18b20,同时要在循环里刷新一遍数码管而不是在扫描按键里,扫描按键只能用来改变状态。

2.控制单个led点亮的方法

如点亮led1

Select_HC573(4);
LED_stat &= ~0x01;//单独让led1点亮
LED_stat |= 0x01;//单独让led1熄灭

我们这里定义了一个LED_stat这个变量,目的是为了保存当前led的状态,防止它被轻易改变

3.关于切换界面的好方法

void change1()
{
	if(stat1 == 2)//ʱ¼ä
	{
		stat1 = 0;
	}
	else if(stat1 == 1)//»ØÏÔ
	{
		stat1++;
	}
	else if(stat1 == 0)//²ÎÊý
	{
		stat1++;
	}
}
void Scan_keys()
{
	R1 = 0; L1= L2 = R2 =1;
	if(L2 == 0)//S4°´¼ü
	{
		Delay(500);
		if(L2 == 0)
		{
			change1();
			while(L2 == 0)
			{
				display_time();
			}
		}
	}
}
void main()
{
	Init_sys();
	Init_DS1302();
	while(1)
	{
		Read_ds1302time();
		Scan_keys();
		if(stat1 == 2)
	  {
		display_bitSMG(0,SMG_NoDot[gettime[2]/16]);
		Delay(200);
		display_bitSMG(1,SMG_NoDot[gettime[2]%16]);
		Delay(200);
		display_bitSMG(2,0xbf);
		Delay(200);
		display_bitSMG(3,SMG_NoDot[gettime[1]/16]);
		Delay(200);
		display_bitSMG(4,SMG_NoDot[gettime[1]%16]);
		Delay(200);
		display_bitSMG(5,0xbf);
		Delay(200);
		display_bitSMG(6,SMG_NoDot[gettime[0]/16]);
		Delay(200);
		display_bitSMG(7,SMG_NoDot[gettime[0]%16]);
		Delay(200);
	  }
	}
}

状态改变要定义一个函数,在主函数里不能耽误读取时间,松手检测时要做出改变状态后发生的事

这里注意可以把读取时间放在扫描按键函数里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值