51数码管显示函数封装

数码管显示应该是比较常用的,但是每次去找一下代码挺麻烦的,贴一个自己稍微改的原码。方便以后调试用

把数码显示封装到一个函数里面 Display_Shuma 。方便程序调用

需要显示小数点在 位数后面加 (  | 0x80  )

如TempData[1]=dofly_DuanMa[(num%100)/10]|0x80; //共阴数码管只要在对应的数字后面 | 0x80 即可显示小数点

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1=P2^2;//定义锁存使能端口 段锁存
sbit LATCH2=P2^1;//                 位锁存

/*------------------------------------------------
                    主函数
------------------------------------------------*/
void Delay(unsigned int t)
{
	while(--t);
}
//数码管显示函数
//FirstBit 从第几位开始显示  左边开始算
//num  显示的数值
void Display_Shuma(unsigned int FirstBit, unsigned int num ){
	unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
	unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
	unsigned char TempData[8]; //存储显示值的全局变量
	unsigned char i;
	TempData[0]=dofly_DuanMa[num/1000];//分解显示信息,如要显示68,则68/10=6  68%10=8  
	TempData[1]=dofly_DuanMa[(num%1000)/100];
	TempData[2]=dofly_DuanMa[((num%1000)%100)/10]; //共阴数码管只要在对应的数字后面 |0x80 即可显示小数点
	TempData[3]=dofly_DuanMa[((num%1000)%100)%10];

	//4位数码管
	for(i=0;i<4;i++)
	{ 
		DataPort=0;   //清空数据,防止有交替重影
		LATCH1=1;     //段锁存
		LATCH1=0;
		
		DataPort=dofly_WeiMa[i+FirstBit]; //取位码 
		LATCH2=1;     //位锁存
		LATCH2=0;
		
		DataPort=TempData[i]; //取显示数据,段码
		LATCH1=1;     //段锁存
		LATCH1=0;
		Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
	}
}
/*------------------------------------------------
 延时函数,含有输入参数 unsigned int t,无返回值
 unsigned int 是定义无符号整形变量,其值的范围是
 0~65535
------------------------------------------------*/

main()
{
Display_Shuma(1, 3502);
}



转载于:https://my.oschina.net/ffs/blog/169714

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值