完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
如题,这是一个通过矩阵键盘设置参数的程序,a为真实值,b为参数。通过LED灯来观察现象,但是现在的问题是:1只能设置一次参数2不能设置参数为小数。程序如下:
#include #include "derivative.h" #define LEDCPU PORTK_PK4 #define LEDCPU_dir DDRK_DDRK4 unsigned char flag1=0; //数字标记位 unsigned char flag11=0; //重新设置键标记位 unsigned char flag12=0; //小数点标记位 unsigned char flag13=0; // *标记位 unsigned char flag14=0; // /标记位 unsigned char flag15=0; // "确认键"标记位 unsigned char flag16=0; //"设置键"标志位 unsigned char flag2=0; // 负号标记 unsigned char flag3=0; // 分子小于分母,结果只有两位有效数字时,扩大100倍有两位有效数字 unsigned char flag4=0; // 分子小于分母,结果只有一位效数字时,扩大100倍有1位有效数字 unsigned char a=11,b=10; long table2[19]; //存储结果的数组,20就出错? long s,num1; //s为计算结果,a为第一个数,b为第二个数,num1对应为键对应的值为显12864显示服务 void delay_10us(long m) { // 延时m*10us //while(m--); unsigned long a; for(a=15*m;a>0;a--); } //------------------------------------ //函数名称:delay_1ms //函数功能:1ms延时 //入口参数:usigned int t //出口参数:无 void delaynms(unsigned int t) //延时t*1ms { unsigned int i; for(i=0;i } /********************************/ /*************************************************************/ /* 初始化4X4矩阵键盘 */ /*************************************************************/ //函数名称:KEY_Init //函数功能:KEY初始化 //入口参数:无 //出口参数:无 void KEY_Init() //LCD初始化 { DDRH=0xf0; //0输入。1输出 PERH=0xff; //1设置上拉/下拉电阻 PPSH=0xf0; //0上拉1下拉 //PIEH=0x00; //PORTA=0xff; //PTH=0xff; } /*********************************************************** 函数名称:Kbscan 函数功能:键盘扫描程序 入口参数:无 出口参数:键值 备 注: ***********************************************************/ void kbscan(void) { uchar temp; DDRH=0xf0; //0输入。1输出 PTH=0xef; //将第4lie线置低电平,其余线全为高电平 DDRH=0xf0; //0输入。1输出 temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { delaynms(10); temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { temp=PTH; switch(temp) { case 0xe7: ;flag15=1;break; //1hang case 0xeb:num1=1;flag1=1;break; case 0xed:num1=4;flag1=1;break; case 0xee:num1=7;flag1=1;break; } while(temp!=0x0f) //松手检测 { temp=PTH; temp=temp&0x0f; } } } DDRH=0xf0; //0输入。1输出 PTH=0xdf; DDRH=0xf0; //0输入。1输出 temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { delaynms(10); temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { temp=PTH; switch(temp) { case 0xd7:num1=0;flag1=1;break; //右下角 case 0xdb:num1=2;flag1=1;break; case 0xdd:num1=5;flag1=1;break; case 0xde:num1=8;flag1=1;break; } while(temp!=0x0f) { temp=PTH; temp=temp&0x0f; } } } DDRH=0xf0; //0输入。1输出 PTH=0xbf; DDRH=0xf0; //0输入。1输出 temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { delaynms(10); temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { temp=PTH; switch(temp) { case 0xb7: ;flag16=1;break; //右下角 case 0xbb:num1=3;flag1=1;break; case 0xbd:num1=6;flag1=1;break; case 0xbe:num1=9;flag1=1;break; } while(temp!=0x0f) { temp=PTH; temp=temp&0x0f; } } } DDRH=0xf0; //0输入。1输出 PTH=0x7f; DDRH=0xf0; //0输入。1输出 temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { delaynms(10); temp=PTH; temp=temp&0x0f; if(temp!=0x0f) { temp=PTH; switch(temp) { case 0x77:num1=14;flag14=1;break; //右下角 case 0x7b:num1=13;flag13=1;break; case 0x7d:num1=12;flag12=1;break; case 0x7e: ;flag11=1;break; } while(temp!=0x0f) { temp=PTH; temp=temp&0x0f; } } } } /*********************************存储按下的数字键函数*****************8*********************/ void scan() { if(flag16==1) // 只有按下"设置键" 才能进入 { if(flag1==1) { s=s*10+num1; flag1=0; } } if(flag15==1){ // 按下"确认键"设置参数 b=s; } if(flag11==1){ flag16=0; num1=0; s=0; } } void bijiao(){ if(a>b) LEDCPU=0; else LEDCPU=1; } void main(void) { LEDCPU_dir=1; KEY_Init(); while(1){ kbscan(); scan(); bijiao(); } } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1932个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36421 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4867 浏览 1 评论
6108 浏览 1 评论
6818 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4249 浏览 0 评论
645浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
641浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
643浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
729浏览 2评论
844浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 14:46 , Processed in 1.496231 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号