首页 动态LED数码管显示

动态LED数码管显示

举报
开通vip

动态LED数码管显示1.试验数码管上显示数字( 单片机直接实现位选 共阴极) * 连接方法:P0与J12 用8PIN排线连接 P1与JP16 用排线连接 * 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管 #include void delay(unsigned int i); //函数声名 char DelayCNT;//定义变量 //此表为 LED 的字模, 共阴数码管 0-9 - unsigned char co...

动态LED数码管显示
1.试验数码管上显示数字( 单片机直接实现位选 共阴极) * 连接方法:P0与J12 用8PIN排线连接 P1与JP16 用排线连接 * 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管 #include void delay(unsigned int i); //函数声名 char DelayCNT;//定义变量 //此 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制 //此表为8个数码管位选控制, 共阴数码管 1-8个 - unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制 /************主函数**********************/ main() { unsigned int i,LedNumVal=1 ; //变量定义 unsigned int LedOut[10]; //变量定义 DelayCNT=0; while(1) { if(++DelayCNT>=20) //控制数字变化速度 { DelayCNT=0; //20个扫描周期清零一次 ++LedNumVal; //每隔20个扫描周期加一次 } LedOut[0]=Disp_Tab[LedNumVal%10000/1000]; LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80; LedOut[2]=Disp_Tab[LedNumVal%100/10]; LedOut[3]=Disp_Tab[LedNumVal%10]; LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位 LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点 LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位 LedOut[7]=Disp_Tab[LedNumVal%10]; //个位 for( i=0; i<9; i++) { P0 = LedOut[i]; P1 = dispbit[i]; //使用查表法进行位选 /* switch(i) //使用switch 语句控制位选 { case 0:P1 = 0x7F; break; case 1:P1 = 0xbF; break; case 2:P1 = 0xdF; break; case 3:P1 = 0xeF; break; case 4:P1 = 0xf7; break; case 5:P1 = 0xfb; break; case 6:P1 = 0xfd; break; case 7:P1 = 0xfe; break; } */ delay(150); //扫描间隔时间 太长会数码管会有闪烁感 } } } /*******************延时函数**********************************************/ void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); } 2.标题:试验数码管上显示数字(译码器位选 共阴极) * * 连接方法:P0与J12 用8PIN排线连接 * 请学员认真消化本例程,用573锁存器和译码器控制和数码管 * ********************************************************************************/ #include sbit LS138A = P2^2; //定义138译码器的输入A脚由P2.2控制 sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制 sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制 void delay(unsigned int i); //函数声名 char DelayCNT; //此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; /************主函数**********************/ main() { unsigned int i,LedNumVal ; unsigned int LedOut[10]; DelayCNT=0; while(1) //进入循环状态 { if(++DelayCNT>=50) { DelayCNT=0; //延时计数 每扫描一次加一次 ++LedNumVal; //每隔50个扫描周期加一次 } LedOut[0]=Disp_Tab[LedNumVal%10000/1000]; LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80; LedOut[2]=Disp_Tab[LedNumVal%100/10]; LedOut[3]=Disp_Tab[LedNumVal%10]; LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位 LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点 LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位 LedOut[7]=Disp_Tab[LedNumVal%10]; //个位 for( i=0; i<8; i++) //实现8位动态扫描循环 { P0 = LedOut[i]; //将字模送到P0口显示 switch(i) //使用switch 语句控制位选 也可以是用查表的方式 学员可以试着自己修改 { case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; case 3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break; case 5:LS138A=1; LS138B=0; LS138C=1; break; case 6:LS138A=0; LS138B=1; LS138C=1; break; case 7:LS138A=1; LS138B=1; LS138C=1; break; } delay(150); } } } /*************************************************************************** * * * 延时程序 * ****************************************************************************/ void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); } 3.标题: 74HC573输出使能试验(单片机直接实现位选 共阴极) * 连接方法:P0与J12 用8PIN排线连接 P16与JP11(P2) 用排线连接 * * 目的:熟悉74HC573的LE输出使能控制 * * 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管* #include #include void delay(unsigned int i); //函数声名 sbit LE = P1^0; //定义输出使能控制脚在P1.0上 char DelayCNT;//定义变量 //此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制 //此表为8个数码管位选控制, 共阴数码管 1-8个 - unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制 /************主函数**********************/ main() { unsigned int i,LedNumVal=1 ; //变量定义 unsigned int LedOut[10]; //变量定义 DelayCNT=0; while(1) { if(++DelayCNT>=20) //控制数字变化速度 { DelayCNT=0; //20个扫描周期清零一次 ++LedNumVal; //每隔20个扫描周期加一次 } LedOut[0]=Disp_Tab[LedNumVal%10000/1000]; LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80; LedOut[2]=Disp_Tab[LedNumVal%100/10]; LedOut[3]=Disp_Tab[LedNumVal%10]; LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位 LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点 LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位 LedOut[7]=Disp_Tab[LedNumVal%10]; //个位 for( i=0; i<9; i++) { LE = 0; //输出使能,锁存器不输出数据 P0 = LedOut[i]; LE = 1; //输出使能,锁存器将8位数据一口吐出 P2 = dispbit[i]; //使用查表法进行位选 delay(150); //扫描间隔时间 太长会数码管会有闪烁感 } LE = 0; //锁存器不输出数据 } } /************************************************************************** * * 延时处理 * ****************************************************************************/ void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); }
本文档为【动态LED数码管显示】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_922055
暂无简介~
格式:doc
大小:45KB
软件:Word
页数:6
分类:互联网
上传时间:2012-09-05
浏览量:142