完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下面是我的按键函数:
#include "key_scan.h" void Keyboard_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//ÏÂÀ ÊäÈë GPIO_Init(GPIOC,&GPIO_InitStructure); } uint8_t Get_KeyValue(void) { uint8_t temp_key =0, key; key=0; GPIO_Write(GPIOC, 0xfe); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key = temp_key & 0xf0; //11110000 if(temp_key != 0xf0) { Delay_Us(10); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key = temp_key & 0xf0; if(temp_key != 0xf0) { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; switch(temp_key) { case 0xee: key = '/'; break; case 0xde: key = '*'; break; case 0xbe: key = '-'; break; case 0x7e: key = '+'; break; } while(temp_key != 0xf0) //?????? { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key = temp_key&0xf0; } } } /* end of if(temp_key!=0xf0)*/ GPIO_Write(GPIOC,0xfd); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; //11110000 if(temp_key!=0xf0) { Delay_Us(10); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; if(temp_key!=0xf0) { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; switch(temp_key) { case 0xed: key='='; break; case 0xdd: key='9'; break; case 0xbd: key='6'; break; case 0x7d: key='3'; break; } while(temp_key!=0xf0) //?????? { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; } } } /* end of if(temp_key!=0xf0)*/ GPIO_Write(GPIOC,0xfb); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; //11110000 if(temp_key!=0xf0) { Delay_Us(10); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; if(temp_key!=0xf0) { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; switch(temp_key) { case 0xeb: key='0'; break; case 0xdb: key='8'; break; case 0xbb: key='5'; break; case 0x7b: key='2'; break; } while(temp_key!=0xf0) //?????? { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; } } } /* end of if(temp_key!=0xf0)*/ GPIO_Write(GPIOC,0xf7); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; //11110000 if(temp_key!=0xf0) { Delay_Us(10); temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; if(temp_key!=0xf0) { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; switch(temp_key) { case 0xe7: key='.'; break; case 0xd7: key='7'; break; case 0xb7: key='4'; break; case 0x77: key='1'; break; } while(temp_key!=0xf0) //?????? { temp_key = GPIO_ReadInputData(GPIOC);//>>0x8; temp_key=temp_key&0xf0; } } } return key; } void Delay_Us(unsigned int t) { while(--t); } 这是我在主函数中用1602显示键值的代码: LCD_Write_Char(0,0,Get_KeyValue()); 可是不知道为什么1602上面总显示不出,为什么????求助。。。。难道是那个get_keyvalue函数返回的类型不对吗??? |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
195 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell编程入门之提取字符并设置rtc时间
488 浏览 0 评论
使用LIS2DW12TR加速度传感器可以计算物体重力方向运动的距离吗
671 浏览 1 评论
【敏矽微ME32G070开发板免费体验】介绍、环境搭建、工程测试
382 浏览 0 评论
敏矽微ME32G070开发板开发资料(规格书、库和例程、原理图)
1492 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11943 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-14 12:56 , Processed in 0.884069 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号