栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

单片机课设-LED点阵广告牌设计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单片机课设-LED点阵广告牌设计

单片机课设系列文章-2-LED点阵广告牌设计

文章目录
  一、设计题目、内容及要求
 二、所用软件以及版本
 ❤️三、硬件设计
   ① 16*16点阵屏
   ② 38译码器的使用
 四、仿真以及代码
 点击链接进入资源下载

 一、设计题目、内容及要求

题目:基于单片机的LED点阵广告牌设计
 内容:
  1、能显示不同字符、图形的LED点阵广告牌;
  2、用独立按键控制不同字符的切换效果(如闪烁、静止、平移);
  3、可通过串口从电脑下载更新需要显示的字符;
  4、其他创新功能。
 要求:
  1、根据设计内容,设计系统硬件结构,画出系统流程图。
  2、应用Keil、Proteus软件开发应用系统并仿真调试。

 二、所用软件以及版本

由于各个同学安装的软件版本不同,因此我做了一个新版和一个旧版的课设,都能找到自己对应得版本;
 新版:Proteus 8.9 Keil 5
 旧版:Proteus 7 Keil 4
提醒:Proteus 8.9能打开旧版Proteus 8的工程,但是不能打开Proteus 7的工程;Keil 4和Keil 5版本不互通

❤️ 三、主要硬件设计

① 16*16点阵屏

  所谓16×16点阵,就是行列各有16个LED的点阵;我们可以通过4个8×8点阵进行拼凑来实现一个16×16的点阵。
  如图所示,由U6,U7,U8,U9四个8×8点阵组成16×16点阵;
  所有的行(X0-X7)都通过排阻接到单片机的P0口上,所有的列(Y00-Y07、Y10-Y17、Y20-Y27、Y30-Y37)接到不同的74ls138(U2,U3)上,U2控制U6、U8,U3控制U7、U9,74ls138直接由单片机的P2口进行驱动,这样就形成了一个较为完整的电路。
  其显示原理与单个点阵的显示原理相似,但是这里需要先把代码写入左上角点阵,然后短暂延时后写入右上角点阵,直到都写入。
  时间段控制合理的话,我们就可以看到显示屏上将显示稳定的字符。这里涉及到一个滚动显示的问题,所谓滚动显示,即字符是从屏幕右端慢慢往左边移动,好像是一个拉幕的效果,那么滚动显示在程序上如何实现呢?这里我们就要用到单片机的定时中断,中断一次,字符往左移动一次,如此循环,即实现了字符的滚动显示。
  这与单个点阵的静态显示是有区别的。

至于关于实现以及16×16更加详细更加完整的介绍,可以去我的这篇文章中看一下:在Proteus中用8×8来实现16×16点阵屏

② 38译码器的使用

  关于74hc138的使用:74hc138是3-8线译码器,当E1=1,E2,E3=0时,该译码器被选中,此时如果数据输入端ABC输入000-111八个数据,输出端Y0-Y7将依次输出0-8。
  由于51型单片机端口较少,采用这种方式能够既能够很好的节约端口也能做到较为得当的控制16×16点阵屏列的显示;
  所以,我们可以依次选中两个译码器,向数据输入端写入数据来直接控制点阵某列可显示。

四、完整仿真以及部分代码

void delay(uint z)	   //延时子函数
{
   uchar x;
   for(;z>0;z--)
   for(x=110;x>0;x--);
}

void xianshi()			//显示
{ 
	uchar aa,i;
	for(i=0;i<16;i++)
	{
		P1=i; //列扫描
		data1=tab[net+aa]; //取出上8行数据输出
		aa++;
		data2=tab[net+aa]; //取出下8行数据输出
		aa++;
		delay(5);	//延时
		data1=0;  //清屏
		data2=0;  //清屏
		P1=0x00;  //消除余辉
		if(aa>30) aa=0;  //字模地址
	}	
	
}

void main()	 //主函数
{
   ET1=1;	 //使能定时器1
   EA=1;	 //开启总中断
   TR1=1;	//开始计数
   while(1)	 //无限循环
   {
	   xianshi();  //显示
	   if(s1==0)   //检测按键
	   {
	      delay(30);  //延时消抖
		  TR1=~TR1;	  //按下暂停  ,暂按继续
		  while(!s1)xianshi();
		  delay(30);
	   }
	   if(s2==0)	//检测按键
	   {
	       delay(30);			//延时消抖
		   fangxiang=~fangxiang;  //方向取反
		   while(!s2)xianshi();
		   delay(30);
	   }
	 }
}
 

点击下面链接进入资源下载
点阵广告牌设计仿真及源码0.9元下载


能力有限,有错误欢迎指出

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号