电子设计竞赛设计报告 - 图文(5)

2019-04-14 12:19

合肥学院第八届电子设计竞赛

sbit EN = P2^6; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0 判忙函数 bit LCD_Check_Busy(void) {

#ifdef CHECK_BUSY DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET;

return (bit)(DataPort & 0x80); #else return 0; #endif }

写入命令函数

void LCD_Write_Com(unsigned char com) {

while(LCD_Check_Busy()); //忙则等待 RS_CLR; RW_CLR; EN_SET;

21

合肥学院第八届电子设计竞赛

DataPort= com; _nop_(); EN_CLR; }

写入数据函数

void LCD_Write_Data(unsigned char Data) {

while(LCD_Check_Busy()); //忙则等待 RS_SET; RW_CLR; EN_SET;

DataPort= Data; _nop_(); EN_CLR; }

清屏函数 void LCD_Clear(void) {

LCD_Write_Com(0x01); DelayMs(5); }

写入字符串函数

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { while (*s) {

LCD_Write_Char(x,y,*s); s ++; x++; } }

22

合肥学院第八届电子设计竞赛

写入字符函数

void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) {

LCD_Write_Com(0x80 + x); } else { LCD

}

_Write_Com(0xC0 + x); LCD_Write_Data( Data); }

初始化函数void LCD_Init(void) {

LCD_Write_Com(0x38); /* DelayMs(5);

LCD_Write_Com(0x38); DelayMs(5);

LCD_Write_Com(0x38); DelayMs(5);

LCD_Write_Com(0x38);

LCD_Write_Com(0x08); /* LCD_Write_Com(0x01); /* LCD_Write_Com(0x06); /* DelayMs(5);

LCD_Write_Com(0x0C); /* }

#include \

显示模式设置*/ 显示关闭*/ 显示清屏*/

显示光标移动设置*/ 显示开及光标设置*/ 23

合肥学院第八届电子设计竞赛

void DelayUs2x(unsigned char t) {

while(--t); }

void DelayMs(unsigned char t) {

while(t--) {

//大致延时1mS DelayUs2x(245); } }

DelayUs2x(245);

8.3 矩阵键盘程序

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include\#include\#define KeyPort P3

unsigned char KeyScan(void) //键盘扫描函数,使用行列反转扫描法 {

unsigned char cord_h,cord_l;//行列值中间变量 KeyPort=0x0f; //行线输出全为0 cord_h=KeyPort&0x0f; //读入列线值 if(cord_h!=0x0f) //先检测有无按键按下 {

DelayMs(10); //去抖 if((KeyPort&0x0f)!=0x0f) {

24

合肥学院第八届电子设计竞赛

cord_h=KeyPort&0x0f; //读入列线值 KeyPort=cord_h|0xf0; //输出当前列线值 cord_l=KeyPort&0xf0; //读入行线值

while((KeyPort&0xf0)!=0xf0);//等待松开并输出 return(cord_h+cord_l);//键盘最后组合码值 }

}return(0xff); //返回该值 }

unsigned char KeyPro(void) {

switch(KeyScan()) {

case 0x7e:return '1';break;//0 按下相应的键显示相对应的码值 case 0x7d:return '2';break;//1 case 0x7b:return '3';break;//2 case 0x77:return '+';break;//3 case 0xbe:return '4';break;//4 case 0xbd:return '5';break;//5 case 0xbb:return '6';break;//6 case 0xb7:return '-';break;//7 case 0xde:return '7';break;//8 case 0xdd:return '8';break;//9 case 0xdb:return '9';break;//a case 0xd7:return 'x';break;//b case 0xee:return '0';break;//c case 0xed:return '.';break;//d case 0xeb:return '=';break;//e case 0xe7:return '/';break;//f default:return 0xff;break;

25


电子设计竞赛设计报告 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于multism的串联型直流稳压电源设计与仿真

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: