用AT89C51单片机控制两位8段LED数码管采用动态显示的方式显示29

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
用AT89C51单片机控制两位8段LED数码管采用动态显示的方式显示出201211458

#include
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
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++;
if(number>1)number=0;
switch(number)
{
case 0:P2=0x02;P0=distab[nn];
break;
case 1:P2=0x01;P0=distab[nn+1];
nn++;
nn%=9;
break;
default:break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

用AT89C51单片机控制8段LED数码管采用动态显示的方式显示出00000000,可以用按键输入数字的仿真实例,可以下载附件仿真试试。

#include<reg51.h>

#define uchar unsigned char;

uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //0到f

uchar number;

void t0isr() interrupt 1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

number++;

if(number>1)number=0;

switch(number)

{

case 0:P2=0x02;P0=distab[2];

break;

case 1:P2=0x01;P0=distab[9];

break;

default:break;

}

}

main()

{

TMOD=0x01;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

TR0=1;

ET0=1;

EA=1;

while(1);

}



先定义位选引脚
sbit wei2=P2^0
sbit wei1=P2^0
sbit wei2=P2^1
再定义0.5ms的延时时间
于是
wei1=1;
P1=代表2的数码值
延时
wei1=0;
显示9原理一样!
如果想要具体电路图个程序留下邮箱



有点难

  • 通过AT89C51单片机控制8个发光二极管发光 5种效果循环,要求通过按钮...
    答:L8F== FLAG.5;LIGHT8中断标志位 DISF== FLAG.6;该位置1时再执行显示 KEY== 0X06.3 ORG 0X00 JMP INIT ORG 0X08 JMP INTERRUPT ORG 0X10 TAB_MODE:ADD PC,A NOP NOP CALL LIGHT8 RET CALL LIGHT7 RET CALL LIGHT6 RET CALL LIGHT5 RET CALL LIGHT4 RET CALL LIGHT3 RET CALL LIGHT...
  • 要求用AT89C51单片机的P1口点亮8个发光二极管分为两组点亮,每次点亮4...
    答:程序如下: 绝对没有错 LED灯的一端接P1口的各各引脚,另一端接地。同时在P1口的每个管脚上加1K的上拉电阻,电阻另一端连接至+5V即可 ORG 0000H AJMP START ORG 0030H START:MOV SP,#07H MOV P1,#00H MOV A,#0AAH LOOP:CPL A MOV P1,A ACALL DELAY AJMP LOOP DELAY:MOV R0,#50...
  • 单片机AT89C51的P2口接8个LED,让这8个LED显示闪烁功能即8个LED1s熄 ...
    答:R6,#200 D2:MOV R7,#250 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 DELAY2:MOV R5,#20 D11:MOV R6,#200 D22:MOV R7,#250 D33:DJNZ R7,D33 DJNZ R6,D22 DJNZ R5,D11 因为有CALL指令要用到堆栈,所以要留出堆栈空间而把程序代码安排在 org50 之后;至于延时值,自己调试吧;
  • at89c51单片机用移位做八盏灯循环的程序
    答:1.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4...
  • 用AT89C51单片机控制8个Led的流水灯的C程序看不懂
    答:Delay10ms(50); 延时一段时间 LED=LED<<1; 点亮的发光管,向左移动一位 if (P2==0x00) 判断是否8个全部点亮了 { LED=0xff; 如果全部点亮,则将全部发光管熄灭 } } } void Delay10ms(unsigned int c)延时函数主程序 { unsigned char a, b;建立两个变量 a b for(;c>...
  • 单片机汇编程序题:AT89C51中p3.2接开关1,p3.3接开关2,当开关1,2全都...
    答:按键触发方式应该都是低电平触发 MOV R0,#01 MOV A,R0 LOOP:MOV P1,A RL A MOV R0,A LCALL DELAY LJMP LOOP DELAY:MOV R5,#10 DL0:MOV R6,#200 DL1:MOV R7,#200 DJNZ R7,DJNZ R6 ,DL1 DJNZ R5, DL0 RET ...
  • 哪位大神有用用AT89C51单片机的P2口控制8个Led的流水灯的汇编程序_百度...
    答:for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次 { Delay(50000);P2<<=1;P2=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1 } P2=0xfe; //重新赋初始值 //主循环中添加其他需要一直工作的程序 } } /*--- 延时函数,含有输入参数 ...
  • 哪位大虾帮帮我用AT89C51单片机控制8个Led的流水灯的单片机程序 希望是...
    答:uchar i,j;void delay(uint ms){ uchar k;while(ms--)for(k=0;k<123;k++);} void main(){ while(1){ i=0xfe;for(j=0;j<7;j++){ P1=i;i=_crol_(i,1);delay(500);} for(j=0;j<7;j++){ P1=i;i=_cror_(i,1);delay(500);} for(j=0;j<8;j++){ P1=i;i=...
  • MCS-51单片机AT89C51有几个几位的定时计数器,可以被设定的工作方式有几...
    答:51单片机有两个定时器,每个定时器可以设置4中工作方式。\x0d\x0a方式0:13位定时器\x0d\x0a方式1:16位定时器\x0d\x0a方式2:8位重装载模式\x0d\x0a方式3:两个独立8位定时器模式
  • AT89C51单片机两个定时中断可以同时使用吗
    答:如果不做串行通信或者实时系统(rtx51、uc/os51)的话,可以。