88点阵实验报告Word格式.docx

上传人:b****8 文档编号:22653587 上传时间:2023-02-05 格式:DOCX 页数:26 大小:2.31MB
下载 相关 举报
88点阵实验报告Word格式.docx_第1页
第1页 / 共26页
88点阵实验报告Word格式.docx_第2页
第2页 / 共26页
88点阵实验报告Word格式.docx_第3页
第3页 / 共26页
88点阵实验报告Word格式.docx_第4页
第4页 / 共26页
88点阵实验报告Word格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

88点阵实验报告Word格式.docx

《88点阵实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《88点阵实验报告Word格式.docx(26页珍藏版)》请在冰豆网上搜索。

88点阵实验报告Word格式.docx

特别是它的发光类型属于冷光源,效率及发热量是普通发光器件难以比拟的,它采用低电压扫描驱动,具有:

耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远、规格品、可靠耐用、应用灵活、安全、响应时间短、绿色环保、控制灵活种等特点。

目前LED显示屏作为新一代的信息传播媒体,已经成为城市信息现代化建设的标志。

随着社会经济的不断进步,以及LED显示技术的不断完善,人们对LED显示屏的认识将越来越深入,其应用领域将会越来越广。

(3)经过琢磨,觉得4*4点阵过于简单化,后续显示过程中显示效果有限,只能显示出有限的简单字符效果,表现不够良好。

而8*8点阵虽结构较4*4点阵复杂些许,但是其显示效果叫4*4点阵有了很大提升空间。

可以显示比方案一更加复杂良好的字符。

动态显示方式是LED点阵常用的显示方式,动态显示方式动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息,

1.1课程设计制作题目及要求 

用AT89S52单片机控制8*8LED点阵构成任意图形。

要求:

用8*8LED组合成数字3/2/1加上定时器这样倒计时,然后组合成相应的简单图形。

(1)组成3/2/1字符:

用8*8LED点阵64个LED不同的LED亮来组成相应的字符。

(2)3/2/1字符切换时间为1S:

字符切换时间用定时器精确控制。

(3)8*8流水灯:

控制LED组合挨个亮灭,流水状。

2.系统方案设计

2.1设计思路

利用AT89S52单片机作为整个控制搭电路的核心,并编制软件程序,在8X8LED点阵上实现字符的显示很LED灯的随机闪烁显示。

选用如下主要元器件:

AT89S52单片机、电阻3K欧、三极管8550、按钮开关、共阳8*8LED点阵显示块。

此设计的时间控制用AT89s52的定时器进行,设定定时器初值为46080,(由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断),记录20次中断标志为1s,用这个控制LED切换时间。

2.2总体设计框图

3.硬件设计

3.1硬件选型

单片机特点:

(1)高集成度,体积小,高可靠性单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。

芯片本身是按工业测控环境要求设计的,部布线很短,其抗工业噪音性能优于一般通用的CPU。

单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片,故可靠性高。

(2)控制功能强为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:

分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。

(3)低电压,低功耗,便于生产便携式产品为了满足广泛使用于便携式系统,许多单片机的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。

(4)易扩展片具有计算机正常运行所必需的部件。

芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。

(5)优异的性能价格比单片机的性能极高。

为了提高速度和运行效率,单片机已开始使用RISC流水线和DSP等技术。

单片机的寻址能力也已突破64KB的限制,有的已可达到1MB和16MB,片的ROM容量可达62MB,RAM容量则可达2MB。

由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。

数字逻辑电路特点:

用数字电路逻辑器件组成控制电路,这样原理简单清楚,但是调节起来很复杂,需要更改电路结构。

根据设计要求及设计的需要我采用单片机来作为控制手段,选用AT89S52单片机作为该课程设计的核心来对数字信息进行处理及储存。

它是一个低电压,高性能的CMOS8位单片机,片含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,有40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口,AT89S52可以按照常规方法进行编程,也可以在线编程。

3.2系统硬件电路原理详图

3.2.1复位电路原理图以及时钟电路原理图

3.3实际连线详图

3.3.18*8LEDAD原理图

3.3.28*8LEDADPCB图

3.3.38*8LED点阵原理仿真电路

3.3.451单片机主控实物图以及原理图

4.软件设计

4.1软件功能设计

利用单片机的定时器产生准确的时钟信号,从而进行时间控制,控制十字路口的红、黄、绿灯交替亮灭。

并且使用共阴极四位LED数码管,时刻显示当前路口的红灯或者绿灯还将持续的时间。

两个方向的通行时间可用按键进行设置,可以控制路口的红绿灯的持续时间,这样模拟现实中的不同时间段,车流量不同而智能控制时间,这样更加合理的控制路口的通行,提高道路的通行效率,系统的启停和复位也由按键控制。

4.2软件流程设计

4.2.1主流程图

5.软件调试

5.1单元调试

5.1.1显示模块测试

首先在硬件电路上按照要求连接数码管,然后由单片机控制,看能否控制LED显示任何组合,测试通过则开始调试LED灯单个控制程序代码,不通过则检查问题,硬件问题或者软件问题。

最后将LED灯组合起来控制,看能否达到理论状态,不能则分析原因,是否程序代码有误还是硬件焊接,测试完成后,确认无误则进行下一步测试。

5.1.2LED点阵模块测试

在8*8LED点阵接入电路之后,用万用表的测试通断档检测每个LED是否能正常工作,点阵电路硬件无误,在软件程序里面测试,每个LED的控制程序都单独检测,如果控制没有问题则检查完成。

5.2总体测试

