心形花样流水灯设计报告.docx
- 文档编号:14783106
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:27
- 大小:2.24MB
心形花样流水灯设计报告.docx
《心形花样流水灯设计报告.docx》由会员分享,可在线阅读,更多相关《心形花样流水灯设计报告.docx(27页珍藏版)》请在冰点文库上搜索。
心形花样流水灯设计报告
《专业方向课程设计》课程
设计报告
题目:
心形花样流水灯与点阵显示
专业:
电子信息工程
班级:
二班
学号:
姓名:
指导老师:
重庆交通大学信息科学与工程学院
设计时间:
2013年9月8日到2013年11月16号
一、设计任务说明
随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。
比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。
本设计是用单片机和点阵加一个小的流水灯电路,这次作品的初衷是希望通过单片机学习,做个生日礼物送给朋友。
二、总体设计
本系统主要有AT89C51单片机、5mm彩色LED灯、74HC245、8*8LED点阵、200欧电阻等元件组成。
1.流水灯设计:
(1)AT89C51单片机:
AT89C51具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,
256bytes的随机存取数据存储器(RAM),
32个外部双向输入/输出(I/O)口,
5个中断优先级2层中断嵌套中断,
2个16位可编程定时计数器,
2个全双工串行通信口,
看门狗(WDT)
AT89C51引脚图
电路,片内时钟振荡器。
此外,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
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//逐个点亮0~7
ucharcodetable1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//逐个点亮7~0
ucharcodetable2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//逐个灭0~7
ucharcodetable3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//逐个灭7~0
/***********************************************************/
voiddelay(uintt);//延时
voidzg(uintt,uchara);//两边逐个亮
voidqs(uintt,uchara);//全部闪烁
voidzgxh(uintt,uchara);//逆时针逐个点亮
voiddjs(uintt,uchara);//对角闪
voidlbzgm(uintt,uchara);//两边逐个灭
voidnszgm(uintt,uchara);//逆时针逐个灭
voidsztl(uintt,uchara);//顺时逐个同步亮
voidnztl(uintt,uchara);//逆时逐个同步亮
voidsztm(uintt,uchara);//顺时逐个同步灭
voidnztm(uintt,uchara);//逆时逐个同步灭
voidhwzjl(uintt,uchara);//横往中间亮
voidhwzjm(uintt,uchara);//横往中间灭
voidnzdl(uintt,uchara);//逆时逐段亮
voidnzdgl(uintt,uchara);//逆时逐段一个点亮
voidjgs(uintt,uchara);//间隔闪
/**********************************************************/
voidzg(uintt,uchara)//两边逐个亮
{
uchari,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); } } voidqs(uintt,uchara)//全部闪烁 { ucharj; for(j=0;j { P0=P1=P2=P3=0xff; delay(t); P0=P1=P2=P3=0x00; delay(t); } } voidzgxh(uintt,uchara)//逆时针逐个点亮 { uchari,j; for(j=0;j { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=table1[i]; delay(t); } for(i=0;i<8;i++) { P1=table[i]; delay(t); } for(i=0;i<8;i++) { P3=table[i]; delay(t); } for(i=0;i<8;i++) { P2=table[i]; delay(t); } } } voidnszgm(uintt,uchara)//逆时针逐个灭 { uchari,j; for(j=0;j { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=table3[i];delay(t); } for(i=0;i<8;i++) { P1=table2[i];delay(t); } for(i=0;i<8;i++) { P3=table2[i];delay(t); } for(i=0;i<8;i++) { P2=table2[i];delay(t); } } voiddjs(uintt,uchara)//对角闪 { ucharj; for(j=0;j { P0=P1=P2=P3=0xff; P0=P3=0x00; delay(t); P0=P1=P2=P3=0xff; P1=P2=0x00; delay(t); } } voidlbzgm(uintt,uchara)//两边逐个灭 { uchari,j; for(j=0;j { P0=P2=0x00; P3=0x01;delay(t); for(i=7;i>1;i--) { P1=table[i-1];P3=table1[i-2]; delay(t); } P1=0xfe;P3=0xff;delay(t); P1=0xff;P2=0x01;delay(t); for(i=7;i>1;i--) { P0=table1[i-1]; P2=table1[i-2]; delay(t); } P0=0x7f;P2=0xff;delay(t); P0=0xff;delay(t); } } voidsztl(uintt,uchara)//顺时逐个同步亮 { uchari,j; for(j=0;j { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=table[i]; P1=P2=P3=table1[i]; delay(t); } } } voidnztl(uintt,uchara)//逆时逐个同步亮 { uchari,j; for(j=0;j { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=table1[i]; P1=P2=P3=table[i]; delay(t); } } } voidsztm(uintt,uchara)//顺时逐个同步灭 { uchari,j; for(j=0;j { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=table2[i]; P1=P2=P3=table3[i]; delay(t); } } } voidnztm(uintt,uchara)//逆时逐个同步灭 { uchari,j; for(j=0;j { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=table3[i]; P1=P2=P3=table2[i]; delay(t); } } } voidhwzjl(uintt,uchara)//横往中间亮 { uchari,j; for(j=0;j { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=P2=P1=table1[i]; P3=table[i];delay(t); } } } voidhwzjm(uintt,uchara)//横往中间灭 { uchari,j; for(j=0;j { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=P2=P1=table3[i]; P3=table2[i];delay(t); } } } voidnzdl(uintt,uchara)//逆时逐段亮 { uchari,j; for(j=0;j { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=table1[i]; delay(t); } P0=0xff; for(i=0;i<8;i++) { P1=table[i]; delay(t); } P1=0xff; for(i=0;i<8;i++) { P3=table[i]; delay(t); } P3=0xff; for(i=0;i<8;i++) { P2=table[i]; delay(t); } P2=0xff; } } voidnzdgl(uintt,uchara)//逆时逐段一个点亮 { uchari,j,k,l;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 花样 流水 设计 报告