stc15f2k60s2学习笔记——数码管显示影响led亮灭

数码管显示影响led亮灭

1.情况描述

笔者在学习单片机编程时,在数码管动态显示的同时控制led,出现了led显示出现不了笔者想要的情况。

  • 数码管动态显示代码如下:
void seg_disp(void)
{
	P2=((P2&0x1f)|0xe0);
	P0=0xff;
	
	P2=((P2&0x1f)|0xc0);
	P0=(1<
  • 笔者想要在按键按下时led0亮灭翻转,led显示代码如下:
P2=((P2&0x1f)|0x80);
P00=!P00;
P2&=0x1f;
  • 实际情况却是,8个led随机亮灭

2.分析原因

  • 数码管显示和led显示端口都是接的P0端口。

  • 数码管是实现的定时扫描,P0端口一般都是数码管段码。

  • 当代码运行的led部分时,此时P0端口预存了数码管段码,并非笔者希望的全灭状态。

  • 综合上述三点,可以得到led随机亮灭的原因。

3.总结

  • 大家在同时控制数码管和LED时,一定要注意这一点,以免出现出乎预期的现象。
  • 对于如何很好地控制数码管和led同时显示,目前笔者还未想出比较好的解决方法。如果大家有比较好的想法和解决方法,欢迎在评论区分享!!!

你可能感兴趣的:(stc15f2k60s2学习笔记——数码管显示影响led亮灭)