单片机-静动态数码管实验

P0控制数码管 ,P0低电平 P1,P2,P3高电平

1、静态数码管

需求:数码管显示0,即让p0端口输出数字0的段码0x3f(共阴)

#include "reg52.h"

typedef unsigned int u16;

typedef unsigned char u8;

//数码管显示数字的数组 共阴极

u8 gsmg_code[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,0x39, 0x5e, 0x79, 0x71};//0-9 A-F

#define SMG_A_OP_PORT P0 //宏定义P0

void main(){

while(1){

//显示数字0 需显示数字几索引号就是几

SMG_A_OP_PORT =gsmg_code[0];

}

}

2、动态数码管

#include "reg52.h"

typedef unsigned int u16;

typedef unsigned char u8;

#define SMG_A_OP_PORT P0

void delay_10us(u16 ten_us)

{

while(ten_us--);

}

//数码管显示数字的数组 共阴极 显示段选数据

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

//定义数码管位选的控制管脚

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

void smg_xianshi(){

u8 i=0;

for(i=0;i<8;i++){

//位选操作

switch(i){

case 0:

LSC=1,LSB=1,LSA=1; //Y7亮(第1个数码管亮)

break;

case 1:

LSC=1,LSB=1,LSA=0; //Y6亮(第2个数码管亮)

break;

case 2:

LSC=1,LSB=0,LSA=1;

break;

case 3:

LSC=1,LSB=0,LSA=0;

break;

case 4:

LSC=0,LSB=1,LSA=1;

break;

case 5:

LSC=0,LSB=1,LSA=0;

break;

case 6:

LSC=0,LSB=0,LSA=1;

break;

case 7:

LSC=0,LSB=0,LSA=0;//Y0亮(第7个数码管亮)

break;

}

SMG_A_OP_PORT=gsmg[i];

delay_10us(100);

SMG_A_OP_PORT=0x00;//消隐(消除重影)

}

}

void main(){

while(1){

smg_xianshi();

}

}

3、74HC245芯片和74HC138芯片

相关推荐
MingYue_SSS26 分钟前
开关电源抄板学习
经验分享·笔记·嵌入式硬件·学习
玉树临风江流儿40 分钟前
炸鸡派-定时器基础例程
单片机·嵌入式硬件
小宋同学在不断学习1 小时前
stm32-掌握SPI原理(一)
stm32·单片机·spi
is08152 小时前
STM32的 syscalls.c 和 sysmem.c
c语言·stm32·嵌入式硬件
学不动CV了2 小时前
数据结构---链表结构体、指针深入理解(三)
c语言·arm开发·数据结构·stm32·单片机·链表
szxinmai主板定制专家3 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
工业互联网专业7 小时前
汇编与接口技术:8259中断实验
汇编·单片机·嵌入式硬件·8259中断实验
brave and determined7 小时前
国产MCU学习Day6——CW32F030C8T6: I2C功能详解与应用案例
单片机·eeprom·i2c·cw32f030c8t6·cw32·cw32f030·中断读取eeprom
梁山1号7 小时前
【ESP32】3.串口的发送与接受
单片机·物联网
KaiGer6667 小时前
AUTOSAR进阶图解==>AUTOSAR_SWS_V2XFacilities
单片机·汽车·嵌入式·autosar