原创 preteus模拟键盘(C语言)

2007-8-11 20:50 5475 9 9 分类: MCU/ 嵌入式

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++);
}
有了以上的资料,相信大多数朋友可以完成这个例子的仿真了。但可能也会有少数人上手慢一些,在此我把用到的文件打包附上:rar


对于proteus我还想告诉入门的朋友,它的鼠标和其他电路EDA软件不尽一样,滚轮压下可任意拖动电路,向前滑滚轮电路图以鼠标指针为中心放大,反之缩小。以上是我第一稿的全部,希望能对初学proteus的朋友有所帮助。

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条