基于AT89C52的8X8点阵显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
第1节引言 (1)
1.1 单片机驱动点阵显示 (1)
1.1.1 8X8点阵 (1)
1.1.2功能控制 (2)
1.2 设计任务和主要内容 (2)
第2节系统主要硬件电路设计 (2)
2.1 单片机控制系统原理 (2)
2.1.1 芯片选用 (2)
2.1.2 8X8点阵滚动显示的组成框图 (3)
2.1.3 8X8点阵的proteus 总体仿真图 (3)
2.2单片机主机系统电路 (4)
2.2.1 时钟频率 (4)
2.2.2 晶振电路 (4)
2.2.3复位电路 (5)
2.2.4点阵显示电路 (5)
2.2.5功能控制电路 (6)
第3节系统的软件设计 (7)
3.1主程序 (7)
3.1.1主程序的流程图 (7)
3.1.2 主程序 (7)
3.2延时子程序 (8)
3.3 中断服务子程序 (8)
3.4 字符模值 (9)
结束语 (9)
基于AT89C52单片机的8X8点阵显示
第1节引言
LED显示屏(LED Screen)又叫电子显示屏或飘字屏幕,是由LED点阵和LEDpc面板组成,通过红色,蓝色,绿色,白色LED灯的亮灭来显示文字、图片、动画及视频等内容。

可以根据不同的场合做出不同的调节,一般的广告牌的流动字画就是通过flash制作一个动画,储存在显示屏的一张内存卡内,再通过技术手法显示出来,可以根据不同的需要随时更换,各部分组件都是模块化结构的显示器件。

LED显示屏具有亮度高、工作电压低、功耗小、大型化、寿命长、耐冲击和性能稳定等优点。

大型LED显示屏都是由模块化的点阵构成的,因此为了更好的理解LED的工作原理,有必要从最基础的点阵模块来学习。

本次课程设计中使用的是基础的8X8点阵模块,利用该点阵实现汉字和字符的滚动显示。

1.1单片机驱动点阵显示
由于单片机的强大功能,除了在测试控制领域中有着广泛的应用外,还有一些非常有趣的应用。

利用单片机可以制作很多实用的小东西,比如驱动点阵显示不同的汉字和字符。

单片机通过控制输入/输出(I/O)端口的高低电平来控制点阵中LED灯的亮灭,一次来显示内容。

1.1.18X8点阵
8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,对应的某一行置高电平,某一列置低电平,则相应的二极管就被点亮。

点阵的接法有共阴和共阳两种(共阳指的是对每一行来讲是共阳的,即公共端接电源)。

点阵显示的方法有两种:
1.逐列扫描方式。

位码决定哪一列能亮(相当于位码),hangman决定列上那
些LED灯亮(相当于段码),能亮的列从左到右(或者从右到左)扫描完8列(相当于位码循环移位8次)即显示出完整的内容。

2.逐行扫描方式,与逐列扫描调换,扫描完8行显示出完整的内容。

当点阵的扫描速度加快,利用人的视觉停留原理,看到的就是完整的字或图像了。

8X8
图中的数字代表行号和列号
8X8点阵内部电路图如图:
图 1-2
1.1.2功能控制
为了实现8X8点阵以不同的方式显示字符或汉字,引入了按键控制电路。

通过单片机的外部中断源实现对点阵显示方式的控制。

1.2 设计任务和主要内容
本次课程设计主要研究基于AT89C52单片机的8X8点阵的滚动显示的设计。

具体要实现以下功能:
①点阵翻页显示
②点阵向上滚动显示
③点阵向下滚动显示
④按键选择点阵的显示方式
第2节系统主要硬件电路设计
2.1 单片机控制系统原理
2.1.1 芯片选用
本次课程设计所采用的是Atmel公司的AT89C52单片机。

AT89C52是Atmel 公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复擦写的程序存储器和256B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机在电子行业中有着广泛的应用。

AT89C52单片机属于AT89C51单片机的增强型。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方式进行编程,也可以在线编程。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

AT89C5的PDIP
封装引脚分布如下图:
图 2-1
2.1.28X8点阵滚动显示的组成框图
图 2-2
2.1.38X8点阵的proteus 总体仿真图
点阵的总体仿真图如图2-3所示。

图中包括晶振电路、复位电路、显示电路和功能控制电路几部分。

电路图在绘制中采用的是终端模式,标号相同的引脚是连接在一起的。

