0xc0, 0xf9, 0xa4, 0xb0, 0x99, //0-4 0x92, 0x82, 0xf8, 0x80, 0x90};//5-9 while(1) { P0 = SEG[n1]; //P0口,外接共阳数码管的段选端 delay(2000);n1++; if(n1 > 9) n1 = 0;}

;;8051 ;;晶体振荡F=12Mhz ;;;KEY32 REG P3.2 ;ORG 0000H AJMP MAIN ORG 0003H RETI RETI ORG 000BH RETI ORG 0013H RETI RETI ORG 001BH RETI ORG 0023H RETI DB C0H ;0 ADRRESS 0024H DB F9H ;1

pinMode(ledPins[i], OUTPUT);} } void loop() { for (int num = 9; num >= 0; num--) { //从数字9到0循环 for (int i = 0; i < 7; i++) { //依次点亮数字的7个LED digitalWrite(ledPins

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

单片机编程,从0到9的数字在LED上显示

依次显示0——9的数字,即当led = 0时,P2接受0xC0,对应数码显示0,当led = 1时,P2接受LED_CODE[1]=0xF9,对应显示1,依次类推,从而显示0——9。

R5,MAIN ;循环显示次数减1 不等于0 继续显示 JMP START ;从新转主程序 开始新一轮的显示 DELAY:MOV R0,#5 ;延时子程序 DELAY0:MOV R7,#200 DELAY1:MOV R6,#250 DJNZ R6,DJNZ R7,DELAY1 DJNZ R0,DELAY0 RET

ge<=9){P1 = table_numberP[0];P0 = table[ge];ge++;if(ge == 10){ge = 0;}}}主函数中的P2 = LED_CODE[led];led++;可以删去,没有任何的意义,因为定时和循环显示都在中断函数里面完成了,主函数只是起

if(b==10)b=0;} }

一位数码管循环显示0到9实验程序

采用共阴极LED数码管,51单片机P1口输出数据:ORG 0000H JMP MAIN ORG 0100H MAIN:MOV DPTR,#TAB MOV R1,#00H DISP:MOV A,R1 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R1 CJNE R1,#0AH,DISP SJMP TAB:

define TubeNumber 6//数码管个数 define KeyLine 4//矩阵按键行数 define KeyColumn 4//矩阵按键列数 //数码管真值表 uchar code LED_Number[]={0x0C,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//

1/首先把段码端和片选端都设为输出,也就是led和单片机连的那几个角 2/你先用延时来做吧,大致是这样的 设一个片选有效;把要显示的内容放段码中;延时15ms;设第二个片选有效;把要显示的内容放段码中;延时15ms

51单片机编写4个LED数码管同时循环显示0—9的数字的程序。芝士回答void t1isr()interrupt 3/显示{ TH1=0xec;TL1=0x78;P2=1< < p=""><> P0=~ledtab[tiao];scanled+;scanled%4;}单片机如何同时控制四位数码管显

delay(2000);n1++; if(n1 > 9) n1 = 0;} } 4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。

51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。

1. 实验任务 利用8X8点阵显示数字0到9的数字。2. 电路原理图 图4.25.1 3. 硬件系统连线 (1). 把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;(2). 把“单片机

1) 8*8的点阵屏要显示0-9,字母以及汉字需要使用点整显示的方法。对于0-9以及字母都没有问题,点阵用的的很少,在程序里直接写就可以啦。对于汉字你需要找8*8的汉字点阵字库,能不能找到都是个问题,除非只是显示几个

int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //定义LED引脚 int numPins[][7] = { //定义数字0~9的LED点阵图形 {1, 1, 1, 1, 1, 1, 0}, //0 {0, 1, 1, 0, 0, 0,

要用8×8的LED点阵显示数字0~9,先用proteus 画出仿真图,然后用取模软件画出数字8×8点阵图形,并按行取模,每个数字共8个字节数据,显示时取出字模并逐行扫描就行了。

