单片机项目设计单片机按键控制数码管管显示 系统启动后数码管显示0.0000001,按一下键依次增加

蜂鸟手机端
焦圈,为摄影而生
&&C51单片机4*4按键计算器 数码管上只显示结果的 P2口是某一位P0口是数码管显示P3口是4*4键盘
我以前做的,你可以参考一下:KEYVAL EQU 30HKEYTM EQU 31HKEYSCAN EQU 32HDAT EQU 33HSCANLED EQU 37HS_DAT EQU 38HD_DAT EQU 39HR_DATL EQU 3AHR_DATH EQU 3BHCALFLAG EQU 3CHFLAG BIT 00HORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV SP,#5FHMOV TMOD,#01HMOV TH0,#0D8HMOV TL0,#0F0HMOV KEYVAL,#0MOV P2,#00HMOV SCANLED,#0MOV 33H,#0HMOV 34H,#0HMOV 35H,#0HMOV 36H,#0HMOV S_DAT,#0MOV D_DAT,#0CLR FLAGSETB EASETB ET0SETB TR0LOOP:LCALL KEYSELMOV A,KEYVALCJNE A,#0FFH,LOOP1SJMP LOOPLOOP1:CJNE A,#11,LOOP2 ;&=&MOV A,33HMOV B,#10MUL ABADD A,34HMOV D_DAT,ALCALL DEALDATLCALL HB2MOV A,R5ANL A,#0FHMOV 34H,AMOV A,R5SWAP AANL A,#0FHMOV 33H,AMOV A,R4ANL A,#0FHMOV 36H,AMOV A,R4SWAP AANL A,#0FHMOV 35H,ASJMP LOOPLOOP2:CJNE A,#15,LOOP3 ;&+&LCALL GETDATSJMP LOOPLOOP3:CJNE A,#14,LOOP4 ;&-&MOV CALFLAG,#1LCALL GETDATSJMP LOOPLOOP4:CJNE A,#13,LOOP5 ;&*&MOV CALFLAG,#2LCALL GETDATSJMP LOOPLOOP5:CJNE A,#12,LOOP6 ;&/&MOV CALFLAG,#3LCALL GETDATSJMP LOOPLOOP6:CJNE A,#10,LOOP7 ;数字键LOOP7:JC LOOP8LJMP LOOPLOOP8:MOV 33H,34HMOV 34H,KEYVALLJMP LOOP;------------------HB2:MOV R6,R_DATHMOV R7,R_DATLCLR A ;BCD码初始化MOV R3,AMOV R4,AMOV R5,AMOV R2,#10H ;转换双字节十六进制整数HB3:MOV A,R7 ;从高端移出待转换数的一位到 CY 中RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5 ;BCD码带进位自身相加,相当于乘2ADDC A,R5DA A ;十进制调整MOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,AMOV A,R3ADDC A,R3MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整DJNZ R2,HB3 ;处理完16bitRET;------------------GETDAT:MOV A,33HMOV B,#10MUL ABADD A,34HMOV S_DAT,AMOV 33H,#0MOV 34H,#0MOV 35H,#0MOV 36H,#0RET;------------------DEALDAT:MOV A,CALFLAGJNZ DEAL01DEAL00: ;+MOV A,S_DATADD A,D_DATMOV R_DATL,ACLR AADDC A,#0MOV R_DATH,ARETDEAL01: ;=DEC AJNZ DEAL02CLR CMOV A,S_DATSUBB A,D_DATMOV R_DATL,ASUBB A,#0MOV R_DATH,ARETDEAL02: ;*DEC AJNZ DEAL03MOV A,S_DATMOV B,D_DATMUL ABMOV R_DATL,AMOV R_DATH,BRETDEAL03: ;/MOV A,S_DATMOV B,D_DATDIV ABMOV R_DATL,AMOV R_DATH,#0RET;------------------KEYSEL:MOV KEYVAL,#0MOV KEYSCAN,#0EFHLCALL GETKEYMOV A,KEYTMJZ KEYS1MOV KEYVAL,ASJMP KEYRTNKEYS1:MOV KEYSCAN,#0DFHLCALL GETKEYMOV A,KEYTMJZ KEYS2CLR CADD A,#4MOV KEYVAL,ASJMP KEYRTNKEYS2:MOV KEYSCAN,#0BFHLCALL GETKEYMOV A,KEYTMJZ KEYS3CLR CADD A,#8MOV KEYVAL,ASJMP KEYRTNKEYS3:MOV KEYSCAN,#7FHLCALL GETKEYMOV A,KEYTMJZ KEYRTNCLR CADD A,#12MOV KEYVAL,AKEYRTN:LCALL CHGKEYRET;--------------------GETKEY:MOV KEYTM,#0MOV A,KEYSCANMOV P3,ANOPMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEYMOV R2,#10LCALL DELAYMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEYMOV A,P3ANL A,#0FHMOV R7,ASF:MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SFMOV A,R7CJNE A,#0EH,NK1MOV KEYTM,#1SJMP NOKEYNK1:CJNE A,#0DH,NK2MOV KEYTM,#2SJMP NOKEYNK2:CJNE A,#0BH,NK3MOV KEYTM,#3SJMP NOKEYNK3:CJNE A,#07H,NOKEYMOV KEYTM,#4NOKEY: RET;--------------------DELAY:MOV R3,#50DELAY1:MOV R4,#100DJNZ R4,$DJNZ R3,DELAY1DJNZ R2,DELAYRET;--------------------T0ISR:PUSH ACCCLR TR0MOV TH0,#0D8HMOV TL0,#0F0HSETB TR0MOV DPTR,#LEDTABT000: ;数字显示MOV R0,#DATMOV A,SCANLEDADD A,R0MOV R0,AMOV A,SCANLEDJNZ T001MOV P2,#01HSJMP T0DIST001:DEC AJNZ T002MOV P2,#02HSJMP T0DIST002:DEC AJNZ T003MOV P2,#04HSJMP T0DIST003:MOV P2,#08HT0DIS:MOV A,@R0MOVC A,@A+DPTR; CPL AMOV P0,AINC SCANLEDMOV A,SCANLEDANL A,#03HMOV SCANLED,APOP ACCRETI;--------------------CHGKEY:MOV A,KEYVALJZ KV16DEC AJNZ KV01MOV KEYVAL,#7RETKV01:DEC AJNZ KV02MOV KEYVAL,#4RETKV02:DEC AJNZ KV03MOV KEYVAL,#1RETKV03:DEC AJNZ KV04MOV KEYVAL,#10RETKV04:DEC AJNZ KV05MOV KEYVAL,#8RETKV05:DEC AJNZ KV06MOV KEYVAL,#5RETKV06:DEC AJNZ KV07MOV KEYVAL,#2RETKV07:DEC AJNZ KV08MOV KEYVAL,#0RETKV08:DEC AJNZ KV09MOV KEYVAL,#9RETKV09:DEC AJNZ KV10MOV KEYVAL,#6RETKV10:DEC AJNZ KV11MOV KEYVAL,#3RETKV11:DEC AJNZ KV12MOV KEYVAL,#11 ;=RETKV12:DEC AJNZ KV13MOV KEYVAL,#12 ;/RETKV13:DEC AJNZ KV14MOV KEYVAL,#13 ;*RETKV14:DEC AJNZ KV15MOV KEYVAL,#14 ;-RETKV15:DEC AJNZ KV16MOV KEYVAL,#15 ;+RETKV16:MOV KEYVAL,#0FFHRET;--------------------LEDTAB:DB 0C0H ;&0& 00HDB 0F9H ;&1& 01HDB 0A4H ;&2& 02HDB 0B0H ;&3& 03HDB 99H ;&4& 04HDB 92H ;&5& 05HDB 82H ;&6& 06HDB 0F8H ;&7& 07HDB 80H ;&8& 08HDB 90H ;&9& 09HDB 88H ;&A& 0AHDB 83H ;&B& 0BHDB 0C6H ;&C& 0CHDB 0A1H ;&D& 0DHDB 86H ;&E& 0EHDB 8EH ;&F& 0FHDB 0FFH ;& & 10H;--------------------END
器材讨论区
品牌讨论区
主题交流区
选择论坛版块
提出您的问题您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
4位数码管实验报告(共10篇).doc 26页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
4位数码管实验报告(共10篇)
你可能关注的文档:
··········
··········
4位数码管实验报告(共10篇)
实验四LED数码管显示程序报告
实验名称LED数码管显示程序
指导教师专业班级姓名
学号 联系电话
一、任务要求
实验内容:利用C单片机控制数码管显示器 基本要求:
利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
提高要求:
在数码管上显示0→1999计数,计数间隔为0.5秒,KINT键可开启10倍加速。
二、设计思路
基础部分:选中末位数码管,将对应数值输入P1显示,TO控制延时
提高部分:通过对P0.6、P0.7赋予不同的值,进行位选管。再将对应的数字输入显示管中,点亮。TO控制延时。KINT键开启加速。
三、资源分配
标准部分:R0-数码管计数器
数据表TABLE-存储对应段码的值
提高部分:R1-TH0初值
R2-TLO初值
R3-判断标志位,选择对应的数码管亮
R4、R5、R6、R7对应数位显示计数器
R0-数码管计数器
数据表TABLE-存储对应段码的值
KINT-加速键
四、流程图
1、 基础部分
2、 提高部分
3、 ITOP中断部分
4、 IT1P部分
篇二:实验四 七段数码管显示实验报告
实验四 七段数码管显示实验
一、 实验目的
掌握数码管显示数字的原理。
二、 实验内容
1. 静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B口PB0~PB3与七段数码管LED3的BCD码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。编程从键盘上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。
2. 动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。编程在8个数码管上显示“”。按任意键推出运行。
三、 编程提示
1. 由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。
2. 对实验内容1,七段数码管字型代码与输入的关系如下
四、 参考流程图
1. 实验内容一的参考流程图
2. 实验内容二的参考流程图
五、 参考程序
1. 内容一的参考程序 源程序清单如下:
篇三:湖南工业大学单片机实验报告 4数码管显示实验
实验四、数码管显示实验
一、 实验目的
学会数码管动态扫描显示方法
二、 实验设备
PC机、Keil 软件、Proteus软件。
三、 实验要求
1. 设计一个0-20计数器,计满后自动清0并重新计数
2. 将计数结果用两个数码管显示
四、 实验内容
运用Keil和Proteus软件进行编程和电路设计,最后进行仿真。
五、 实验程序解析
--------------------------------------------------------------
;初始化程序
;--------------------------------------------------------------
INTI: MOV 20H,#00H
MOV disdata1 , #00H第一个数码管
MOV disdata2 , #00H
MOV disdata3 , #00H
MOV disdata4 , #00H ;第四个数码管 disdata1
DATA 50H;第一个数码管(右边开始) disdata2
DATA 51H ;第二个数码管 disdata3
;第三个数码管 disdata4
DATA 53H ;第四个数码管 disdata5
DATA 54H disdata6
DATA 55H disda
正在加载中,请稍后...51单片机数码管显示亮度的按键控制设计
[问题点数:20分]
本版专家分:0
CSDN今日推荐
本版专家分:827
本版专家分:827
本版专家分:827
本版专家分:300
结帖率 86.36%
匿名用户不能发表回复!|
CSDN今日推荐查看: 8351|回复: 0
单片机最小系统_按键控制数码管显示
& & 单片机最小系统_按键控制数码管显示,这个项目,主要学习单片机的键盘工作原理与显示方面的知识,电子小制作的好课题。键盘电路作为单片机的输入部分,数码显示电路作为单片机的输出部分,由键盘电路通过单片机控制数码管显示电路的八路键控数码管电路。按下S0到S7号按键时,数码管显示立刻显示数字0到7。电子制作的好课题下面是单片机最小系统_按键控制数码管显示原理图,实作时,按原理图焊好电路,单片机中写入程序。
& && && &ORG 0000H ;随后的指令代码从0000H单元开始存放。
& && && &LJMP START ;转到标号START处
& && && &ORG 0030H ;随后的指令代码从0030H单元开始存放。
& &START:MOV P0,#00H ;关闭数码管,不显示任何内容。
SAOMIAO:MOV P2,#0FFH ;对P2口所有位写1,也就是处于读状态,确保读数正确。
& && && &CLR A ;对累加器A清零。
& && && &MOV A,P2 ;第一次读取P2口的数据,并送入累加器A中。
& && && &CPL A ;对A按位取反,如果没有键按下, A为00H,如果有键按下,相应的位为1。
& && && &JZ SAOMIAO ;如果A=00H,说明没有键按下,跳到标号SAOMIAO处继续扫描。如果A不等于00H,说明有键按下,应该调用10MS的延时去抖子程序。
& && && &LCALL DELAY10MS ;调用10MS的延时去抖子程序。
& && && &MOV A,P2 ;第二次读取P2口的数据,并送入累加器A中。
& && && &CPL A ;对A按位取反,如果没有键按下, A为00H,如果有键按下,相应的位为1。
& && && &JZ SAOMIAO ;如果A=00H,说明没有键按下,跳到标号SAOMIAO处继续扫描。如果A不等于00H,说明确实有键按下,顺序执行下面的程序,判断是哪个键按下了。
& && && &JB ACC.0,SZ0 ;如果S0键按下,则ACC.0=1,转去执行显示数字0,否则顺序执行。
& && && &JB ACC.1,SZ1 ;如果S1键按下,则ACC.1=1,转去执行显示数字1,否则顺序执行。
& && && &JB ACC.2,SZ 2 ;如果S2键按下,则ACC.2=1,转去执行显示数字2,否则顺序执行。
& && && &JB ACC.3,SZ 3 ;如果S3键按下,则ACC.3=1,转去执行显示数字3,否则顺序执行。
& && && &JB ACC.4,SZ 4 ;如果S4键按下,则ACC.4=1,转去执行显示数字4,否则顺序执行。
& && && &JB ACC.5,SZ 5 ;如果S5键按下,则ACC.5=1,转去执行显示数字5,否则顺序执行。
& && && &JB ACC.6,SZ 6 ;如果S6键按下,则ACC.6=1,转去执行显示数字6,否则顺序执行。
& && && &JB ACC.7,SZ 7 ;如果S7键按下,则ACC.7=1,转去执行显示数字7,否则顺序执行。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描。
& &&&SZ0:MOV P0,#3FH ;显示数字0。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ1:MOV P0,#06H ;显示数字1。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ2:MOV P0,#5BH ;显示数字2。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ3:MOV P0,#4FH ;显示数字3。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ4:MOV P0,#66H ;显示数字4。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ5:MOV P0,#6DH ;显示数字5。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ6:MOV P0,#7DH ;显示数字6。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
& &&&SZ7:MOV P0,#07H ;显示数字7。
& && && &LJMP SAOMIAO;跳转到SAOMIAO处继续扫描按键。
DELAY10MS:MOV R7,#20 ;从本行开始,到RET结束,为10MS延时去抖子程序。
& && &D1:MOV R6,#250
& && &D2:DJNZ R6,D2
& && &DJNZ R7,D1
& & 电子制作的好课题单片机最小系统_按键控制数码管显示,这个项目,主要学习单片机的键盘工作原理与显示方面的知识。
最后推荐一个很好的单片机教程:
& &&&另外下面是一些我收集整理的关于单片机最小系统的资料:
手把手制作单片机最小系统
初学者零基础学习单片机的方法:
单片机点亮发光二极管的试验
STC89C52RC单片机最小系统
一款适合用来学习的单片机最小系统制作图
单片机最小系统_按键控制数码管显示
单片机最小系统图纸
收集的单片机最小系统实物照片
用STC89C52RC单片机焊接的单片机最小系统
新手学焊的单片机最小系统:
共享资料的黑币奖励!
Powered byCPLD设计的数码管驱动显示电路-可编程逻辑-与非网
&设计的驱动显示电路
1.1 显示原理:
八段数码显示管如图1.1 所示,八段数码管每一段为一发光二极管,共有a~g 以及小数点dp 八个发光二极管。将八段数码管中的每个二极管的阴极并联在一起,组成公端。这样把共阴极管脚接地,此时哪个管脚输入高电平,对应发光二极管就被点亮。
图 1.1 八段数码显示管
CL5461AS 数码管管脚图如图1.2 所示,它将四个数码显示管的a~g 及小数点dp 管脚并联在一起,作为数码管数据输入端;分别引出各个数码管的阴极A1~A4。
图1.2 CL5461AS 数码管管脚图
只要在A1~A4 管脚上轮流加低电平其频率大于40Hz,可实现四个数码管同时被点亮的视觉效果。在点亮不同数码管的同时输入不同的数据,即可在数码管上同时显示四位不同的数字。例如:四个数码管要显示9876 数字。第一个数码管A1 加低电平,其余A2、A3、 A4高电平,同时数码管输入和9 对应的数据;然后第二个数码管A2 加低电平,其余A1、A3 、A4 高电平,同时数码管输入和8 对应的数据;然后第三个数码管A3 加低电平,其余A1、A2 、A4 高电平,同时数码管输入和7 对应的数据;然后第四个数码管A4 加低电平,其余A1、A2 、A3 高电平,同时数码管输入和6 对应的数据;周而复始重复上述过程,四个数码管就显示9876 数字。
1.2 驱动八位数码管显示电路框图
用CPLD 设计一个驱动八位数码管显示电路。八位数码管管脚图如图1.2 所示。
用两个CL5461AS 数码管接成一个八位数码管显示,将两个CL5461AS 数码管的a~g 及小数点dp 管脚并联在一起,两个CL5461AS 数码管的阴极A1~A4 定义为Vss0、Vss1、Vss2、Vss3、Vss4、Vss5、Vss6、Vss7。
用CPLD 设计一个驱动八位数码管显示电路的框图如图1.4 所示。
图1.4 驱动八位数码管显示电路框图
时钟脉冲计数器的输出同时作为 3 线&8 线译码器、八选一数据选择器地址码的输入。
时钟脉冲计数器的输出经过3 线&8 线译码器译码其输出信号接到八位数码管的阴极Vss0、Vss1、Vss2、Vss3、Vss4、Vss5、Vss6、Vss7 端。要显示的数据信息A~H中哪一个,通过八选一数据选择器的地址码来选择,选择出的数据信息经七段译码器译码接数码管的a~g 管脚。这样八个数码管就可以轮流显示八个数字,如果时钟脉冲频率合适,可实现八个数码管同时被点亮的视觉效果。
1.3 模块及模块功能:
1.3.1 时钟脉冲计数器模块
时钟脉冲计数器模块CN8 如图1.5 所示。CN8 模块输入信号是时钟脉冲clk,其频率大于40Hz,每遇到一个时钟脉冲clk 上升沿,内部累加器便加一,再把累加器所得结果以2进制数的形式输出。要显示八位数字,所以用3 位2 进制数作为输出。输出信号为cout[0..2]。
图 1.5 时钟脉冲计数器模块CN8
use ieee.std_logic_1164.
use ieee.std_logic_unsigned.
entity cn8 is
port(clk:in std_
cout:out std_logic_vector(2 downto 0));
architecture rtl of cn8 is
signal q: std_logic_vector(2 downto 0);
process(clk)
if (clk'event and clk='1' ) then
if (q=7) then
1.3.2 3-8 线译码器模块
3-8 线译码器模块DECODER3_8 如图1.6 所示。DECODER3_8 模块的输入端是A[2..0]接收时钟脉冲计数器CN8 模块的输出信号,经过译码后输出信号Q[7..0]分别接八个数码管的阴极Vss7、Vss6、Vss5、Vss4、Vss3、Vss2、Vss1、Vss0,使对应的数码管的阴极为低电平,对应的数码管被点亮。要显示八位数字,需要八个输出端,所以做成3-8 线译码器。
图 1.6 3-8 线译码器模块DECODER3_8
use ieee.std_logic_1164.
entity decoder3_8 is
port(a:in std_logic_vector(2 downto 0);
q:out std_logic_vector(7 downto 0));
end decoder3_8;
architecture rtl of decoder3_8 is
process(a)
when &000&=&q&=&&;
when &001&=&q&=&&;
when &010&=&q&=&&;
when &011&=&q&=&&;
when &100&=&q&=&&;
when &101&=&q&=&&;
when &110&=&q&=&&;
when thers=&q&=&&;
1.3.3 八选一数据选择模块
八选一数据选择模块 SEL81 如图1.7 所示。SEL81 模块输入信号一个是数据选择器SEL81的地址码SEL[2..0],另一部分是数据信息A[3..0] ~H[3..0]。地址码SEL[2..0]来自时钟脉冲计数器CN8,由地址码SEL[2..0]决定输出哪个输入数据。输出信号是Q[3..0]。
图 1.7 八选一数据选择模块SEL81
use ieee.std_logic_1164.
entity sel81 is
port(sel:in std_logic_vector(2 downto 0);
a,b,c,d,e,f,g,h:in std_logic_vector(3 downto 0);
q:out std_logic_vector(3 downto 0));
end sel81;
architecture rtl of sel81 is
process(a,b,c,d,e,f,g,h,sel)
variable cout: std_logic_vector(3 downto 0);
case (sel) is
when &000&=&cout:=a;
when &001&=&cout:=b;
when &010&=&cout:=c;
when &011&=&cout:=d;
when &100&=&cout:=e;
when &101&=&cout:=f;
when &110&=&cout:=g;
when thers=&cout:=h;
1.3.4 七段译码器模块
七段译码器模块 DISP 如图1.8 所示。DISP 模块是七段译码器,将输入的4 位二进制数转换为数码显示管所对应的数字。例如输入为4 位二进制数0000 的时候,使数码显示管显示0,则要七段译码器输出为0111111,即g 段为0,g 段发光二极管不亮,其他发光二极管被点亮,显示效果为0。DISP 模块输入信号D[3..0]接到八选一数据选择模块的输出信号Q[3..0];七段译码器输出信号Q[6..0]接数码管的a~g 管脚。
图 1.8 七段译码器模块DISP
use ieee.std_logic_1164.
entity disp is
port(d:in std_logic_vector(3 downto 0);
q:out std_logic_vector(6 downto 0));
architecture rtl of disp is
process(d)
when&0000&=&q&=&0111111&;
when&0001&=&q&=&0000110&;
when&0010&=&q&=&1011011&;
when&0011&=&q&=&1001111&;
when&0100&=&q&=&1100110&;
when&0101&=&q&=&1101101&;
when&0110&=&q&=&1111101&;
when&0111&=&q&=&0100111&;
when&1000&=&q&=&1111111&;
when thers=&q&=&1101111&;
1.3.5 驱动八位数码管显示的整体电路
将各个模块连接起来构成整体电路图如图 1.9 所示,可以实现用CPLD 设计一个驱动八位数码管显示电路的功能。clk 是时钟脉冲输入信号,经过时钟脉冲计数器CN8 模块,将信号以3 位2 进制数的形式输出,输出信号是COUT[2..0]。时钟脉冲计数器CN8 的输出同时作为3 线&8 线译码器DECODER3_8 和八选一数据选择器SEL81 地址码SEL[2..0]的输入。时钟脉冲计数器CN8 的输出经过3 线&8 线译码器DECODER3_8 译码其输出信号Vss[7..0]接到八位数码管的阴极Vss7、Vss6、Vss5、Vss4、Vss3、Vss2、Vss1、Vss0 端,决定点亮哪位数码管。同时时钟脉冲计数器CN8 模块输出的信号也进入数据选择器SEL81 地址码SEL[2..0]的输入,进行输出数据的选择,其输出是Q[3..0]。八选一数据选择器SEL81 模块的输出是Q[3..0]再经过七段译码器DISP 模块,将其翻译成可以用数码显示管的数据。七段译码器DISP 模块的输出Q[6..0]分别经300 欧电阻接数码显示管的a~g 管脚。八选一数据选择器模块的输入端,可根据具体需要进行设计。
图 1.9 驱动八位数码管显示的整体电路
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
发表于: 17:02:08
共阴极数码管是把所有led的阴极连接到共同接点com,而每个led的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个led分别与上面那个图中的a~dp各段相对应,通过控制各个led的亮灭来显示数字。
发表于: 17:13:26
在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的。在并行端口的编程学习中,“跑马灯”是单片机并行端口输出控制的典型实例。
发表于: 13:55:40
与非网记者在“IC-CHINA 2016”芯品发布会期间对上海安路科技信息科技有限公司进行了专访,高级工程师周定双表示:安路科技更懂国内客户的需求,某些产品已经可以完美替代Altera和Xilinx。安路科技在显示与工业控制领域得到了很好的市场反馈。
发表于: 15:13:37
上海安路信息科技有限公司宣布在其主力FPGA产品EAGLE系列之外,再添CPLD产品ELF系列。本次增添的器件包括ELF300和ELF650,目前公司开始对这两颗器件批量供货。
ELF系列CPLD作为拥有软、硬件完全知识产权的国内首款非易失性无限重构可编程逻辑器件,ELF的量产将打破国外巨头在CPLD市场长期垄断的局面。
发表于: 20:15:46
经常接到工程师的电话,问所选择的FPGA或SOC的功耗情况,有没有典型值。其实针对功耗设计,工程师可以在设计的各个阶段更加准确把握,以xilinx FPGA为例:
发表于: 17:57:35
如今,云计算已经使DevOps的成长和扩展远远超出了由内部部署生产环境规定的传统界限。借助亚马逊网络服务(AWS)和其他云服务提供商,DevOps设备旨在通过授权工程师在计算机化设计中更改、测试和推送代码来加快技术进步。这使组织能够比传统开发环境更快地创建和发送管理和应用程序。
发表于: 17:13:10
介绍FPGA约束原理,理解约束的目的为设计服务,是为了保证设计满足时序要求,指导FPGA工具进行综合和实现,约束是Vivado等工具努力实现的目标。所以首先要设计合理,才可能满足约束,约束反过来检查设计能否满足时序。
发表于: 17:10:33
中国电子信息产业集团有限公司(中国电子)24日在京发布由中国电子第六研究所自主研发的国产可编程逻辑控制器。
发表于: 09:12:48
基于FPGA基本数据流的下载控制方式,利用遗传算法,通过单片机控制数据流的方式对FPGA进行编程配置,实现自身重构,使系统具有自适应、自组织和自修复的特性。
发表于: 15:19:24
& 2010 - 2018 苏州灵动帧格网络科技有限公司 版权所有.
ICP经营许可证 苏B2-&

我要回帖

更多关于 单片机数码管动态显示 的文章

 

随机推荐