//*************************************************************************************************
//* *
//* ***************************SMC1602驱动程序************************* *
//* *
//*************************************************************************************************
//*************************************************************************************************
//* *
//* ******************************头文件及宏定义************************** *
//* *
//*************************************************************************************************
#include <at89x51.h>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<端口设置宏定义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define LCDRS P3_5 //寄存器选择信号:
// 0--数据寄存器;
// 1--指令寄存器。
#define LCDRW P3_6 //读写信号:
// 1--读LCD;
// 0--写LCD。
#define LCDE P3_7 //片选信号,当输入下降沿信号时,
//执行指令或传送数据。
#define LCDPORT P0 //LCD数据接口。
//*************************************************************************************************
//* *
//* ******************************延时函数***************************** *
//* *
//*************************************************************************************************
void vDelay()
{
unsigned int uiCount;
for(uiCount=0;uiCount<250;uiCount++);
}
//*************************************************************************************************
//* *
//* **************************把1个命令写入LCD************************* *
//* *
//*************************************************************************************************
void vWriteCMD(unsigned char ucCommand)
{
vDelay(); //先延时。
LCDE=1; //然后把LCD改为写入命令状态。
LCDRS=0;
LCDRW=0;
LCDPORT=ucCommand; //再输出命令。
LCDE=0; //最后执行命令。
}
//*************************************************************************************************
//* *
//* ***************************把1个数据写入LCD************************ *
//* *
//*************************************************************************************************
void vWriteData(unsigned char ucData)
{
vDelay(); //先延时。
LCDE=1; //然后把LCD改为写入数据状态。
LCDRS=1;
LCDRW=0;
LCDPORT=ucData; //再输出数据。
LCDE=0; //最后显示数据。
}
//*************************************************************************************************
//* *
//* **********************把1个字符显示到当前光标处********************* *
//* *
//*************************************************************************************************
void vShowOneChar(unsigned char ucChar)
{
switch(ucChar)
{
case ' ': vWriteData(0x20);break;
case '!': vWriteData(0x21);break;
case '"': vWriteData(0x22);break;
case '#': vWriteData(0x23);break;
case '$': vWriteData(0x24);break;
case '%': vWriteData(0x25);break;
case '&': vWriteData(0x26);break;
case '>': vWriteData(0x27);break;
case '(': vWriteData(0x28);break;
case ')': vWriteData(0x29);break;
case '*': vWriteData(0x2A);break;
case '+': vWriteData(0x2B);break;
case '-': vWriteData(0x2D);break;
case '.': vWriteData(0x2E);break;
case '/': vWriteData(0x2F);break;
case '=': vWriteData(0x3D);break;
case '<': vWriteData(0x3E);break;
case '?': vWriteData(0x3F);break;
case '^': vWriteData(0x5E);break;
case ':': vWriteData(0x3A);break;
case '0': vWriteData(0x30);break;
case '1': vWriteData(0x31);break;
case '2': vWriteData(0x32);break;
case '3': vWriteData(0x33);break;
case '4': vWriteData(0x34);break;
case '5': vWriteData(0x35);break;
case '6': vWriteData(0x36);break;
case '7': vWriteData(0x37);break;
case '8': vWriteData(0x38);break;
case '9': vWriteData(0x39);break;
case 'A': vWriteData(0x41);break;
case 'B': vWriteData(0x42);break;
case 'C': vWriteData(0x43);break;
case 'D': vWriteData(0x44);break;
case 'E': vWriteData(0x45);break;
case 'F': vWriteData(0x46);break;
case 'G': vWriteData(0x47);break;
case 'H': vWriteData(0x48);break;
case 'I': vWriteData(0x49);break;
case 'J': vWriteData(0x4A);break;
case 'K': vWriteData(0x4B);break;
case 'L': vWriteData(0x4C);break;
case 'M': vWriteData(0x4D);break;
case 'N': vWriteData(0x4E);break;
case 'O': vWriteData(0x4F);break;
case 'P': vWriteData(0x50);break;
case 'Q': vWriteData(0x51);break;
case 'R': vWriteData(0x52);break;
case 'S': vWriteData(0x53);break;
case 'T': vWriteData(0x54);break;
case 'U': vWriteData(0x55);break;
case 'V': vWriteData(0x56);break;
case 'W': vWriteData(0x57);break;
case 'X': vWriteData(0x58);break;
case 'Y': vWriteData(0x59);break;
case 'Z': vWriteData(0x5A);break;
case 'a': vWriteData(0x61);break;
case 'b': vWriteData(0x62);break;
case 'c': vWriteData(0x63);break;
case 'd': vWriteData(0x64);break;
case 'e': vWriteData(0x65);break;
case 'f': vWriteData(0x66);break;
case 'g': vWriteData(0x67);break;
case 'h': vWriteData(0x68);break;
case 'i': vWriteData(0x69);break;
case 'j': vWriteData(0x6A);break;
case 'k': vWriteData(0x6B);break;
case 'l': vWriteData(0x6C);break;
case 'm': vWriteData(0x6D);break;
case 'n': vWriteData(0x6E);break;
case 'o': vWriteData(0x6F);break;
case 'p': vWriteData(0x70);break;
case 'q': vWriteData(0x71);break;
case 'r': vWriteData(0x72);break;
case 's': vWriteData(0x73);break;
case 't': vWriteData(0x74);break;
case 'u': vWriteData(0x75);break;
case 'v': vWriteData(0x76);break;
case 'w': vWriteData(0x77);break;
case 'x': vWriteData(0x78);break;
case 'y': vWriteData(0x79);break;
case 'z': vWriteData(0x7A);break;
default: break;
}
}
//*************************************************************************************************
//* *
//* *********************把1个字符串显示到当前光标处******************* *
//* *
//*************************************************************************************************
void vShowChar(unsigned char ucaChar[])
{
unsigned char ucCount;
for(ucCount=0;;ucCount++)
{
vShowOneChar(ucaChar[ucCount]);
if(ucaChar[ucCount+1]=='\0')
break;
}
}
/*
//*************************************************************************************************
//* *
//* *********************把1个3位数字显示到当前光标处******************* *
//* *
//*************************************************************************************************
void vShowNumber(unsigned int uiNumber)
{
unsigned char ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100; //把计算数字的每个位存入数组。
ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;
ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
for(ucCount=0;ucCount<3;ucCount++)
{
vShowOneChar(ucaNumber[ucCount]+48); //从首位到末位逐一输出。
}
}
*/
没有合适的资源?快使用搜索试试~ 我知道了~
LCD_Key.rar_LCD_key
共54个文件
obj:7个
lst:7个
c:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 127 浏览量
2022-09-19
16:07:27
上传
评论
收藏 93KB RAR 举报
温馨提示
基于单片机的4*4键盘的控制系统,测试通过的,放心使用
资源详情
资源评论
资源推荐
收起资源包目录
LCD_Key.rar (54个子文件)
LCD_Key2%28Inquire%29
key by lee
key 7KB
key1.M51 13KB
key1.hex 3KB
key1.Uv2 2KB
key1.plg 215B
key.hex 2KB
key1.c 3KB
key1.Opt 2KB
key.OBJ 8KB
STARTUP.LST 14KB
key.plg 210B
key.Opt 1KB
key.lnp 54B
key.c 2KB
key1_Opt.Bak 1KB
key.Uv2 2KB
key.LST 8KB
key1.lnp 56B
key.M51 12KB
key1.OBJ 10KB
STARTUP.A51 6KB
key1.LST 9KB
STARTUP.OBJ 758B
key_Uv2.Bak 0B
key1_Uv2.Bak 0B
key1 9KB
key_Opt.Bak 1KB
Keil
LCD_Key 18KB
KeyProcess.obj 3KB
main.lst 3KB
SMC1602.obj 11KB
LCD_Key_Uv2.Bak 2KB
LCD_Key.Opt 1KB
LCD_Key.lnp 79B
include
KeyScan.h 103B
Includes.h 155B
SMC1602.h 1KB
KeyProcess.h 106B
KeyScan.lst 7KB
main.obj 4KB
SMC1602.lst 17KB
KeyProcess.lst 4KB
KeyScan.obj 3KB
LCD_Key.plg 695B
LCD_Key.M51 13KB
LCD_Key.hex 4KB
source
SMC1602.c 7KB
main.c 1005B
KeyProcess.c 1KB
KeyScan.c 3KB
LCD_Key.Uv2 2KB
LCD_Key.PWI 768B
Last Loaded LCD_Key.DBK 93KB
LCD_Key.DSN 92KB
共 54 条
- 1
JonSco
- 粉丝: 72
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0