資源簡介
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檢測直線的程序
評論
共有 條評論