这样使得整个电路图看起来比较清楚,不凌乱。

图 2-3
2.2单片机主机系统电路 2.2.1 时钟频率
单片机必须在时钟的驱动下才能正常工作。

在单片机内部自带的有一个时钟
振荡电路,因此只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

外部振荡源一般选用石英晶体振荡器。

此电路在加电后,大约延迟10ms 后振荡器起振,在XTAL2引脚产生幅度为3V 左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。

电路中的两个电容C1,C2作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。

C1,C2的典型值为30PF 。

单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。

它的大小是时钟信号频率的倒数,常用osc f 表示。

例如时钟频率为12MHZ ,即osc
f =12MHZ ,则时钟周期为µs 112。

2.2.2 晶振电路
AT89C52单片机的晶振电路根据硬件电路的不同,连接方式分为内部时钟方
式和外部时钟方式。

本设计中采用的是内部时钟方式。

单片机内部有一个反相放大器,XTAL1和XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各个元件。

时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。

一般来说单片机内部有一个带反馈的线性反相放大器,外接晶振和电容就可以组成振荡器,如图2-4所示。

加电以后延时10ms 左右振荡器产生时钟,不受软件控制。

X1为石英晶体振荡器,振荡产生的时钟主要由它来确定。

设计只能够采用的是延时重复扫描法。

延时重复扫描法的原理为:因为毛刺脉冲一般持续的时间很短,约为几毫秒,而按键的时间一般远远大于这个时间,因此单片机检测到有按键动作后,在延时一段时间再次判断此电平是否保持原状态,如果是则为有效按键,否则无效。

图 2-8“毛刺”现象
功能控制电路的实质是通过按键来产生中断信号,以此使单片机控制点阵以不同的形式来显示内容。

本次设计中使用的是优先级最高的外部中断0(INT0)。

外部中断源INT0接外部引脚P3.2,触发方式有电平触发和边沿触发,通过对特殊功能寄存器TCON编程来选择。

TCON各位的含义如图2-9所示。

D7 D6 D5 D4 D3 D2 D1 D0
图 2-9 TCON 功能表
本次设计中采用的是边沿触发方式(IT0=1)。

边沿触发方式中,要求P3.2引脚的高电平、低电平至少保持一个机器周期。

第一个机器周期采样到P3.2引脚为高电平,第二个机器周期采样到低电平,IE置高电平,向CPU请求中断。

CPU 响应中断后,能自动将IE0置为低电平。

TF1
T1中
断标

TR1 TF0
T0中
断标

TR0 IE1
INT1中
断标志
IT1
INT1触
发方式
IE0
INT0中
断标志
IT0
INT0
触发
方式
AT89C52对中断源的开放或关闭由中断允许控制寄存器IE控制。

本次设计中IE=0X82,EX0=1,IT0=1。