include#include#includevoid PrintNum(int n){switch(n){case 0:printf("***");printf("* *");printf("* *");printf("* *");printf("* *");

case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index][1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index][2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++;

怎么写8×8led点阵屏显示数字0-9的程序?

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数值1到9的共阳极编码 END 补充说明两点:1、程序下载到目标板之后,注意一下晶振频率,如果显示效果不佳,可以通过修改延时参数,调节刷新频率。2、这里采用的是

P3,A ;送P3口驱动7段数码管显示 INC R2 ;修改要显示的下一个数 LCALL DELAY ;调用延时子程序(稳定显示)DJNZ R5,MAIN ;循环显示次数减1 不等于0 继续显示 JMP START ;从新转主程序 开始新一轮的显示 DELAY:MO

用P0口输出到数码管显示0-9 编写:jzy23 交流:paulucy@126.com / include define uint unsigned int define uchar unsigned char / 共阴数码管显示码 / uchar code display[10]= { 0x3f,0x06,0x5

ge<=9){P1 = table_numberP[0];P0 = table[ge];ge++;if(ge == 10){ge = 0;}}}主函数中的P2 = LED_CODE[led];led++;可以删去,没有任何的意义,因为定时和循环显示都在中断函数里面完成了,主函数只是起

if(b==10)b=0;} }

单个数码管循环显示0到9的程序。

P0 = 0x00; // 让数码管熄灭,否则会造成数字重叠 } void main( void ){ while(1){ if( Key == 0 ){ DelayNms(30);if( Key == 0 ){ Count += 1;Count = (Count>9)? 0 : Count;} while( !Key

;0 ADRRESS 0024H DB F9H ;1 DB A4H ;2 DB B0H ;3 DB 99H ;4 DB 92H ;5 DB 82H ;6 DB F8H ;7 DB 80H ;8 DB 90H ;9 MAIN:MOV R0,#7FH ;CLR A ;CL MOV R0,A ;DJNZ R0,$CL ;初始化 M

一、设置延时函数 延时函数在单片机中有着让现实延时的能力,本程序中可以通过采用for循环方式进行延时,具体代码如下:void delay(){ uinti,j;for(i=100;i>0;i--)for(j=1000;j>0;j--);} 二、设置数码管显

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

1、小建议,_用STC的51芯片替代AT的,_用595替代164。2、新建项目,做好准备。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)//死循环效果

单片机数字9到0显示程序代码?

