ZKX's LAB

7段数码管8位数字控制

2020-07-16知识12

如何用vhdl语言编写一个8位七段数码管 实现动态扫描,比如让8位数码管在同一时刻分别显示876543210; PROCESS(HighCLK)-动态数码管控制显示部分BEGINIF HighCLK 'EVENT AND HighCLK='1' THENCASE Q ISWHEN 0=>Y;VIEW(7 DOWNTO 4);Q;WHEN 1=>Y;VIEW(3 DOWNTO 0);Q;WHEN 2=>Y;VIEW(7 DOWNTO 4);Q;WHEN 3=>Y;VIEW(3 DOWNTO 0);Q;WHEN 4=>Y;VIEW(7 DOWNTO 4);Q;WHEN 5=>Y;VIEW(3 DOWNTO 0);Q;WHEN 6=>Y;VIEW;Q;WHEN 7=>Y;VIEW;Q;WHEN OTHERS=>Q;END CASE;ELSE NULL;END IF;END PROCESS;给分吧HighCLK是扫描时钟设一个较高的时钟就行,我一般是设定为2000 HZ,VIEW 接你要显示的信号,Y 控制第几个数码管显示,比如你要第一个数码管显示8就把第一条改成:WHEN 0=>Y;VIEW;Q;单片机一个引脚怎么控制数码管一个数字?引脚才一位,而数字需要8位控制 管脚每一次发送数码管的一段亮灭信号七段数码管显示10个数字 CD4511是一个用于驱动62616964757a686964616fe58685e5aeb931333332613739共阴极 LED(数码管)显示器的 BCD 码—七段码译码器,特点如下:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。CD4511 是一片 CMOS BCD—锁存/7 段译码/驱动器,引脚排列如图 2 所示。其中a b c d 为 BCD 码输入,a为最低位。LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时,B1端应加高电平。另外 CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。LE是锁存控制端,高电平时锁存,低电平时传输数据。a~g是 7 段输出,可驱动共阴LED数码管。另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观 图3是 CD4511和CD4518配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只 CD4511 和 LED 数码管即可。所谓共阴 LED 数码管是指 7 段 LED 的阴极是连在一起的,在应用中应接地。限流电阻要根据已知共阳极8段LED数码管的显示数字的字形码如下(求详解!) 数码管定义如2113下图:共阳极数码5261管编码为: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当A为某一个数时,查4102表就得到这个数编1653号的段码,比如A为1,那么就是“1”的编码,F9H。用89c51实现8位7段数码管显示数字1~8(汇编程序) 参考一下:http://zhidao.baidu.com/question/168209662.html可以试试自己修改成显示数字1~8,如有困难可到我的空间留言。关于7段数码管显示问题 7段数码管其实是八段,有时小数点没有使用,所以常说7段,显示原理是这样的数码管首先从上到右,到下到左,到中间,最后到小数点分百别标记为a b c d e f g dp八段其中小数点位DP为最高位,a段为最低位度,要想显示什么字符只需要使对应的段发光即可,一般的习惯是单片机的端口的最低位接a段,次低位接b段,.最高位(如p0.7)接dp,显示码从高往低表示为内容为 dp g f e d c b a如要显示“1”,只需要将b、c段点亮即可,若是共阴极,片选是低电平选中,某一段输出高电平点亮,即显示码为00000110 即0x06,其他的依照该方法类推你给的码表为共阴极的。共阳极的恰巧相反!数码管的示意图如下图所示51单片机中,用八个开关控制一个7段数码管,按一个开关显示一个数,用C语言怎么编程 sfr key=P1;定义八个开关接单片机的p1口的八个引脚,int suma[9]={0x3B,0x4D,};根据数码管的驱动芯片接入单片机接口,查表输出要显示的数字,其中第九个为不显示即清空显示。unsigned char Scankey(){int i,j;i=key;if(key!0xFF){keyflg=1;switch(~key){case 0x01:case 0x02:case 0x04:case 0x08:case 0x10:case 0x20:case 0x40:case 0x80:return(~key);default:keyflg=0;return(0xFF);}}return(key);}void delay(long i)/延时{while(i-);}void xianshi(unsigned char a){P2=suma[a];}void inti(){;xianshi(9);}int main(){unsigned char a,b;inti();单片机初始化b=Scankey();while(1){a=Scankey();扫描按键if(keyflg)/判断有键按下{if(a!b)/判断是否按键有改变{xianshi(9);关闭数码管delay(1000);延时xianshi(a);显示要显示的数码管}b=a;保存当前的按键值。}delay(1000);延时 自己调试要大于200 ms}}只能给你个大概的思路了。一般扫描按键,除非硬件使用中断的引脚可以中断设计,返回键值,或查值,判断是否显示,显示输出,中间要加些延时效果更好。设计到单片机就牵扯到硬件的定义,还有些外界干扰的情况要根据实际情况在完善用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示 有一个一模一2113样的提问,好吧,俺再5261发布一次给你一份我自己写的,利4102用四位数码管显示模拟时钟1653的程序吧,供你研究另外,再给你一个一位数码管的,是你要求的那种这两个都是利用单片机的定时器中断来产生秒信号的下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下includesbit p20=P3^7;sbit p21=P3^6;sbit led=P2^7;按键及LED端口定义sbit Axs=P1^3;sbit Bxs=P1^2;sbit Cxs=P1^1;sbit Dxs=P1^0;数码管位选端口char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};数码管显示编码unsigned int h,m,s,t,n;void YS(char hs)/延时函数{char hk;for;hs>0;hs-){for(hk=200;hk>0;hk-);}}void XS(int xh,int xm)/显示子函数{char d1,d2,d3,d4;d1=(xh/1)%10;d2=(xh/10)%10;分离小时d3=(xm/1)%10;d4=(xm/10)%10;分离分钟P0=table[d1];Cxs=0;YS(10);Cxs=1;小时个位P0=table[d2];Dxs=0;YS(10);Dxs=1;小时十位P0=table[d3];Axs=0;YS(10);Axs=1;分钟个位P0=table[d4];Bxs=0;YS(10);Bxs=1;分钟十位P0=0x7f;P1=0xfd;YS(10);P1=0xff;小数点}void main(void){TH0=(65536-1000)/256;TL0=(65536-1000)%51单片机中,用八个开关控制一个7段数码管,按一个开关显示一个数,用C语言怎么编程 sfr key=P1;定义八个开关接单片机的p1口的八个引脚,int suma[9]={0x3B,0x4D,};根据数码管的驱动芯片接入单片机接口,查表输出要显示的数字,其中第九个为不显示即清空用plc控制一个七段数码管,分别按下四个按钮,数码管分别显示1234,但是其PLC输出口不能是七个, 完全可以用输出三位来实现,但是你要用一种芯片74LS47驱动七段数码管,这样PLC只要对应输出001,010,011,100,七段数码管就会显示1,2,3,4,而不需要去单独驱动七段中的每一段。当然市场上也有卖的七段数码管内部直接带驱动芯片的:常州半导体厂就生产,可以打电话问问。另外你的控制逻辑不是很难啊,没必要用PLC,通过卡诺图和语句表,用与非门电路完全也可以搭出来啊。或者是直接用用电子电路控制七段数码管每一段,四个按钮分别做电源开关控制四套电路,每套电路对应驱动实现七段数码管显示1,2,3,4,即可。很简单的,祝你好运。

#led数码管#数码管#数字控制#单片机#89c51

随机阅读

qrcode
访问手机版