700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Proteus仿真】【51单片机】LED点阵广告牌设计

【Proteus仿真】【51单片机】LED点阵广告牌设计

时间:2022-09-16 22:53:34

相关推荐

【Proteus仿真】【51单片机】LED点阵广告牌设计

文章目录

一、功能简介二、软件设计三、实验现象联系作者

一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用16*16LED点阵、按键、74HC595D等。

系统运行后,默认以静态模式显示,此时点阵左右循环切换图像。

当按下K1键,点阵从下往上滚动显示图像;

当再次按下K1键,点阵从上往下滚动显示图像;

当再次按下K1键,点阵从右往左滚动显示图像;

当再次按下K1键,点阵从左往右滚动显示图像;

如此循环。

当按下K2键,点阵滚动速度增加。

二、软件设计

/*作者:嗨小易(QQ:344379)*///LED点阵显示汉字数据--上下滚动//字模提取软件,字体:常规宋体小四,横向取模,字节倒序,保留code u8 gled_col[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 新 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x00,0x10,0x20,0xFE,0x1E,0x00,0x02,0x44,0x02,0x28,0x02,0xFF,0x7E,0x10,0x12,0x10,0x12,0xFE,0x12,0x10,0x12,0x54,0x12,0x92,0x12,0x11,0x11,0x14,0x11,0x88,0x10,/*-- 文字: 年 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x00,0x08,0x00,0xF8,0x3F,0x04,0x01,0x04,0x01,0x02,0x01,0xF8,0x1F,0x08,0x01,0x08,0x01,0x08,0x01,0xFF,0x7F,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,/*-- 文字: 快 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x02,0x08,0x02,0x08,0x02,0xC8,0x1F,0x18,0x12,0x2A,0x12,0x0A,0x12,0x0A,0x12,0xE9,0x7F,0x08,0x02,0x08,0x05,0x08,0x05,0x88,0x08,0x88,0x08,0x48,0x10,0x28,0x60,/*-- 文字: 乐 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x00,0x0F,0xF8,0x00,0x08,0x00,0x88,0x00,0x84,0x00,0x84,0x00,0xFC,0x3F,0x80,0x00,0x90,0x04,0x90,0x08,0x88,0x10,0x84,0x20,0x82,0x20,0xA0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//定时器0中断函数void time0() interrupt 1{static u8 i=0;u8 key=0;TH0=0XDC;//给定时器赋初值,定时10msTL0=0X00;i++;if(i==5)//间隔50mS{i=0;key=key_scan(0);//模式切换if(key==KEY1_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>=5)sys_ctrl.mode=0;}//速度调节else if(key==KEY2_PRESS){sys_ctrl.speed-=5;if(sys_ctrl.speed<5)sys_ctrl.speed=20;}}}//系统功能控制void sys_fun_ctrl(void){u8 i=0;u16 time=0;while(1){//静态显示if(sys_ctrl.mode==MODE_STATIC_SHOW){for(time=0;time<sys_ctrl.speed;time++){for(i=0;i<16;i++){hc595_write_data(gled_row[i],gled_row[i+16],~gled_col_static[i*2],~gled_col_static[i*2+1]);//传送行列选数据delay_10us(10);//延时一段时间,等待显示稳定hc595_write_data(0x00,0x00,0x00,0x00);//消影}}for(time=0;time<sys_ctrl.speed;time++){for(i=0;i<16;i++){hc595_write_data(gled_row[i],gled_row[i+16],~gled_col_static[i*2+32],~gled_col_static[i*2+1+32]);//传送行列选数据delay_10us(10);//延时一段时间,等待显示稳定hc595_write_data(0x00,0x00,0x00,0x00);//消影}}}//从下往上滚动显示else if(sys_ctrl.mode==MODE_DOWN_UP_SHOW){for(time=0;time<sys_ctrl.speed;time++){for(i=0;i<16;i++){hc595_write_data(gled_row[i],gled_row[i+16],~gled_col[i*2+t*2],~gled_col[i*2+1+t*2]);//传送行列选数据delay_10us(10);//延时一段时间,等待显示稳定hc595_write_data(0x00,0x00,0x00,0x00);//消影}}t++;if(t>=16*5)t=0;}//从上往下滚动显示else if(sys_ctrl.mode==MODE_UP_DOWN_SHOW){for(time=0;time<sys_ctrl.speed;time++){for(i=0;i<16;i++){hc595_write_data(gled_row[i],gled_row[i+16],~gled_col[i*2+t*2],~gled_col[i*2+1+t*2]);//传送行列选数据delay_10us(10);//延时一段时间,等待显示稳定hc595_write_data(0x00,0x00,0x00,0x00);//消影}}t--;if(t<=0)t=16*5;}//从右往左滚动显示else if(sys_ctrl.mode==MODE_RIGHT_LEFT_SHOW){for(time=0;time<sys_ctrl.speed;time++){for(i=0;i<16;i++){hc595_write_data(gled_col_right_left[i*2+t*2],gled_col_right_left[i*2+1+t*2],~gled_row[i],~gled_row[i+16]);//传送行列选数据delay_10us(10);//延时一段时间,等待显示稳定hc595_write_data(0x00,0x00,0x00,0x00);//消影}}t++;if(t>=16*5)t=0;}//从左往右滚动显示else if(sys_ctrl.mode==MODE_LEFT_RIGHT_SHOW){for(time=0;time<sys_ctrl.speed;time++){for(i=0;i<16;i++){hc595_write_data(gled_col_right_left[i*2+t*2],gled_col_right_left[i*2+1+t*2],~gled_row[i],~gled_row[i+16]);//传送行列选数据delay_10us(10);//延时一段时间,等待显示稳定hc595_write_data(0x00,0x00,0x00,0x00);//消影}}t--;if(t<=0)t=16*5;}}}//应用控制系统void app_control_sys(void){sys_parm_init();//系统参数初始化time0_init();//初始化定时器0time0_start();//开启定时器0while(1){sys_fun_ctrl();//系统功能控制}}

三、实验现象

演示视频:/444388619

联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。