栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

51单片机:数码管

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

51单片机:数码管

小白向单片机笔记三:数码管
  • 前言
  • 一、数码管原理图
    • 数码管显示原理
    • 单片机数码管原理图
  • 二、数码管显示代码
    • 1.静态显示代码
    • 2. 动态显示代码
    • 3.代码解释
      • 为什么第二个数码管显示是P22=0?


前言

数码管原理及代码


一、数码管原理图 数码管显示原理


多个数码管封装在一起,可分为共阴极和共阳极。所有LED的阴极接在一起为共阴极,所有LED的阳极接在一起为共阳极。显示部分A-G和DP分别为一个LED灯。

数码管表为16进制。以共阴极显示数字0为例,0x3f表示0011 1111。即DP,G为低电平,不亮;FEDCBA为高电平,亮。
共阳极顺序与其相反。

单片机数码管原理图

  1. C51芯片的P2引脚默认输出高电平。(笔记一:LED点亮)
  2. 开发板上的数码管为共阴极。

U5芯片中默认P24=1 , P23=1 , P22=1, 二进制为111,转换10进制为7。经过U5芯片,即控制左侧7号引脚输出低电平,其他为高电平。同时U5芯片左侧引脚链接8个数码管,即数码管LED8为低电平(数码管为共阴极),其他为高电平。

由于51芯片P2引脚同时控制实验一中8个LED灯的亮灭,当本次实验控制除数码管LED8之外的数码管显示时,同时可以观察到8个LED灯中第3,4,5个LED灯的闪烁。

此时控制C51芯片的P0输出即可控制单个数码管的显示(数码管表)。

二、数码管显示代码 1.静态显示代码
#include "reg52.h"
typedef unsigned int uint;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
//数码管表
uint display[] = {0x00,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(uint i){
	while(i--){
	}
}

void main(){
	
	P22 =0;

	
	while(1){
		uint i;
		for( i=0 ; i<17 ; ++i){
			delay(50000);
			P0 = display[i];
			delay(50000);
		}
	}
}
2. 动态显示代码
#include "reg52.h"
typedef unsigned int uint;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;

uint display[] = {0x00,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(uint i){
	while(i--){
	}
}

void main(){
	
	while(1){
		uint i;
		for( i=1 ; i<9 ; ++i){
			switch(i){
				case 1: P24=1;P23=1;P22=1;break;
				case 2: P24=1;P23=1;P22=0;break;
 				case 3: P24=1;P23=0;P22=1;break;
				case 4: P24=1;P23=0;P22=0;break;
				case 5: P24=0;P23=1;P22=1;break;
				case 6: P24=0;P23=1;P22=0;break;
				case 7: P24=0;P23=0;P22=1;break;
				case 8: P24=0;P23=0;P22=0;break;
			}
			
			delay(100);
			P0 = display[i];
			delay(100);
			P0=display[0];
		}
	}
}
3.代码解释 为什么第二个数码管显示是P22=0?

因为P24,P23默认输出高电平,即P24=1,P23=1。当P22=0时,组成的二进制为110,转换为十进制为6。即U5芯片左侧9号引脚输出低电平,即控制LED7数码管的显示。
在控制非LED8数码管显示时,可以顺便观察实验一中LED闪烁

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号