[高分]怎样用89c51单片机控制LED数码管显示 不要C源程序 还有怎么连接

如题所述

几位数码管?显示什么内容? 

给你一个2 位共阴数码管,动态显示的程序 。晶振、复位及电源电路未画出,你自己补上。

 COUNT EQU 50H 

 SP1 EQU P3.6 

 SP2 EQU P3.7 

 ORG 0

 AJMP MAIN

 ORG 30H

MAIN: MOV COUNT,#0 

K1:   ACALL   DISP

 JB SP1,K2 

 LCALL DISP

 JB SP1,$;-3 

        LCALL DLY 

 LCALL DISP

 JNB SP1,$-3 

        INC COUNT 

        MOV A,COUNT 

 CJNE A,#100,K1

        LJMP MAIN           

K2: JB SP2,K1 

 ACALL DISP

        JB SP2,$-3      

        LCALL DLY      

 LCALL DISP

 JNB SP2,$-3

        MOV A,COUNT 

 CJNE A,#0,DEC1 

 MOV COUNT,#100 

DEC1:  DEC COUNT 

        MOV A,COUNT 

 CJNE A,#100,K1

        LJMP MAIN    

DISP: MOV A,COUNT

 MOV B,#10 

 DIV AB 

 MOV DPTR,#TAB    

 MOVC A,@A+DPTR  

 MOV P0,A

 CLR P2.0

 ACALL DLY

 SETB P2.0 

 MOV A,B 

 MOVC A,@A+DPTR 

 MOV P0,A

 CLR P2.1

 ACALL DLY

 SETB P2.1

 RET

              

DLY: MOV R6,#2;0 

D1: MOV R7,#248 

        DJNZ R7,$ 

        DJNZ R6,$-4 

        RET 

TAB: DB        03FH;0

        DB        006H;1

        DB        05BH;2

        DB        04FH;3

        DB        066H;4

        DB        06DH;5

        DB        07DH;6

        DB        007H;7

        DB        07FH;8

        DB        06FH;9

        END

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-04
很多人不明白数码管的问题,主要是没有明白位选和段选,我给你个程序,你自己看看,能不能理解啊。这是一个很简单的程序,你可以在自己的板子上练习一下啊。看看显示的数字是什么
#include <reg52.h>
#define uint unsigned int

sbit d1=P2^5;

void delay();

void main ()
{
while(1)
{
P2=0xf7;
d1=1;
P0=0x0c0;
d1=0;
delay();

P2=0xfb;
d1=1;
P0=0xf9;
d1=0;
delay();

P2=0xfd;
d1=1;
P0=0x0a4;
d1=0;
delay();

P2=0xfe;
d1=1;
P0=0x0b0;
d1=0;
delay();
}
}

void delay()
{
uint x,y;
for (x=200;x>1;x--)
for (y=200;y>1;y--);
}本回答被网友采纳
第2个回答  2010-12-05
模拟串口方式0:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit P3_2=P3^2; //模拟接受
sbit P3_3=P3^3; //模拟发送
uchar code smg[11]=;//数码管编码0~ 9
void display(uchar z);
main()
{
display(5);
display(0);
display(4);
while(1);
}

/************模拟串口显示**************/
void display(uchar z)
{
uchar i;
uchar temp;
temp = smg[z];
for(i=0;i<8;i++)
{
P3_3= 0;
if(temp & 0x01) P3_2=1;
else P3_2 = 0;
P3_3= 1;
temp = temp>>1 ;
}
}

串口}方式0:
void display()
{
SM0=0;
SM1=0; //方式0
for(i=0;i<3;i++)
{
SBUF=smg[snum[2-i]];
while(!TI) ;
TI=0;
delay(1000);
}
}

还有并行口方式 占用I/O不推荐 不过程序很简单
第3个回答  2010-12-04
晕死,5分还叫高分!!!

LZ不要C源程序,也不要连接图,那你要什么??

是来送分的吗。

[高分]怎样用89c51单片机控制LED数码管显示 不要C源程序 还有怎么连接...
给你一个2 位共阴数码管,动态显示的程序 。晶振、复位及电源电路未画出,你自己补上。COUNT EQU 50H SP1 EQU P3.6 SP2 EQU P3.7 ORG 0 AJMP MAIN ORG 30H MAIN: MOV COUNT,#0 K1: ACALL DISP JB SP1,K2 LCALL DISP JB SP1,$;-3 LCALL DLY LCALL DISP JNB SP1,$-3 INC ...

用89c51单片机写一个数码管显示HELLO的程序,是在一个七段数码管上依次...
在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去 代码如下:include; \/\/用的是单独操作,没有用总线 sbit led1 = P1^0;sbit led2 = P1^1;sbit led3 = P1^2;sbit led4 = P1^3;sbit led5 = P1^4;sbit led6 = P1^5;sbit led7 = P1^6...

如何用c语言编程实现用89c51单片机控制8个led灯像电子时钟那样显示?
8个LED灯怎么可能显示出电子时钟! 8个数码管还差不多。

用89c51单片机 6个数码管循环显示HELLO的程序 及仿真电路图
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9 uchar ledtab[]={0x66,0x79,0x68,0x68,0x5c, \/\/HELLo 0x00,0x39,0x6d,0x00,0x3f,0x66}; \/\/ C51 04 0x66,0x79,0x68,0x68,0x5c} \/\/HELLo uchar disdat[6],num;void dis...

89C51单片机的p3口接一个共阳极的数码管
\/\/C语言程序如下。\/ 文件名: KEY_LED.c 功能 : 对4×4矩阵键盘进行输出,在数码管后两位显示按键值。\/ include <reg51.h> include <intrins.h> define uint unsigned int define uchar unsigned char \/\/uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f,...

一个89C51单片机用两锁存器控制两个数码管的程序
要延时

我用89C51单片机控制数码管四位的共阳的。为什么要把对应的位选和段选...
楼主的三极管,起倒相的作用。它把位选输出的低,变成了高,送到公共的阳极上。此时,段选再输出低,就满足了共阳数码管的发光条件。

89c51单片机定时计数器的工作原理?
编写程序时,首先根据硬件连线写出LED数码管的字形码、位驱动码,然后编写程序如下: #include "reg51.h"#define uchar unsigned char#define uint unsigned int uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; \/\/位驱动码uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x...

求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图
void Auto_Set1302(uchar *pClock) { uchar h; uchar ucAddr = 0x80; if(((R1302(0x81))&0x80)==0x80) { W1302(0x8e,0x00); \/* 控制命令,WP=0,写操作?*\/ for(h =7; h>0; h--) { W1302(ucAddr,*pClock); \/* 秒 分 时 日 月 星期 年 *\/...

89c51单面机c语言时钟控制器编程
方案2:用内部的定时器做数字钟,通过数码管显示出来使用芯片:AT89S52,DS12887时钟芯片,实践通过,运行稳定。自己根据程序连接引脚。 #include<reg52.h> #include<absacc.h> #define uchar unsigned char #define uint unsigned int #define LCDCOM XBYTE[0xcffc] \/\/LCD写命令寄存器地址 #define LCDDATA XBYTE[0xcf...

相似回答