89C52单片机怎么连接让P3口控制数码管

2020-11-26 05:04:34 字数 4627 阅读 7214

1楼:匿名用户

只想用p3口的话,必须另加控制元件。

1一种方法是用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。

2另一方法是,用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

3再就是可以用p3口的两根串行线接串并转换ic,来驱动数码管。

2楼:邑大小卒

不妨到我们这个电子世家单片机群:255847245,里面的同行或许能帮得到你。

3楼:匿名用户

用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

89c52单片机怎么点亮8个数码管?下面**为什么就亮了3个

4楼:水知余心

遇到相同的问题,我是这样解决的:

1、添加延时

2、在位选和段选打开之前先赋值

以下是我的程序,仅供参考:

#include

#defineuintunsignedint#defineucharunsignedcharsbitwe=p2^7;

sbitdu=p2^6;

voiddelay(uintz)

ucharcodeleddata=;

voidmain()

下面是效果图:

5楼:匿名用户

其实已经亮了,但是你看不到

void main()

6楼:斗天乐

你把程序中段选赋不同的值试试看是什么原因。

7楼:匿名用户

#include

sbit dula=p2^6;

sbit wela=p2^7;

void main()}

8楼:匿名用户

我的建议是p3=0x00这样才能控制八位吧

单片机89c52如何控制多个数码管?

9楼:娜莉china小

只想用p3口的话,必须另加控制元件。

1一种方法是用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。

2另一方法是,用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

3再就是可以用p3口的两根串行线接串并转换ic,来驱动数码管。

10楼:匿名用户

mov31h,#00h

mov32h,#00h

mov33h,#01h

mov34h,#06h

mov35h,#03h

mov36h,#02h

acalld0

jmp$-2

d0:movr0,#31h

movr2,#11111110b

movdptr,#tab

d1:orlp1,#00111111bmova,@r0

movca,@a+dptr

movr3,#8

d2:rlca

movp3.2,c

setbp3.3

clrp3.3

djnzr3,d2

incr0

mova,r2

anlp1,a

d3:movr3,#250djnzr3,$

mova,r2

rla

movr2,a

jbacc.6,d1

rettab:db3fh,06h,5bh,4fhdb66h,6dh,7dh,07h

db7fh,6fh,77h,7ch

db39h,5eh,79h,71h

db40hend

单片机89c52如何控制多个数码管?

11楼:匿名用户

1.用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。

2.用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

3.用p3口的两根串行线接串并转换ic,来驱动数码管。

89c52单片机如何让数码管从520到1314

12楼:无风的大浪

只想用p3口的话,必须另加控制元件。

1一种方法是用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。

2另一方法是,用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

3再就是可以用p3口的两根串行线接串并转换ic,来驱动数码管。

13楼:

参考一下这个**实例吧,数码管显示 加 按键输入。

单片机,p0口接led共阳数码管,p3.2k1口和p3.3k2口接开关。 20

14楼:匿名用户

#include

sbit k1=p3^2;

sbit k2=p3^3;

bit glint; //闪烁标志位

void delay()

main()

if(k1==0)

if(k2==0)}}

89c52单片机怎么点亮8个数码管

15楼:匿名用户

8个数码管如果显示不同内容,那么一般需要动态扫描显示,才能消耗最小的硬件资源。

如果显示同一个内容,那么就直接送段码,位控全开就可以了。

单片机89c52如何控制多个数码管?

16楼:娜莉china小

只想用p3口的话,必须另加控制元件。

1一种方法是用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。

2另一方法是,用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

3再就是可以用p3口的两根串行线接串并转换ic,来驱动数码管。

17楼:匿名用户

1.用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。

2.用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。

3.用p3口的两根串行线接串并转换ic,来驱动数码管。

89c51单片机的p3口接一个共阳极的数码管

18楼:匿名用户

//电路说明如下。

//单片机:使用51系列兼容的即可;

//4×4矩阵键盘:接在p1口;

//两位数码显示器: p0口输出七段码,p2口输出位选码。

//c语言程序如下。

* 文件名: key_led.c

* 功能 : 对4×4矩阵键盘进行输出,在数码管后两位显示按键值。

#include

#include

#define uint unsigned int

#define uchar unsigned char

//uchar code table[10] = ;

uchar code table[10] = ;

* 名称 : delay_1ms()

* 功能 : 延时子程序,延时时间为 1ms * x

* 输入 : x (延时一毫秒的个数)

* 输出 : 无

void delay_1ms(uint x)

* 名称: keyscan()

* 功能: p1外接4×4按键, 按照扫描法读出键值

* 输出: 按键值0~15/如无键按下, 返回16

uchar keyscan(void)

; for(j = 0; j < 4; j++) }

return 16; //判断结束,没有键按下,返回16

} //呵呵,实质性的语句不过8行,就是这么简练!

* 名称: display(uchar k)

* 功能: 将参数分成十位、个位分别显示

* 输入: k (键盘数值)

* 输出: p0口输出七段码,p2口输出位选码

void display(uchar k)

* 名称 : main()

* 功能 : 主函数

void main(void)

//---------以下是对按键的处理

display(key_value); //显示键值} }

19楼:做而论道

呵呵,楼上的答案的电路、程序,可见:

http://hi.baidu.***/%d7%f6%b6%f8%c2%db%b5%c0/blog/item/ef086222268d4f4eac34de59.html