动态数码管0到99循环
答:if(s==10){s=0;b++;} if(b==10){b=0;q++;} } void display(){ /*个位*/ P3=1;P0=duan[g];duan=0;time();/*十位*/ P3=2;P0=ld[s];time();/*百位*/ P3=4;P0=duan[b];time();/*千位*/ P3=8;P0=duan[q];time();} 最后,提醒你,共阳数码管,纯51单片机...
答:具体程序如下:include <reg51.h> define uchar unsigned char sbit P20=P2^0;void delay_ms(unsigned int ms) //1ms延时 { uchar a;while(ms--)for(a=123;a>0;a--);} uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void main(){ while(1){uchar...
答:2. 多位显示:由于我们需要显示两位数(00到99),因此我们需要使用至少两个数码管。这通常涉及到所谓的“动态显示”或“多路复用”技术。这是因为如果我们同时点亮两个数码管的所有段,可能会超出单片机的电流限制。因此,我们交替地快速点亮和关闭每个数码管,由于人眼的视觉暂留...
答:楼主圈出的部分,是中断函数。中断函数,是由硬件来调用的,不需要软件去调用它。每当硬件,满足了一定条件,该函数,就自动执行。
答:define TimesEnd10000//显示内容范围 0~9999 uchar code SEG_B_List[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管代码表"0-9"uint Sec;uchar bdata Flag=1;sbit DisplayFlag=Flag^0;//显示标志位 sbit TimesUpFlag=Flag^1;//时间更新标志位 void Timer0...
答:th0=(65536-15536)/256;tl0=(65536-15536)%256;这个是由于tl0跟th0都是8位寄存器,组合在一起就是16为寄存器,那么2^16=65536;赋值的时候减去15536,是因为定时器溢出的时候是达到计数65536的时候,那么减去这个数就是相当于你想计数器计数15536个时钟clock后溢出;即从0到15536,共计15536个时钟...
答:没添加百位显示,所以只有 0~99 //数码管动态显示+1,显示范围0-100,定时时间1s include<reg52.h> sbit dula=P2^6; //定义段选信号 sbit wela=P2^7; //定义位选信号 char aa,temp,bai,shi,ge;char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,...
答:原理是利用数码管的动态扫描,通过按键来进行计数 程序如下:include<regX51.h> define k1 P1_7//开始定义p1_7时出错 unsigned char i,b,count=0;unsigned char code table[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F};void delay (){ for(i=4;i>0;i--)for(b=248;b...
答:要精确延时可以稍微调一下数值 DELAY:MOV R2,#25 DEL1: MOV R3,#100 DEL2: MOV R4,#200 DEL3: DJNZ R4,DJNZ R3,DEL2 DJNZ R2,DEL1 RET END ;做动态显示也可以,人眼是看不出闪烁的。那样会省点口线,嘿嘿反正你只有2个 数码管没别的东西,就干脆做个静态的咯。怎么也闪烁不了的 ...
答:include<REG51.H> sbit SMG1=P1^0;sbit SMG2=P1^1;sbit SMG3=P1^2;sbit SMG4=P1^3;unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0-9共阴数码的管段码表 unsigned char Buf[4];//4个数码管的数据缓存 unsigned char cnta; //循环动态...
网友评论:
史念13020605834:
51单片机控制2个数码管动态实现0到99(C语言) -
52971聂依
: #include <reg51.h>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void show(unsigned char n); void delay();void main() {unsigned char i;int j;while(1){for(i=0;j=100,i<100;++i)while(j--)show(i);} }void ...
史念13020605834:
求:8字数码管动态显示0到99的汇编程序 -
52971聂依
: 写那么长干嘛,p1口接数码管扫描.p0口接8段字符显示,已测试正常. ORG 0000H STAER: MOV DPTR,#K1MOV 41H,#00HMOV 42H,#00HMOV R2,#0FFH A2: ACALL A1;调用显示子程序DJNZ R2,A2MOV R2,#0FFHINC 41HMOV ...
史念13020605834:
数码管多位计数程序和原理(比如从00 -- 99) -
52971聂依
: 原理是利用数码管的动态扫描,通过按键来进行计数 程序如下:#include<regX51.h> #define k1 P1_7//开始定义p1_7时出错unsigned char i,b,count=0; unsigned char code table[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F}; void ...
史念13020605834:
AT98C51单片机数码管显示0.0秒到9.9秒循环计时C语言程序 -
52971聂依
: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9 unsigned char times=0,sec=0,sec01,scanled; unsigned char disdat[2]; void dischg() { disdat[0]=sec01; disdat[1]=sec; } ...
史念13020605834:
求用51单片机接两个数码管,0 - 99动态显示程序(用C语言) -
52971聂依
: #include #define uchar unsigned char #define uint unsigned int uchar DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; void delay(uint x) { uchar i; while(x--)for(i=0;i<120;i++); } void main() { uchar i; P0 = 0x00; P2 = 0x00; while(1)...
史念13020605834:
用C语言51单片机编写数码管从00到99的循环程序 -
52971聂依
: {TMOD=0x01;ET0=1;EA=1;TR0=1;TH0=0x3c;TL0=0xaf; }void time_1s (void) interrupt 1 {int ncount;TH0=0x3c;TL0=0xaf;ncount++;if(ncount<20) return;{ncount=0;i++;if(i==100) i=0;} }
史念13020605834:
单片机求助,用汇编语言写一个双位数码管0到99循环 -
52971聂依
: 一个数码管显示0005~01秒,再换另一个显示,他俩轮流这么显示着(再多几个也可以),这种交替人眼看不出来的单片机求助,用汇编语言写一个双位数码管0到99循环
史念13020605834:
单个数码管循环显示0到9的程序. -
52971聂依
: 主函数中的P2 = LED_CODE[led];led++;可以删去,没有任何的意义 ,因为定时和循环显示都在中断函数里面完成了,主函数只是起了一个初始化的作用,led++影响LED_CODE[led]的值,它使LED_CODE[10] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }数组中的10个值依次赋给P2,依次显示0——9的数字,即当led = 0时,P2接受0xC0,对应数码显示0,当led = 1时,P2接受LED_CODE[1]=0xF9,对应显示1,依次类推,从而显示0——9.
史念13020605834:
C51简单 数码管扫描显示 00 到99 显示 -
52971聂依
: for(i = 0 ; i < 10 ; i++ ){codeDisplayL(j);delay(0x4000);codeDisplayR(i);delay(0x4000);} 这样就可以了,显示了很短时间当然看不到了
史念13020605834:
汇编语言 数码管显示0 - 9.每个数字闪烁三次,再显示下一个数字,如此循环.求程序,, -
52971聂依
: ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV R0,#0 MOV R1,#3LOOP:MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P1,A LCALL DELAY MOV P1,#00H LCALL DELAY DJNZ R1,LOOP INC R0 MOV R1,#3 ...