单片机原理及应用.docx

上传人:b****0 文档编号:9448810 上传时间:2023-05-19 格式:DOCX 页数:49 大小:845.25KB
下载 相关 举报
单片机原理及应用.docx_第1页
第1页 / 共49页
单片机原理及应用.docx_第2页
第2页 / 共49页
单片机原理及应用.docx_第3页
第3页 / 共49页
单片机原理及应用.docx_第4页
第4页 / 共49页
单片机原理及应用.docx_第5页
第5页 / 共49页
单片机原理及应用.docx_第6页
第6页 / 共49页
单片机原理及应用.docx_第7页
第7页 / 共49页
单片机原理及应用.docx_第8页
第8页 / 共49页
单片机原理及应用.docx_第9页
第9页 / 共49页
单片机原理及应用.docx_第10页
第10页 / 共49页
单片机原理及应用.docx_第11页
第11页 / 共49页
单片机原理及应用.docx_第12页
第12页 / 共49页
单片机原理及应用.docx_第13页
第13页 / 共49页
单片机原理及应用.docx_第14页
第14页 / 共49页
单片机原理及应用.docx_第15页
第15页 / 共49页
单片机原理及应用.docx_第16页
第16页 / 共49页
单片机原理及应用.docx_第17页
第17页 / 共49页
单片机原理及应用.docx_第18页
第18页 / 共49页
单片机原理及应用.docx_第19页
第19页 / 共49页
单片机原理及应用.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机原理及应用.docx

《单片机原理及应用.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用.docx(49页珍藏版)》请在冰点文库上搜索。

单片机原理及应用.docx

单片机原理及应用

单片机原理及应用

课程设计指导书

使用班级:

电子专业

指导教师:

编制教师:

 

长春工程学院电气与信息学院

电子信息教研室

2014年2月

目录

一、课程设计目的1

二、课程设计任务及内容1

三、课程设计结果要求5

四、课程设计具体时间安排及成绩考核5

五、参考文献6

附件1:

实习(设计)报告书写格式及要求7

附件2:

论文书写范例:

9

附录3:

参考文献书写方法12

 

一、课程设计目的

单片机原理及应用课程设计是配合“单片机原理及应用”课程和实验教学的一个重要环节,它能起到巩固所学知识、加强综合能力、提高软、硬件设计调试方面的能力、启发创新思想的效果。

同时,帮助学生将相关专业课程综合起来,融会贯通,形成系统的概念,迅速迈过从理论到实际的门槛。

本课程设计的目的是培训学生的综合设计能力、电子线路的组装调试能力和创新能力,通过查阅资料、选定方案、设计电路、安装调试、写报告等过程,使学生得到一次科学研究工作的启蒙训练。

二、课程设计任务及内容

1、资料查阅

1)查阅与本人设计相关的文章、方案,列举3种以上设计方案;

2)对以上设计方案进行分析、比较,选择本次设计所使用的设计方案;

3)把以上设计方案及分析、比较过程以文字方式体现在设计报告中的方案选择中。

2、设计题目

(5)题目:

LED点阵显示屏

★★☆☆☆

要求:

1)设计由(4~8)个8*8LED点阵组成的显示屏系统;

2)能够显示英文、汉字以及部分特殊图形;

3)可以设置多种(不少于3种)的切换显示方式;

4)采用双色多三色LED点阵显示简单彩色图样*;

5)显示简单动态图像或曲线等*。

3、电路设计

用Protel绘制电路原理图,并绘制PCB板图。

要求原理图完整,清晰,参数准确。

PCB板图布局合理、美观,走线清晰明了,制版尺寸小。

4、仿真实现

用Proteus软件对所设计内容进行仿真实验或使用硬件搭建,实现题目要求的内容。

5、撰写论文

按照所阅读的标准期刊文献文章格式撰写一篇所设计的单片机系统进行综合描述。

要求有:

摘要:

对全篇文章进行简单扼要的介绍;

引言:

对所设计的题目背景进行简介;

正文论述:

各部分详细的设计方案分析及选择,软硬件设计、理论计算;Protus仿真过程及结果截图;原理图、PCB图等各种图表;并以附录的形式提供单片机程序及程序框图。

从硬件(各部分原理、整体系统组成原理)和软件(编程思想、流程图)等方面对系统进行全面的论述。

结论:

总结所设计的题目的实现情况及展望。

三、课程设计成果要求

1、开题报告

主要内容:

进行题目可行性论证,对设计方案进行选择,给出选择依据;

2、电路图绘制

主要内容:

针对所设计题目绘制原理图、PCB图。

原理图要求器件摆放合理、轴线清晰明了;PCB图要求布线合理、美观,制版尽可能小。

3、软件系统仿真

主要内容:

使用Protus软件对所设计题目进行软件仿真或使用硬件搭建,验证系统的可行性并保留结果(答辩时需演示)。

4、课程设计论文

主要内容:

撰写课程设计论文(论文详细要求参见附件)。

一组一份设计论文。

分组建议:

3人。

四、课程设计具体时间安排及成绩考核

1、时间安排:

单元

内容

时间

1

公布题目,布置任务,学生独立选题。

1天

2

进行题目分析和系统分解,确定设计方案。

1天

3

绘制Protel原理图和PCB图

2天

3

绘制Proteus原理图或搭建硬件电路

2天

4

编制程序,进行程序调试和系统功能测试

3天

5

组织进行课程设计答辩,了解学生设计水平,是否独立完成及全面表现并由教师给出评语和成绩

1天

合计

10天

2、成绩考核:

按平时表现、出勤情况、设计完成情况、报告的完整性和规范性以及答辩情况给出实习的综合成绩(五级分制)。

给分比例如下:

(1)平时表现、出勤情况(20%)

(2)Protel电路原理图及PCB板图(15%);

(3)Proteus设计演示(15%);

(4)设计论文(25%);

(5)答辩(25%)。

五、参考书

1.谷树忠等编著:

《AltiumDesigner教程—原理图、PCB设计与仿真》电子工业出版社,2011.11;

2.李晓林等编著:

《单片机原理与接口技术(第2版)》电子工业出版社,2011.2;

3.胡启明等编著:

《Proteus从入门到精通100例》电子工业出版社,2012.9;

4.刘波主编:

《51单片机应用开发典型范例——基于Proteus仿真》电子工业出版社,2014.1

CHANGCHUNINSTITUTEOFTECHNOLOGY

单片机原理及应用课程设计

(英文标题:

TimesNewRoman英文字体,3号,居中)

设计题目:

LED点阵显示屏

学生姓名:

L

学院名称:

电气与信息工程学院

专业名称:

电子信息工程

班级名称:

电子1241

学号:

L

完成时间:

L

 

2015年月日

任务分配表

班级

学号

姓名

完成主要任务

电子1241

10

赵玉莹

Protel原理图及pcb板绘制

整理实验报告

电子1241

13

崔贺

Proteus图绘制

电子1241

36

王文立

编程

LED点阵显示屏

赵玉莹1,崔贺1,王文立1

(电子124110号,13号,36号)

摘要:

本设计基于单片机技术原理,以芯片AT89C51作为核心控制器,通过硬件电路的制作及软件程序的编制,设计制作了一种4个8*8LED点阵组成的显示屏系统。

实现LED的动态显,所谓动态显示就是一位一位的轮流点亮LED,在每一时刻只有一位显示器在工作(点亮),但由于人眼的视觉暂留效应和发光二极管熄灭时的余辉,将出现多个字符“同时”显示的现象。

即在每一瞬间,所有LED会显示相同的字,并实现文字、英文、图形的显示,以及图形的上移、左移、右移的移动效果并显示简单动态图像或曲线。

关键词:

AT89C51单片机,LED,显示

0引言(简介所设计的题目内容及设计的意义)

LED电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统,本设计实现了LED的动态、静态显,所谓动态显示就是一位一位的轮流点亮LED,在每一时刻只有一位显示器在工作(点亮),但由于人眼的视觉暂留效应和发光二极管熄灭时的余辉,将出现多个字符“同时”显示的现象。

即在每一瞬间,所有LED会显示相同的字,并实现文字、英文、图形的显示,以及图形的上移、左移、右移的移动效果。

基于LED的字符动态显示系统具有设计简单、显示方式和显示信息可控、扩容灵活和成本低等特点,非常适合一些汉字信息动态显示场合。

1系统方案(包括方案论证,选择的过程和依据,用系统框图论述)

……建立以AT89C51单片机为核心的控制器,采用串行传输、动态扫描技术,设计出拥有多功能的模块化16*16LED点阵动态显示系统。

通过仿真验证,该方法正确可行,能有效缩短系统的开发周期、提高效率、节约成本1LED点阵动态显示系统原理

