【ARM+51单片机开发板套件试用体验】4动态数码管设计

  • wanyanfei1984
  • LV4工程师
  • |      2018-04-09 15:37:01
  • 浏览量 3037
  • 回复:0
动态数码管显示程序设计实验一、设计的原理图如下图所示: 其中:j15针脚与j16针脚一一对应短接,J12针脚与单片机的P0口一一对应相接,j6接口与单片机的P2端口的2~4针脚相连接。 单片机通过P2234针脚和74LS138芯片来控制动态数码管需要显示的第几个端口;而单片机的P0端口则通过控制输出来显示数码管上要显示的具体数字。 下面是具体实现的程序设计:**************************************************************程序需要实现数码管的0~7的顺序显示 #include "Reg52.h" #define SmgDis P0typedef unsigned int u16 ;typedef unsigned char u8 ;void delay(u16);void display(u16); sbit lsA=P2^2;sbit lsB=P2^3;sbit lsC=P2^4; u8 dsmg={0x3f, //0 0x06, //10x5b, //20x4f, //30x66, //40x6d, //50x7d, //60x07, //70x7f, //80x6f, //90x77, //A0x7c, //B0x39, //C0x5e, //D0x79, //E0x71 //F};u16 i,j,m,n; void main(){ while(1) { for(j=0;j<8;j++) { delay(2); display(j); delay(1); SmgDis=dsmg; delay(2); SmgDis= 0x00; } }} void display(u16 n){ switch(n) { case0: lsA=0;lsB=0;lsC=0;break; case1: lsA=1;lsB=0;lsC=0;break; case2: lsA=0;lsB=1;lsC=0;break; case3: lsA=1;lsB=1;lsC=0;break; case4: lsA=0;lsB=0;lsC=1;break; case5: lsA=1;lsB=0;lsC=1;break; case6: lsA=0;lsB=1;lsC=1;break; case7: lsA=1;lsB=1;lsC=1;break; default: break; }}void delay(u16 m){ i=1000000*m; i--;}实现的效果如图: 本来基于这个设计想实现一个显示的时候,其它暂时关闭状态,但是暂时没有实现,希望大家给点帮助,以便后期来实现这个设计!(自己设计了几次,没有成功,不知道原理上是否可以实现)。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子