资源简介
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检测直线的程序
相关资源
- c++ 多功能计算器
- C语言课设计算器
- 基于51单片机的简易计算器
- 多功能计算器实现C++代码以及代码详
- C++简单计算器的实现
- C++版计算器带括号dos版本
- 联络矩阵最小路集不交化
- VC++课程设计 计算器
- 使用c++读取图像到二维矩阵
- VC仿Xp计算器
- VS2008 MFC简易计算器
- MFC登录注册系统C++
- 数据结构课程设计,C++计算器MFC
- Frangi最初提出的Hessian矩阵血管增强,
- MFC计算器编程,可视化,含详细实现
- MFC实现简单计算器支持加减乘除和括
- Eigen官方源码
- VC++ 对话框 滚轮 计算器
- C++课程设计计算器MFC
- 多功能计算器 vc++ mfc
- vc60写的四则混合运算计算器
- C++中,用mfc做的可视化的计算器程序
- mfc简单四则运算计算器
- 协方差矩阵C++实现
- VC++科学计算器源代码
- VC计算器 用VC++设计一个计算器,功能
- MFC表达式计算器
- 基于循环双向链表的大整数计算器c
- 矩阵运算程序VC++矩阵运算程序
- VC计算器,完整的案例,适合MFC和VC
评论
共有 条评论