导航:首页 > 操作系统 > 单片机6个数码管

单片机6个数码管

发布时间:2023-07-02 11:00:53

Ⅰ 51单片机共阴数码管利用静态显示,让六个数码管显示1~6,程序怎么写

代码如下:

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

#define data P0 //P0口宏定义

/* ***************************************************** */

// 数码管位选数组定义

/* ***************************************************** */

uchar code leddata[] =

{ 0x3F, //"0"

0x06, //"1"

0x5B, //"2"

0x4F, //"3"

0x66, //"4"

0x6D, //"5"

0x7D, //"6"

0x07, //"7"

0x7F, //"8"

0x6F, //"9"

0x77, //"A"

0x7C, //"B"

0x39, //"C"

0x5E, //"D"

0x79, //"E"

0x71, //"F"

0x76, //"H"

0x38, //"L"

0x37, //"n"

0x3E, //"u"

0x73, //"P"

0x5C, //"o"

0x40, //"-"

0x00, //熄灭

0x00 //自定义};

};

/* ***************************************************** */

// 位定义

/* ***************************************************** */

sbit = P1^7; //段选定义

sbit we = P1^6; //位选定义

/* ***************************************************** */

// 函数名称:DelayMS()

// 函数功能:毫秒延时

// 入口参数:延时毫秒数(ValMS)

// 出口参数:无

/* ***************************************************** */

void delay(uint z)

{

uint x,y;

for(x = 0; x < z; x++)

for(y = 0; y < 113; y++);

}

/* ***************************************************** */

// 函数名称:main()

// 函数功能:数码管静态显示

// 入口参数:无

// 出口参数:无

/* ***************************************************** */

void main(void)

{

uchar i;

we = 1;//位选开

data = 0x00;//送入位选数据

we = 0;//位选关

while(1)

{

 for(i = 0;i < 16 ; i++)

 {

 = 1; //段选开

data = leddata[i]; //送入段选数据

 = 0; //段选关

 delay(500); //延时

 }

}

}

(1)单片机6个数码管扩展阅读

对于74HC573,形象一点,我们只需要将其理解为一扇大门,只不过这扇大门是单向的,其中11引脚(LE)控制着门的开、关状态,高电平为大门打开,低电平为大门关闭。

D0-D7为输入,Q0-Q7为输出,在LE = 1,即输入高电平时,输入端=输出端,输入是什么,输出也就原封不动的输出;在LE = 0 ,即输入高电平时,大门关闭,实现锁存,不再输出。了解之后,我们按照电路图,来进行编程,代码实现。

在实现数码管的静态显示中,用到了两个锁存器,两个I/O口,P1.6和P1.7,分别是位选和段选。

首先定义了个数码管位选数组,也就是十六进制代码,这便是后来数码管显示数字的核心,接着,用 sbit 定义了位选和段选端口,分别是 P1.6 和 P1.7 ,定义了一个延时函数,其实这一串代码很有意思,开关开关思想,贯穿始终。

首先把位选打开,送入位选数据后,关闭锁存器,实现锁存,进入循环,随之打开段选锁存器,送入段选数据后,再次关闭段选。

接下来,这个延时操作对于实际看到数码管的显示效果特别重要,因为程序在段选后之后,会马上消隐,显示的时间之后几个微秒,这显然不太合理,需要在关闭段选后加上延时,这样一来,才会让每位数码管亮度保持均匀。

Ⅱ 51单片机静态显示可以实现6位数码管123456的显示吗

多位数码管无法实现静态显示,物理上正备它们就存在冲突。除非每一位显示的内容都相同……
如果执着于用静态显示,行卜可以用6个1位数码管,缺点是需要大量的举带毁管脚来控制(可以用串扩并方案或地址映射扩展方案,成本上得不偿失)。

Ⅲ 请问一下基于51单片机的多功能秒表怎样实现六个数码管的显示

用定时器定时10mS中断一次,每次中断毫秒计数器加10,若亳秒大于1000,清零亳秒,秒加1,若秒等于60,秒清0,分加1
主程序中只管计算分离分,十分,秒,十秒,十毫秒,百毫秒,并不断地查七段码表并刷新数码管

阅读全文

与单片机6个数码管相关的资料

热点内容
part服务器是什么 浏览:417
isp算法处理 浏览:54
app帐户在哪里找 浏览:422
哪里可以下载黄页app 浏览:237
app加密视频怎么导出 浏览:595
智慧锁app验证码怎么来的 浏览:176
pdf文档怎么签名 浏览:929
腾讯云服务器存在违规行为 浏览:655
魅族手机解压缩 浏览:66
方舟编译设置后台优化 浏览:272
浦发银行app有什么优点 浏览:968
缓解压力放松心情的办法是吵架 浏览:780
pythonmap使用方法 浏览:784
旅行世界app叫什么 浏览:923
加密篦子怎么制造视频 浏览:905
电脑主服务器未运行怎么解决 浏览:330
js超级玛丽源码 浏览:310
云镜下载什么格式app 浏览:767
iosAndroidjava 浏览:402
外卖员转型做程序员 浏览:927