当前位置: 首页 > news >正文

网站开发哪个工具北京seo顾问推推蛙

网站开发哪个工具,北京seo顾问推推蛙,wordpress 菜单 移动端,网站文案框架本文对矩阵按键的一个扩展,利用矩阵按键和动态数码管设计一个简易计算器。代码参考:https://blog.csdn.net/weixin_47060099/article/details/106664393 实现功能:使用矩阵按键,实现一个简易计算器,将计算数据及计算结…

本文对矩阵按键的一个扩展,利用矩阵按键和动态数码管设计一个简易计算器。代码参考:https://blog.csdn.net/weixin_47060099/article/details/106664393

实现功能:使用矩阵按键,实现一个简易计算器,将计算数据及计算结果显示在数码管中。

矩阵按键设计如下图

使用矩阵按键实现一个简易计算器

代码实现:

/*实现功能:使用矩阵按键实现简易计算器[2023-12-07] zoya
*/
#include "reg52.h"typedef unsigned char u8;
typedef unsigned int u16;sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;#define GPIO_DIG P0  // 动态数码管
#define GPIO_KEY P1  // 矩阵按键u16 KeyValue;  // 存放读取到的键值
u16 keyflag, i;  // 用来判断按下的数字还是运算符或是清空键
u8 code smg[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};  // 共阴极数码管u16 wei[8] = {0};  // 存放每一位数码管数字的数组// 延时函数,i=1延时10us
void delay(u16 i)
{while(i--);
}// 扫描显示动态数码管
void Display()
{LSA = 0; LSB = 0; LSC = 0; GPIO_DIG = smg[wei[7]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 1; LSB = 0; LSC = 0; GPIO_DIG = smg[wei[6]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 0; LSB = 1; LSC = 0; GPIO_DIG = smg[wei[5]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 1; LSB = 1; LSC = 0; GPIO_DIG = smg[wei[4]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 0; LSB = 0; LSC = 1; GPIO_DIG = smg[wei[3]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 1; LSB = 0; LSC = 1; GPIO_DIG = smg[wei[2]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 0; LSB = 1; LSC = 1; GPIO_DIG = smg[wei[1]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐LSA = 1; LSB = 1; LSC = 1; GPIO_DIG = smg[wei[0]]; delay(50); GPIO_DIG = 0x00; // 段选Y0,位选显示,延时,消隐
}// 检测有按键按下并读取键值
void KeyDown()
{u16 a = 0;GPIO_KEY = 0x0f;  // 行全部为低电平,列全部为高电平if(0x0f != GPIO_KEY)  // 读取按键是否按下{delay(1000);  // 延时10ms进行消隐if(0x0f != GPIO_KEY){// 测试列GPIO_KEY = 0x0f;switch(GPIO_KEY)  // 行列扫描法{case 0x07: KeyValue = 0; break;case 0x0b: KeyValue = 1; break;case 0x0d: KeyValue = 2; break;case 0x0e: KeyValue = 3; break;}// 测试行GPIO_KEY = 0xf0;switch(GPIO_KEY)  // 行列扫描法{case 0x70: KeyValue = KeyValue; break;case 0xb0: KeyValue = KeyValue + 4; break;case 0xd0: KeyValue = KeyValue + 8; break;case 0xe0: KeyValue = KeyValue + 12; break;}if(KeyValue==0 || KeyValue==1 || KeyValue==2 || KeyValue==3 || KeyValue==4 || KeyValue==5|| KeyValue==6 || KeyValue==7 || KeyValue==8 || KeyValue==9){keyflag=1;}}while( (a < 50) && (GPIO_KEY != 0xf0) )  // 按键松手检测{delay(1000);a++;}}
}void main()
{u16 a=0, b=0, c=0;while(1){Display();  KeyDown();  // 键入第一个数字if(1 == keyflag){for(i=7;i>0;i--){wei[i] = wei[i-1];  // 键入一位数字向左移动一位}wei[0] = KeyValue;keyflag = 0;}else if(14 == KeyValue)  // 清空显示{for(i=0;i<8;i++){wei[i] = 0;}Display();}else if(10 == KeyValue)  // 加法运算{a = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;for(i=0; i<8; i++){wei[i] = 0;}// 输入第二个数while(1){Display();KeyDown();  // 输入第二个数if(15 == KeyValue)break;  // 当识别到等号时,停止输入if(1 == keyflag){for(i=7; i>0; i--){wei[i] = wei[i-1];}wei[0] = KeyValue;keyflag = 0;}}b = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;c = a + b;wei[0] = c%10;  // 计算C的各个位的数字wei[1] = c/10%10;wei[2] = c/100%10;wei[3] = c/1000%10;wei[4] = c/10000%10;wei[5] = c/100000%10;wei[6] = c/1000000%10;wei[7] = c/10000000%10;Display();}else if(11 == KeyValue)  // 减法运算{a = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;for(i=0; i<8; i++)  // 清空数码管{wei[i] = 0;}// 输入第二个数while(1){Display();KeyDown();  // 输入第二个数if(15 == KeyValue)break;  // 当识别到等号时,停止输入if(1 == keyflag){for(i=7; i>0; i--){wei[i] = wei[i-1];}wei[0] = KeyValue;keyflag = 0;}}b = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;if(a > b){c = a - b;wei[0] = c%10;  // 计算C的各个位的数字wei[1] = c/10%10;wei[2] = c/100%10;wei[3] = c/1000%10;wei[4] = c/10000%10;wei[5] = c/100000%10;wei[6] = c/1000000%10;wei[7] = c/10000000%10;}else if(a < b){u16 e = 0;c = b-a;wei[0] = c%10;wei[1] = c/10%10;if(wei[1] == 0){wei[1] = 16;e=1;}wei[2] = c/100%10;if(wei[2]==0 && e==0){wei[2] = 16;e=1;}wei[3] = c/1000%10;if(wei[3]==0 && e==0){wei[3] = 16;e=1;}wei[4] = c/10000%10;if(wei[4]==0 && e==0){wei[4] = 16;e=1;}wei[5] = c/100000%10;if(wei[5]==0 && e==0){wei[5] = 16;e=1;}wei[6] = c/1000000%10;if(wei[6]==0 && e==0){wei[6] = 16;e=1;}wei[7] = c/10000000%10;if(wei[7]==0 && e==0){wei[7] = 16;e=1;}}Display();}else if(12 == KeyValue)  // 乘法运算{a = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;for(i=0; i<8; i++){wei[i] = 0;}// 输入第二个数while(1){Display();KeyDown();  // 输入第二个数if(15 == KeyValue)break;  // 当识别到等号时,停止输入if(1 == keyflag){for(i=7; i>0; i--){wei[i] = wei[i-1];}wei[0] = KeyValue;keyflag = 0;}}b = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;c = a * b;wei[0] = c%10;  // 计算C的各个位的数字wei[1] = c/10%10;wei[2] = c/100%10;wei[3] = c/1000%10;wei[4] = c/10000%10;wei[5] = c/100000%10;wei[6] = c/1000000%10;wei[7] = c/10000000%10;Display();}else if(13 == KeyValue)  // 除法运算{a = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;for(i=0; i<8; i++){wei[i] = 0;}// 输入第二个数while(1){Display();KeyDown();  // 输入第二个数if(15 == KeyValue)break;  // 当识别到等号时,停止输入if(1 == keyflag){for(i=7; i>0; i--){wei[i] = wei[i-1];}wei[0] = KeyValue;keyflag = 0;}}b = wei[0] + wei[1]*10 + wei[2]*100 + wei[3]*1000 +wei[4]*10000 + wei[5]*100000 + wei[6]*1000000 + wei[7]*10000000;if(0 != b){c = a / b;wei[0] = c%10;  // 计算C的各个位的数字wei[1] = c/10%10;wei[2] = c/100%10;wei[3] = c/1000%10;wei[4] = c/10000%10;wei[5] = c/100000%10;wei[6] = c/1000000%10;wei[7] = c/10000000%10;Display();}}}
}

仿真结果:

矩阵按键实现简易计算器

http://www.mmbaike.com/news/42415.html

相关文章:

  • 免费织梦网站源码下载seo关键词外包
  • 厦门网站建设高级课程黄冈网站推广软件免费下载
  • 上海网站公安局不备案吗中国seo网站
  • 网站优化注意事项电商网站平台搭建
  • 盈利性网站备案百度地址如何设置门店地址
  • 邯郸企业网站建设武汉大学人民医院精神科
  • 东莞网站设计关键字挖掘
  • 有限责任公司怎么注册seo一个月赚多少钱
  • 最新国际新闻头条今日国际大事件seo优化网站推广专员招聘
  • php网站开发外文翻译亚马逊seo什么意思
  • 国外做装饰画的网站如何做好网络营销
  • 上海黑马程序员培训机构地址网站seo搜索引擎优化案例
  • 一个公司能备案多个网站吗做网络推广有前途吗
  • 网站策划模板便宜的seo网络营销推广
  • 做网站外包公司名称温州seo品牌优化软件
  • phpweb网站网络推广网站
  • 微信网站制作哪个好西安百度推广怎么做
  • 网站开发工具蜡笔小新seo网站推广下载
  • 霞山网站建设公司竞价外包运营
  • 找北京赛车网站开发优化推广网站seo
  • 有没有免费建站新手学百度竞价要多久
  • intitle 郑州网站建设重庆公司seo
  • 域名不转出可以做网站吗网页设计制作软件
  • 网站上的滚动图怎么做的网址大全浏览器主页
  • 免费自制二维码软件专业搜索引擎seo公司
  • 湖北专业网站建设产品介绍佛山网站建设制作公司
  • 网站开发框架 简单深圳网站搜索优化
  • 湖南平台网站建设哪家好搜索引擎关键词排名
  • 课程视频网站建设的必要性郴州网站建设网络推广平台
  • 做tb任务赚钱的网站网站免费搭建平台