2系统硬件电路(包括硬件系统原理框图、各部分电路图及其工作原理简介)

简介:

用到的器件有:

AT89C51,74LS164,74LS595,MATRIX-8*8-GREEN.

从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。

16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。

这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。

因此在实际应用中的显示屏都不采用这种设计,而采用另一种称为动态扫描的显示方法。

动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。

具体就16×16的点阵来说,把所有同l行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第l行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并镇存,然后选通第2行使其燃亮相同的时间,然后熄灭;-…·第16行之后,又重新燃亮第1行,腹轮回。

当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形了。

采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。

显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。

显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。

从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。

显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。

当列数很多时,并行传输的方案是不可取的。

采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。

但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。

这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两个部分。

对于串行传输方式来说,列数据准备时间可能相当长.在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。

解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。

即在显示本行各列数据的同时,传送下一行的列数据。

为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。

经过上述分析,可以归纳出列驱动器电路应具备的主要功能。

对于列数据准备来说,它应能实现串人并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。

这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。

图1为显示屏电路实现的结构框图。

图1显示屏电路框图

硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分

1.单片机系统及外围电路

单片机采用89C51或其兼容系列的芯片,采用24MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。

单片机的串口与列驱动器相连,用来送显示数据。

P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号。

PO和P2口空着,在有必要时可以扩展系统的ROM和RAM。

16×16点阵显示屏的硬件原理图如图2所示。

图216×16点阵显示屏的硬件原理图

2.列驱动电路

列驱动电路由集成电路74LS595构成。

它具有一个8位串人并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。

74LS595的外形及内部结构如图3所示。

它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。

引脚SI是串行数据的输入端。

引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打人最低位。

移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。

RCK是输出锁存器的打人信号,其上升沿将移位寄存器的输出打人到输出锁存器。

引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。

SCLR信号是移位寄存器的靖0输入端,当其为低时移位寄存器的输出全部为o。

由于SCK和RCK两个信号是互相独立的,所以能够做到输人串行移位与输出锁存互不干扰。

芯片的输出端为QA~QH.最高位QH可作为多片74LS595级联应用时,向上一级的级联输出。

但因QH受输出锁存器打人控制,所以还从输出锁存器前引出了QH’,作为与移位寄存器完全同步的级联输出。

图374LS595的外形

3.行驱动电路

单片机P1口低4位输出的行号经4/16线译码器74LSl64译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。

一条行线上要带动16列的LED进行显示,按每一LED器件20mA电流计算,16个LED同时发光时,需要320mA电流,选用三极管8550作为驱动管可满足要求。

4.系统程序的设计

显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。

根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:

第一层是底层的显示驱动程序,第二层是上层的系统应用程序。

显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏的扫描显示工作。

显示驱动程序由定时器T0中断程序实现。

系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。

从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用c语言编写。

5.显示驱动程序

显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。

为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打人输出锁存器并锁存,然后再输出新的行号,重新打开显示。

图4为显示驱动程序(显示屏扫描函数)流程图。

图4显示驱动程序流程图

3系统软件设计(包括主流程图及各部分功能模块流程图,部分需要讲解的模块源码)

主程序流程图

跑马显示子程序流程图

//**********16x16点阵***************//

#include//预处理命令reg51.h是一个库文件

#include//移位库函数包含于此头文件中

#defineDATAOUTP2//P2作为数据输出端口

#defineSPEED13

voidymove(chardir,unsignedchar*ptr,charspeed);//定义纵向移动方向,指定*ptr指针为无符号字符型,定义速度(为字符)

voidxmove(chardir,unsignedchar*ptr,charn,charspeed);

voiddelay(unsignedinta);//定义延时子程序指定a为无符号整数型

voiddisplay();//定义显示停顿延时

voiddisplaytime(chartime);//定义显示延时时间time为字符型

voidinit164();//代表:

74ls164?

sbitADATA=DATAOUT^0;//定义输出端口p2端口名称

sbitASCK=DATAOUT^1;

sbitLATCH=DATAOUT^2;

sbitBDATA=DATAOUT^3;

sbitBCLK=DATAOUT^4;

//上面的程序实现的是对所输入字形的横向和纵向的移动,加入的是xmove和ymove。

同时也定义出了输出端口。

//定义字形

codeunsignedcharxin[32]={

0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,//心

0x1F,0x7C,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,

0x1F,0xFC,0x0F,0xF8,0x07,0xF0,0x03,0xE0,

0x01,0xC0,0x00,0x80,0x00,0x00,0x00,0x00};

