4位7段数码管驱动电路设计要求
- 格式:doc
- 大小:111.50 KB
- 文档页数:3
电子课程设——加减法运算电路设计¥学院:电信息工程学院;专业:电气工程及其自动化班级:姓名:学号:指导老师:闫晓梅2014年12月 19日加减法运算电路设计一、设计任务与要求#1.设计一个4位并行加减法运算电路,输入数为一位十进制数,2.作减法运算时被减数要大于或等于减数。
灯组成的七段式数码管显示置入的待运算的两个数,按键控制运算模式,运算完毕,所得结果亦用数码管显示。
4.系统所用5V电源自行设计。
二、总体框图1.电路原理方框图:%图2-1二进制加减运算原理框图2.分析:如图1-1所示,第一步置入两个四位二进制数(要求置入的数小于1010),如(1001)2和(0111)2,同时在两个七段译码显示器上显示出对应的十进制数9和7;第二步通过开关选择运算方式加或者减;第三步,若选择加运算方式,所置数送入加法运算电路进行运算,同理若选择减运算方式,则所置数送入减法运算电路运算;第四步,前面所得结果通过另外两个七段译码器显示。
例如:若选择加法运算方式,则(1001)2+(0111)2=(10000)2十进制9+7=16,并在七段译码显示器上显示16;若选择减法运算方式,则(1001)2-(0111)2=(00010)2十进制9-7=2,并在七段译码显示器上显示02。
三、选择器件~1.器件种类:}^表3-12.重要器件简介:(1)[(2). 4位二进制超前进位加法器74LS283:完成加法运算使用该器件。
1).74LS283 基本特性:供电电压:输出高电平电流:输出低电平电流: 8mA。
2).引脚图:图3-1引出端符号:A1–A4 运算输入端B1–B4 运算输入端《C0 进位输入端∑1–∑4 和输出端C4 进位输出端3).逻辑符号:图3-2 4).内部原理图:-图3-3 5).功能表:表3-2(3)异或门:74LS861).引脚图: 2).逻辑符号:、图3-4 图3-53). 逻辑图:图3-6·4).真值表:表3-3分析:异或:当AB不相同时, 结果才会发生。
实验一:数字逻辑——交通灯系统设计子实验1:7 段数码管驱动电路设计(1)理解利用真值表的方式设计电路的原理;(2)利用Logisim 真值表自动生成电路的功能,设计一个 7 段数码管显示驱动。
二、实验方案设计7 段数码管显示驱动的设计方案:(1)输入:4 位二进制(2)输出:7 段数码管 7 个输出控制信号(3)电路引脚:(4)实现功能:利用 7 段数码管显示 4 位二进制的 16 进制值(5)设计方法:由于该实验若直接进行硬件设计会比较复杂,而7 段数码管显示的真值表较容易掌握,所以我们选择由真值表自动生成电路的方法完成该实验。
先分析设计 7 段数码管显示驱动的真值表,再利用Logisim 中的“分析组合逻辑电路”功能,将真值表填入,自动生成电路。
(6)真值表的设计:由于是 4输入 7输出,真值表共有 16 行。
7输出对应 7个引脚,所以需要依次对照LED 灯的引脚顺序进行设计,如下图所示(注意LED 的引脚顺序):三、实验步骤(1)在实验平台下载实验框架文件RGLED.circ;(2)在Logisim 中打开RGLED.circ 文件,选择数码管驱动子电路;(3)点击“工程”中的“分析组合逻辑电路”功能,先构建4输入和7输出,再在“真值表”中,将已设计好的真值表的所有数值仔细对照着填入表格中,确认无误后点击“生成电路”,自动生成的电路如下图所示:(4)将子电路封装为如下形式:(5)进行电路测试:·自动测试在数码管驱动测试子电路中进行测试;·平台评测自动测试结果满足实验要求后,再利用记事本打开RGLED.circ 文件,将所有文字信息复制粘贴到Educoder 平台代码区域,点击评测按钮进行测试。
四、实验结果测试与分析(1)自动测试的部分结果如下:(2)平台测试结果如下:综上,本实验测试结果为通过,无故障显示。
本实验的关键点在于:在设计时需要格外注重LED 灯的引脚顺序,保证0-9 数字显示的正确性,设计出正确的真值表。
数码显示电路的设计概要1.数字信号输入:2.解码器:解码器是数码显示电路中的核心部件。
它将输入的数字信号转换为七段数码管所需的控制信号。
解码器一般有常见的BCD(二进制编码十进制)解码器和十六进制解码器等。
解码器可以采用组合逻辑电路或者查找表的形式实现。
3.驱动器:驱动器用于对七段数码管进行驱动,使其显示所需的数字。
它一般由锁存器和驱动线路组成。
驱动器将解码器的输出信号转换为适合七段数码管的电平和电流。
驱动器需要考虑驱动线路的阻抗匹配和适当的驱动电流限制。
4.七段数码管:七段数码管是数码显示电路的输出部件,用于显示数字。
它由七个LED(发光二极管)和一个小数点组成。
每个LED表示一个数字的一个段。
通过对不同的LED进行组合,可以显示0-9的十个数字和一些字母以及特殊符号。
七段数码管的选型需根据设计的需求来选择合适的型号。
5.电源:6.其他辅助部件:根据具体设计需求,还可以添加一些辅助部件来实现特定功能,如锁存器、显示刷新电路、亮度控制电路、自动亮度调节电路等。
在数码显示电路的设计过程中,需要充分考虑信号的稳定性、电路的稳定性、功耗和成本等方面的因素。
同时,还需要正确配合各个模块的参数,调整各种电阻、电容和放大器增益等参数,以实现期望的性能和功能。
总结起来,数码显示电路是一种用于将数字信号转换为可见的数码显示的电子电路。
它主要由数字信号输入、解码器、驱动器、七段数码管和电源等部件组成。
在设计数码显示电路时,需要注意信号的稳定性、功耗、成本和相互配合等方面的因素。
设计过程中需要充分考虑各种参数和调整合适的电路元件,以实现所需的性能和功能。
七段数码管驱动电路设计说起这七段数码管驱动电路设计,咱们得先来聊聊它是个啥宝贝。
想象一下,那些电子钟、计算器上闪烁的数字,还有咱们游戏机上计分用的那些酷炫数字,它们背后可都离不开这七段数码管的默默付出。
今儿个,咱们就来手把手,用大白话聊聊怎么给这七段数码管搭个温馨的小窝,让它能在咱的电路世界里大放异彩。
一、初探七段数码管首先,咱们得认识这位主角——七段数码管。
它呀,就像是个简约版的霓虹灯,由七条线段(a到g)和一个小数点组成,通过不同的组合,能显示出0到9这十个数字,外加一些简单的字符。
想象一下,这七条线段就像是小朋友手里的画笔,一笔一划地勾勒出数字的模样,多有趣!1.1 挑选合适的数码管挑数码管,得看看它是共阳极的还是共阴极的。
这就像选房子,有的房子阳台朝南采光好(共阳极),有的则朝北凉爽些(共阴极)。
选对了,后续设计才省心。
1.2 理解工作原理数码管工作的秘密在于电流。
咱们通过控制哪些线段通电,哪些不通电,来“画”出不同的数字。
这就像是在玩灯光秀,开灯关灯之间,数字就活灵活现地出现了。
二、设计驱动电路接下来,就是给数码管找个好搭档——驱动电路。
这就像是给数码管找了个司机,告诉它啥时候该亮,啥时候该暗。
2.1 选择驱动芯片市面上有好多驱动芯片,比如74HC595、TM1637等,它们就像是不同类型的汽车,有的省油(功耗低),有的跑得快(驱动能力强)。
咱们得根据实际需求,挑个最合适的。
2.2 搭建电路框架搭电路就像搭积木,把电源、驱动芯片、数码管还有必要的电阻电容按规矩摆好。
电源是心脏,驱动芯片是大脑,数码管是显示屏,电阻电容则是调节器,保证电路稳定运行。
2.3 编程控制电路搭好了,还得给它编个程序,告诉它怎么工作。
这就像是在教小朋友跳舞,一步步指导它怎么迈步、转身。
编程时,咱们得设定好每个数字对应的线段组合,让数码管能按咱们的意愿显示。
三、调试与优化电路搭完,程序编好,接下来就是见证奇迹的时刻了。
这里介绍一下7段数码管见下图
7段数码管又分共阴和共阳两种显示方式。
如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。
如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。
共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。
无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。
发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!
对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数!
三位共阳数码管管脚图以及封装尺寸
四位数码管引脚图以及封装尺寸
六位数码管引脚图。
共阴极七段数码管的驱动共阴极七段数码管是一种常见的显示器件,在各行业中广泛应用。
其原理是通过对不同的阴极进行通断控制,使显示器显示出不同的数字或字母。
本文将介绍如何驱动共阴极七段数码管。
第一步:基本部件准备驱动共阴极七段数码管需要一些基本的部件,其中包括Arduino 开发板、面包板、七段数码管、电阻等。
要进行正确的驱动,首先需要按照电路图连接好这些部件。
第二步:代码编写在连接好以上部件之后,需要写出相应的代码来驱动七段数码管。
以下代码可以实现数字0~9的显示。
```void setup(){pinMode(2, OUTPUT);pinMode(3, OUTPUT);pinMode(4, OUTPUT);pinMode(5, OUTPUT);pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);}void loop(){digitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(4, LOW);digitalWrite(5, LOW);digitalWrite(7, LOW);digitalWrite(8, LOW);digitalWrite(2, HIGH); digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH);digitalWrite(6, HIGH);digitalWrite(7, HIGH);digitalWrite(8, HIGH);// 显示数字0digitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(4, LOW);digitalWrite(5, LOW);digitalWrite(6, LOW);digitalWrite(7, LOW);digitalWrite(8, HIGH);delay(2000);// 显示数字1digitalWrite(2, HIGH);digitalWrite(3, LOW);digitalWrite(4, LOW);digitalWrite(5, HIGH);digitalWrite(6, HIGH);digitalWrite(7, HIGH);digitalWrite(8, HIGH);delay(2000);// 显示数字2digitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); digitalWrite(8, LOW);delay(2000);// 显示数字3digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, LOW);delay(2000);// 显示数字4digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, LOW); digitalWrite(8, LOW);delay(2000);// 显示数字5digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, LOW);delay(2000);// 显示数字6digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW);delay(2000);// 显示数字7digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH);delay(2000);// 显示数字8digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW);delay(2000);// 显示数字9digitalWrite(2, LOW);digitalWrite(4, LOW);digitalWrite(5, HIGH);digitalWrite(6, HIGH);digitalWrite(7, LOW);digitalWrite(8, LOW);delay(2000);}```第三步:运行测试将写好的代码上传到Arduino开发板,让其运行,可以看到七段数码管上显示数字0~9,每个数字停留2秒钟。
实验一、组合电路——7段数码管显示驱动电路设计一、实验目的了解EDA实验箱7位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。
二、硬件要求主芯片为Cyclone V E,型号为EP4CE22F17C8,7位八段数码管显示器,四位拨码开关。
三、实验内容用四位拨码开关产生8421BCD码,用CPLD分别产生7段数码管扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。
四、实验原理1、72、动信号a,b,c,d,e,f,g。
通过调节四位拨码开关的状态,数码管应显示与之对应的字符。
五、实验连线输入:将芯片管角a0~a3分别接4个拨码开关;输出:将芯片管角led7s0~7分别接到数码管7段驱动信号a、b、c、d、e、f、g上。
六、实验源程序:decl7s.vhdlibrary ieee;use ieee.std_logic_1164.all;entity decl7s isport(a:in std_logic_vector(3 downto 0);led7s:out std_logic_vector(6 downto 0));end;architecture one of decl7s isbeginprocess(a)begincase a iswhen "0000" => led7s<="0111111"; when "0001" => led7s<="0000110"; when "0010" => led7s<="1011011"; when "0011" => led7s<="1001111"; when "0100" => led7s<="1100110"; when "0101" => led7s<="1101101"; when "0110" => led7s<="1111101"; when "0111" => led7s<="0000111"; when "1000" => led7s<="1111111"; when "1001" => led7s<="1101111"; when "1010" => led7s<="1110111"; when "1011" => led7s<="1111100"; when "1100" => led7s<="0111001"; when "1101" => led7s<="1011110"; when "1110" => led7s<="1111001"; when "1111" => led7s<="1110001"; when others => null;end case;end process;end;七、波形仿真结果。
4位7段数码管驱动电路
图1 开发板电路原理图
信号说明
1. iRST_N(异步复位)
当iRST_N信号为低时,Seg7_Driver模块中的所有寄存器异步复位为初值。
2. iCLK
模块的输入时钟40MHz。
3. iSeg_Val[15:0]
7段数码管输入二进制值,0x0~0xF
iSeg_Val[15:12],左侧第一位7段数码管的值。
iSeg_Val[11: 8],左侧第两位7段数码管的值。
iSeg_Val[ 7: 4],左侧第三位7段数码管的值。
iSeg_Val[ 3: 0],左侧第四位7段数码管的值。
4. iDot_Val[3:0]
各位7段数码管小数点的显示,值为1表示显示小数点,0表示不显示小数点。
iDot_Val[3],左侧第一位7段数码管的小数点。
iDot_Val[2],左侧第两位7段数码管的小数点。
iDot_Val[1],左侧第三位7段数码管的小数点。
iDot_Val[0],左侧第四位7段数码管的小数点。
5. oDisplay[7:0]
7段数码管的数据信号。
4位7段数码管共用数据信号。
7段数码管为共阳极连接,各段数据线为0时,对应段发光。
6. oDis_En[3:0]
各位7段数码管的使能信号,低有效。
oDis_En[3],左侧第一位7段数码管的使能信号。
oDis_En[2],左侧第两位7段数码管的使能信号。
oDis_En[1],左侧第三位7段数码管的使能信号。
oDis_En[0],左侧第四位7段数码管的使能信号。
建议的分块:
将整个驱动电路分成Seg7_Ctrl模块与Seg7_Hex2seg模块
Seg7_Ctrl模块负责产生数码管动态显示的控制信号oDis_En的时序
Seg7_Hex2Seg模块负责将二进制值转换成数据码管显示的数据值,包括小数点的值。
注意点:
1. 动态显示过程是利用人眼的视觉残留现象来实现的,应选择适当的数码管扫描频率。
可先
选择数码管的扫描显示的刷新率为125Hz(8ms),即每位数码管用2ms。
2. 完成基本功能后,可实验改变刷新率,观察数码管显示的效果,并思考原因。
3. 如果要使得数码管能够显示,A,b,C,n,o等其他字符,模块应该作怎样的修改?。