资源简介
at89c51单片机 计算器 矩阵键盘 c语言代码
课程设计
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
sbit P00=P0^0;
sbit P27=P2^7;
uchar key=0; //按键的键值
int fuhaoflag; //
float datdat0dat1;
uchar temp0; //按键的键码
uchar num[16]={
0xC0/*0*/
0xF9/*1*/
0xA4/*2*/
0xB0/*3*/
0x99/*4*/
0x92/*5*/
0x82/*6*/
0xF8/*7*/
0x80/*8*/
0x90/*9*/
0x88/*A*/
0x83/*B*/
0xC6/*C*/
0xA1/*D*/
0x86/*E*/
0x8E/*F*/};
uchar select[8]={0xfe0xfd0xfb
0xf70xef0xdf0xbf0x7f}; //数码管的位选
//简单的延时1ms函数
void delay(uchar t)
{
uchar xy;
for(x=t;t>0;t--)
for(y=111;y>0;y--);
}
//按键的扫描
void keyscan()
{
uchar tempm0m1;
P1=0xf0;
temp=P1;
if(temp!=0xf0)
{
delay(10);
temp=P1;
if(temp!=0xf0)
{
m0=temp; //行的键码
flag=1;
P00=~P00;
P1=0x0f;
temp=P1;
if(temp!=0x0f)
{
m1=temp;//列的键码
do{
temp=P1;
temp&=0X0f;
}while(temp!=0x0f);
}
temp0=m0|m1; //按键的键码
switch(temp0)
{
case 0xee:key=0;break;
case 0xde:key=1;break;
case 0xbe:key=2;break;
case 0x7e:key=10;break;//清除键
case 0xed:key=3;break;
case 0xdd:key=4;break;
case 0xbd:key=5;break;
case 0x7d:key=11;break; //等号键
case 0xeb:key=6;break;
case 0xdb:key=7;break;
case 0xbb:key=8;break;
case 0x7b:key=12;break; // 除号
case 0xe7:key=9;break;
case 0xd7:key=13;break; //加号
case 0xb7:key=14;break; //减号
case 0x77:key=15;break; //乘号
}
}
}
}
void yunsuan() //运算函数
{
switch(fuhao)
{
case 12:dat=dat0/(dat1*1.0);break; //除法运算
case 13:dat=dat0+dat1;break;
case 14:dat=dat0-dat1;break;
case 15:dat=dat0*dat1;break;
}
}
//键值的判断函数
void judge()
{
static int i;
if(flag) //有键按下标注
{
if(key==10) //清除键
{
dat=0;//清屏为0
}
else
{
if(key<=9)
{
dat=dat*10+key; //计算按键的结合值
i++;
if(i==6)
{
i=0;
}
}
else
{
if(key==11)//按键是等号键
{
dat1=dat;//等号前将第二个数字存放在dat1中
yunsuan();
}
else //按键是运算符号
{
fuhao=key;
dat0=dat; //把第一个数存在dat0中
dat=0; //dat清零
}
}
}
flag=0; //清标志位
}
}
void display()
{
if((dat-((int)dat))!=0) //判断是否是小数
{
if(dat>=0.01)
{
P3=0xfe;
P2=num[(int)(dat*100)%10];
delay(10);
P2=0xff;
}
if(dat>=0.1)
{
P3=0xfd;
P2=num[(int)(dat*10)%10];
delay(10);
P2=0xff;
}
}
if(dat>=0)
{
P3=0xfb;
P2=num[(int)dat%10000%1000%100%10];
P27=0;
delay(10);
P2=0xff;
}
if(dat>=10)
{
P3=0xf7;
P2=num[(int)dat%10000%1000%100/10];
delay(10);
P2=0xff;
}
if(dat>=100)
{
P3=0xef;
P2=num[(int)dat%10000%1000/100];
delay(10);
P2=0xff;
}
if(dat>=1000)
{
P3=0xdf;
P2=num[(int)dat%10000/1000];
delay(10);
P2=0xff;
}
if(dat>=10000)
{
P3=0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9887 2011-01-05 14:06 计算器\xounter
文件 3614 2011-01-05 14:07 计算器\xounter.c
文件 6905 2011-01-05 14:06 计算器\xounter.hex
文件 46 2011-01-05 14:06 计算器\xounter.lnp
文件 10797 2011-01-05 14:06 计算器\xounter.LST
文件 14915 2011-01-05 14:06 计算器\xounter.M51
文件 10816 2011-01-05 14:06 计算器\xounter.OBJ
文件 1027 2011-01-09 13:39 计算器\xounter.Opt
文件 168 2011-01-09 12:04 计算器\xounter.plg
文件 2110 2011-01-04 22:24 计算器\xounter.Uv2
....... 1028 2011-01-07 18:33 计算器\xounter_Opt.Bak
文件 0 2011-01-04 20:47 计算器\xounter_Uv2.Bak
文件 3710 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key
文件 1477 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key.c
文件 1257 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key.hex
文件 38 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key.lnp
文件 4817 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key.LST
文件 6664 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key.M51
文件 4213 2011-01-05 09:45 计算器\矩阵键盘(反转法)\key.OBJ
文件 1010 2011-01-05 10:07 计算器\矩阵键盘(反转法)\key.Opt
文件 211 2011-01-05 10:44 计算器\矩阵键盘(反转法)\key.plg
文件 2095 2010-11-26 22:12 计算器\矩阵键盘(反转法)\key.Uv2
文件 1011 2011-01-05 09:52 计算器\矩阵键盘(反转法)\key_Opt.Bak
文件 1976 2010-09-15 13:56 计算器\矩阵键盘(反转法)\key_Uv2.Bak
目录 0 2011-01-06 17:47 计算器\矩阵键盘(反转法)
目录 0 2011-01-09 13:39 计算器
----------- --------- ---------- ----- ----
89792 26
- 上一篇:电梯运行仿真程序
- 下一篇:hough检测直线的程序
相关资源
- 实矩阵与复矩阵的LU分解C++源代码
- 桌面计算器
- C++矩阵计算类
- 课程设计--计算器基于MFC
- 基于QT的三元一次方程计算器
- 稀疏矩阵相加、相乘和转置用三元组
- 纯C语言写计算器界面源码
- 密码学MFC实现仿射加密解密超级计算
- 使用vc++6.0调用opencv库函数生成5*5单位
- C++实现的非常好的一个矩阵类
- C语言一个简易计算器程序
- C语言 51单片机4x4矩阵键盘扫描程序
- C++矩阵运算
- 基于51单片机的智能计算器(实现两个
- STC15F单片机制作的:计算器、万年历
- 用8051与1601LCD设计的计算器
- 基于51单片机的计算器
- 菜单实现加单计算器(个人原创c++源
- C++实战源码-求矩阵对角线之和
- c++求解矩阵中的马鞍点
- 蛇形矩阵源码(c语言)
- 矩阵计算器(定积分计算器.cpp)
- 矩阵求对角线和
- c++控制台 计算器(正常运算和定义)
- c++源码:原木材积计算器
- 大型稀疏矩阵运算库SuiteSparse vs2010通
- c++入门级计算器源码(实现了加、减
- C++实战源码-计算两个矩阵和
- 一元稀疏多项式计算器
- c++ 简易计算器
评论
共有 条评论