单片机原理及应用 设计报告

单片机原理及应用 设计报告
单片机原理及应用 设计报告

单片机设计报告

编写:HUBU2015级通信工程xmx 2017年5月23日

一、设计的目的与要求

利用8*8LED点阵动态显示汉字的字样。采用STC89C52单片机作为整个控制搭电路的核心,并编制软件程序,实现汉字的显示。通过此设计来巩固单片机硬件系统的设计及软件系统的编程,通过设计将平时所学知识付诸实践,提高动手能力。

1、设计一个8*8点阵LED电子显示屏。

2、要求在目测条件下LED显示屏各点亮度均匀、充足,可显示一个“大”字。

二、总体方案设计

2.1 硬件电路的总体设计

1、设计总体框图

硬件电路的设计框图如图1所示。硬件电路结构由8个部分组成:时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极电路、点阵显示阴极电路和8*8点阵显示电路。

2、工作原理

由于是8*8点阵屏设计,需要端口16个,可采用静态显示模式,用P0口控制行,P1口控制列,通过软件编程,即可实现汉字的显示。

3、元器件清单

元件名称规格数量备注

STC89C52单片机一块附底座

晶振12MHZ一块

8*8点阵LED显示器一块SZ411288k

按钮开关一个四脚

极性电容10uF一支

瓷片电容51pF两个

电阻5kΩ八个

电阻10kΩ一个

2.2 系统软件的设计

软件程序主要由开始、初始化、主程序、字库和延时子程序组成。

三、系统硬件电路的具体设计

3.1 时钟电路

STC89C52单片机内部的振荡电路是一个高增益反向放大器,引线X1和X2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。STC89C52的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。

内部时钟方式:利用其内部的振荡电路在X1和X2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 X1和X2之间接晶体振荡器与电路构成稳定的自激振荡器,如图4所示电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12MHz的石英晶体,电容器一般选择30PF 左右

3.2 复位电路

单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作。另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。本设计中采用按键复位电路,上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。其中R1选择10KΩ左右的电阻,电容器一般选择10μF。

3.3显示电路的设计

本次设计中采用8*8点阵LED显示器,简称LED点阵板或LED矩阵板。它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种。设计中用到的是“列共阳,行共阴”,即“列用高电平控制,行用低电平控制”。图中画出了8*8点阵的二极管。每一行发光二极管的阳极接在一起,有一个引出端r,

每一列发光二极管的阴极接在一起,有一个引出端c。当给发光二极管阳极引出端r1加高电平,阴极引出端c1加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同字符的目的。

(1)把“单片机系统”区域中的P0端口用8芯排芯连接到“点阵模块”区域中的“A~H”端口上;

(2)把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“0~7”端口上;

为了方便于单片机连接,我们在焊接的过程中特意将0~7接口排列出来作为列,将A~H接口作为行,这样我们就可以直接将AT89C52单片机的P0口与

0~7接口一次连接,将AT89C52单片机的P1口与A~H接口一次连接。要使LED 发亮即使给予数字端高电平,字母端给予低电平,就能使二极管发亮。

四、系统软件的具体设计

4.1 显示函数

while(1)

{

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

{

P1=DZ88lie[i]; //列选高电平有效

P0=DZ88hang[i]; //行选低电平有效

}

}

4.2 “大”字取模

char code DZ88lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};

char code DZ88hang[]={0x77,0xB7,0xD7,0xE0,0xE0,0xD7,0xB7,0x77,};

4.3 延时程序

延时程序在单片机编程中使用非常广泛,也很重要,在本次设计的程序中用到了延时子程序。延时子程序如下:

void delay_ms(int z)

{

char x,y;

for(x=z;z>0;z--)

for(y=110;y>0;y--);

}

4.4 主程序

void main()

{

while(1)

{

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

{

P1=DZ88lie[i]; //列选高电平有效

P0=DZ88hang[i]; //行选低电平有效

delay_ms(1);

}

}

}

五、整体电路图

相关主题
相关文档
最新文档