×
嵌入式 > 技术百科 > 详情

STM8 IO输出之LED显示程序

发布时间:2024-05-04 发布时间:
|

系统功能


使用STM8控制8位LED,演示STM8单片机流水灯。


硬件设计


关于STM8的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是STM8的I/O引脚配置表:


STM8 I/O 口引脚配置表


Px_DDR Px_CR1 Px_CR2 I/O 方式 引脚状态说明

0 0 0 输入 悬浮输入

0 0 1 输入 上拉输入

0 1 0 输入 中断悬浮输入

0 1 1 输入 中断上拉输入

1 0 0 输出 开漏输出

1 1 0 输出 推挽输出

1 X 1 输出 输出(最快速度为10MHZ)


虽然STM8的I/O口单独输出“1”时,可输出较大电流足已点亮一盏灯,但STM8总的I/O输出毕竟是有限的,所以,有经验的点灯者考虑到除了点灯外可能还有其它费劲的活儿要干,会将STM8的I/O口设计为输出“0”时点灯,输出“1”时熄灯。这种接法亦叫“灌电流接法”。

LED控制电路原理图

软件设计

/*********************************************************************

目标系统: 基于STM8单片机

应用软件: Cosmic CxSTM8

*********************************************************************/

#include

#include


#define LED_DDR PB_DDR

#define LED_PORT PB_ODR

#define LED_CR1 PB_CR1

#define LED_CR2 PB_CR2


void main(void)

{

u8 i,j;

LED_DDR=0XFF;

LED_CR1=0XFF;

LED_CR2=0X00;

while(1)

{

for(i=0;i<4;i++)

{

LED_PORT^=0xFF; //我闪!拚命闪!

delay50ms(10);

}

j=0x01;

for(i=0;i<8;i++)

{

j<<=1;

LED_PORT=j; //我左闪!

delay50ms(10);

}

j=0x80;

for(i=0;i<8;i++)

{

j>>=1;

LED_PORT=j; //我右闪!

delay50ms(10);

}

}

}


系统调试

本节的目的在于学习STM8的IO输出功能,对于STM8来说,它和传统的单片机不同,他是GPIO,需要设置IO引脚方向,跟输出模式


作如下调试:

(1)改变IO方向,即将“LED_DDR=0XFF;”改为“0X00”,观察现象。

(2)将语句:delay50ms(10);改为语句:delay50ms(1);可以看到LED闪的更快!



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
激光跟踪仪市场2023年有望达5.216亿美元