当前位置:文档之家› 两位数码管显示电路

两位数码管显示电路

两位数码管显示电路
两位数码管显示电路

EDA设计论文

题目

学院

专业班级

学生姓名

指导教师

2016年 1 月 10 日

目录

摘要 .......................................................................................................I Abstract .....................................................................................................II 第1章绪论 (1)

1.1 概述 (1)

1.2 设计的目的 (1)

1.3 设计的基本内容 (1)

第2章EDA、Verilog HDL简介 (2)

2.1 EDA技术 (2)

2.1.1 EDA技术的概念 (2)

2.1.2 EDA技术的特点 (2)

2.1.3 EDA设计流程 (2)

2.2 硬件描述语言(Verilog HDL) (3)

2.2.1 Verilog HDL简介 (3)

2.2.2 Verilog HDL语言的特点 (3)

第3章两位数码管的动态显示电路的设计过程 (4)

3.1 系统需求分析 (4)

3.2 设计原理 (4)

3.3 MAXII晶体管说明 (5)

3.4 编写代码 (6)

3.5 管脚分配 (8)

第4章系统仿真 (9)

结论 (10)

参考文献 (11)

附录 (12)

致谢 (13)

\

摘要

在信息时代的今天,单片机技术应用越来越广泛,涉及各行各业,也渗透到人们的日常生活之中,如洗衣机、空调、冰箱等的控制系统,就可以用单片机实现。为了让人们很直观的了解相关设备当前的工作状态,很多时候需要将当前的时间、温度、工作程序等状态通过数码管显示出来,这就涉及到单片机的数码管显示技术。在实际应用中,单片机的数码管显示,正确、高效应用数码管显示技术设计成功与否的一个关键问题之一。本文介绍了通过学习版开设计两位数码管的显示十六进制数。采用汇编进行编程,可以实现从00到FF的十六进制数的循环显示。在Quartus Ⅱ软件平台上,完成了两位数码管的显示电路的设计。采用Verilog HDL硬件描述语言描述两位数码管的显示电路,完成对电路的功能仿真。

关键词:两位数码管的显示 Quartus Ⅱ状态机循环

Abstract

In the information age today, SCM technology is applied more and more widely, involved in all walks of life, but also penetrate into people's daily life, such as washing machines, air conditioners, refrigerators and other control system, you can with MCU. In order to let people very intuitive understanding of the relevant equipment current state, most of the time to the current time, temperature, and work procedures state through the digital tube display, which involves the MCU digital tube display technology. In practical application, the digital tube display of single chip microcomputer is generally used in dynamic display mode, and it is one of the key problems in the design of dynamic display technology with correct and high efficiency. This paper introduces the dynamic display of the two bit digital tube through the learning version of the sixteen digit number. Assembly for programming, can be achieved from 1 to F sixteen decimal number of automatic display. On Quartus II software platform, the design of dynamic display circuit of two bit digital tube is completed. The HDL Verilog hardware description language is used to describe the dynamic display circuit of two bit digital tube, and the function simulation of the circuit is

completed.Keywords: Dynamic display of multi bit digital tube Quartus ⅡState machine Circulat

第1章绪论

1.1 概述

数码管是一类显示屏通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。由于它的价格便宜,使用简单,在电器特别是家电领域应用极为广泛,空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。然而在信息时代的今天,单片机技术应用越来越广泛,涉及各行各业,也渗透到人们的日常生活之中,如洗衣机、空调、冰箱等的控制系统,就可以用单片机实现。为了让人们很直观的了解相关设备当前的工作状态,很多时候需要将当前的时间、温度、工作程序等状态通过数码管显示出来,这就涉及到单片机的数码管显示技术。数码管显示是一种最常见的多位显示方法,应用非常广泛。

1.2 设计的目的

EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,所以本次设计的目的就是通过实践深入理解计算机组成原理,了解EDA技术并掌握Verilog HDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,通过学习的Verilog HDL语言结合电子电路的设计知识理论联系本次的实习内容—数码管显示电路的设计,掌握所学的课程知识和基本单元电路的综合设计应用,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。

1.3 设计的基本内容

两位数码显示是将所有数码管的8段按同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,显示数码同时传到每个数码管,但每个瞬时由位选通信号选通一个数码管,即在某一瞬时只有一个数码管显示数据,且显示时间不能太长,一般为1-10MS,依次循环扫描,轮流显示。

第2章 EDA、Verilog HDL简介

2.1 EDA技术

2.1.1 EDA技术的概念

EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

2.1.2 EDA技术的特点

利用EDA技术进行电子系统的设计,具有以下几个特点:①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。

2.1.3 EDA设计流程

1、文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本或图形方式表达出来。

2、编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。

3、综合。将软件设计与硬件的可实现性挂钩,是将软件转化为硬件电路的关键步骤。

4、行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。

5、适配。利用FPGA/CPLD布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。

6、功能仿真和时序仿真。

7、下载。如果以上的所有过程都没有发现问题,就可以将适配器产生的下载文件通过FPGA/CPLD下载电缆载入目标芯片中。

8、硬件仿真与测试。

2.2 硬件描述语言

2.2.1 Verilog HDL简介

Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。

Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。

2.2.2 Verilog HDL语言的特点

1.既能用于电路设计的综合,又可以用于模拟仿真。

2.能够在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级到行为级等,语言不对设计的规模施加任何限制。

3.灵活多样的电路描述风格,可进行行为描述,也可进行结构描述或数据流描述;支持混合建模在一个设计中各个模块可以在不同的设计层次上建模和描述。

第3章 两位数码管的显示电路

3.1 系统需求分析

1) 计数电路采用十六进制,从00开始到FF 后再回到00。

2) 各用2位数码管显示。

3) 具有自动开始和手动暂停功能。

4) 为了保证计数的稳定及准确,须由晶体振荡器提供数字基准信号

3.2 设计原理

如图4.9-1所示,LED 数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp 表示),用于显示小数点。通过七段发光二极管亮

暗的不同组合,可以显示多种数字、字母以及其它符号。LED 数码管中的发光二极管共有两种连接方法:

1) 共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED 显示器为共阴极接法

2) 共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V 。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。

为了显示数字或符号,要为LED 显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED 显示器的字形代码正好一个字节。若a 、b 、c 、d 、e 、f 、g 、dp 8

个显示段依次

对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则

用共阴极LED 数码管显示十六进制数时所需的字形代码如表3.2-1所示。

表3.2-1 共阴极LED 数码管字形代码

3.3 MAXII 晶体管说明

7 段数码管(不算小数点)的原理也很简单,它无非是由 7 个发光二极管组

成。这 7 个发光二极管有一个公共端,必须接 GND (共阴极数码管)或者接 VCC (共阳极数码管)。对 7 个二极管的另一端进行控制,相应的就能控制他们的亮

暗。 不同的亮暗组合就产生了数字 0-9 的显示效果。 若希望数码管显示某个数字, 只要给数码管的 7 个段选接口送相应的译码信号即可。

如图 3.3-1 所示,两个共阴数码管 SM4205 的段选和位选与 CPLD 的 I/O 连接。 带小数点的共阴极数码管对应的段选如图3.3-2 所示

图3.3-1 图

3.3-2

3.4 编写代码

module led_seg7(clk,rst_n,sm_cs1_n,sm_cs2_n,sm_db);

input clk; // 50MHz

input rst_n; // 复位信号,低有效

output sm_cs1_n,sm_cs2_n; //数码管片选信号,低有效

output[6:0] sm_db; //7 段数码管(不包括小数点)

reg[24:0] cnt; //计数器,最大可以计数到 2 的 25 次方*20ns=640ms always @ (posedge clk or negedge rst_n)

