void led_sl(uchar wn,dn){ led_w0=led_wof; //关闭位选1 led_w1=led_wof; //关闭位选2 led_w2=led_wof; //关闭位选3 led_w3=led_wof; //关闭位选4 /*数码管消影处理*/ led_d =led_off; //段码

这要根据你使用的时钟频率Fclk了。然后按照时钟来计数,计数也就是在计时,比如从初值0,每个时钟上升沿,累加1,一直记到N,共N个时间间隔,则T=N/Fclk。令T=1S,已知Fclk,求得N。

你可以把4对分成两组,当按键按一下,就换一组显示,或者两个按键控制,按下哪个按键就显示哪个,,,给你一个特例程序分别是以上两种方法 的,你可以参考参考,,,port(input1,input2:in std_logic_vector(7 downto

entity led is port(clk:in std_logic;---时钟信号 s:out std_logic_vector(7 downto 0);---数码管 q:out std_logic_vector(6 downto 0));---段位 end led;architecture one of led is signal clk1:std_l

U1:counter10 PORT MAP(carry(1),count,carry(2),q1);U2:counter6 PORT MAP(carry(2),count,carry(3),q2);U3:counter10 PORT MAP(carry(3),count,carry(4),q3);ledscanclk<=clktemp(5);PROCESS(ledscanclk

end if;else --en='0'不显示 display<="0000000";end if;end process;b: process(num1) --从这开始是我不能实现的地方,不能将小数点也动态显示 begin if counter1=1 then counter1<=0;else counter1<=

用VHDL编程实现4位LED数码管动态显示

//显示-123 for(c = 0;c<20;c++){ P2 = 0x08;P0 = 0xbf;delay(10);for(j = 0;j<3;j++){ P2 = _cror_(P2,1);P0 = table[j];delay(10);} } //显示1234 2345 3456 4567 for(k = 0;k<4;

main(){ for (;;){ z=js(z);i=js(i);P0=0;P1=0xff-(0x01<

define uint unsigned int uchar count;uint disnum;sbit dula=P2^6;sbit wela=P2^7;uchar code tabledu[]={//段码表 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0

uchar number,nn=0;uchar dat[]={2,0,1,2,1,1,4,5,8,2};void t0isr() interrupt 1 { TH0=(65536-5000)/256;TL0=(65536-5000)%256;number++;number%=4;switch(number){ case 0:P2=0x08;P0=distab[nn

//关第一位显示 p2=tab[2];p3_1=0;//开第二位显示 for(i=0;i<200:i++);p3_1=1;这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52.h,如果是包含reg52.h编译不了的

运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序

void display(unsigned int time) // 数码管显示函数 { unsigned int i;unsigned int digit[4]; // 数码管的四位数值 digit[0] = time / 1000; // 千位 digit[1] = (time % 1000) / 100; // 百位

亮第一个数码管(这里当他为共阳极数码管):P2^0=1;P1=XXX;//自己写出L的字形码 delay_ms(1);//延迟1ms这个时间越小越好拉 P2^0=0;//关掉第1个数码管显示 P2^1=1;//开始第二个数码管显示 //然后就以此类推

include define uint unsigned int define uchar unsigned char sbit dula = P2^6;//段选决定显示什么内容 sbit wela = P2^7;//位选决定显示哪几个数码管 sbit d1 = P1^0;//流水灯 uchar num;//段

1、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8。引用端口:数码管数据p0,数码管控制p2;DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2

1、硬件连接:将8个数码管的控制引脚连接到4个IO口上。将数码管的VCC引脚连接到电源正极,将数码管的GND引脚连接到电源负极。2、编写程序:使用对应的编程语言和开发环境,编写控制IO口输出的程序,实现对8个数码管的控制。

led_fd = open("/dev/led",O_RDWR);if (led_fd <= 0){ printf("open led device error");return 0;}//if ret[6] = 0xcf; //初始化数组数值为 6.ret[5] = 0x4f; //初始化数组数值为 5.ret[4

应怎样编写LED数码管显示程序?

sbit wei2=P1.1;//共阴数码管七段码 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};void Delay1ms(uint i) //1ms延时程序 { uint j;for(;i>0;i--){ for(j=0

2位数码管,只有一个键。第一次按下计时功能键,开始计数,并显示;第二次按下计时功能键,停止计时,并计算两次按下计时功能键的时间并显示,第三次按下,清零,如果计时到9.9,停止计时,再按计时功能键清零。类似的

1.编码按钮分别为0,1,2,……,9十个按键:可以用矩阵键盘实现,2.用发光二极管作为输出指示灯,灯亮代表锁“开”,灯灭代表锁“不开”,用一个IO口,接上二极管,接上限流电阻,接地。密码正确,另该IO口值为1,

sbit dula = P2^6;sbit wela = P2^7;sbit led1 = P1^3;define uint unsigned int define uchar unsigned char uint a,c,g;uint b = 5;long int num;uchar num1,num2,shi,ge;void display(uchar,uchar);voi

include "reg51.h"void delay1s();void display(unsigned char x);void main(){ unsigned char i;while(1){ for(i=99;i>0;i--){ display(i);delay1s();} } } void delay1s(){ unsigned char i,j,k;fo

unsigned char second;//秒倒计时变量 unsigned char t0n;//T0中断次数计数 sbit k1=P3^2;//定义按键 void delay(){ unsigned int j;for(j=400;j>0;j--);} void display()//显示子程序 { P2=0x01;P0=tab[

编程实现倒计时的秒表,2位LED数码管显示,延时采用硬件延时的方法

for(i=0;i<=99;i++){ P0 = DSY_CODE[i/10];P2 = DSY_CODE[i%10];delay(100);} } } 以上为参考程序,部分需要稍作修改 数码管显示原理 数码管简介组成:LED数码管由7段或8段发光二极管组成,在平面上排成8

SETBET0;开定时器0中断 SETBEA;开总中断 SETBEX0;开外总中断0中断 SETBTR0;开启定时器0 LOOP:CALLDISP;调用显示子程序 JMPLOOP;采用查询方式 ;P0口数据输出。P2.0、P2.1位码控制端 DISP:MOVA,CNT;CNT数据送入A中

led_wx=0xef;} TH1=0xfc;TL1=0x70;} void bin_bcd(uint a){ bcd[2]=a/1000;bcd[1]=(a%1000)/100;bcd[0]=(a%100)/10;bcd[3]=a%10;} 我这是ly_51系列的 0--9999的数码管自加程序 希望对你有用

int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,

;做动态显示也可以,人眼是看不出闪烁的。那样会省点口线,嘿嘿反正你只有2个 数码管没别的东西,就干脆做个静态的咯。怎么也闪烁不了的

define uint unsigned int define dataport P1//P1直接驱动数码管的8个阳极 sbit wei1=P3^3;//再有三个管脚接3个三极管驱动数码管的阴极 sbit wei2=P3^4;sbit wei3=P3^5;uint a=0;//中断次数计数,一次50ms,20

define uint unsigned int uchar num=0;//共阴数码管七段码 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};void Delay1ms(uint i) //1ms延时程序 { uint j;for(;i>0

51单片机led数码管显示0-99静态程序

1、首先打开gx work2软件,左上方选择工程点开新建一个工程。2、接下来选择工程的种类和plc的cpu和你所要做的图。3、点开我们可以发现在上方的设计按钮,你可以在任意位置选择你要设计的按钮种类。4、也可以直接左键双击

数码管的最常见形式有10个阴极,形状为数字0到9,某些数码管还有一个或两个小数点。然而也有其他类型的数码管显示字母、标记和符号。如一种“数码管”,其阴极为一个模板制成的面具,上面有数字形状的孔。一些俄罗斯的数码

plc数码管显示两位数的梯形图程序正确的写法是,将数码管的每一段进行分化,以二极管的形式进行输出,连接PLC输出点,根据输出点上所显示的数字,将对应的段落点亮。梯形图程序在写的时候一定要注意各触点的状态以及逻辑关系,

设计用PLC控制数码管循环显示数字0-9,控制要求如下(1)按下启动按钮后,数码管从0开始显示,1s后显示1,再过1s后显示2,…,显示9,1s后再重新屏示0.如此循环。(2)当按下停止孩钮后,数码管烟灭。7数码营实际上是由7只

逻辑控制。在PLC程序中,使用逻辑指令和条件判断来控制数码显示的行为,根据输入信号的状态和预设的条件,PLC可以决定何时显示特定的数字、切换数码管的位选、设置数码管的亮度等。

如图所示,这个就是用三菱FX系列PLC编辑的一段程序,功能是用LED数码管循环显示0到9。望采纳。。。

一、 顺控指令 1 触点指令 00 LD 逻辑操作开始 01 LDI 逻辑非操作开始 02 AND 逻辑乘 03 ANI 逻辑乘非 04 OR 逻辑加 05 ORI 逻辑加非 2 连接指令 06 ANB AND逻辑块与 07 ORB OR逻辑块或 0

led数码显示plc编程

兄弟,你刚学的吧,不知道你是大学生还是非大学生的,如果是大学生的话我觉得我不应该回答了,俺只是说方法,不会给什么程序的,当然并不是程序简单我就不写,不是这样的,而是你要弄清电路的工作原理,弄清程序和电路的关系,弄清的硬件,结合程序看就应该能弄清楚了。 数码的显示方式:静态和动态 静态简单,动态是用扫描技术,进行扫描的,就是显示的数据是一样的,不过利用的扫描后,就造成显示的数据不一样了,原因是显示的速度是非常快的,人的眼是分辨不出的。而你的电路采用的静态显示,那么就是数码的共极部分,当然proteus里的数码应该是共阴极的吧,而阳极是送显示的数据,这样显示的方式是静态显示 P0 P2是数码管送显示的数据,当然这两数码管一个显示个位,一个显示十位,那么你要对显示的数据进行处理一下,比如是要显示99: uint a,b; uint k=99; a=99/10;//这里只取十位而已,也就是9 b=99%10//这是求模,相当于数学里说的取余数 然后再将这a和b的数据指向一个数码管显示的代码数组[弄清数码管的显示就知道怎么写出显示代码了] 第一个是个位,先显示个位,数组的运用是利用下标控制的,我们用变量b控制下标。 第二个是十位,也是利用下标控制数组的。 当然这个变量k我们可以先不赋值,让它自增或自减从最大值一直减到最小,就是从99显示到0了, 当然你的电路有些浪费I/O口,两个数码管你把段全部连在一起不就行了,然后把共极各自连接I/O口,利用动态显示,你上图所示的,根本就是静态显示,浪费资源啊,当你在设计产品时是浪费I/O口的, 我认为应该是这样的,这样节省资源,控制也非常方便的,一点儿也不能,这个才是动态显示,利用动态扫描就搞定了,要不然会浪费资源的,俺的基础有限,再说也是自学的,也好久没弄51了,现在在做其经类型的MCU了,兄弟祝你学习有成。 注意要外接上拉电阻的,P0内部没带上拉电阻,要自己接上哦,俺没画上,你做实际产品时不要忘记了。
那个lalala有什么用?看程序是在P0口接一个共阳数码管。那同样在P2口再接一个数码管。这样,P0口的数码管显示十位数,P2口的数码管显示个位数。或在P2,P3口各接一个数码管。见下图。 这种接法属于静态显示电路。这个学会后,再练习动态显示电路。
用单片机的定时器T0定时,计时1秒,实现倒计时的秒表的功能。 程序如下 #include unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表 unsigned char second;//秒倒计时变量 unsigned char t0n;//T0中断次数计数 sbit k1=P3^2;//定义按键 void delay() { unsigned int j; for(j=400;j>0;j--); } void display()//显示子程序 { P2=0x01; P0=tab[second/10];//显示十位 delay(); P2=0x02; P0=tab[second%10];//显示个位 delay(); } void main() { TMOD=0x01;//用T0定时,中断方式 TH0 =0x3C;//晶振12M,定时50ms TL0 =0xB0; IE =0x82; while(1) { display();//调显示子程序 if(k1==0)//按键按下 { if(TR0==0) { TR0=1;//启动开始计时 second=60;//从60秒开始倒计时 } else TR0=0; while(k1==0);//等待按键释放 } } } //T0中断程序 void T0_int() interrupt 1 { TH0 =0x3C; TL0 =0xB0; t0n++; if(t0n>=20)//1秒到 { t0n=0; second--;//减1秒 if(second==0)TR0=0; } } 仿真图如下
#include "reg51.h" void delay1s(); void display(unsigned char x); void main() { unsigned char i; while(1) { for(i=99;i>0;i--) { display(i); delay1s();} } } void delay1s() { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=250;k>0;k--); } void display(unsigned char x) { unsigned char dispcode[10]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; P2=dispcode[x/10]; P1=dispcode[x%10]; }
#include"at89x51.h" #define uchar unsigned char #define uint unsigned int /************************* 全局变量定义部分 **************************/ //硬件设计接口不同,要修改下一行 uchar code acLEDCS[]={0x7f,0xbf,0xdf,0xed}; /* 位选地址码,“0”有效,位选接的是P2口高4位 */ uchar code acLedSegCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};/* 段码 */ uchar acLED[4]; /* 显示缓冲区 */ char cScanIndex; /* 位选指针0~3 */ uint t=0; /************************* 数码管显示函数 ***************************/ void Display(void) { // 添加要显示的数据(变量) acLED[3]=acLedSegCode[t/1000]; /* LED显示第1位 */ acLED[2]=acLedSegCode[t%1000/100]; /* LED显示第2位 */ acLED[1]=acLedSegCode[t%100/10]; /* LED显示第3位 */ acLED[0]=acLedSegCode[t%10]; /* LED显示第4位 */ } /************************** 主函数 *****************************/ void main(void) { /**************** 定时器初始化 *******************/ TMOD= 0x02; /* 定义定时器0工作于方式2(8位自动重装) */ TH0 = -200; /* 8位自动重装定时器约每100uS中断1次,9216次为1秒 */ TL0 = -200; TR0 = 1; ET0 = 1; EA = 1; /* 开总中断 */ while(1) { Display(); } } void IntT0(void) interrupt 1 /* 定时器0中断,完成1秒定时和LED延时 */ { t++; if(t==10000) t=0; P0 = 0; /* 先清显示再换位选 */ P2 = acLEDCS[cScanIndex]; /* 送位选数据 */ P0 = acLED[cScanIndex++]; /* 送显示数据,位选指针移位 */ cScanIndex &= 3; /* 位选指针回位 */ }
C语言写LED数码管显示程序与汇编是一致的,将显示的基本内容定义在一个数组中就可以了,比如: #include #define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; sbit rstkey=P2^2; sbit speaker=P2^0; void delay()//延时约400毫秒 { uchar i,j; for(i=0;i<200;i++) for(j=0;j<250;j++); } main() { uchar i,key; P2=0xff; while(1) { i=0; P1=table[i]; while(1) { key=P3; if(key!=0)break; } switch(key) { case 0x01:i=1;break; case 0x02:i=2;break; case 0x04:i=3;break; case 0x08:i=4;break; case 0x10:i=5;break; case 0x20:i=6;break; case 0x40:i=7;break; case 0x80:i=8;break; default:break; } P1=table[i];//显示按下抢答器的号 P0=key;//显示按下键号的LED while(1) { if(rstkey==0)break;//主持人按下复位键则重新开始 speaker=~speaker;//否则蜂鸣器报警 delay(); } } }
搜一下:用VHDL编程实现4位LED数码管动态显示
carry(0)<=clk; U0:counter10 PORT MAP(carry(0),count,carry(1),q0); U1:counter10 PORT MAP(carry(1),count,carry(2),q1); U2:counter6 PORT MAP(carry(2),count,carry(3),q2); U3:counter10 PORT MAP(carry(3),count,carry(4),q3); ledscanclk<=clktemp(5); PROCESS(ledscanclk)--ledscanclk为扫描时钟 BEGIN IF(ledscanclk'EVENT AND ledscanclk='1')THEN CASE showwhat IS WHEN 0=>shownumber<=CONV_INTEGER(q0); showwhat<=1; flag<='0'; WHEN 1=>shownumber<=CONV_INTEGER(q1); showwhat<=2; flag<='1'; WHEN 2=>shownumber<=CONV_INTEGER(q2); showwhat<=3; flag<='0'; WHEN OTHERS=>shownumber<=CONV_INTEGER(q3); showwhat<=0; flag<='1'; END CASE; END IF; END PROCESS; WITH showwhat SELECT --具体要看你的数码管是共阴还是共阳的 scanshow<=B"1110" WHEN 1,--0 B"1101" WHEN 2,--1 B"1011" WHEN 3,--2 B"0111" WHEN OTHERS;--3 WITH shownumber SELECT --具体要看你的数码管是共阴还是共阳的 qtemp<=B"1111110" WHEN 0,--0 B"0110000" WHEN 1,--1 B"1101101" WHEN 2,--2 B"1111001" WHEN 3,--3 B"0110011" WHEN 4,--4 B"1011011" WHEN 5,--5 B"1011111" WHEN 6,--6 B"1110000" WHEN 7,--7 B"1111111" WHEN 8,--8 B"1111011" WHEN OTHERS;--9 show<=flag&qtemp; --show为输出 个人建议,像这样的代码还是自己写为好,这毕竟看完书学习完后是不难的,如果什么都要去问别人,不静下心来考虑,那你永远也无法成为一个高手(虽然我还不是),大家都是在学习,别人能懂的,相信我们也能明白的。我们没有理由比别人会差的,和大家一起加油努力。