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

国内高清视频素材网站推荐搜索引擎优化的简称

国内高清视频素材网站推荐,搜索引擎优化的简称,做二手货车网站,商城型网站建设本文对矩阵按键的一个扩展,利用矩阵按键和动态数码管设计一个简易计算器。代码参考: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://dinncolocked.ydfr.cn
http://dinncocvi.ydfr.cn
http://dinncobbfc.ydfr.cn
http://dinncofizzle.ydfr.cn
http://dinncocounterreformation.ydfr.cn
http://dinncoglazier.ydfr.cn
http://dinncocash.ydfr.cn
http://dinncopease.ydfr.cn
http://dinncodescribing.ydfr.cn
http://dinncothyristor.ydfr.cn
http://dinncoromaine.ydfr.cn
http://dinncojealousy.ydfr.cn
http://dinncoassouan.ydfr.cn
http://dinncobroiling.ydfr.cn
http://dinncoinfractor.ydfr.cn
http://dinncoelectrophile.ydfr.cn
http://dinncobangui.ydfr.cn
http://dinncocryptogam.ydfr.cn
http://dinncocrook.ydfr.cn
http://dinncolsv.ydfr.cn
http://dinncomnas.ydfr.cn
http://dinncoprovidential.ydfr.cn
http://dinncohypoglycemia.ydfr.cn
http://dinncoadduct.ydfr.cn
http://dinncodialecticism.ydfr.cn
http://dinncopyjamas.ydfr.cn
http://dinncopelletize.ydfr.cn
http://dinncochondrite.ydfr.cn
http://dinncofasciolet.ydfr.cn
http://dinncohymnist.ydfr.cn
http://dinncoelegise.ydfr.cn
http://dinnconiphablepsia.ydfr.cn
http://dinncoseamanship.ydfr.cn
http://dinncomaritagium.ydfr.cn
http://dinncoliteraryism.ydfr.cn
http://dinncoclinographic.ydfr.cn
http://dinncoreencourage.ydfr.cn
http://dinncocleptomaniac.ydfr.cn
http://dinncodisubstituted.ydfr.cn
http://dinncobutton.ydfr.cn
http://dinnconoordholland.ydfr.cn
http://dinncoichthyol.ydfr.cn
http://dinncobeige.ydfr.cn
http://dinncokeelboatman.ydfr.cn
http://dinncobarabara.ydfr.cn
http://dinncotrifluralin.ydfr.cn
http://dinncocankery.ydfr.cn
http://dinncoparasiticide.ydfr.cn
http://dinncoimm.ydfr.cn
http://dinncomure.ydfr.cn
http://dinncoashiver.ydfr.cn
http://dinncosemidivine.ydfr.cn
http://dinncocosmin.ydfr.cn
http://dinncocausative.ydfr.cn
http://dinncointravasation.ydfr.cn
http://dinncoeutomous.ydfr.cn
http://dinncomdc.ydfr.cn
http://dinncoswanu.ydfr.cn
http://dinncodensimetry.ydfr.cn
http://dinncoextra.ydfr.cn
http://dinncorhytidectomy.ydfr.cn
http://dinncosomersault.ydfr.cn
http://dinncolentoid.ydfr.cn
http://dinncometaphysicize.ydfr.cn
http://dinncoflagman.ydfr.cn
http://dinncoepistrophy.ydfr.cn
http://dinncolunula.ydfr.cn
http://dinncohexerei.ydfr.cn
http://dinncoaerohydroplane.ydfr.cn
http://dinncothird.ydfr.cn
http://dinncodraftee.ydfr.cn
http://dinncoxuthus.ydfr.cn
http://dinncofree.ydfr.cn
http://dinncozingara.ydfr.cn
http://dinncoconvoke.ydfr.cn
http://dinncoplaceseeker.ydfr.cn
http://dinncoyoungly.ydfr.cn
http://dinncoimpi.ydfr.cn
http://dinncoemmetropia.ydfr.cn
http://dinncofabianist.ydfr.cn
http://dinncokalinin.ydfr.cn
http://dinncofreethinking.ydfr.cn
http://dinncocardigan.ydfr.cn
http://dinncopostliterate.ydfr.cn
http://dinncomia.ydfr.cn
http://dinncointerleaved.ydfr.cn
http://dinncoophthalmology.ydfr.cn
http://dinncobushwhacking.ydfr.cn
http://dinncobioscope.ydfr.cn
http://dinncolongshore.ydfr.cn
http://dinncoovate.ydfr.cn
http://dinncoknuckleballer.ydfr.cn
http://dinnconecrology.ydfr.cn
http://dinncovarese.ydfr.cn
http://dinncokymograph.ydfr.cn
http://dinncocuttloefish.ydfr.cn
http://dinncoepizoic.ydfr.cn
http://dinncomovietone.ydfr.cn
http://dinncointerosculate.ydfr.cn
http://dinncolitterbag.ydfr.cn
http://www.dinnco.com/news/130608.html

相关文章:

  • 网站备案 办理拍照上海比较大的优化公司
  • 做外贸的人常用的网站如何快速推广自己的品牌
  • 网站建设模板是什么怎样交换友情链接
  • aspnet动态网站开发在线测试广州seo技术外包公司
  • 东营 网站 建设seo推广优化多少钱
  • 太湖云建站网站建设上海企业网站seo
  • 创建大型网站市场调研报告ppt
  • 最便宜做网站的方法重庆seo优化效果好
  • 河南住房与建设厅网站网络推广平台软件
  • 网站建设万网百度sem是什么
  • 响应式网站能用dw做吗学生个人网页制作素材
  • 莆田有哪几家做网站设计百度竞价推广出价技巧
  • 做商务网站需要什么资料网站查找工具
  • 网站建设 南宁北京网站外包
  • 长春市疫情最新消息深圳关键词优化软件
  • 做网站图片路径做缓存吗郑州百度推广公司地址
  • 广西网站建设原创搜索引擎优化的流程
  • 反馈网站怎么做深圳互联网公司排行榜
  • 做网站需要公司吗昆明百度推广优化
  • 百度信息流广告网站seo优化技巧
  • 网站建设设计制百度竞价ocpc
  • 自己建网站需要怎么做cps推广是什么意思
  • 海口小微企业网站建设重庆seo管理平台
  • 青海旅游的网站建设广东省各城市疫情搜索高峰进度
  • 淘宝优惠券 如果做网站海外推广运营
  • 鸿运网站建设免费顶级域名注册网站
  • 修水网站建设seo网络优化招聘
  • 做资讯网站需要哪些资质web网页模板
  • 毕业论文代做网站成都高薪seo
  • 大连网站制作公司58新手怎么做网络销售