片机应用技术课程设计.doc_第1页
片机应用技术课程设计.doc_第2页
片机应用技术课程设计.doc_第3页
片机应用技术课程设计.doc_第4页
片机应用技术课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

吉林工程技术师范学院目 录第一章 绪论11.1设计的目的及意义11.2设计要求:21.3设计内容:2第二章 硬件方案设计22.1 方案设计22.2 设计论证32.3硬件设计42.4总体设计方案6第三章 软件设计83.1汉字的存储83.2 汉字显示83.2.1列循环扫描93.2.2字符样式设计103.2.3字母循环扫描及期间的延时环节123.3 整个完整的程序12第四章 全文总结16参考文献17第一章 绪论1.1设计的目的及意义1. 使学生具备作为电子与信息技术生产、服务和管理领域工作的高素质,同时具备高级专门技术人才所应具备的电子设计自动化的基本知识、基本技能2. 为学生学习专业知识,增强实践操作能力,从而进一步与理论学习相结合。3. 通过单片机控制课程设计,学生能够掌握智能化控制系统及电子产品开发的一般过程,其中包括系统整体设计、硬件电路调试、软件编程调试、结果数据分析等多方面的内容。1.2设计要求:1.熟悉使用软件PROTEL DXP进行系统电路的设计。2.熟悉使用WAVE 6000或keil c51进行程序编写,编译和运行调试。3.熟悉使用PROTUES软件绘制电路并进行程序仿真。1.3设计内容:利用单片机原理,设计八路电压巡回检测系统第二章 硬件方案设计2.1 方案设计列驱动器 单片机电源16X16LED显示点阵 行驱动器2.2 设计论证图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中1616的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,1616的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是1616的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。具体就1616的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。 2.3硬件设计(1)单片机系统及其管脚常用的时钟电路设计有两种方式,一种是内部时钟方式,一种是外部时钟方式。本实验采用内部时钟方式,将XTAL1与XTAL2之间跨接一个石英晶振和微调电容,从而构成一个稳定的自激震荡器。电容值取30pF左右,其大小将影响震荡频率的高低、振荡器的稳定性和起振的快速性。为减少线间的寄生电容,晶振和电容应尽能安装得与单片机靠近,保证晶振稳定可靠的工作。 另一部分是复位部分。上电自动复位电路是最简单的复位电路,只需要一个1K左右电阻、一个22pF左右的电容及12MHZ的晶振。有时还需要按键手动复位,此时只要在电容上并联一个按键即可。 单片机信号输出采用串行输出,因此在下一模块的移位寄存器要与该部分的串行口P3.0(RXD)及P3.1(TXD)相连其图形如下图图一 单片机接线图 图二 单片机管脚图(2)点阵及其驱动部分点阵显示用是动的态扫描来实现的。在采用扫描方式显示时,由于每行要带动十六个二极管,每行电流较大。若每个二极管安5mA计算,十六个二极管就得80mA电流,超出单片机管脚的承受范围,因此每行都加有一个驱动器,本设计的行驱动用的是十六个pnp型三极管。三极管的发射极接5V电压,集电极接点阵的行线,而其基级本应接单片机,但该接线方式占用为了16个单片机管脚,为了节省单片机管脚,用了一片74LS154译码器,这样就只需要3个管脚了。74LS154的管脚图及其说明如图三。点阵及其驱动部分总体接线图如图五(未画完整)各行的同名列共用一个列驱动,数据通常存储在单片机的存储器中,按8位一个字节的形式存放。由于列线过多,故多采用串行传输。由于每次要传输16位,而且数据要逐位输给驱动器,只有当一行中各列数据都已传输到位后,这一行的各列才能进行并行显示,耗时较长。为了满足以上要求,驱动选择74LS595移位寄存器。74HC595是硅结构的CMOS器件,。74HC595是有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。其特点:8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态; 输出寄存器可以直接清除 100MHz的移位频率。输出能力: 并行输出,总线驱动;串行输出;标准中等规模集成电路 。 74LS595的管脚图及其说明如图四。对3个输入信号进行译码。得到8个输出状态。 G1,G2A,G2B,为数据允许输出端,G2A,G2B低电平有效。G1高电平有效。A,B,C为译码信号输出端,Y0Y7为译码输出端,低电平有效 图三 74LS154管脚图管脚及其说明:QA-QH: 八位并行输出端。QH: 级联输出端。SI: 串行数据输入端。74595的控制端说明:/SCLR(10脚): 低点平时将移位寄存器的数据清零。SCK(11脚):上升沿时数据寄存器的数据移位。QA-QB-QC-.-QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。(5V时,大于几十纳秒就行了),更新显示数据。/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。 图四: 74LS595管脚图图五 点阵及其驱动2.4总体设计方案方案一:本设计所使用的1616的点阵,EDA实验箱上有其接口电路,列选信号为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,从左起为第一列,列选信号是由一个4位向量SEL3.0控制;行选信号为H0H15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。例如“0000”表示第0列,“0000000000000001”表示第一行的点亮。由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。例如要使第一列的2,4,6,8,行亮,则列为“0001”、行为“0000000010101010”就可以实现了。方案二:VHDL程序设计的是硬件,他和编程语言的最大区别是它可以“并发执行”。本设计可以将LED显示屏要的显示内容抽象成一个二维数组(数组中的1对映点阵显示屏上面的亮点),用VHDL语言设计一个进程将这个数组动态显示在LED显示屏上,再利用另一个进程对这个数组按一定频率进行数据更新,更新的方式可以有多种。因为两个进程是同时进行的(并发执行),如果对数组中的汉字数据按滚动的方式更新,则可实现汉字的滚动显示。如图2-1为该方案原理图。更新数组数据二维数组动态显示图六 方案二原理图2.5 LED的显示原理1616扫描LED点阵的工作原理同8位扫描数码管类似。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。 通过时钟的每列扫描显示完整汉字。 图七 LED灯红绿信号 图八 1616点阵LED等效电路点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描(2)行扫描(3)列扫描若使用第一种方式,其扫描频率必须大于1664=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于168=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。第三章 软件设计3.1汉字的存储用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成1616共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以3216的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。 图2-4 1616LED点阵模块3.2 汉字显示汉字显示使用的是1616的点阵,EDA实验箱上有其接口电路,列选信号为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,从左起为第一列,列选信号是由一个4位向量SEL3.0控制;行选信号为H0H15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。例如“0000”表示第0列,“0000000000000001”表示第一行的点亮。由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。例如要使第一列的2,4,6,8,行亮,则列为“0001”、行为“0000000010101010”就可以实现了。下面是各个部分的程序设计:3.2.1列循环扫描列循环扫描通过对每一列的扫描来完成对字母的现实,只要扫描的频率足够快,就能给人以连续的感觉。因此要控制扫描的频率,不能太低,否则,就会造成视觉上的不连续,本设计的扫描频率不得低于50Hz,扫描程序如下:17Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;Entity dz_xs is Port(enable,clk:in std_logic; -端口定义 输入信号 Sel:out std_logic_vector(3 downto 0); -端口定义 输出信号End dz_xs;Architecture count of dz_xs is Signal lie:std_logic_vector(3 downto 0);BeginProcess(clk,enable) -脉冲、使能信号beginIf clkevent and clk=1thenIf enable=1 thenIf lie0000 then Lie=lie-0001;Else Lie=1111;End if; End if;End if;SelCase lie is -“王”字设计When 0011=h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00000000;h8Case lie is -“日”字设计When0101=h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00000000;h8Case lie is -“田”字设计 When0100=h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00000000;h8Case lie is -“口”字设计When0101=h0=00011111;h8h0=00010000;h8h0=00010000;h8h0=00010000;h8h0=00010000;h8h0=00010000;h8h0=00011111;h8h0=00000000;h8h0=00000000;h8=00000000; End case; End if; End if;End process;3.2.3字母循环扫描及期间的延时环节为使字母不断地循环显示,并且使每个字母之间有停顿,就需要在中间加一定的延时和循环环节。在这一环节中,可以通过修改其数值来控制每个字母的显示时间。其程序如下:process(clk) variable int: integer range 0 to 10000;begin if clkevent and clk=1then if int10000 then int:=int+1; elseint:=0; if next1=”11”thennext1=”00”; elsenext10000 then Lie=lie-0001;Else Lie=1111;End if; End if;End if;SelCase lie is When 0011=h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00000000;h8Case lie is When0101=h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00000000;h8Case lie is When0100=h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00010001;h8h0=00010001;h8h0=00010001;h8h0=00011111;h8h0=00000000;h8Case lie is When0101=h0=00011111;h8h0=00010000;h8h0=00010000;h8h0=00010000;h8h0=00010000;h8h0=00010000;h8h0=00011111;h8h0=00000000;h8h0=00000000;h8=00000000; End case; End if; End if;End p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论