问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机简单C语言问题,实现一个个位加法计算器

发布网友 发布时间:2023-01-02 10:40

我来回答

4个回答

热心网友 时间:2023-10-09 13:18

你的问题应该出现在键盘处理不完善造成的,稍微修改了一下你试试。
#include <reg52.h>
#define uchar unsigned char
#define unit unsigned int
#define OPdata P0 //十位数据口
#define OPdata1 P1//个位数据口
sbit se0=P3^6;//十位选择
sbit se1=P3^7;//个位选择
sbit Q=P2^6;
sbit W=P2^5;
sbit E=P2^4;
uchar cis; //按下键盘次数
uchar jia1; //加数1
uchar jia2; //加数2
uchar z; //中转数
uchar shi; //十位数
uchar ge; //个位数
uchar s; //译码结果
uchar j; //译码结果
uchar sum; //加法结果
uchar keytemp;
void judge(uchar m) //数码显像管译码
{
switch (m)
{
case 0: s=0x3F; break;
case 1: s=0x06; break;
case 2: s=0x5B; break;
case 3: s=0x4F; break;
case 4: s=0x66; break;
case 5: s=0x6D; break;
case 6: s=0x7D; break;
case 7: s=0x07; break;
case 8: s=0x7F; break;
case 9: s=0x6F; break;
}
}
void judge1(uchar h) //十位数码显像管译码
{
switch (h)
{
case 0: j=0x3F; break;
case 1: j=0x06; break;
}
}
void judgecis()
{
if (cis==1)
{
jia1=z;
ge=z;
shi=0;
}
else if (cis==2)
{
jia2=z;
ge=z;
shi=0;
cis=0;
}
}
void jiafa(uchar m,uchar n) //加法
{
sum=m+n;
if (sum>=10)
{
ge=sum-10;
shi=1;
}
else
{
ge=sum;
shi=0;
}
}

void main()
{
cis=0;
jia1=0;
jia2=0;
shi=0;
ge=0;
s=0;
j=0;
P2=0XFF;
se0=0;//开启十位
se1=0;//开启个位
OPdata=0x3f;//十位
OPdata1=0x3f;//个位
while (1)
{
Q=0;
keytemp=P2;
switch (keytemp)
{
case 0xbb: z=3; cis++;while(P2==0xbb); break;
case 0xbd: z=6; cis++;while(P2==0xbd); break;
case 0xbe: z=9; cis++;while(P2==0xbe); break;
case 0xb7: //等于号
jiafa (jia1,jia2); cis=0; break;
}
Q=1;
W=0;
keytemp=P2;
switch (keytemp)
{
case 0xde: z=8; cis++;while(P2==0xde); break;
case 0xdd: z=5; cis++;while(P2==0xdd); break;
case 0xdb: z=2; cis++;while(P2==0xdb); break;
case 0xd7: z=0; cis++;while(P2==0xd7); break;
}
W=1;
E=0;
keytemp=P2;
switch (keytemp)
{
case 0xee: z=7; cis++;while(P2==0xee); break;
case 0xed: z=4; cis++;while(P2==0xed); break;
case 0xeb: z=1; cis++;while(P2==0xeb); break;
}
judgecis();
judge(ge);
OPdata1=s;
judge1(shi);
OPdata=j;
E=1;
}
}

热心网友 时间:2023-10-09 13:18

你的意思是先按1,再按6,最后按=号,结果是12?而不是7?

下面有一行改下。
void judgecis()
{
if (cis==1)
{
jia1=z;
ge=z;
shi=0;
}
else if (cis==2)
{
jia2=z;
ge=z;
shi=0;
cis=0; //把这行去掉试试

}
}

热心网友 时间:2023-10-09 13:19

这个是个小试验项目吧,其实就是做一个4*4键盘的功能?简单就用16个io口分别赋予键值,复杂的就是用4x4键盘逻辑(4个io纵向,4个io横向编程)

热心网友 时间:2023-10-09 13:19

你这样的程序也不整理再贴出来,看了都累啊
用单片机C语言编程做个计算器,求详细代码,一定要可用的,发到youlingjuji...

while(1) //不断查询是否有按键动作 { key=kbscan(); //获取返回键值

如何用51单片机做计算器(要求用C语言编程) 由于是新手所以没积分 对 ...

//*** myh.h ***有两个文件,一个是头文件myh.h一个是js.c include &lt;reg52.h&gt; typedef unsigned char uchar;typedef unsigned int uint;typedef bit BOOL;// sbit rs=P2^6;sbit rw=P2^5;sbit e=P2^7;// uchar Key_Down(void);//返回0到12的键盘的编码 void delay(uchar);//...

大神,求51单片机做简易计算器的那个c语言程序

ulint bb,dd,ee,ff;uchar d,flag1;uchar fd1,fd2;uchar b1=16,b2=16,b3=16,b4=16,b5=16;uchar d1=16,d2=16,d3=16,d4=16,d5=16;uchar f1=16,f2=16,f3=16,f4=16,f5=16,f6=16,f7=16,f8=16,f9=16,f10=16;uchar key,keyval,c,temp;void Delay1ms(uint i) //1ms延时...

用C语言设计一个简单计算器

