本文目录一览:
- 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 ++;
}