单片机结课论文

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

8*8点阵显示屏的设计
摘要:本设计是基于P89C51的8×8点阵LED数码字符显示器的设计,LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成。

LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等。

本文讲述了基于P89C51单片机8×8LED 数码字符显示器的基本原理、硬件组成与设计,Proteus软件仿真,程序设计等基本环节与相关技术。

【关键词】51单片机,Proteus软件,显示屏
LED是发光二极管LIGHT EMINTTING DIODE的英文缩写,是一种直接能将电能转化为可见光的半导体。

LED点阵是由发光二极管排列组成的显示器件,在日常生活中随处可见,其发光类型属于冷光源,效率及发热量是普通发光器件难以比拟的。

它采用低电压扫描驱动,具有耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远、可靠耐用、应用灵活、安全、响应时间短、绿色环保、控制灵活等特点。

随着社会经济的不断进步,人们对LED显示器的认识不断加深,其应用领域越来越广。

LED电子显示屏具有所显内容信息量大,外形美观大方,操作使用方便灵活。

适用于火车,汽车站,码头,金融证券市场,文化中心,信息中心体育设施等公共场所。

该项目广泛涉及了计算机及电子技术中的电源技术,单片机技术,数据通讯技术,显示技术,存储技术,系统软件技术,接口及驱动等技术。

本产品采用以P89C51单片机为核心芯片的电路来实现,主要由
P89C51芯片、晶振电路、三极管驱动电路、按键控制电路、8×8LED 点阵5部分组成,电路框图如图1所示。

其中,P89C51是一种带4kB 闪烁可编程可擦除只读存储器的低电压、高性能CMOS型8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,工业标准的MCS一51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1000次写/擦循环,数据保留时间为10年。

他是一种高效微控制器,为很多嵌人式控制系统提供了一种灵活性高且价廉的方案。

因此,在智能化电子设计与制作过程中经常用到P89C51芯片。

时钟电路由P89C51的18,19脚的时钟端(XTAI1及XTAL2)以及12MHz晶振X、电容C2、C3组成,采用片内振荡方式。

复位电路采用简易的上电复位电路,主要由电阻R,R2,电容C,开关K组成,分别接至P89C51的RST 复位输入端。

LED点阵显示屏采用8x8共64个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。

我们把行列总线接在单片机的I/O口,然后把上面分析到的扫描代码送入总线,就可以得到显示的字符了。

我们在实际应用中是将LED点阵的8条列线通过驱动电路接在P1口,8条行线通过限流电阻接在P0口。

