⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.bak

📁 单片机与液晶屏接口程序
💻 BAK
字号:
#include <stdio.h>
//#include <reg51.h>
#include <absacc.h> 
#include <intrins.h>
#include "me.h" 
#include "LCD1602.h"
unsigned char code ASCII[] ="0123456789ABCDEF";

#define	key0  	0x12
#define	key1 	0x81
#define	key2 	0x82
#define	key3 	0x84
#define	key4 	0x41
#define	key5 	0x42
#define	key6 	0x44
#define	key7 	0x21
#define	key8 	0x22
#define	key9 	0x24
#define	keym1 	0x88
#define	keym2 	0x48
#define	keym3 	0x28
#define	keym4 	0x18					//确定
#define	keymx 	0x11	//*	
#define	keym_ 	0x14	//#

void Delay(int x)
{
	int i,j;
	for(j=0;j<x;j++)
	{
  		for(i=0;i<250;i++);
	}
}

/*键盘扫描函数*/
uchar keyscan(void)
{
	uchar scancode ,tmpcode;
	P1=0xf0;
	if((P1&0xf0)!=0xf0)
	{
		Delay(20);
		if((P1&0xf0)!=0xf0)
		{
			scancode=0xfe;
			while((scancode&0x10)!=0)
			{
				P1=scancode;
				if((P1&0xf0)!=0xf0)
				{
					tmpcode=(P1&0xf0)|0x0f;
					return((~scancode)+(~tmpcode));
				}
				else
				{
					scancode=(scancode<<1)|0x01;
				}	
			}
		}
	}
	return (0);
}
uchar newKey;
bit KeyFlag=0;

void Key_proess(void)
{

//	static unsigned char dispbit=0; 			//显示的位置
	static unsigned char funset=0; 
	unsigned char inkeyascii; 
//	uchar i;
			  LCD_write_char(1,0,ASCII[inkeyascii>>4]);
			  LCD_write_char(1,1,ASCII[inkeyascii & 0x0f]);
		switch( newKey ) 
		{
			case key0:	inkeyascii=0;		break;
			case key1: 	inkeyascii=1;		break;
			case key2: 	inkeyascii=2;		break;
			case key3: 	inkeyascii=3;		break;
			case key4: 	inkeyascii=4;		break;
			case key5: 	inkeyascii=5;		break;
			case key6: 	inkeyascii=6;		break;
			case key7: 	inkeyascii=7;		break;
			case key8: 	inkeyascii=8;		break;
			case key9: 	inkeyascii=9;		break;
			case keym1:	inkeyascii=0xff;	break;
			case keym2:	inkeyascii=0xff;	break;
			case keymx:	inkeyascii=0xff;	break;
			case keym_:	inkeyascii=0xff;	break;
			case keym3:	inkeyascii=0xff;	break;
			case keym4:	
			default: 	inkeyascii=0xff;	break;
		} 
		if (inkeyascii!=0xff)
		{
//			for(j=0;j<14;j++)
			//{
			  LCD_write_char(0,0,ASCII[inkeyascii]);
//			}

			//送显示
			switch( funset ) 
			{
				case 0:	
					break;
				case 1:	
					break;
				default: 	inkeyascii=0xff;	break;
			}
		}
		
}

void main(void)
{
	unsigned char key;
	LCD_init();
	LCD_write_string(LINE1,0,"Add");

	while(1)
	{
		key=keyscan();
		if (key)
		{
			newKey=key;
			KeyFlag=1;
		}
		if(!key&&KeyFlag==1)
		{
			KeyFlag=0;
			Key_proess();
		}
	}	
}   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -