文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用STM32F103C8T6单片机控制器,使用8*8LED点阵模块、按键模块等。
主要功能:
系统运行后,默认以静态模式显示,此时点阵左右循环切换图像。
当按下K1键,点阵从下往上滚动显示图像;
当再次按下K1键,点阵从上往下滚动显示图像;
当再次按下K1键,点阵从左往右滚动显示图像;
当再次按下K1键,点阵从右往左滚动显示图像;
如此循环。
二、软件设计
/*
作者:嗨小易(QQ:3443792007)
*/
//系统数据显示
void sys_data_show(void)
{
u8 i=0;
u16 time=0;
while(1)
{
//静态显示
if(sys_ctrl.mode==MODE_STATIC_SHOW)
{
for(time=0;time<SPEED_ROLL;time++)
{
for(i=0;i<8;i++)//循环8次扫描8行、列
{
LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
LEDDZ_Row_Write_data(gled_row_lr[i+8]);//传送行选数据
delay_ms(1);//延时一段时间,等待显示稳定
LEDDZ_Row_Write_data(0x00);//消影
}
}
for(time=0;time<SPEED_ROLL;time++)
{
for(i=0;i<8;i++)//循环8次扫描8行、列
{
LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
LEDDZ_Row_Write_data(gled_row_lr[i+7]);//传送行选数据
delay_ms(1);//延时一段时间,等待显示稳定
LEDDZ_Row_Write_data(0x00);//消影
}
}
}
//从下往上滚动显示
else if(sys_ctrl.mode==MODE_DOWN_UP_SHOW)
{
for(time=0;time<SPEED_ROLL;time++)
{
for(i=0;i<8;i++)//点阵扫描
{
LEDDZ_COL_Write_Data(~gled_col_ud[i+sys_ctrl.data_cnt]);//传送列选数据
LEDDZ_Row_Write_data(~gled_row_ud[i]);//传送行选数据
delay_ms(1);//延时一段时间,等待显示稳定
LEDDZ_Row_Write_data(0x00);//消影
}
}
sys_ctrl.data_cnt++;
if(sys_ctrl.data_cnt==16)sys_ctrl.data_cnt=0;
}
//从上往下滚动显示
else if(sys_ctrl.mode==MODE_UP_DOWN_SHOW)
{
for(time=0;time<SPEED_ROLL;time++)
{
for(i=0;i<8;i++)//点阵扫描
{
LEDDZ_COL_Write_Data(~gled_col_ud[i+sys_ctrl.data_cnt]);//传送列选数据
LEDDZ_Row_Write_data(~gled_row_ud[i]);//传送行选数据
delay_ms(1);//延时一段时间,等待显示稳定
LEDDZ_Row_Write_data(0x00);//消影
}
}
sys_ctrl.data_cnt--;
if(sys_ctrl.data_cnt==0)sys_ctrl.data_cnt=16;
}
//从左往右滚动显示
else if(sys_ctrl.mode==MODE_LEFT_RIGHT_SHOW)
{
for(time=0;time<SPEED_ROLL;time++)
{
for(i=0;i<8;i++)//点阵扫描
{
LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
LEDDZ_Row_Write_data(gled_row_lr[i+sys_ctrl.data_cnt]);//传送行选数据
delay_ms(1);//延时一段时间,等待显示稳定
LEDDZ_Row_Write_data(0x00);//消影
}
}
sys_ctrl.data_cnt--;
if(sys_ctrl.data_cnt==0)sys_ctrl.data_cnt=16;
}
//从右往左滚动显示
else if(sys_ctrl.mode==MODE_RIGHT_LEFT_SHOW)
{
for(time=0;time<SPEED_ROLL;time++)
{
for(i=0;i<8;i++)//点阵扫描
{
LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
LEDDZ_Row_Write_data(gled_row_lr[i+sys_ctrl.data_cnt]);//传送行选数据
delay_ms(1);//延时一段时间,等待显示稳定
LEDDZ_Row_Write_data(0x00);//消影
}
}
sys_ctrl.data_cnt++;
if(sys_ctrl.data_cnt==16)sys_ctrl.data_cnt=0;
}
}
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。