增加了数码管和led切换引脚
即
sbit sbtLedSel = P2 ^ 3; //数码管与LED灯切换引脚
sbtLedSel=0,数码管亮
sbtLedSel=1 LED亮
怎么做到同时亮呢?
利用人眼捕捉不到频率太快的属性+延迟
数码管亮:
for( i = 0; i < 8; i++ )
{
P0 = 0;
P2 = arrDigitSelect[i]; //Ñ¡ÔñÊýÂë¹ÜµÄλÊý
P0 = arrSeg7Select[i]; //ÏÔʾ¶ÔÓ¦µÄÊýÖµ
delay_ms( 2 );
}
LED亮:
uiLedCnt++;
sbtLedSel = 1; //led亮
P0 = uiLed; //LED显示
delay_ms( 1 ); //延时1ms
if( uiLedCnt == 20 ) //为了让led的频率低
{
if( uiLed == 0x80 ) //同之前制作流水灯,到最后一个灯时循环
uiLed = 0x01;
else
uiLed = uiLed << 1; //开始左移
uiLedCnt = 0;//重新计数,令频率保持
}
总代码:
/**********************
************************/
#include <STC15F2K60S2.h>
#define uint unsign

该代码示例展示了如何在STM32微控制器上使用数码管和LED灯交替显示。通过定义切换引脚`sbtLedSel`,实现了数码管和LED的快速切换,利用人眼无法捕捉到的高速切换来达到同时显示的效果。数码管显示部分通过遍历数组选择对应的段码和位码,而LED显示部分则通过位移操作产生流水灯效果。代码中包含了初始化、延迟和主循环等关键功能。
最低0.47元/天 解锁文章
5018

被折叠的 条评论
为什么被折叠?



