×
单片机 > 单片机程序设计 > 详情

51单片机开发中数码管显示与应用

发布时间:2021-12-15 发布时间:
|

#include

sbit dula=P2^6;//申明U1寄存器的锁存端,P2^6是段锁

sbit wela=P2^7;//申明U2,P2^7是挝凰?

main()

{

wela=1; //打开U2锁存端

P0=0xfe;//送入位选信号

wela=0;//关闭U2锁存器

dula=1;//段锁

P0=0x5e;//0x06代表1

dula=0;

while(1);

}


wela代表段选。 wela控制哪几个二数码管亮


dula 代表位选,控制数码管亮哪些?后者负责显示0~F中的十六进制中的任意字符


综合来说,控制段选是由一串二进制数字控制的,1111 1110,转化为十六进制为0xfe,只有第一个二极管会亮


如果要控制六个数码管,111000000,转换为十六进制为0xc0


同理,如果要使1,3,5中的数码管工作,二进制几位11101010,0xea


同理,2,4,6即为11010101为0xD5


#include//静态显示

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;//申明U1锁存端

sbit wela=P2^7;//申明U2锁存端,位生命

uchar num;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint z);

void main()

{

wela=1;//打开U2

P0=0xd5;//表示对六个操作,一开始打开所有位选

wela=0;

while(1)

{

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

{

dula=1;//打开U1,段口

P0=table[num];//送入段选信号

dula=0;

delay(1000);//延时1.0秒

}

}

}

void delay(uint z)//延时

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

这个程序实现了静态数码管的变化,6个数码管一起从0~F的变,间隔一秒。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会