STC89C52单片机——静态数码管

数码管,其内部含有8个LED,其实是由LED组装而成的。

数码管有单个1位的数码管,也有2位或者4位,甚至更多位在一起的。我们可以通过位选端控制我们希望点亮的数码管,可以通过控制段选端输出我们希望输出的数据。

数码管内部的的连接方式,分共阴极和共阳极两种,它们的编码是不一样的。对于不同的硬件连接,其对应的共阴极编码或者共阳极可能也是不一样的。

实验硬件图

 开发板上,使用的是两块4位一体的数码管,采用的是共阴极的连接方式。其位选信号(COM端)已经和38译码器(74HC138)输出相连,可以通过控制P22,P23, P24的高低电平信号选择我们需要显示的一位数码管。

源代码如下:

#include "reg52.h" //先进入工程文件夹寻找REG52.H文件。若没有,则进入软件安装路径内进行查找。
                   //52系列单片机头文件

#include "intrins.h"

typedef unsigned char u8;

u8 temp;	  //定义一个全局变量

sbit a = P2^2;	//38译码器的输入端
sbit b = P2^3;	//38译码器的输入端
sbit c = P2^4;  //38译码器的输入端

void delay_xms(unsigned int xms)
{
	unsigned int i,j;
	for(i = xms; i > 0; i--)
		for(j = 110; j > 0; j--);
}

unsigned char code table[] = {0x3f, 0x06, 0x5b, 0x4f, 
							  0x66, 0x6d, 0x7d, 0x07,
							  0x7f, 0x6f, 0x77, 0x7c,
							  0x39, 0x5e, 0x79, 0x71 };	//定义一个数组,存储共阴极数码管编码
//这里使用了code关键字,这样我们在定义数组的时候就不会占用内存空间。定义了code,那么直接分配程序空间。就是说,编译后,编码占用的是程序存储空间而非内存空间。

void main(void)
{	
	a = 1;
	b = 1;
	c = 0;
	while(1)
	{
		u8 i;
		for(i=0; i<16; i++)   //16个数循环显示
		{
			temp = table[i];
			P0 = temp;		  //P0端控制段选信号
			delay_xms(500);
		}	
	} 	  
}

实验现象:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值