51单片机0∼999循环显示(数码管)

作者&投稿:逯复 (若有异议请与网页底部的电邮联系)
51单片机控制数码管循环显示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: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDELAY: MOV R4,#2
DELAY100MS:MOV R5,#200
DELAY5MS: MOV R6,#250
LOOP: DJNZ R6,LOOP
DJNZ R5,DELAY5MS
DJNZ R4,DELAY100MS
RET

你好!静态显示的话,单片机的IO口就没剩几个了

#include<reg51.h>
#include<INTRINS.h>
#define u16 unsigned int
#define u8 unsigned char


u8 ds[4]; //数码管显示缓存
code u8 w[]={0x01,0x02,0x04,0x08,}; //位码
code u8 d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//断码
void dispaly(){//显示函数
static u8 a;
a++;
if(a>3)a=0;
P0=0xff;
P2=w[a];
P0=d[ds[a]];
}



void init() //初始化函数
{   TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
    ET0=1;

}


u16 count=0;
u16 js_ms=0;
void main()//主函数
{
init();
TR0=1;
while(1){
ds[0]=count/1000%10;//将当前分值送到数码管缓存
ds[1]=count/100%10;
ds[2]=count/10%10;
ds[3]=count%10;
}

}



void timer0() interrupt 1//1ms定时器
{   
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
dispaly();
if(++js_ms>=1000){
js_ms=0;
if(++count>999)count=0;
}
}



我可以

问题问的不清楚
是要程序? 还是要电路?


单片机1和0分别对应的是多少电压?
1、单片机1:高电平:2V--5V;2、单片机0:低电平:0V--0.8V;3、中间的一段电压是不可以出现的;但可以跳过。4、如果单片机供电电压是DC5v,那么一般高电平是(5-4.5V),低电平是(0-0.5V)。具体要查单片机的手册。

定时器\/计数器0和1分别表示什么?
这里TF、TR、IE、IT后面跟的0和1是对单片机寄存器中位的命名,因为有两个定时\/计数器、两个中断,所以用0、1来区分。各位的定义如下:TF1、TF0:分别是定时器1、定时器0的溢出标志位。当定时器x计满溢出时,由硬件使TFx位置“1”,并申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式...

单片机1和0分别对应的是多少电压?
要定义很多标准,单片机“内部”的电平,似乎是不用讨论的,先讨论管脚上的电平吧,大部分是ttl电平的。传输时还有所谓的“正逻辑”与“负逻辑”,RS232 电平为+12V 为逻辑负,-12 为逻辑正,还有的差分传输,两根线的相对状态来决定是“1”还是“0”。1 2V-5V 0 0V -0.8V 一般TTL电平就...

怎样用单片机控制数码管显示0或者1?
1、LS147优先编码器的输入端和输出端都是低电平有效,即当某一个输入端低电平0时,4个输出端就以低电平0的输出其对应的8421BCD编码。当9个输入全为1时,4个输入出也全为1,代表输入十进制数0的8421BCD编码输出。2、不用单片机,用数字电路实现很容易呀。用一片10线-4线编码器,接10个按键,输...

单片机中的0和1分别是什么意思?
0指的是关闭此功能,1是指启用此功能。

单片机的IO口有“0”、“1”两种输出状态,还有一种是“高阻”状态,高阻...
高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。高阻态的实质:电路分析时高阻态可做开路理解。你可以把...

单片机的I\/0口输入和输出,1和0是怎么回事
1和0是数字信号,当单片机的I\/0口输入和输出为高电平时,就是近似为5V电压,就表示为1。当单片机的I\/0口输入和输出为低电平时,就是近似为0V电压,就表示为0。所以,数字量就是这种高低电平的信号组成的。

单片机定时ET0=1什么意思?
单片机定时 ET0=1的意思是51单片机的定时器0允许中断。ET0是51系列单片机定时器0的中断允许开关,定时器中断是为了满足定时或计数溢出处理的需要而设置的,当发生计数溢出时,表示定时时间已到或者计数值已满,接着就以计数溢出信号作为中断请求去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的...

单片机 中 IT0=1; EX0=0 是什么意思,用在什么时候
在51单片机中,IT0和EX0是两个重要的控制位,它们分别影响外部中断0的工作模式和触发条件。IT0(中断触发方式控制位)用于设置外部中断0的触发模式,当其值为1时,外部中断0需检测到下降沿信号才能触发中断,这是一种边沿触发模式;而当IT0设置为0时,外部中断0会在外部引脚的电平变为低电平时立即触发...

