点阵课程设计报告

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

目录

目录 0

一.方案论证与设计 (1)

1.1 设计要求 (1)

1.2 要求分析 (1)

1.3 方案说明 (4)

二.点阵硬件设计 (4)

三.点阵软件设计 (5)

四. 实验结果与分析 (7)

五.总结与体会 (9)

参考文献 (10)

附录 (11)

一.方案论证与设计

1.1 设计要求

一、使用AT89S51设计一个点阵显示控制系统。

二、基本要求(难度系数0.7):

(1)在点阵上显示固定的汉字“中”;

(2)同过按键切换显示汉字“中”、“国”;

(3)在点阵上滚动显示汉字“中国”。

三、发挥部分:

(1)增加通过串口设置点阵显示内容的功能

1.2 要求分析

一、点阵说明:

8×8单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的交叉点上如图(1)。比如:如果要想实现第一发光二极管亮,那么只要将DC8引脚置高电平,DR1引脚置低电平。这样便可以实现第一个二极管亮。如果要实现第一行亮,DC=0x80;DR=0xfe。按照这样的思路就可以让点阵上的任一个二极管亮。本课程设计中,行是由74HC595控制列是由P0口控制的。所以我们下面介绍一下74HC595的用法,及其芯片的原理。

图(1)

二、74HC595简介:

74HC595的输出端为D0~D7,这8位并行输出端可以直接控制数码管的8个管段,D7’为级联输出端,它用来连接下一片595的串行数据输入端DS,下面给出74HC595控制引脚的详细说明。

SRCLK(11脚)用于输入移位时钟脉冲,在上升沿时移位寄存器(shift register)数据移位,D0→D1→ D2→D3→D4→D5→D6→D7→Q7’,其中Q7’用于595的级联,本课程设计中串行输入函数Hc595SendByte,使用了SRCLK引脚及下面的DS引脚。

SER(14脚)为串行数据输入引脚,Hc595SendByte函数通过移位运算符有高位到低位将各位数据通过SER引脚传行输入595芯片,串行发送时由SRCLK引脚提供移位时钟。For循环控制完成8次移位急可完成1字节的串行传送。

RCLK(12脚)提供锁存脉冲,在上升沿时移位寄存器的数据被传入存储器,由于OE引脚接地,传入存储寄存器的数据会直接出现在输出端D0~D7。在串行输入函数完成1个字节的传送后,数据送出由并行输出函数COMMONPORTS在RCLK的上升沿完成。

SRCLR(10脚)在低电平时将移位寄存器数据清零,本课程设计中该引脚直接连接VCC。

OE(13脚)在高电平时禁止输出(高阻态),本课程设计中改引脚接地,存储寄存器中的内容将直接输出。

74HC595的主要优点是能锁存数据,在移位过程中,输出端的数据保持不变,这有利于使点阵在串行速度较慢的场合不会出现闪烁感。

三、按键的介绍:

按键的扫面的方法的有两种,本设计中采用较快的行列扫描的方法。

行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。

.

1.3 方案说明

二.点阵硬件设计

.

三.点阵软件设计

void main()

{

display(2);

KeyValue=0xff;

.

while(1)

{ KeyDown();

if(KeyValue==0)

display(0);

if(KeyValue==1)

display(1);

if(KeyValue==2)

{

int num,temp,tab;

temp=ALL[0];

for(num=0;num<15;num++)

{

ALL[num]=ALL[num+1];

}

ALL[15]=temp;

for(num=0;num<15;num++)

{ for(tab=0;tab<8;tab++)

{

Hc595SendByte(0x00); //消隐

COMMONPORTS = TAB[tab]; //输出字码

Hc595SendByte(ALL[tab]);

delay(2);

}

}

}

else

display(2);

}

}

四. 实验结果与分析

五.总结与体会

一、问题与解决方法

(1)74HC595芯片不认识

74HC595芯片是我做这个课程设计遇到的最大的问题,起初我以前点阵像数码管一样,是共阴或者是共阳的方式连接。只要在P0进行控制,便可以随意点亮每一个二极管。通过我上网查看,发现他们不是这样的,需要在一段置高电平,另一端置低电平才能点亮。在原理图上,很显然可以看出发光二极管的一端靠P0口控制的,另一端靠74HC595控制。所以我必须要了解595的工作原理,在要求分析阶段我已经对74HC595做了介绍。

(2)delay()函数的延迟计算

延时时间的长短等于指令周期乘以总的只能,如果要是这样算的话。在需要延时一

段时间,使用延时延时函数比较方便。如果想要具体延时多久,使用定时器跟准确。(3)“中”字闪烁

“中”字出现了,时间较短的闪烁现象。我马上就想到了,因为我是通过逐行扫描的方式点亮点阵的。所以肯定是扫描的上一行和下一行的眼时间过长。所以只要改变一下delay()函数的延时时间就可以了。

(4)FPGA电路板上电后立刻出现“中”字

因为在刚开始定义ValueKey的时候,没有对其赋值。因为在Keil中,如果定义某个变量,如果不对其进行赋值,keil会默认它为0;所以进入我的住函数的时候,在我没有按下按键之前ValueKey已经得到一个值了,它马上会显示“中”。在老师的帮助下,查出了这个问题。通过这个问题,我觉得是我编程的时候,不规范操作造成的。这提醒我,下次编程的时候,应该在定义个变量的同时将其赋值。

参考文献

[1] 张靖武,周灵杉.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社,2007

[2] 张红,邹华. 单片机原理及应用机械工业出版社2012.07

[3] 王悦凯51单片机系统入门.扩展.应用开发学习手册中国铁道出版社2013

[4] 彭伟单片机C语言程序设计实训100例电子工业出版社2011

相关文档
最新文档