键盘显示程序设计

//#include <io8515v.h>
#include <iom8515v.h>
#include<math.h>
#include<stdio.h>
#include<macros.h>
void defor()
{int i,j,k;
for(i=0;i<=20;i++)
{for(j=0;j<=250;j++)
{k=0;}
}
}
//void defor()
//{
//int i,j,k;
//for(i=0;i<=20;i++){
 // for(j=0;j<=250;j++){
//  k=0;}
//}

char dujian()
{  char tt;
char kn[4]={0x10,0x20,0x40,0x80};
 int i,k;
 i=1;
 
 
     
 //PORTA=0x0f;
//if(PIND!=0x0f)
 //{//
 
 PORTA=0x01;
 //defor();
 //defor();
 for (i=0;i<=3;i++)
    {//defor();
 //defor();
 PORTA=PORTA*2;
 //defor()
 //
 
 
 if(PIND!=0x0F)
 { defor();


 if(PIND==0X0E)
 {
 
 while(PIND==0X0E)
 {tt=0x01+(kn[i]);
 //defor();
 }
 break;
 }
 if(PIND==0X0D)
 {
 while(PIND==0X0D)
 {tt=0x02+(kn[i]);
 //defor();
 }
 
 break;
 }
 if(PIND==0X0B)
 {
 while(PIND==0X0B)
 {tt=0x04+(kn[i]);
 //defor();
 }
 
 break;
 }
 if(PIND==0X07)
 {
 while(PIND==0X07)
 {tt=0x08+(kn[i]);
 //defor();
 }
 
 break;
 }
 
 
 }
 //}
 
 else
 {tt=0x00;
 }
 
 
 }
 //}
 //PORTA=!PORTA;
 return tt;
 }
 

 

 
char fanyi (char tt)
 {char kt[4][4]={{0x37,0x34,0x31,0x2e},{0x38,0x35,0x32,0x30},{0x39,0x36,0x33,0x3d},{0x2f,0x2a,0x2d,0x2b}};
 int i;
 char mm;
 int j;
 if(tt==0x00)
 {mm=0x00;}
else
 {
 for (i=0 ;i<=3 ;i++)
   {
   if(((tt&0x0f)>>i)==0x01)
   {
   for (j=0 ;j<=3 ;j++)
    {if(((tt&0xf0)>>j)==0x10)
 {mm=kt[i][j];}
 
 }
 break;
 }
 }
 }
 return mm;
 }


void delay(void)
{DDRB=0X00;
PORTB=0X80;
 for(;;)
{//rs=0;
 //rw=1;
 //e=0;
 //e=1;
 DDRC=0XFF;
 PORTC=0X40;
 PORTC=0X60;
 DDRB=0XFF;
if(PINB==0X00)
 break;
}
}

void enable(void)
{
 //rs=0;
 //rw=0;
DDRC=0XFF;
 //e=0;
PORTC=0X00;
 
delay();
  //e=1;
PORTC=0X20;
}

void print(void)
{

 //rs=1;
 //rw=0;
DDRC=0XFF;
 //e=0;
 PORTC=0X80;
delay();
PORTC=0XA0;
 //e=1;
 
}
void kk()
{int i,j,m,t;
char x,y;
 x=dujian();
 y=fanyi(x);
  PORTB=y;
 if (y!=0x00)
   {print();
   }
  if(y==0x3d)
  {PORTB=0x01;
 enable();}
//for(m=0;m<=10000;m++)

//{t=0;
//}
 

 

}
void main()
{
DDRA=0xff;
PORTA=0X01;
DDRD=0X00;
DDRB=0XFF;


 PORTB=0x01;
 enable();            //clear display
 PORTB=0x38;
 enable();             //两行显示  5*7点阵 8位接口
 PORTB=0x0e;
 enable();             //开显示屏 光标
 PORTB=0x06;              
 enable();              //光标右移
 PORTB=0x80;
 enable();
 

while(1)
{
kk();

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值