单片机89C51按照设定的程序在P1和P0接口输出与内部字符对应的代码电平送至LED点阵的行列线(高电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个字符的显示。

再改变取表地址实现字符的滚动显示。

硬件电路组成框图如图2-1所示。

1.系统各单元的电路设计
1.1P89C51单片机最小系统
最小系统包括晶体振荡电路、复位开关和电源部分。

图2-2为P89C51单片机的最小系统。

1.2按键控制电路
单片机开始工作时,P2.0是高电平。

当按键按下时,检测到一个低电平信号,改变P0口输出信号,控制8×8LED点阵显示屏显示不同字符。

1.3三极管驱动电路
扫描驱动电路的功能主要是有P1口输出高电平使三极管发射结导通,发射结输出足够大的电流使二极管导通。

1.4字符的点阵显示原理及字库代码获取方法
我们以UCDOS中文宋体字库为例,每一个字由8行8列的点阵组成显示。

我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。

事实上这个汉字屏不仅可以显示汉字,也可以显示在64象素范围内的任何图形。

如查用8位的P89C51。

2.程序流程图
开始
主程序流程图
3.程序设计
根据上述所说的程序流程图,设计程序见附录
4.调试及性能分析
系统调试
首先根据各单元电路模块,利用Proteus软件将总的硬件原理图绘制好,设计好各模块要使用的I/O口,如:8×8点阵LED显示屏时候插反,先检测下,无硬件错误后,再进行程序编程。

利用C语言的编程方式,将系统要求的基本功能,以及创新功能根据程序流程图编写出来,用Keil软件调试无误后,生成Hex文件,如图11图12。

双击Proteus中的P89C51芯片,将Keil生成的Hex加载到芯片内,进行仿真,经调试后所编写的程序能够完美实现系统所需的各种功能。

硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。

具体步骤及测试结果如下:(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。

(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。

(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。

(4)将烧录好程序的最小单片机系统接入各模块后,各模块能过正常工作,如:数码管正常发光。

5.设计分析
将烧录好程序的最小单片机系统与各模块连接好后,8×8点阵LED显示屏显示初始值。

按键一次之后,显示屏显示滚动字符μ,再按键一次,显示屏显示汉字“公”。

经软件调试和硬件调试后,所设计的系统完美实现了所需的控制要求和创新要求。

6.总结
本次课程设计到现在有两个星期,回顾这些天我感到学到了很多东西,在写这个心得的时候,我想就这些天的收获,说一说自己内心的想法。

本设计是一个8x8的点阵LED数码显示器,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。

图形或文字显示有静止、移入移出等显示方式。

本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。

总结本文的研究工作,主要做了下面几点工作:
一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED 显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。

并且通过对单片机资料的查阅和应用,更进一步增加了对单片机知识的理解和运用能力。

并证实了自己的思路:“查资料→思考总结→运用→找出差错,再查资料和向别人询问→再次运用”的正确性。

二、本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。

三、本文列出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。

四、在这次课程设计的过程中学会了PROTEUS的基本使用,感到PROTEUS对电子专业的同学来说是一个很有用的软件。

在运用
PROTEUS时可以运用一些快捷的标号,总线的方法画图,这样既能使电路图清晰,简单,更能大大提高画图速度。

五、通过这次课程设计,重新复习并进一步增强了动手的能力,学以致用,把只是运用到实际生活中才是根本目的。

六、存在问题:没有考虑仿真软件是一个理想的仿真环境,而实际连接的电路板会由于譬如连接不当,相邻器件间的干扰等等的问题导致在仿真软件中能良好运行的程序,出现显示问题,经过排查和合理的器件摆放焊接,问题解决。

总体来说这次的科研实践很成功,达到了预想的目的:学到了知识,提高了能力,完成了任务。

有点缺憾是时间有限,不能进一步深入和扩散学习和研究。

希望有时间可以对程序和电路图作更进一步的改进,譬如实现点阵的上下移动,对角线移动,多色显示等。

通过课程考核,多少学习到了一些专业知识,改正了很多不曾发现的问题,为即将的毕业设计打下了基础,很有意义。

附录:
#include<reg52.h>
#define uchar unsigned char#define uint unsigned int uchar i,j,k,sca n, num,count;sbit key=P2^0;
uchar code table1[]=
{0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf};//
μuchar code table2[]=
{0xf7,0xdb,0xad,0xb7,0xbe,0xdd,0xbb,0xf7};//
公uchar code table[][8]=
{{0xff,0xff,0xc3,0xbd,0xbd,0xc3,0xff,0xff},//0
{0xff,0xbf,0xbb,0x81,0x80,0xbf,0xbf,0xff},//1
{0xff,0xff,0xbb,0x9d,0xad,0xb3,0xff,0xff},//2
{0xff,0xff,0xdd,0xbe,0xb6,0xc9,0xff,0xff},//3
{0xff,0xef,0xe7,0xeb,0x81,0xef,0xef,0xff},//4
{0xff,0xff,0xd1,0xb5,0xb5,0xcd,0xff,0xff},//5
{0xff,0xff,0xc1,0xb6,0xb6,0xcd,0xff,0xff},//6
{0xff,0xff,0xfd,0xfd,0x8d,0xf5,0xf9,0xff},//7
{0xff,0xff,0xc9,0xb6,0xb6,0xc9,0xff,0xff},//8
{0xff,0xff,0xd9,0xb6,0xb6,0xc1,0xff,0xff}};//9
void delay(uint z){
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
void main(){
key=1;num=0;while(1){
if(num==0){
for(j=0;j<10;j++){
if(key==0
{
delay(10);
if(key==0){
num=1;while(!key);}}
if(num!=0)break;
for(k=0;k<30;k++){
scan=0x01;for(i=0;i<8;i++){
P0=table[j][i];P1=scan;delay(2);
scan<<=1;
}
}
}
}
if(num==1)
{for(j=0;j<8;j++)//8组数据
if(key==0)
{
delay(10);if(key==0)
{
num=2;while(!key);
}
}
if(num!=1)break;
for(k=0;k<10;k++)
{
scan=0x01;//初始扫描信号
for(i=8;i>0;i--)//扫描周期
{
if(i>j)P0=table1[8+(j-i)];
else P0=table1[j-i];
P1=scan;delay(2);scan<<=1;
}
}
}
}
if(num==2)
if(key==0)
{
delay(10);
if(key==0)
{
num=0;while(!key);
}
}
scan=0x01
for(i=0;i<8;i++)
{
P0=table2[count++];
if(count==8)count=0;P1=scan;delay(2);scan<<=1;
}
}
}
}。

相关文档
最新文档