自学51单片机 - 动态数码管实验

1、程序

#include "reg52.h"typedef unsigned int uint16; //对系统默认数据类型进行重定义 typedef unsigned char uint8; #define SMG_A_DP_PORTP0//使用宏定义数码管段码口//定义数码管位选信号控制脚 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; //共阴极数码管显示0~F的段码数据 uint8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay_10us(uint16 i) { while(i--); }void smg_display(void) { uint8 i=0; for(i=0; i<8; i++) { switch(i)//位选 { case 0: LSC=1; LSB=1; LSA=1; break; case 1: LSC=1; LSB=1; LSA=0; 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; break; } SMG_A_DP_PORT=gsmg_code[i]; //传送段选数据 delay_10us(100); //延时一段时间,等待显示稳定 SMG_A_DP_PORT=0x00; //消音 } }void main() { while(1) { smg_display(); } }

2、结果 【自学51单片机 - 动态数码管实验】自学51单片机 - 动态数码管实验
文章图片

自学51单片机 - 动态数码管实验
文章图片

    推荐阅读