我的是共阳数码管,是8位的,我选通的是第一位,你可以自己改一个地方 #include unsigned char code s8[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(int i) { int j; for(;i>=0;i--) { for(j=0;j<115;j++) {;} } } void main() { int i; while(1) { P2=0x7f;/*这是选通位,你可以根据自己的数码管来写*/ for(i=0;i<10;i++) { P0=s8[i]; delay(400); P0=0xff; delay(100); } i=0; } }
说明:主程序中的循环语句反复将 0~9 的段码送至 P0 口,使数字 0~9 循环显示 */ #include #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++); } //主程序 void main() { uchar i=0; P0=0x00; while(1) { P0=~DSY_CODE[i]; i=(i+1)%10; DelayMS(300); } }
要用8×8的LED点阵显示数字0~9,先用proteus 画出仿真图,然后用取模软件画出数字8×8点阵图形,并按行取模,每个数字共8个字节数据,显示时取出字模并逐行扫描就行了。
何必一定用汇编
#include //----------------------------------------------- void delay(unsigned int i) //延时 { unsigned char j; while(i--) for(j = 0; j < 115; j++); } //----------------------------------------------- void main(void) { unsigned char n1; unsigned char code SEG[] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, //0-4 0x92, 0x82, 0xf8, 0x80, 0x90};//5-9 while(1) { P0 = SEG[n1]; //P0口,外接共阳数码管的段选端 delay(2000); n1++; if(n1 > 9) n1 = 0; } } 4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。
假设8个数码管公共端均接地,同时显示1-9 #include #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff }; void DelayMS(uint x) { uchar t; while(x--) for(t=120;t>0;t--); } void main() { uchar i=0; P0=0x00; while(1) { P0=~DSY_CODE[i]; i=(i+1)%10;/*显示0-9*/ DelayMS(200); } } 下面程序从左到右显示 #include #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; void DelayMS(uint x) { uchar i; while(x--) { for(i=200;i>0;i--); } } void main() { uchar i,k=0x80; while(1) { for(i=8;i>0;i--) { P2=0xff; k=_crol_(k,1); P0=DSY_CODE[8-i]; P2=k; DelayMS(3); } } }
我的是共阳数码管,是8位的,我选通的是第一位,你可以自己改一个地方 #include unsigned char code s8[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(int i) { int j; for(;i>=0;i--) { for(j=0;j<115;j++) {;} } } void main() { int i; while(1) { P2=0x7f;/*这是选通位,你可以根据自己的数码管来写*/ for(i=0;i<10;i++) { P0=s8[i]; delay(400); P0=0xff; delay(100); } i=0; } }
方法如下: #include "reg51.h"#define uchar unsigned char#define uint unsigned intuchar code table_numberP[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uint n;uint ge;void main(){ge = 0;TMOD = 0x01;TH0 = (65536-45872)/256;TL0 = (65536-45872)%256;EA = 1;ET0 = 1;TR0 = 1;while(1);}void T0_time()interrupt 1{TH0 = (65536-45872)/256;TL0 = (65536-45872)%256;n++;if(n%20 == 0){if(ge<=9){P1 = table_numberP[0];P0 = table[ge];ge++;if(ge == 10){ge = 0;}}}} 主函数中的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。
#include #define uchar unsigned char uchar key,key_time,ajbz; uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; /******************延时函数**********************/ void delay(uchar k) { uchar j; while(k--) for(j=0;j<50;j++); } /************键盘扫描及翻译函数***************/ uchar key_jz() { uchar key_dk; c: ajbz=0; //按键标志位:“0”为无按键按;“1”有按键按下 P1 = 0xf0; //向P1端的高4位送高电平低4位送低电平 key_dk = P1; //读取p1端口的值送给key_dk P1 = 0x0f; //向P1端的高4位送低电平低4位送高电平 key_dk |= P1; //将P1端口的值与key_dk按位或并送回key_dk if((key_dk&0xff)!=0xff) //判断是否有按键按下 delay(10); //延时去抖 if((key_dk&0xff)!=0xff) //再次判断是否有按键按下确定是否真的有键按下 { switch(key_dk) //翻译key_dk得到按键键值 { case 0x7d: key= 10;ajbz=1;break; case 0x7e: key= 0;ajbz=1;break; case 0xbb: key= 3;ajbz=1;break; case 0xbd: key= 2;ajbz=1; break; case 0xbe: key= 1;ajbz=1;break; case 0xdb: key= 6;ajbz=1;break; case 0xdd: key= 5;ajbz=1;break; case 0xde: key= 4;ajbz=1;break; case 0xeb: key= 9;ajbz=1;break; case 0xed: key= 8;ajbz=1;break; case 0xee: key= 7;ajbz=1;break; default: goto c; } while((P1&0x0f)!=0x0f); //等待按键释放 } return key; } void int_0()interrupt 1 { key_time++; if(key_time==160) { key_jz(); } } void display(uchar i) { P2=0x01; P0=tab[i/10]; delay(20); P0=0xff; P2=0x02; P0=tab[i%10]; delay(20); P0=0xff; } void main() { uchar wz,t; TMOD=0x02; TH0=6; TL0=6; TR0=1; EA=1; ET0=1; t=0; while(1) { display(t); if((ajbz==1)&&(key<10)) { switch(wz) { case 0:wz++; t=t%10+key*10;break; case 1:wz++;t=t/10*10+key;break; } ajbz=0; } if((ajbz==1)&&(key=10)) { t=0; wz=0; ajbz=0; } } }程序就这样~要仿真留邮箱~
+‘0’ 或者 +0x30,估计你是这个意思