全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

四位LED动态扫描显示

[复制链接]
1741 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
·这是一个LED使用的例子,使用四位LED显示一个数。
·T1用于动态扫描,时间以稳定显示为准。本程序已经实物调过了。
·下面是源程序及一些说明 更多源码及教程请到http://www.bqmcu.com.cn

#include
#include
#define LedDataOut P2 //数据口
#define LedBitOut P3 //LED位选口
unsigned char code table[]={0x3f,0x06,0x5b,0x4f, //用于数码管显示的码表
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c, //分别表示字符:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
0x39,0x5e,0x79,0x71};
unsigned char code LEDbit[]={0x10,0x20,0x40,0x80};
unsigned char LEDBUF[4]; //这个数组用于记录要显示的数据
unsigned int LEDcount=0;
void initTimer(void) //定时器初始化
{
TMOD=0x00;
TH1=0xd1;
TL1=0x10;
}
void timer1(void) interrupt 3 //T1定时器中断,用于LED显示的动态扫描
{
LedDataOut=~table[LEDBUF[LEDcount]]; //送字段
LedBitOut=~LEDbit[LEDcount]; //送字位
if(LEDcount<4) LEDcount++; //共显四位
else LEDcount=0;
TH1=0xd1; //重载初值
TL1=0x10;
}
void main(void){
unsigned int AdValue=0;
unsigned int i=0;
unsigned int j=0;
initTimer();
TR0=1;
ET0=1;
TR1=1;
ET1=1;
EA=1;
AdValue=9999;
while(1){ //下面是将一个数各位分离出来存入到数组LEDBUF中
LEDBUF[3]=AdValue%10; //取余得最高位
AdValue=AdValue/10;
LEDBUF[2]=AdValue%10;
AdValue=AdValue/10;
LEDBUF[1]=AdValue%10;
AdValue=AdValue/10;
LEDBUF[0]=AdValue%10;
AdValue=AdValue/10;
for(j=0;j<32700;j++) _nop_(); //这个只是为了延时,
if(i<9999) i++;
else i=0;
AdValue=i;
}
}
·下面是仿真实例

·下面是整个实例的下载(Proturs中是仿真文件)
2007622225558175.rar

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表