if(!rst_n) cnt <= 25'd0;

else cnt <= cnt+1'b1; //循环计数

reg[3:0] num; //显示数值

always @ (posedge clk or negedge rst_n)

if(!rst_n) num <= 4'd0;

else if(cnt == 24'hffffff) num <= num+1'b1; //每(大约)640ms 增一

//-------------------------------------------------------------------------------

/* 共阴极 :不带小数点

;0, 1, 2, 3, 4, 5, 6, 7,

db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h

;8, 9, a, b, c, d, e, f , 灭

db 7fh,6fh,77h,7ch,39h,5eh,79h,71h,00h*/

parameter seg0 = 7'h3f,

seg1 = 7'h06,

seg2 = 7'h5b,

seg3 = 7'h4f,

seg4 = 7'h66,

seg5 = 7'h6d,

seg6 = 7'h7d,

seg7 = 7'h07,

seg8 = 7'h7f,

seg9 = 7'h6f,

sega = 7'h77,

segb = 7'h7c,

segc = 7'h39,

segd = 7'h5e,

sege = 7'h79,

segf = 7'h71;

reg[6:0] sm_dbr; //7 段数码管(不包括小数点)

always @ (num)

case (num) //NUM 值显示在两个数码管上

4'h0: sm_dbr <= seg0;

4'h1: sm_dbr <= seg1;

4'h2: sm_dbr <= seg2;

4'h3: sm_dbr <= seg3;

4'h4: sm_dbr <= seg4;

4'h5: sm_dbr <= seg5;

4'h6: sm_dbr <= seg6;

4'h7: sm_dbr <= seg7;

4'h8: sm_dbr <= seg8;

4'h9: sm_dbr <= seg9;

4'ha: sm_dbr <= sega;

4'hb: sm_dbr <= segb;

4'hc: sm_dbr <= segc;

4'hd: sm_dbr <= segd;

4'he: sm_dbr <= sege;

4'hf: sm_dbr <= segf;

default: ;

endcase

assign sm_db = sm_dbr;

assign sm_cs1_n = 1'b0; //数码管 1 常开

assign sm_cs2_n = 1'b0; //数码管 2 常开

endmodule

设计中用了一个计数器进行定时,每个定时周期显示的数据递增,而相应的译码逻辑触发后,译码输出数据就发生变化,从而改变数码管显示的数值。

3.5 管脚分配

图3.5-1 管脚分配图

第4章系统仿真

当程序汇编的过程结束,我们就可以松一口气了,这算是设计完成了一大步。接下来的任务就是系统的仿真。

quartus自带仿真验证功能,整过过程中可能出现的疏忽,错误在这里都可以找出来。我们再根据软件的提示惊醒进一步的改正,因为本次课程设计代码比较简单,在几次仿真后只有一点点的小错误加以改正就可以进行程序的录入过程了。下图为最终的图形结构:

图4.1-1 代码的图形语言

结论

经过对不同方案的分析、比较、取舍,然后进行原理图的设计与仿真,再经过电路板的焊接,软件的调试等环节的操作,最终实现了让数码管在单片机的控制下循环显示两位数00-FF。并且在正常的计数过程中,若按下复位键后,技术又重新从00开始计数。最终现实的结果与预想的结果一致。

通过这次两位数码管显示设计的实习,我受益匪浅,这次实习加深了我对单片机的认识,让我更加清楚了单片机的工作过程,我较系统地、全面地掌握单片机应用系统的基本设计方法,设计步骤。此外,我学会了在遇到一些不懂的课外知识主动查找一些课外书来了解更多的知识。这次实习增强了我的动手能力,也让我对以前所学的知识进行了复习,更加熟练掌握了原理图的设计与仿真方法,了解仿真电路的调试过程及应注意的问题,能用硬件描述语言进行软件的编写与调试。

参考文献

相关主题
文本预览
相关文档 最新文档