proteus是一个很好很好的软件,下面是我做的一个4×4的键盘,有电路图,并列出了程序(用C语言写的)。
这个作品相当简单,也用了一个下午,大家不要见笑。
先来看看电路图:
只有一片51,一个排阻,一只7段红底LED,一个PROTUES自带的4×4键盘。相当简单,当然还有更简单的,——程序:
/*
绵阳师院物电系 刘保健
2007年8月11日 v1.0
通过Keil uVision2 v2.40编译
在Proteus 7.1sp2下
*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
uchar code ledcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x7b,0x71,0x00,0x40};
bit key_flag=0;
void delay_10ms();
void keyscan();
void main()
{
IE=0X00;
while(1)
{
keyscan();
}//while
}//fun
void keyscan(void)
{
//******************扫第1列************
P14=0;
if(P10==0)
{
delay_10ms();
P0=ledcode[1];
}
if(P11==0)
{delay_10ms();
P0=ledcode[6];
}
if(P12==0)
{delay_10ms();
P0=ledcode[7];
}
if(P13==0)
{delay_10ms();
P0=ledcode[16];
}
P1=0xff;
//**************扫第2列******************
P15=0;
if(P10==0)
{
delay_10ms();
P0=ledcode[2];
}
if(P11==0)
{delay_10ms();
P0=ledcode[5];
}
if(P12==0)
{delay_10ms();
P0=ledcode[8];
}
if(P13==0)
{delay_10ms();
P0=ledcode[0];
}
P1=0xff;
//***************扫第3列*********************
P16=0;
if(P10==0)
{
delay_10ms();
P0=ledcode[3];
}
if(P11==0)
{delay_10ms();
P0=ledcode[4];
}
if(P12==0)
{delay_10ms();
P0=ledcode[9];
}
if(P13==0)
{delay_10ms();
P0=ledcode[16];
}
P1=0xff;
//***************扫第4列************************
P17=0;
if(P10==0)
{
delay_10ms();
P0=ledcode[10];
}
if(P11==0)
{delay_10ms();
P0=ledcode[11];
}
if(P12==0)
{delay_10ms();
P0=ledcode[12];
}
if(P13==0)
{delay_10ms();
P0=ledcode[13];
}
P1=0xff;
}
void delay_10ms(void)
{
uchar i,j;
for(i=0;i<100;i++);
for(j=0;j<80;j++);
}
有了以上的资料,相信大多数朋友可以完成这个例子的仿真了。但可能也会有少数人上手慢一些,在此我把用到的文件打包附上:。
对于proteus我还想告诉入门的朋友,它的鼠标和其他电路EDA软件不尽一样,滚轮压下可任意拖动电路,向前滑滚轮电路图以鼠标指针为中心放大,反之缩小。以上是我第一稿的全部,希望能对初学proteus的朋友有所帮助。
文章评论(0条评论)
登录后参与讨论