单片机的1616点阵的滚动显示 精品Word下载.docx
- 文档编号:21114016
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:11
- 大小:333.10KB
单片机的1616点阵的滚动显示 精品Word下载.docx
《单片机的1616点阵的滚动显示 精品Word下载.docx》由会员分享,可在线阅读,更多相关《单片机的1616点阵的滚动显示 精品Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
单片机具有这样一些突出优点:
体积小、质量轻、耗电量小、电源比较单一、功能性强、价格低、运行速度比较快、抗干扰的能力较强、利用率高等优点。
因而在通信、家电、工业中等特别是汽车等产品的应用当中都能够处处看到单片机的应用。
[3]
1.2单片机的应用领域
单片机具有体积小、可靠性高、功能强、灵活方便等优点,故可以广泛应用于国民经济的各个领域,对各行各业的技术改造和产品更新换代起到了推动作用。
从应用规模来分,单片机应用系统常分为简单应用系统、常规应用系统和高级应用系统三类。
简单应用系统是指它在家用电器或仪器仪表中的应用,其特点是没有人机对话功能,程序和运行参数均可固化在ROM中。
常规应用系统用于过程控制,通常配有一个键盘和若干个I/O端口,用以实现对被控制对象进行监视和控制;
高级应用系统是指单片机在分布式计算机系统或计算机网络中的应用;
在这类应用系统中,单片机通常用作下位机,而上位机一般是一台系统或网络工作站机。
为了使读者了解单片机的应用情况,现就单片机在直接数字系统和分布控制系统中的应用问题分别进行简单的介绍。
(1)单片机在直接数字控制系统中的应用
直接数字控制(DirectDigitalControl),简称DDC。
它是单片机在工业控制中应用最普遍的一种方式。
在这种方式中,单片机作为系统的一个组成部分或环节,直接参与控制过程。
一台单片机可以对多个被控参数进行巡回检测,并把检测结果和给定值进行比较,再按事先约定的控制规律进行运算处理,然后通过D/A和反多路开关控制执行机构动作,从而使生产过程始终处于最佳状态。
(2)单片机在分布式控制系统中的应用
分布式控制系统(DistributedControlSystem),简称DCS。
它实际上是一个分级结构的计算机系统,这类系统一般由一台或数台主计算机和若干单片机构成。
单片机在工业控制中直接位于控制第一线,应用面广、应用量大,是工厂自动化的关键部件之一。
[4]
1.3主要工作任务
本文的设计是单片机系统基本模块的一部分,即利用单片机驱动显示屏工作。
其中点阵行扫描由单片机直接驱动,列扫描由单片机驱动的74LS138直接驱动,通过程序写入代码从而实现点阵的显示。
这部分电路在单片机的学习中很重要,我们要知道点阵的显示原理,了解行扫描和列扫描是怎么一回事,以及用什么来驱动行扫描和用什么来驱动列扫描,这里我们使用了74ls138来驱动列扫描,通过这个设计,我们可以更加明白74ls138的使用方法以及它的一些功能特性。
对点阵显示屏及其他的一些显示屏也能有更多的了解。
2硬件设计
2.1单片机系统的基本模块
基本模块的制作是基于单片机的16*16点阵滚动显示的基本思路,也是我们研究的基于单片机的16*16点阵滚动显示的重要依据。
如图1所示基于单片机系统基本模块图。
图1单片机系统基本模块图
其中,单片机最小系统包括复位电路、晶振电路和电源电路。
显示部分即点阵显示电路,驱动部分即74ls138驱动电路,接口扩展在本次设计中暂未使用。
2.216*16点阵滚动显示的硬件设计
2.2.1单个点阵显示基本原理
一般的点阵都是8*8的,即横竖都有8个发光二极管,
如图2所示。
观察二极管正负极,我们可以很容易发现,如果赋予P0=0xff;
P2=0x00;
那么所有的发光二极管将被点亮,从而点阵就可以实现全亮。
类似的,如果需要实现某一列或者某一行全亮,也可以进行类似的赋值。
比如,我们要实现第一列全亮,第一列全亮就要求P20=0;
其他为1,则代码为P0=0xff;
P2=0xfe;
图28*8点阵
但是如果需要让点阵显示一个字符的话,上述赋值则不能达到目的,这里,我们需要先知道扫描的概念。
所谓扫描,就是每隔一个时间段,发送一组代码,当然,这个时间段要足够小。
由于人眼有视觉暂留效应,人的肉眼无法分辨,因此,经过多次扫描,点阵上就能稳定的显示一个字符。
那么程序上如何实现扫描呢?
扫描包括行扫描和列扫描,我们可以任意使用其中一种。
假设我们使用行扫描,就是首先令P07为1,即P00=0x80;
然后观察在这一行上有哪些二极管被点亮,点亮的那一列所对应的端口就为0,不亮的就为1,记下此时P2数值,短暂延时过后,令P06=1,即P00=0x40;
然后观察在这一行上有哪些二极管被点亮,点亮的那一列就为0,不亮的就为1,记下此时P2数值,同理如此重复下去,直到P00=0x01;
那么所有的P0和P2的数值就构成了两个长度为8的数组,我们可以在程序中每个一段时间按顺序发送一组代码,只要时间段足够短,那么我们就可以在点阵上看到稳定的字符了。
以上就是单个点阵显示的基本原理。
2.2.216*16点阵的组成及显示原理
所谓16*16点阵,就是行列各位16个长度的点阵,现实中我们可以通过4个8*8点阵进行拼凑来实现一个16*16的点阵。
如图3所示。
图中的16*16点阵由U6,U7,U8,U9四个单点阵组成,所有的行(X0-X7)都通过排阻接到单片机的P0口上,所有的列(Y00-Y07、Y10-Y17、Y20-Y27、Y30-Y37)接到不同的74ls138(U2,U3,U4,U5)上,U2控制U6,U3控制U7,U4控制U8,U5控制U9。
74ls138直接由单片机的P2口进行驱动,这样就形成了一个完整的电路。
如图4所示。
其显示原理与单个点阵的显示原理类似,但是这里需要先把代码写入U6,然后短暂延时后写入U7,直到U9。
时间段控制合理的话,我们就可以看到显示屏上将显示稳定的字符。
这里涉及到一个滚动显示的问题,所谓滚动显示,即字符是从屏幕右端慢慢往左边移动,好像是一个拉幕的效果,那么滚动显示在程序上如何实现呢?
这里我们就要用到单片机的定时中断,中断一次,字符往左移动一次,如此循环,即实现了字符的滚动显示。
这与上面单个点阵的静态显示是有区别的。
图474ls138驱动电路
关于74LS138的使用,74ls138是3-8线译码器,当E1=1,E2,E3=0时,该译码器被选中,此时如果数据输入端ABC输入000-111八个数据,输出端Y0-Y7将依次输出0。
所以,我们可以依次选中四个译码器,向数据输入端写入数据来直接控制某个点阵的显示。
以上就是16*16点阵的滚动显示原理。
2.2.316*16点阵滚动显示的硬件设计
如图5就是本次设计的全部硬件电路图:
图5本次设计完整电路图
3软件设计
3.116*16点阵滚动显示的软件设计
在设计16*16滚动显示的软件部分时,我们必须要明白其中的原理。
本次设计中我们需要注意以下几个问题:
第一,怎么样让点阵显示我们需要的字符,即我们如何获得字符显示的代码。
第二,如何实现字符的滚动显示。
第三,如何使画面保持稳定。
第一,如何取得代码。
现在针对点阵的取字模软件很多,我们只需要打开软件,写入需要取字模的字,然后注意取字模的顺序,是横向还是纵向就行了。
我们这里采用纵向取模,设置字模为C51格式。
这样当写入的字确定后,我们就可以直接复制字模到程序中来实现相应功能。
如“欢”的字模就为:
{0x04,0x28,0x08,0x24,0x32,0x22,0xC2,0x21,0xC2,0x26,0x34,0x38,0x04,0x04,0x08,0x18,0x30,0xF0,0xC0,0x17,0x60,0x10,0x18,0x10,0x0C,0x14,0x06,0x18,0x04,0x10,0x00,0x00}。
第二,如何实现滚动显示。
为了实现字符的滚动显示,我们加入了定时中断函数,如下:
voidtimer0()interrupt1using3
{
TH0=0xd8;
TL0=0xf0;
//这里实现10ms定时,10ms时间到后就产生中断
if(n<
10)//这里可以控制n的大小来改变字符滚动显示的速度
{n++;
}
else
{
offset+=2;
if(offset>
1100)
offset=0;
n=0;
}
在主函数中,我们通过:
P0=*(p+offset+2*i);
这句话来实现字符的滚动显示,每中断10次后offset加2,即字符整体往左移动2个点,移动时间间隔为10*10ms=100ms,由于人眼的视觉暂留效应,我们看到的字符是在流畅的往左移动。
画面的稳定有两个条件:
一,中断的时间应控制在合理的范围之内,时间小了会看不清画面,时间大了画面不连续。
二,选中各个点阵中间的延时,也应当控制在合理范围之内,延时函数如下:
voiddelay(void)
{int16i;
for(i=0;
i<
50;
i++);
}
这两个条件控制好了,我们就可以看到显示的画面很稳定,很流畅。
4软件仿真结果
4.116*16点阵滚动显示的仿真结果
如图6、7、8、9为本次16*16点阵滚动显示的仿真结果:
图6点阵显示“欢”字图7点阵显示“迎”字
图8点阵显示“您”字图9点阵显示两个字之间
图6:
单片机调用字符代码通过驱动电路显示“欢”字
图7:
单片机调用字符代码通过驱动电路显示“迎”字
图8:
单片机调用字符代码通过驱动电路显示“您”字
图9:
单片机调用字符代码通过驱动电路滚动显示在两个字之间
结 论
本次设计的基于单片机的16*16点阵的滚动显示经测试仿真结果良好,能清楚的看到字符的滚动显示,画面比较稳定,流畅。
有时会出现字符显示不完整的现象,我认为这是程序在时间的控制上做的不够好。
但程序思想还是很正确的,学生可以很容易就读懂程序,电路也很容易就看明白了。
在最后的硬件设计时,我们要认真画原理图和PCB,尤其是在PCB布线时,我们要考虑板子的大小要适宜,太大了会浪费资源,太小了对于元件就不好摆放,还要注意元件的摆放位置要适宜布线,不要造成多处飞线的情况,最后,还要设置线宽,线太细的话容易断。
最后再完成调试检测工作。
通过这次的设计,我明白了点阵的工作原理,对单片机以及其他外部器件有了更深的理解,对市场上的元器件价格有了了解,也对各式各样的点阵广告牌等电子显示屏的工作原理有了更深的认识
同时,在考虑问题方面对于这部分的设计一定要结合所有的部分综合考虑,在我们初始设计的时候就应该有大致的整体框架。
附录相关源程序
#include<
reg52.h>
#defineint8unsignedchar
#defineint16unsignedint
int8n;
int8codetable[][32]={
{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},/*显示一个空屏*/
{0x04,0x28,0x08,0x24,0x32,0x22,0xC2,0x21,0xC2,0x26,0x34,0x38,0x04,0x04,0x08,0x18,0x30,0xF0,0xC0,0x17,0x60,0x10,0x18,0x10,0x0C,0x14,0x06,0x18,0x04,0x10,0x00,0x00},/*"
欢"
*/
{0x02,0x02,0x04,0x82,0xF8,0x73,0x04,0x20,0x02,0x00,0xE2,0x3F,0x42,0x20,0x82,0x40,0x02,0x40,0xFA,0x3F,0x02,0x20,0x42,0x20,0x22,0x20,0xC2,0x3F,0x02,0x00,0x00,0x00},/*"
迎"
{0x00,0x01,0x04,0x02,0x1C,0x0C,0xC0,0x3F,0x1C,0xC0,0x02,0x09,0x02,0x16,0x92,0x60,0x4A,0x20,0x82,0x2F,0x02,0x20,0x0E,0x24,0x00,0x22,0x90,0x31,0x0C,0x20,0x00,0x00},/*"
您"
{0x44,0x10,0x44,0x14,0x88,0x54,0x88,0x54,0xD0,0x5F,0x30,0x50,0x60,0x50,0xFE,0x7F,0x40,0x50,0x20,0x90,0xB0,0x9F,0x98,0x92,0x8C,0x94,0x88,0x34,0x80,0x11,0x00,0x00},/*"
乘"
{0x82,0x00,0x02,0x01,0x22,0x06,0x22,0x38,0x22,0x04,0x22,0x03,0x22,0x00,0xFE,0xFF,0xA2,0x00,0x22,0x01,0x22,0x02,0x22,0x3C,0x22,0x02,0x02,0x01,0x02,0x00,0x00,0x00},/*"
坐"
{0x00,0x00,0x80,0x00,0x04,0x01,0x0E,0x02,0x14,0x0C,0x24,0x70,0xC4,0x21,0x8C,0x00,0x08,0x00,0x08,0x70,0x28,0x08,0x1E,0x06,0x0C,0x03,0x80,0x01,0x00,0x01,0x00,0x00},/*"
公"
{0x40,0x00,0x40,0x08,0x41,0x08,0x42,0x08,0x4C,0x08,0xF8,0x7F,0x50,0x08,0x40,0x08,0x40,0x08,0x60,0x08,0xD0,0x7F,0x4C,0x08,0x47,0x08,0x42,0x08,0x40,0x00,0x00,0x00},/*"
共"
{0x20,0x08,0x20,0x86,0x7F,0x60,0x80,0x0F,0x00,0x04,0x00,0x1A,0x00,0xEA,0x00,0x2A,0x00,0x2A,0x00,0x2A,0x00,0x2A,0xF0,0x2B,0x0C,0x28,0x02,0x20,0x0F,0x00,0x00,0x00},/*"
汽"
{0x20,0x00,0x20,0x20,0x20,0x21,0x20,0x23,0x20,0x25,0x20,0x39,0x20,0xE1,0x20,0x21,0xFF,0x2F,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x00,0x00,0x00},/*"
车"
{0x00,0x00,0x00,0x00,0x00,0x00,0xFA,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"
!
"
};
voiddelay(void);
int16offset;
voidmain(void)
int8i;
int8*p;
n=0;
TMOD=0x01;
TH0=0xc5;
TL0=0x68;
//10ms定时
ET0=1;
EA=1;
TR0=1;
p=&
table[0][0];
while
(1)
{
for(i=0;
8;
i++)//显示左半边屏幕
P0=*(p+offset+2*i);
P2=i|0x08;
//P2.4=0,P2.3=1选中U2,输出扫描码给U6
delay();
P0=*(p+offset+2*i+1);
P2=i|0x10;
//P2.4=1,P2.3=0选中U3,输出扫描码给U7
for(i=8;
16;
i++)//显示右半边屏幕
P2=(i-8)|0x20;
//P2.5=1P2.4=0,P2.3=0选中U4,输出扫描码U8
P2=(i-8)|0x40;
//P2.6=1P2.5=0,P2.4=0选中U5,输出扫描码U9
}}}
int16i;
i++);
10)
{n++;
}
360)
}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机的1616点阵的滚动显示 精品 单片机 1616 点阵 滚动 显示