RHZ'S BLOG | 个人分享

  • 首页
  • 笔记
  • 小日常
  • 音乐
  • 读书
  • 软件分享
YOLO
  1. 首页
  2. 未分类
  3. 正文

单片机数码管

2021年12月6日 261点热度 0人点赞 0条评论

利用余辉实现这个效果,刚开始想复杂了,陆陆续续花了2天才搞定。。。

//头部说明
#include <reg52.h>
#include <intrins.h>
//定义
#define uint unsigned int
#define uchar unsigned char
//定义三个数组分别是段,位,实现数码管余辉效应定义的位
uchar duan[]={0x10,0x30,0x31,0x33,0x37,0xb7};
uchar wei[]={0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
uchar smgwx[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};		 
sbit Du = P2^6;
//段选IO口定义
sbit We = P2^7;
//位选IO口定义
//开始构造延时函数
void delay(uint z)
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--);
}
//开始操作
void main()
{
	uint i,y;
	uint A=100;
	for(i=0;i<8;i++)
	for(y=0;y<6;y++)
		{
		while(A--){
			if(i>0){
			delay(2);
			//选中前n-1个灯,显示框型,与第n灯每一段一起显示100次
			P0=wei[i];
			We=1;
			We=0;
			//delay(5);
			P0=duan[5];
			Du=1;
			Du=0;
			delay(2);
			//选中第n个灯,依次显示6段各100次
			P0=smgwx[i-1];
			We=1;
			We=0;
			P0=duan[y];
			Du=1;
			Du=0;
			}
			else
			{
			P0=wei[i];
			We=1;
			We=0;
			P0=duan[y];
			Du=1;
			Du=0;
			delay(5);
			}
			}
			A=100;//重置循环状态
			}
			}

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2021年12月6日

RHZ

即使单枪匹马,我亦勇敢无畏

点赞
< 上一篇
下一篇 >

文章评论

取消回复
归档
  • 2023年2月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年8月
  • 2021年7月

COPYRIGHT © 2022 RHZ的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2022008933号-1