else if(p=='*') multiplication(a,b,c);else if(p=='/') div(a,b,c);else puts("没有注册这个运算符号\n"); }以上是设计的一个简易计算器。可以进行相应的加减乘除。简介:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的...

C语言设计一个加减计数器,通过两个按键来控制。就是按一个键就加一...

case KEYA: num++;break; case KEYM: num--;break; } } return 0;}如果你是要其他平台,比如单片机上运行,只要对应按钮电平对应防抖代码中对变量++,--就可以了。我之前给别人写个一个单片机的简单程序,里面就有按钮+-的,你可以参考。以前回答记录 ...

c语言设计一个简单的计算器程序

do//do-while先执行再判断循环条件,即可实现重复计算功能 { menu();//打印出菜单界面 scanf("%d",&select);//输入你的选项 printf("请输入计算值:");scanf("%d%d",&i,&j);//输入要计算的数值 switch(select){ case1:printf("%d+%d=%d\n"...

C语言程序设计,做一个简单计算器

void add()//加法运算 { double a,b;printf("请输入要计算的两个数:\n");scanf("%lf%lf",&amp;a,&amp;b);printf("%.2lf+%.2lf=%.2lf\n",a,b,a+b);} void sub()//减法运算 { double a,b;printf("请输入要计算的两个数:\n");scanf("%lf%lf",&amp;a,&amp;b);printf("%.2lf-%....

AT89C51单片机,用c写一个矩阵键盘控制的简易计算器,实现整数的...

网上有很多这种例程,只需稍作修改

用C语言写一个加法运算的代码怎么写?

直接编译,程序输出结果中任意输入两个数字,程序执行结果如下图所示:知识扩展:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着...

用c语言编写一个计数器(单片机为51型,数码管为共阴)要求有三个按键分别...

如果这样的话挺简单的,51单片机的计数器io口记得好像是P3^0和P3^1,但不管怎么,首先设置TMOD,将C/T位置1,这就改为计数器了,然后可以编写函数来对一个变量进行加减;同样利用51单片机的外部中断也可以实现计数功能,打开外部中断开关,在外部中断服务函数对计数变量进行加减;最简单的,直接利用io口...

基于单片机的4位加法计算器 单片机加法计算器的设计 十进制加法计算器单片机 单片机计算器混合计算 单片机课设十进制加法计算器 51单片机4位数简易计算器 51单片机简单计算器 单片机加减乘除计算器 51单片机两位计算器
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
嘴唇上有颗突出的痣怎么去掉 嘴唇上的痣 幼升小联审通过了社保什么时候可以停缴?个人觉得交社保没意义!_百度... 北京朝阳区幼升小户口提前多久办理 朝阳区幼升小,媳妇社保不在北京因是外派人员社保一直在外地总公司,可是... 梦幻中的祭台问题 负胜负负胜平负是怎么玩的 幼儿园的教学计划该怎么写? 从零开始的异世界生活第三季消息? 自然堂雪域皙白好呢还是芙利芳丝纯白好? 空调冬季制热怎么操作? 十全十美的生肖是什么 九年级上册语文第18课中国人失掉自信了吗生字词拼音 电脑网页打开显示不全,百度打不开二级网页,WIN7系统,自带IE8浏览器跪求高手指点 iphone怎么手写输入 海尔55寸4k智能电视左边有一道黄线怎么回事 给老师的一封信500字怎么写作文给老师的一封信 新买的包包味道很大怎么快速去掉刚买的包包气味很重怎么快速去除 省呗扣费29.8退回来有提示吗是真的吗 怎样设置动态壁纸oppo qq空间那种会动的相册怎么制作 QQ空间相片怎样制作动感影集 监控系统在室外用双绞线传输,如何注意防雷方面的事项 假发是什么材料做的 假发买真发好还是人造好 帮乌鸦想出一个新办法喝水 《乌鸦喝水》如果乌鸦旁边没有石子怎么喝到水? PPT中照片与照片在动画播放时,照片与照片形成一个立体感,怎么弄呢? 最简单的芋泥奶茶怎么做怎样做芋泥奶茶 怎样做芋泥奶茶 股东权益-什么是股东权益-(解释) 加绒裤子哪种绒比较好 耐克运动裤加绒里面的绒是什么材料 李宁加绒卫裤有几种绒面 加绒打底裤都有哪几种绒 三星2014手机内屏和外屏壁纸不一样怎么更改? 14promax壁纸在哪里下 怎么加入饿了么外卖配送平台 oppo手机边听边存的歌曲在哪里找 欢乐斗地主卡神5级升6级要多少钻石 请问blued被禁言了还能解除吗 手机绑定的邮政储蓄卡作废了怎么怎么移除手机帮定的邮政银行卡作废了怎么解除? 艾滋病疫苗实验再受挫,艾滋病该如何治疗,以后会产生新方法吗? 2022艾滋病检测最新标准 艾滋病最近有什么新药吗? 设计我的名片 孙炎润三个字怎么写好看? lumion添加声音却没有声音 关于lumion 的问题--打开发现里面显示了一个从没见过的图标。是做什么用的 墙面上双面胶的胶痕怎么去掉 消费者买到变质食品怎么处理