资源简介
c语言编写的基于51单片机的计算器程序(4x4按键);0~9十个数字键,加减乘除四个键,等号按键和清零按键。实现长度最长为6位数的加、减、乘、除,可根据自己的硬件,进行改写,增加计算数字的长度。
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f};
uchar code table2[]={
0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe};
sbit dula=P1^7;
sbit wela=P1^6;
void keyscan();
uchar keykey1temptemp0temp1temp2abcdweigeshibaiqianwanshiwan;
unsigned long int numnum1num11num12num2num3num4num5num6;
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void deal();
void display();
void init();
void main()
{
init();
while(1)
{
keyscan();
deal();
display();
}
}
void keyscan()
{
P3=0xf0;
temp=P3;
if(temp!=0xf0)
{
delay(5);
if(temp!=0xf0)
{
temp1=P3;
}
}
P3=0x0f;
temp=P3;
if(temp!=0x0f)
{
delay(5);
if(temp!=0x0f)
{
temp2=P3;
}
while(temp!=0x0f)
{
temp=P3;
display();
}
temp0=temp1|temp2;
switch(temp0)
{
case 0xee:key=7;b=b+1;break;
case 0xde:key=8;b=b+1;break;
case 0xbe:key=9;b=b+1;break;
case 0x7e:key=‘+‘;break;
case 0xed:key=4;b=b+1;break;
case 0xdd:key=5;b=b+1;break;
case 0xbd:key=6;b=b+1;break;
case 0x7d:key=‘-‘;break;
case 0xeb:key=1;b=b+1;break;
case 0xdb:key=2;b=b+1;break;
case 0xbb:key=3;b=b+1;break;
case 0x7b:key=‘*‘;break;
case 0xe7:key=0;b=b+1;break;
case 0xd7:key=‘=‘;c=c+1;break;
case 0xb7:key=‘.‘;break;
case 0x77:key=‘/‘;break;
}
a=key;
}
}
void display()
{
dula=1;
P0=table1[ge];
dula=0;
P0=0xff;
wela=1;
P0=table2[wei];
wela=0;
P0=0xff;
delay(1);
if(shi!=0||bai!=0||qian!=0||wan!=0||shiwan!=0)
{
dula=1;
P0=table1[shi];
dula=0;
P0=0xff;
wela=1;
P0=table2[wei+1];
wela=0;
P0=0xff;
delay(1);
}
if(bai!=0||qian!=0||wan!=0||shiwan!=0)
{
dula=1;
P0=table1[bai];
dula=0;
P0=0xff;
wela=1;
P0=table2[wei+2];
wela=0;
P0=0xff;
delay(1);
}
if(qian!=0||wan!=0||shiwan!=0)
{
dula=1;
P0=table1[qian];
dula=0;
P0=0xff;
wela=1;
P0=table2[wei+3];
wela=0;
P0=0xff;
delay(1);
}
if(wan!=0||shiwan!=0)
{
dula=1;
P0=table1[wan];
dula=0;
P0=0xff;
wela=1;
P0=table2[wei+4];
wela=0;
P0=0xff;
delay(1);
}
if(shiwan!=0)
{
dula=1;
P0=table1[shiwan];
dula=0;
P0=0xff;
wela=1;
P0=table2[wei+5];
wela=0;
P0=0xff;
delay(1);
}
}
void deal()
{
if(a!=‘+‘ && a!=‘-‘ && a!=‘*‘&&a!=‘/‘&&a!=‘=‘&&a!=‘.‘)
{
if(b==1)
{
num1=a;
ge=num1;
}
if(b==2)
{
num2=a;
ge=num2;
shi=num1;
if(c!=0)
{
shi=0;
bai=0;
qian=0;
wan=0;
shiwan=0;
b=1;
c=0;
}
}
if(b==3)
{
num3=a;
ge=num3;
shi=num2;
bai=num
相关资源
- UDP协议客户端服务器间视频传输c源码
- 简单时间获取,用c语言编写,客户端
- C语言课程设计 - 学生宿舍管理系统
- C语言大作业 西北工业大学
- 3DES,C语言版,ECB,PKCS7
- 利用LINUX FIFO命名管道技术实现双向聊
- MFC+下的一个功能强大的矩阵计算器
- C语言学生宿舍管理程序源代码
- kcf目标跟踪C代码
- 围棋C语言代码要满十字
- 逆波兰表达式 c语言实现
- 指法练习 C语言源代码
- 人工智能 八数码问题 A*算法 C语言
- 全国交通咨询模拟c语言版214055
- 基于C语言STC89C52单片机电子密码锁的
- C语言实现 简单的端口扫描
- 基于51单片机的DDS信号发生器AD9833程序
- C语言课程设计——超市商品库存管理
- RSA算法1024位C语言实现
- 一个基于单片机的温湿度程序
- 由c语言文件制作成mex文件的方法
- C语言连接mysql,实现通讯录功能
- 数据结构C语言版综合实践集合运算
- 简易工资管理系统C语言实现
- c语言课程设计报告 计算器的实现内
- GSM发短信 GPS 单片机C语言实现
- PIC18F452串口通信程序
- 学生信息管理系统c语言单链表实现
- graphics的随笔画程序基于c语言
- 双边滤波器 C语言程序可用
评论
共有 条评论