在程序搭建完成之后,结合硬件进行最后的测试,用按键控制时间加减,然后观察程序的BUG,做多种尝试,尽量消除完程序存在的BUG,比如时间如果减为0,或者时间加到数码管显示的最大值之后怎么处理,都是我们程序里面要考虑到的问题,然后检测中断程序控制的时间与实际时间的差距,尽量调整时间没有差距,这也是程序控制与实际的结合,达到误差标准之后,然后运行程序,要求时间持续时间长,如果出现问题,那么就要分析问题原因,是硬件问题还是软件BUG,将问题处理完之后,作品完成。

6.心得体会

虽然本设计只使用了一块8*8LED点阵,电路简单,但是已经包涵了LED显示屏的电路基本原理和基本程序,在设计的过程中应该使显示图形和文字稳定、清晰无串扰。

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

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

在此次设计过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。

通过这次课程设计,重新复习并进一步学习了AT89S52;

熟练掌握了WORD软件的使用。

进一步提高了自己在实际设计过程中研究问题、发现问题、解决问题的能力。

但是从中也存在不足之处:

对知识的积累还不够,有些问题自己不能够独立解决,对实验操作还要进一步熟练,只有这样才能让自己在不断的学习中提高自己。

在这次课程设计中,我们运用到了以前所学的专业课知识,如:

AD制图、汇编语言、模拟和数字电路知识等。

虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

短短两周的课程设计已经结束了,通过这次的课程设计锻炼了我们的实践能力,也是对我们以后的实际工作能力的具体训练和考察过程。

现在是一个高科技的时代,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在的。

因此对于我们这一专业的同学来说,学好单片机,并正确应用单片机是非常重要的。

7.参考文献

[1]周伟,师学院,数学科学学院,《c语言程序设计》课程教学研究,维普期刊资源整合服务平台。

[2]谭浩强,《c语言程序设计》(第四版),清华大学,,2010年。

[3]郭天祥.十天学会单片机。

[4]友德等 

单片微型机原理、应用与实验 

第五版 

复旦大学 

2003

附录1

《C语言源程序代码》

#include<

reg52.h>

stdlib.h>

unsignedchartable0[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

//顺列

unsignedchartable00[8]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};

//倒列

unsignedchartable1[8]={0xFF,0xE7,0xF7,0xF7,0xF7,0xC3,0xFF,0xFF};

//显示数字1

unsignedchartable2[8]={0xFF,0xC3,0xFB,0xC3,0xDF,0xC3,0xFF,0xFF};

//显示数字2

unsignedchartable3[8]={0xFF,0xC3,0xFB,0xC3,0xFB,0xC3,0xFF,0xFF};

//显示数字3

unsignedchartable4[]={0xFF,0xFE,0xDF,0xFF,0xFF,0xF7,0xFF,0xBD,//显示各个点

0xFF,0xFF,0xF3,0x4D,0xFD,0xD7,0xFD,0xBD,//行加点

0xFB,0xEB,0xFF};

unsignedchartable5[8]={0xFe,0xFd,0xFb,0xF7,0xeF,0xdF,0xbF,0x7F};

//行减点

unsignedchartable6[8]={0x80,0xc0,0xe0,0xf0,0xf8,0xFc,0xFe,0xFf};

unsignedchartable7[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xFf};

//循环矩阵

chara,b,c,d,x;

chart2,t3,m;

intt1;

//定义变量

bitflash_flag;

//显示可控数据标志

voiddelay(unsignedintt)//短时间延时

{

chark;

while(t--)

{

for(k=0;

k<

100;

k++);

}

}

voiddelayus(unsignedinti)//US延时

while(i--);

voidtimer_init(void)//定时器初始化

EA=1;

ET0=1;

ET1=1;

TMOD=0X11;

TH0=(65536-46080)/256;

//由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断

TL0=(65536-46080)/256;

TH1=(65536-46080)/256;

TL1=(65536-46080)/256;

TR0=1;

TR1=1;

PT0=0;

PT1=1;

voidimage1()//显示数字1子函数

chari;

for(i=7;

i>

=0;

i--)

{

P0=~(table1[i]);

P2=table0[i];

delayus(180);

}

voidimage2()//显示数字2子函数

P0=~(table2[i]);

}

voidimage3()//显示数字3子函数

P0=~(table3[i]);

voidimage4()//显示点与行子函数

chari,j;

intT=5000;

//

for(j=7;

j>

j--)

{

P0=~(table5[j]);

P2=table0[7];

delayus(T);

}

for(j=0;

j<

=7;

j++)

P2=table0[6];

P2=table0[5];

P2=table0[4];

P2=table0[3];

P2=table0[2];

P2=table0[1];

P2=table0[0];

///////////////////////////////////////

/////////////////////////////////////////////

P0=table6[j];

P2=table00[7];

P0=table7[j];

P2=table00[6];

P2=table00[5];

P2=table00[4];

P2=table00[3];

P2=table00[2];

P2=table00[1];

P2=table00[0];

//

voidflash1()//显示函数调用函数

if(t1<

30)

image3();

elseif(t1>

=30&

&

t1<

60)

{

image2();

elseif(t1>

=60&

90)

image1();

=90&

300)

image4();

else

t1=0;

voidmain()//主函数

intn,s;

timer_init();

while(n<

440)

flash1();

n++;

while

(1)

x=a+b+c;

for(s=0;

s<

8;

s++)

P0=(table0[s]);

P2=(table4[x]);

delay(50);

voidtrmer0()interrupt1//随机数调用函数

a=(char)(rand()%10);

b=(char)(rand()%10);

c=(char)(rand()%10);

d=(char)(rand()%10);

TH0=(65535-10000)/256;

TL0=(65536-10000)%256;

voidtimer1()interrupt3//时间变量中断

m++;

if(m=20);

m=0;

t1++;

附录2

程序模块原理图以及部分实物图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1