51单片机 输出 0还是1
51单片机输出0。P0端口细分下,其实含有:P0.0 P0.1 P0.2 ... P0.7 共8个管脚,你可以单个管脚进行1或0复制(赋值后具体体现在单片机上的就是:置1的管脚会输出高电平(5V),置0的管脚会输出低电平(0V)),倘若直接对整个P0赋值1的话(P0=1)。(由于C语言的规范)实际上只是P0.0=1(十六...

上林县19342236537: 15单片机的定时器编写一秒一加的程序,从0到99一循环 -
鄹该福尔: #include#define uchar unsigned char#define uint unsigned int uchar num=0,a=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;i--) { for(j=0;...

上林县19342236537: 用C语言51单片机编写数码管从00到99的循环程序 -
鄹该福尔: {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;} }

上林县19342236537: 51单片机c语言设计,按键控制数码管,依次按下显示0到9循环 -
鄹该福尔: #include<reg51.h> sbit k1=P1^0; #define uint16 unsigned int #define uchar unsigned char uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay() { uint16 i=1000;while(i--); } void main() { uchar n ; P2=0xfe; P1=0xff; ...

上林县19342236537: 1602显示数字0 - 99循环,求例子啊,最好是51单片机的噢~~ -
鄹该福尔: 给你写一个参考程序/******************************************** 显示0-99********************************************/#include "REG52.H" sbit LCD_RS = P2^0;sbit LCD_EN = P2^1;#define LCD_DATA P0 unsigned char INT_TEMP; unsigned char INT_...

上林县19342236537: 51单片机,数码管循环显示0 - 9,当每按一次中断,数码管显示0,延时一段时间后恢复之前中断时的显示 -
鄹该福尔: 单片机有很多种,编程要根据不同单片机进行. 编程思想为: main{ 设置单片机上与数码管相连的引脚为输出, 设置单片机中断接口(即中断按钮)的中断控制寄存器里的中断使能, 设置整体中断使能, 循环子程序xunhuan(); 显示0到9, } ...

上林县19342236537: 51单片机8位流水灯8种变化程序 -
鄹该福尔: 第一种:1个LED发光,循环右移. 第二种:2个LED发光,循环右移. 第三种:3个LED发光,循环右移. 第四种:4个LED发光,循环右移.再改成左移,就又有四种. 这就有八种了.一边移动,一边闪烁; 再改变一下速度;这能有多少种了?

上林县19342236537: 51单片机输出循环 -
鄹该福尔: 试试下列程序:#include <reg51.h> sbit t = P1^0;//LED灯输出 sbit k = P3^5;//轻触开关#define uint unsigned int#define uchar unsigned char//延时函数 void delay(uchar z) { uint x, y; for(x = z; x > 0; x--) for(y = 110; y > 0; y--); }//按键检测函数 bit ...

上林县19342236537: 51单片机两片74hc595驱动8位共阳级数码管实现0 - 99循环显示 帮我看看有什么问题怎么老是错误 谢谢 -
鄹该福尔: 定时器方式1,应该TMOD=0x01,void send(uchar d) { uchar n; for(n=0;n<8;n++) { da=d&0x01; sclk=0; _nop_(); _nop_(); sclk=1 ;//上升沿移位 d=d>>1; } } 这个不需要初始化 cclk=0 ; sclk=0; da=0; 程序总的看来比较乱,子函数写的不好.

上林县19342236537: 51单片机矩阵键盘输入0 - 999999的任意数的问题? -
鄹该福尔: 0-999999,最多有6位数,因此可声明一个 6 byte的数组keybuffer[6]和一个存储数字位数的变量bitnum unsigned char keybuffer[6]; unsigned char bitnum=0 ; if(key{ keybuffer[bitnum] = key ; bitnum ++ ; }//如果用数码管显示,直接把keybuffer的值送...

上林县19342236537: c51单片机怎样让液晶显示数字999 -
鄹该福尔: 这是我的程序,不过 不同的板子程序是不一样的,具体要看你的I/O口了 #include<reg52.h> #define uchar unsigned char sbit lcden=P3^4; sbit lcdrs=P3^5; sbit dula=P2^6; sbit wela=P2^7; void write_com(uchar); void write_date(uchar); void init(); ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网