本文目录一览:

  • 1、利用Proteus仿真软件设计一个具有按键清零功能的计时00-59的两位秒表时间的显示电路。利用两位LED数码管
  • 2、谁帮帮忙用proteus 设计电子秒表系统 ,用2位LED数码显示,显示时间为00~99秒,每秒自动加1,“开始按键”
  • 3、proteus仿真秒表
  • 4、数字钟的课程设计,用Proteus
  • 5、学校的课程设计,用proteus单片机和keil设计一个LED数码管显示的秒表,如下

利用Proteus仿真软件设计一个具有按键清零功能的计时00-59的两位秒表时间的显示电路。利用两位LED数码管

#include reg51.H

sbit P3_5 =P3^5;

unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};

unsigned char second;

unsigned char keycnt;

unsigned int tcnt;

void main(void)

{

unsigned char i,j;

TMOD=0x02;

ET0=1;

EA=1;

second=0;

P1=dispcode[second/10];

P2=dispcode[second%10];

while(1)

{

if(P3_5==0)

{

for(i=20;i0;i--)

for(j=248;j0;j--);

if(P3_5==0)

{

keycnt++;

switch(keycnt)

{

case 1:

TH0=0x06;

TL0=0x06;

TR0=1;

break;

case 2:

TR0=0;

break;

case 3:

keycnt=0;

second=0;

P1=dispcode[second/10];

P2=dispcode[second%10];

break;

}

while(P3_5==0);

}

}

}

}

void t0(void) interrupt 1 using 0

{

tcnt++;

if(tcnt==4000)

{

tcnt=0;

second++;

if(second==100)

{

second=0;

}

P1=dispcode[second/10];

P2=dispcode[second%10];

}

}

谁帮帮忙用proteus 设计电子秒表系统 ,用2位LED数码显示,显示时间为00~99秒,每秒自动加1,“开始按键”

//12M晶振。2位共阳数码管,P0为段码,P2.2、P2.3位控

//2011 05 07   三个按键:开始 P2.0  暂停 P2.1  清零 P2.2

#include reg51.h

#define uchar unsigned char

sbit P20=P2^0;

sbit P21=P2^1;

sbit KS=P2^5;

sbit KP=P2^6;

sbit KC=P2^7;

int ge,shi;

uchar code tab[ ]={0xC0,0xF9,0xA4,0xB0,0x99,

   0x92,0x82,0xF8,0x80,0x90,};

void delay_ms(unsigned int ms)  //1ms延时

{

uchar a;

while(ms--)

for(a=123;a0;a--);

}

void display();

void t0intinit( ) //定时器T0初始化

{

TMOD=0x01;

TH0=0x3c;//50ms定时

TL0=0xb0;

EA=1;

ET0=1;

}

void Timer0Interrupt(void) interrupt 1    //定时器T0中断 方式1

{

uchar time;

TH0=0x3c;

TL0=0xb0;

time++;

if(time==20)             //20X50ms=1s

{

time=0;

ge++;

}

}

void main()

{

t0intinit( );

while(1)

{

display( );

while(!KS)

{ display( );

if(KS)

TR0=1;

}

while(!KP)

{

display();

if(KP)

TR0=0;

}

while(!KC)

{

display( );

if(KC)

TR0=0;

shi=0;

ge=0;

}

  if(ge==10)

{

ge=0;

shi++;

}

if(shi==9)

{

shi=0;

}

}

}

void display( )

{

P20=1;

P0=tab[ge];

delay_ms(1);

P20=0;

P21=1;

P0=tab[shi];

delay_ms(1);

P21=0;

}

proteus仿真秒表

wela=1;

P0=0x01;

wela=0;

dula=1;

P0=Tab[bai];

dula=0;

delay(5));

P0=0x00;//就是把数码管熄掉,看你用的共阴还是共阳送0x00或0xff

//要不然十位选通而十位段码没送前,P0还是百位的数,会出现鬼影, 其它位一样,试一下对不

数字钟的课程设计,用Proteus

数字钟的实现方式有很多种:

1、用数字电子的器件:接数码管前,一般用74LS90或290进行进制设定,输出的是一个四位的二进制信号。考虑整点时,分部分到59,当它跳变到00时,即整点事件发生,5的二进制编码是0101,9的二进制编码是1001,0的二进制编码是0000,即5(0101)的第三位(标记为A),9(1001)的第四位(标记为B),当它们均由1跳变为0时,整点报时,报时时间为1分钟,将分位的最后一位标记为C。下面的图是其中一种实现方式:

2、用单片机,当然就很简单啦,在分位向时位前进位的同时,某个引脚输出个低电平,蜂鸣器就响了。下面是基于51的程序:

if(min==60)

{

min=0;

hor++;

bell=0;

}

学校的课程设计,用proteus单片机和keil设计一个LED数码管显示的秒表,如下

你的程序有问题,仿真图不要用三极管驱动,反而不显示。如下画法就行,那4个按键不变,没有画。

程序中的按键处理,方法不当。

先改成如下的程序,先调出能显示,然后你自己再增加按键功能。

#include reg52.h

#define uchar unsigned char

#define uint unsigned int

sbit START = P1 ^0;

sbit STOP = P1 ^1;

sbit RESET = P1 ^2;

sbit dp = P0 ^7;

sbit w1 = P2 ^6;

sbit w2 = P2 ^7;

uchar aa,temp,STOPFLAG,STARTFLAG,miaoshi,miaoge;

uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表错误

void display();

void delay( uint z);

void init();

void main()

{

init();

while(1)

{

display();//不用带参数

if(aa == 20)

{

aa = 0;

temp ++;

if(temp == 60)

{

temp = 0;

}

}

}

}

void delay(uint z)

{ uchar x,y;

for(x = z; x 0; x--)

for(y = 110 ; y 0; y --);//y不能小于110

}

void display()//不用带参数

{

miaoshi = temp/10;

miaoge = temp%10;

w1 = 1;

P0 = table[miaoshi];

delay(2);

w1 = 0;

w2 = 1;

P0 = table[miaoge];

delay(2);

w2 = 0;

}

void init()

{ TMOD = 0x01;

TH0 = (65536 - 50000)/256;

TL0 = (65536 - 50000)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void timer0() interrupt 1

{ TH0 = (65536 - 50000)/256;

TL0 = (65536 - 50000)%256;

aa ++;

}