完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[C] 纯文本查看 复制代码 这是主函数:[C] 纯文本查看 复制代码 #include 这是按键扫描程序:[C] 纯文本查看 复制代码 #include "keyboard.h"#include"Config.h"void keyPort_init(){ P1SEL = 0x00; //P1普通IO功能 P1DIR = 0x0f; //P0~p3设置为输出模式,p4~p7为输入 P3SEL = 0x00; //P3口普通IO功能 P3DIR = 0xFF; //P3口输出模式,驱动led}//4*4矩阵键盘扫描程序,检测第一列S6~S18 uchar keyscan(void){ uchar temp; /*************************扫描第1行***********************/ P1OUT=0x0e; temp=P1IN&0xf0;// if(temp!=0xf0) // 说明高四位有低电平输入 { delay_ms(10); if(temp!=0xf0) { temp=P1IN&0xf0; switch(temp) { case 0xe0: key=0; break; case 0xd0: key=1; break; case 0xb0: key=2; break; case 0x70: key=3; break; } } } /*************************扫描第2行***********************/ P1OUT=0x0d; temp=P1IN&0xf0; if(temp!=0xf0) // 说明高四位有低电平输入 { delay_ms(10); if(temp!=0xf0) { temp=P1IN&0xf0; switch(temp) { case 0xe0: key=4; break; case 0xd0: key=5; break; case 0xb0: key=6; break; case 0x70: key=7; break; } } } P1OUT=0x0b; temp=P1IN&0xf0; if(temp!=0xf0) // 说明高四位有低电平输入 { delay_ms(10); if(temp!=0xf0) { temp=P1IN&0xf0; switch(temp) { case 0xe0: key=8; break; case 0xd0: key=9; break; case 0xb0: key=10; break; case 0x70: key=11; break; } } } P1OUT=0x07; temp=P1IN&0xf0; if(temp!=0xf0) // 说明高四位有低电平输入 { delay_ms(10); if(temp!=0xf0) { temp=P1IN&0xf0; switch(temp) { case 0xe0: key=12; break; case 0xd0: key=13; break; case 0xb0: key=14; break; case 0x70: key=15; break; } } } return key; }[C] 纯文本查看 复制代码 这是液晶显示:#include"12864.h"#include"Config.h"//*************************************************************************//初始化IO口子程序//*************************************************************************void Port_init(){ P4SEL = 0x00; P4DIR = 0xFF; P5SEL = 0x00; P5DIR|= BIT0 + BIT1 + BIT5 + BIT6 + BIT7; PSB_SET; //液晶并口方式 RST_SET;}//***********************************************************************//显示屏命令写入函数//***********************************************************************void LCD_write_com(unsigned char com) { RS_CLR; RW_CLR; EN_SET; DataPort = com; delay_ms(5); EN_CLR;}//***********************************************************************//显示屏数据写入函数//***********************************************************************void LCD_write_data(unsigned char data) { RS_SET; RW_CLR; EN_SET; DataPort = data; delay_ms(5); EN_CLR;}//***********************************************************************//显示屏清空显示//***********************************************************************void LCD_clear(void) { LCD_write_com(0x01); delay_ms(5);}//***********************************************************************//函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字//***********************************************************************void DisplayCgrom(uchar addr,uchar *hz){ LCD_write_com(addr); delay_ms(5); while(*hz != ' |