資源簡介
本設計以單片機為核心,用LCD12864顯示編寫而成的簡易計算器,能實現10以內的加減乘除,硬件電路采用Protues搭建,程序采用Keil編寫,用兩者的連調實現計算器的效果。

代碼片段和文件信息
#include?“reg51.h“
#include?
#include?“ziku.h“
#define?uchar?unsigned?char
uchar?keyi=-4j=0a=0;
int?suan[8]={00000000};
writedata?(uchar?dat);
writecmd(uchar?cmd);
LCDInitialize();
Show(uchar?Pageuchar?Lineuchar?Widthuchar?*Row);
ShowGraph(uchar?Pageuchar?Lineuchar?Widthuchar?Highuchar?*Graph);
Showchinese(uchar?pageuchar?lineuchar?*p);
Showshu(uchar?pageuchar?lineuchar?*q);
void?delayms(uchar?ms)
{
uchar?i;
while(ms--)
{
for(i=0;i<60;i++);
}
}
uchar?keyscan(void)
{
??uchar?scantemp;
??P1=0xf0;
??if((P1&0xf0)!=0xf0)
??{
????delayms(1000);
i=i+4;j=j+1;
delayms(10);
if(j>7)?j=0;
if(i>24)?i=-4;
if((P1&0xf0)!=0xf0)
{?
?scan=0xfe;
?while((scan&0x10)!=0)
?{?
???P1=scan;
???if((P1&0xf0)!=0xf0)
???{temp=(P1&0xf0)|0x0f;
???return((~scan)+(~temp));
???}
???else?scan=(scan<<1)|0x01;
???}
??}
?}
?return(0);
?}
jisuan()
{?
??int?n;
??if(a==1)
??{?n=suan[1]/suan[5];
????delayms(10);
Showshu(540&shuzi[15*16]);
Showshu(548&shuzi[n%10*16]);
}
else
if(a==2)
{?n=suan[1]*suan[5];
??delayms(10);
??Showshu(540&shuzi[n/10*16]);
??????Showshu(548&shuzi[n%10*16]);
?}
else
if(a==3)
????{?n=suan[1]-suan[5];
??delayms(10);
??Showshu(540&shuzi[15*16]);
??Showshu(548&shuzi[n%10*16]);
?????}
?else
?if(a==4)
?{
??n=suan[1]+suan[5];
??delayms(10);
??Showshu(540&shuzi[n/10*16]);
??Showshu(548&shuzi[n%10*16]);
}
}
main(void)
{
LCDInitialize();
????Showchinese(00qing);
Showchinese(016shu);
Showchinese(032ru);
Showchinese(048maohao);
ShowGraph(080324Pig);
????while(1)
{ int?m;
key=keyscan();
switch(key)
{
??case?0x11:?Showshu(5i&shuzi[7*16]);suan[j]=7;break;
??case?0x12:?Showshu(5i&shuzi[4*16]);suan[j]=4;break;
??case?0x14:?Showshu(5i&shuzi[1*16]);suan[j]=1;break;
??case?0x18:?for(m=0;m<7;m++)?
????????????{?Showshu(58*m&shuzi[15*16]);}
????????????i=24;j=7;break;
??case?0x21:?Showshu(5i&shuzi[8*16]);suan[j]=8;break;
??case?0x22:?Showshu(5i&shuzi[5*16]);suan[j]=5;break;
??case?0x24:?Showshu(5i&shuzi[2*16]);suan[j]=2;break;
??case?0x28:?Showshu(5i&shuzi[0*16]);suan[j]=0;break;
??case?0x41:?Showshu(5i&shuzi[9*16]);suan[j]=9;break;
??case?0x42:?Showshu(5i&shuzi[6*16]);suan[j]=6;break;
??case?0x44:?Showshu(5i&shuzi[3*16]);suan[j]=3;break;
??case?0x48:?Showshu(5i&shuzi[14*16]);suan[j]=0;jisuan();break;
??case?0x81:?Showshu(5i&shuzi[10*16]);a=1;break;
??case?0x82:?Showshu(5i&shuzi[11*16]);a=2;break;
??case?0x84:?Showshu(5i&shuzi[12*16]);a=3;break;
??case?0x88:?Showshu(5i&shuzi[13*16]);a=4;break;
}
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????100460??2011-02-04?14:03??計算器\jisuan.DSN
?????文件???????1054??2011-02-06?10:42??計算器\jisuan.PWI
?????文件?????100460??2011-02-04?14:03??計算器\Last?Loaded?jisuan.DBK
?????文件??????18953??2011-02-06?09:55??計算器\s
?????文件?????????67??2011-02-06?09:55??計算器\s.lnp
?????文件??????16409??2011-02-06?09:55??計算器\s.M51
?????文件???????1609??2011-02-06?09:56??計算器\s.Opt
?????文件????????174??2011-02-06?10:05??計算器\s.plg
?????文件???????2191??2011-02-04?17:07??計算器\s.Uv2
?????文件???????6376??2005-03-22?15:22??計算器\STARTUP.A51
?????文件??????14048??2011-02-06?09:55??計算器\STARTUP.LST
?????文件????????749??2011-02-06?09:55??計算器\STARTUP.OBJ
?????文件???????1609??2011-02-06?09:52??計算器\s_Opt.Bak
?????文件???????2157??2011-02-04?11:59??計算器\s_Uv2.Bak
?????文件???????2715??2011-02-06?09:26??計算器\Text.c
?????文件???????6015??2011-02-06?09:55??計算器\Text.LST
?????文件??????12808??2011-02-06?09:55??計算器\Text.OBJ
?????文件???????1538??2011-02-05?09:18??計算器\Text1.C
?????文件???????4400??2011-02-06?09:55??計算器\Text1.LST
?????文件???????8857??2011-02-06?09:55??計算器\Text1.OBJ
?????文件???????2836??2011-02-06?09:55??計算器\ziku.h
?????目錄??????????0??2011-02-06?10:42??計算器
-----------?---------??----------?-----??----
???????????????305485????????????????????22
- 上一篇:Halcon找圓的中心坐標。
- 下一篇:3D工件STL格式
評論
共有 條評論