第3节系统的软件设计
3.1主程序
3.1.1主程序的流程图
主程序的程序流程图如图3-1 所示:
图 3-1
3.1.2 主程序
void main(void){
IE=0X82; //外部中断源初始化
EX0=1;
IT0=1;
while(1){
while(key==0){ //按页刷新显示
for(s=0;s<11;s++)
for(m=0;m<100;m++){//控制显示刷新的速度
P2=0x01;
for(i=0;i<8;i++){
P1=tab0[i+8*s];
delay(100);
P2=P2<<1|P2>>7;
}
}
while(key==1){ //向上滚动显示
for(s=0;s<40;s++) //循环扫描一遍40帧
for(m=0;m<60;m++){ //控制移动的速度
P2=0x01;
for(i=0;i<8;i++){
P1=tab1[i+s];
delay(100);
P2=P2<<1|P2>>7;
}
}
}
while(key==2){ //向下滚动显示
for(m=0;m<8;m++)
for(n=0;n<8;n++)
down[8*m+n]=tab2[7-n+m*8]; //将TAB数组中的数据重新排列//使得下移字母顺序不变
for(s=0;s<60;s++) //循环扫描一遍60帧
for(m=0;m<60;m++){ //控制移动的速度
P2=0x80;
for(i=0;i<8;i++){
P1=down[i+s];
delay(100);
P2=P2>>1|P2<<7;
}
}
}
}
}
3.2延时子程序
void delay(uchar x){
while (x--){}
}
3.3 中断服务子程序
void EX_INT0()interrupt 0{
if(INT0==0){
delay(100);
if(INT0==0){
key++;
if(key==4)
key=0;
}
}
3.4 字符模值
uchar code tab0[ ]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,//清屏
0xFF,0XE3,0XDD,0XDD,0XDD,0XDD,0XE3,0XFF,//0
0XF7,0XF7,0XF7,0XF7,0XF7,0XF7,0XF7,0XF7,//1
0XFF,0XE3,0XDD,0XED,0XF7,0XFB,0XC1,0XFF,//2
0XFF,0XE3,0XDF,0XEF,0XEF,0XDF,0XE3,0XFF,//3
0XEF,0XEF,0XE7,0XEB,0XEB,0XC1,0XEF,0XEF,//4
0XC3,0XFB,0XFB,0XE3,0XDF,0XDD,0XE3,0XFF,//5
0XEF,0XF7,0XFB,0XE3,0XDD,0XDD,0XE3,0XFF,//6
0XFF,0XC3,0XEF,0XEF,0XF7,0XF7,0XF7,0XFF,//7
0XE7,0XDB,0XDB,0XE7,0XDB,0XDB,0XE7,0XFF,//8
0XE7,0XDB,0XDB,0XEB,0XF7,0XF7,0XF7,0XF7,//9
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF/清屏
};
uchar code tab1[ ]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//清屏
0XF7,0XF7,0X87,0XF7,0XF7,0XF7,0XF7,0X00,//上
0X06,0XF9,0X80,0X04,0X03,0XAA,0X05,0X9F,//海
0XF7,0XF7,0X80,0XF7,0XF7,0XEB,0XDD,0XBE,//大
0XBA,0XD5,0X81,0XC0,0XE1,0XF7,0XF3,0XF7,//学 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF//清屏 };
uchar code tab2[ ]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//清屏
0XC1,0XFF,0XFF,0XC1,0XFF,0XFF,0X00,0XFF,//三
0XF7,0XF7,0XF7,0XF7,0XF7,0XEB,0XDD,0XBE,//人
0XFF,0XC1,0XBD,0XBD,0XBD,0XBD,0XBD,0XC1,//D
0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,//O
0xFF,0XBD,0XB9,0XB5,0XAD,0X9D,0XBD,0XFF,//N
0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,//E
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF/清屏
};
结束语
单片机是一门软硬结合,实践性很强的学科,是电子信息类等工科学生必修的一门课程。

软件方面要求学生能够熟练的使用C语言或者汇编语言进行编程;硬件方面要求能根据功能要求选择合适的电子器件绘制出可行的电路原理图。

单片机作为实践性很强的学科,又要求学生能够动手做,从实践中掌握单片机的工作原理,理解内部的工作过程。

而我们缺乏的就是实践,所以对单片机的工作机理知识仅仅停留在理论上,对单片机在实际应用中的工作方式和原理并不是很清楚。

在学习单片机的过程中,课堂上老师讲授的案例以C语言为主,而实验课中
机电工程与自动化学院《单片机原理及应用》期末课程设计—基于AT89C52单片机的8X8点阵显示
实验老师要求以汇编语言进行编程。

汇编语言虽然在《微机原理》中学到过,但并不是很熟悉,而C语言又没有在实验课中进行练习,因此两种语言在单片机中的编程运用的都不是很顺利。

为了克服编程上的困难,我们找了几个实例进行模仿改编,以此来熟悉单片机编程的规则。

为了对单片机的工作方式有更好的认识和理解,我们又把单片机的相关知识进行了梳理,尤其是中断和定时方面的功能。

虽然我们付出了一定的努力来弥补自己在单片机方面的不足,但是在课程设计中还是遇到了不少的问题。

首先就是对单片机的接口理解不是很透彻,不清楚单片机的内部结构,使得在绘制电路原理图时出现问题。

其次,是对单片机的工作方式理解不深。

本次设计中遇到的最大的问题是对单片机的中断和定时功能理解不透彻,不能很好的使用中断和定时功能来丰富单片机的功能,使制作的东西功能更全更丰富。

如果能够很好的利用中断和定时功能,可以在本次设计的基础上,使得程序中的延时更精确,功能更多。

这都是本次设计留下的遗憾。

总之,这次课程设计充满了艰辛和快乐。

我们组的三个人各司其职,又相互交流和讨论,完成了这次设计,基本达到了我们的预期目标。

至于留下的遗憾,相信我们在接下来的时间会继续学习,不断充实自己来解决遗留的问题。

任务分工:
10。

相关文档
最新文档