codeunsignedcharD[32]={

0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,//D

0x38,0x38,0x38,0x1C,0x38,0x0E,0x38,0x0E,

0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,

0x38,0x78,0x7F,0xE0,0x00,0x00,0x00,0x00

};

codeunsignedcharZ[32]={

0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,

0x38,0x18,0x20,0x30,0x00,0x60,0x01,0xC0,//Z

0x03,0x80,0x03,0x00,0x0E,0x00,0x1C,0x06,

0x38,0x0C,0x7F,0xFC,0x00,0x00,0x00,0x00

};

codeunsignedcharzhao[32]={

0x08,0x00,0x08,0x08,0x08,0x88,0x7E,0x88,

0x08,0x50,0x0A,0x50,0xFF,0x20,0x08,0x20,//赵

0x28,0x50,0x2E,0x48,0x28,0x8C,0x39,0x04,

0x48,0x00,0x44,0x06,0x83,0xFC,0x00,0x00

};

codeunsignedcharyu[32]={

0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,//玉

0x01,0x00,0x01,0x00,0x01,0x10,0x3F,0xF8,

0x01,0x00,0x01,0x00,0x01,0x40,0x01,0x30,

0x01,0x10,0x01,0x04,0xFF,0xFE,0x00,0x00};

codeunsignedcharying[32]={

0x04,0x40,0x04,0x48,0x7F,0xFC,0x04,0x40,

0x04,0x40,0x7F,0xFE,0x40,0x02,0xBF,0xF4,//莹

0x01,0x00,0x01,0x10,0x3F,0xF8,0x01,0x00,

0x01,0x40,0x01,0x24,0xFF,0xFE,0x00,0x00

};

codeunsignedcharcui[32]={

0x01,0x00,0x21,0x08,0x21,0x08,0x3F,0xF8,//崔

0x28,0x08,0x11,0x00,0x10,0x88,0x3F,0xFC,

0x50,0x80,0x9F,0xF8,0x10,0x80,0x1F,0xF8,

0x10,0x80,0x10,0x84,0x1F,0xFE,0x10,0x00};

codeunsignedcharhe[32]={

0x10,0x00,0x10,0x04,0x7F,0x7E,0x11,0x44,//贺

0x11,0x44,0x25,0x7C,0x42,0x10,0x9F,0xF8,

0x10,0x10,0x11,0x10,0x11,0x10,0x11,0x10,

0x11,0x10,0x02,0xC0,0x0C,0x30,0x30,0x08};

codeunsignedcharwang[32]={

0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,//王

0x01,0x00,0x01,0x00,0x01,0x08,0x7F,0xFC,

0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,

0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00};

codeunsignedcharwen[32]={

0x02,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,//文

0x10,0x10,0x08,0x10,0x08,0x20,0x04,0x20,

0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,

0x04,0x60,0x08,0x10,0x30,0x0E,0xC0,0x04};

codeunsignedcharli[32]={

0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x08,//立

0x7F,0xFC,0x00,0x00,0x00,0x10,0x10,0x10,

0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,

0x04,0x80,0x00,0x04,0xFF,0xFE,0x00,0x00};

codeunsignedcharzhen[32]={

0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x10,

0x1F,0xF8,0x10,0x10,0x1F,0xF0,0x10,0x10,//真

0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x14,

0xFF,0xFE,0x08,0x20,0x10,0x18,0x20,0x08};

codeunsignedcharniu[32]={

0x01,0x00,0x11,0x00,0x11,0x10,0x1F,0xF8,

0x21,0x00,0x21,0x00,0x41,0x00,0x01,0x04,//牛

0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,

0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00};

codeunsignedchargth[32]={

0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,//!

code为存储类型标识符

0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,

0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,

0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00};

unsignedcharidatabuffer[32];//无符号字符型数据buffer缓存

voidmain(void)

{

unsignedchari;//定义无符号字符i

init164();

while

(1)//循环语句对所输入字符的循环要求

{

for(i=0;i<32;i++)//扫描心型显示心形

buffer[i]=xin[i];

displaytime

(1);//加延时

xmove(1,D,2,SPEED);//显示D和后面的一个字符有速度限制且为横向移动

displaytime

(1);//实际方针中会有些许停顿

xmove(1,zhao,3,SPEED);//同上

displaytime

(1)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2