心形花样流水灯设计报告

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

《专业方向课程设计》课程

设计报告

题目:心形花样流水灯与点阵显示

专业:电子信息工程

班级:二班

学号:

姓名:

指导老师:

重庆交通大学信息科学与工程学院

设计时间:2013年9 月8 日到2013 年11 月16 号

一、设计任务说明

随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路,这次作品的初衷是希望通过单片机学习,做个生日礼物送给朋友。

二、总体设计

本系统主要有AT89C51单片机、5mm彩色LED灯、74HC245、8*8LED点阵、200欧电阻等元件组成。

1.流水灯设计:

(1)AT89C51单片机:

AT89C51具有如下特点:

40个引脚,8k Bytes Flash片内程序存储器,

256 bytes的随机存取数据存储器(RAM),

32个外部双向输入/输出(I/O)口,

5个中断优先级2层中断嵌套中断,

2个16位可编程定时计数器,

2个全双工串行通信口,

看门狗(WDT)电路,片内时钟振荡器。

A T89C51引脚图

此外,AT89S52设计和配置了振荡频率可

为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

引脚图如右图所示。此次设计把51单片机的4个I/O口与32个5mm高亮LED 灯相接,通过单片机控制各I/O引脚的高低电平控制LED的亮灭从而形成各种不同亮灭的花样。

2.点阵显示设计:

(1)8*8点阵原理图:

从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:

一根竖柱:对应的列置1,而行则采用扫描的方法来实现。

一根横柱:对应的行置0,而列则采用扫描的方法来实现。

(2)74HC245:

74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产品中增加驱动

主要特性:

☆采用CMOS工艺

☆宽电压工作范围:3.0V—5.0V

☆双向三态输出

☆八线双向收发器

☆封装形式:SOP20、SOP20-2、TSSOP20、DIP20

此次设计采用74HC245来驱动8*8点阵,74HC245一端与51单片机的P0口想连,另一端则与点阵的输入端相连,从而通过单片机控制驱动点阵。

三、硬件设计

心型流水灯的硬件设计如下图:

此次设计把51单片机的4个I/O口与32个5mm高亮LED灯相接,通过单片机控制各I/O引脚的高低电平控制LED的亮灭从而形成各种不同亮灭的花样。

点阵显示的硬件设计图如下:

本次设计通过74HC245来驱动8*8点阵,74HC245的输入端与51单片机的P0口想连,74HC245的输出端则与点阵的行相连,而点阵的列则与单片机的P3口相连,通过单片机控制、74HC245驱动,从而完成了点阵的显示。

四、软件设计

心形花样流水灯的程序如下:

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7

uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭7~0

/***********************************************************/

void delay(uint t); //延时

void zg(uint t,uchar a);//两边逐个亮

void qs(uint t,uchar a);//全部闪烁

void zgxh(uint t,uchar a); // 逆时针逐个点亮

void djs(uint t,uchar a); //对角闪

void lbzgm(uint t,uchar a);//两边逐个灭

void nszgm(uint t,uchar a); // 逆时针逐个灭

void sztl(uint t,uchar a);//顺时逐个同步亮

void nztl(uint t,uchar a);//逆时逐个同步亮

void sztm(uint t,uchar a);//顺时逐个同步灭

void nztm(uint t,uchar a);//逆时逐个同步灭

void hwzjl(uint t,uchar a); //横往中间亮

void hwzjm(uint t,uchar a); //横往中间灭

void nzdl(uint t,uchar a); //逆时逐段亮

void nzdgl(uint t,uchar a); //逆时逐段一个点亮

void jgs(uint t,uchar a); //间隔闪

/**********************************************************/

void zg(uint t,uchar a)//两边逐个亮

{

uchar i,j;

for(j=0;j

{

P0=P1=P2=P3=0xff;

P0=0x7f;delay(t);

for(i=0;i<7;i++)

{

P0=table1[i+1];

P2=table1[i];

delay(t);

}

P2=0x00;P1=0xfe;

delay(t);

for(i=0;i<7;i++)

{

P1=table[i+1];

P3=table1[i];

delay(t);

}

P3=0x00;delay(t);

}

相关文档
最新文档