单片机简单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 <reg52.h> 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",&a,&b);printf("%.2lf+%.2lf=%.2lf\n",a,b,a+b);} void sub()//减法运算 { double a,b;printf("请输入要计算的两个数:\n");scanf("%lf%lf",&a,&b);printf("%.2lf-%....
AT89C51单片机,用c写一个矩阵键盘控制的简易计算器,实现整数的...
网上有很多这种例程,只需稍作修改
用C语言写一个加法运算的代码怎么写?
直接编译,程序输出结果中任意输入两个数字,程序执行结果如下图所示:知识扩展:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着...
用c语言编写一个计数器(单片机为51型,数码管为共阴)要求有三个按键分别...
如果这样的话挺简单的,51单片机的计数器io口记得好像是P3^0和P3^1,但不管怎么,首先设置TMOD,将C/T位置1,这就改为计数器了,然后可以编写函数来对一个变量进行加减;同样利用51单片机的外部中断也可以实现计数功能,打开外部中断开关,在外部中断服务函数对计数变量进行加减;最简单的,直接利用io口...