.H文件
#ifndef _SMG_H_
#define _SMG_H_
#include "STC15F2K60S2.h"
extern unsigned char SMGOut[12];
extern unsigned char SMGBit[8];
extern unsigned char SMGCount;
void SMG_display();
#endif
.C文件
#include "SMG.h"
unsigned char SMGOut[12]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf, 0xff};
unsigned char SMGBit[8]={11,11,11,11,11,11,11,11};
unsigned char SMGCount;
void SMG_display()
{
P2=(P2&0X1F)|0xe0;
P0=0XFF;
P2=(P2&0X1F);
P2=(P2&0X1F)|0xC0;
P0=1<<SMGCount;
P2=P2&0X1F;
P2=(P2&0X1F)|0xE0;
P0=SMGOut[SMGBit[SMGCount]];
P2=P2&0X1F;
if(++SMGCount==8)SMGCount=0;
}
我习惯数码管用定时器中断服务函数实现,定时器用2ms,所以定时器中断服务函数里尽量少放一些执行起来耗时的程序,如果非要放,可以用flag=1,然后在主函数中实现,否则会看到明显的数码管闪烁。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82556.html