找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14057|回复: 6
收起左侧

求问用数码管以流水灯显示8位学号,求程序

[复制链接]
ID:172411 发表于 2017-3-19 13:25 来自手机 | 显示全部楼层 |阅读模式
2黑币
求问用数码管以流水灯显示8位学号,求程序

回复

使用道具 举报

ID:173026 发表于 2017-3-19 17:19 | 显示全部楼层
回复

使用道具 举报

ID:151348 发表于 2017-3-19 19:46 | 显示全部楼层
我这里给你份程序,基本满足要求,自己拿去改成自己需要的程序
摘自“JH《单片机C语言程序设计实训100例——基于8051+Proteus仿真》案例压缩包”
无标题.jpg

07 8只数码管滚动显示单个数字.zip

35.45 KB, 下载次数: 338

回复

使用道具 举报

ID:111634 发表于 2017-3-20 18:08 | 显示全部楼层
本帖最后由 zl2168 于 2017-3-20 18:15 编辑

给你几个案例参考。


实例56  PNP晶体管选通3位共阳LED数码管动态显示
pnp.jpg
实例57  74LS139选通4LED数码管动态显示
139.jpg
实例58  74LS138选通8LED数码管动态显示
138.jpg
实例59  74LS595串行选通8LED数码管动态显示
595.jpg
实例60  8255A扩展8LED数码管动态显示
8255.jpg
实例63  8155扩展8LED数码管动态显示
实例64  MAX7221控制8LED数码管动态显示
7221.jpg


Proteus仿真一下,确认有效。
实例56 PNP晶体管选通3位LED动态显示.rar (47.41 KB, 下载次数: 47)
回复

使用道具 举报

ID:176162 发表于 2017-3-21 10:36 | 显示全部楼层
用595驱动
回复

使用道具 举报

ID:176162 发表于 2017-3-21 10:40 | 显示全部楼层
595驱动

用595驱动

用595驱动
回复

使用道具 举报

ID:74868 发表于 2017-3-22 10:21 | 显示全部楼层
#include<reg52.h>
#include<intrins.h>
#define LED P0
#define WHICH P2  
#define CON 50000  
#define TH_0 ((65536-CON)/256)
#define TL_0 ((65536-CON)%256)
sbit K1 = P1^7;
sbit K2 = P1^6;
sbit K3 = P1^5;
sbit K4 = P1^4;
//sbit K5 = P2^3;
sbit K6 = P1^2;
sbit K7 = P1^1;
sbit K8 = P1^0;
sbit light = P3^7;  
unsigned char code NUM[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

unsigned char sec=0,min=0,hour=12,n=0;  
unsigned char disp[8]={0x00,0x00,0X0A,0x00,0x00,0X0A,0X00,0x00};
unsigned char scan=0xfe,i=0;

  
//函数声明
  
void delay(unsigned char);
void sca();  
void black(unsigned char);

  
//主函数

void main()
{

LED = 0X00;

P2 = 0X00;

WHICH = scan;

TH0 = TH_0;

TL0 = TL_0;

IE = 0X82;

TMOD = 0X01;
  
TR0 = 1;  


disp[6]=hour%10;disp[7]=hour/10;
one: while(1)

{

sca();  

if(K1 == 0){while(K1 == 0)sca();light = 0;TR0 = ~TR0;goto next;}

}
  

  
  
next: while(1)


{  



if(K2 == 0){while(K2==0)black(6);hour++;}


if(K6 == 0){while(K6==0)black(6);hour--;}

if(K3 == 0){while(K3==0)black(3);min++;}


if(K7 == 0){while(K7==0)black(3);min--;}

if(K4 == 0){while(K4==0)black(0);sec++;}

  
if(K8 == 0){while(K8==0)black(0);sec--;}  




if(sec==60)sec=0;


if(sec==-1)sec=59;  


disp[0]=sec%10;disp[1]=sec/10;


if(min==60)min=0;
  
  
if(min==-1)min=59;


disp[3]=min%10;disp[4]=min/10;


if(hour==24)hour=0;


if(hour==-1)hour=23;  


disp[6]=hour%10;disp[7]=hour/10;
  






sca();  


if(K1 == 0){while(K1 == 0)sca();light = 1;TR0 = ~TR0;goto one;}
  


}  

  

}  
//主函数结束

  
  
//延时函数
  
void delay(unsigned char a)
{  



unsigned char i,j;

for(i=a;i>0;i--)


for(j=110;j>0;j--);  
}
  

  
//扫描函数

void sca()
{

  
LED=0X00;  


scan=_crol_(scan,1);


if(++i==8)i=0;


WHICH=scan;


LED=NUM[disp[i]];

  
delay(8);   
}

  
  
//挑时间闪烁函数

void black(unsigned char n)
{


LED=0X00;  


scan=_crol_(scan,1);  


if(++i==8)i=0;


WHICH=scan;  


LED=NUM[disp[i]];  


if((i == n)||(i == (n+1))){LED = 0X00;}

  
delay(8);   
}

  
  
//计时中断
  
void T0_0(void) interrupt 1
{

TH0 = TH_0;

TL0 = TL_0;

if((++n)==20)

{


n=0;sec++;  


if(sec==60){sec=0;min++;}


disp[0]=sec%10;disp[1]=sec/10;


if(min==60){min=0;hour++;}


disp[3]=min%10;disp[4]=min/10;


if(hour==24){hour=0;}  


disp[6]=hour%10;disp[7]=hour/10;  
  

}  
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表