单片机原理及应用设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机设计报告
编写: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 Q八个
电阻10k Q一个
2.2系统软件的设计
软件程序主要由开始、初始化、主程序、字库和延时子程序组成
三、系统硬件电路的具体设计
3.1时钟电路
STC89C52单片机内部的振荡电路是一个高增益反向放大器,引线X1和X2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。STC89C52的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。
内部时钟方式:禾I」用其内部的振荡电路在X1和X2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在X1和X2之间接晶体振荡器与电路构成稳定的自激振荡器,如图4所示电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12MHz的石英晶体,电容器一般选择30PF 左右
3.2复位电路
单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作。另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。本设计中采用按键复位电路,上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。其中R1选择10K Q左右的电阻,电容器一般选择10 ^F o
3.3显示电路的设计
本次设计中采用8*8点阵LED显示器,简称LED点阵板或LED矩阵板。它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种。设计中用到的是“列共阳,行共阴”,即“列用高电平控制,行用低电平控制”。图中
画出了 8*8点阵的二极管。每一行发光二极管的阳极接在一起,有一个引出端r , 每一列发光二极管的阴极接在一起,有一个引出端 c 。当给发光二极管阳极引出 端r1加高电平,阴极引出端cl 加低电平时,左上角的二极管被点亮因此,对于 行和列的电平进行扫描控制时,可以达到显示不同字符的目的。
□ r F 3 /ion oooooaoo 沪松陰甲滞雷丁卿
oooooooo
2 s s. 1 C D 6
4
⑴把“单片机系统”区域中的P0端口
用8芯排芯连接到“点阵模块”区域 中的“ A~H ”端口上;
(2)把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域 中的“ 0~7”端口上;
为了方便于单片机连接,我们在焊接的过程中特意将 0〜7接口排列出来作 为列,将A 〜H 接口作为行,这样我们就可以直接将 AT89C52单片机的P0 口与 0~7接口一次连接,将AT89C52单片机的P1 口与A~H 接口一次连接。要使LED 发亮即使给予数字端高电平,字母端给予低电平,就能使二极管发亮。
四、系统软件的具体设计
000 0 0 000
000 00 000
000 00 000
000 00 000
000 0 0 000
000 0 0 000
000 00 000
000 0 0 000
11)L
a r
®
)
to L KJ
I)
F 齐
■S'l Z r±
tllh
¥L (Q ? ys[£l
T L 3M1
w(3i
T L 5(Z1
.■J
HIH JM
*
B 务
■. -H
* R
K
■>v
Mb E
4.1显示函数
while(1)
{
for(i=0;i<8;i++)
{
P仁DZ88lie[i]; 〃列选高电平有效P0=DZ88hang[i]; //行选低电平有效}
}
4.2 “大”字取模
char code DZ88lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
char code DZ88ha ng[]={0x77,0xB7,0xD7,0xE0,0xE0,0xD7,0xB7,0x77,};
4.3延时程序
延时程序在单片机编程中使用非常广泛,也很重要,在本次设计的程序中用到了延时子程序。延时子程序如下:
void delay_ms(i nt z)
{
char x,y;
for(x=z;z>0;z__)
for(y=110;y>0;y--);
}
4.4主程序
void mai n()
{
while(1)
{
for(i=0;i<8;i++)
{
P1=DZ88lie[i]; 〃列选高电平有效