資源簡介
stc89c51所制作的一個簡易計算器包含原理圖,使用51單片機制作的,利用矩陣鍵盤輸入,實現數據的加減乘除,多位運算

代碼片段和文件信息
/*???????能夠實現多位的二級運算?
/*************?
鍵盤格式
1????2?????3 ??+
4????5?????6 ??-
7????8?????9??????*
0????c?????=??????/
************/
#include?“reg52.h“
#include
#include
#include
#include?“intrins.h“
int?counter(void);
void?calculate1();
void?show(int?num);
long?int?sum=0;??
uchar?temp1=10; ?
uchar?k=0z=0i=0tm=0n=0flag=0; //lay對k?tran對zq對清屏?i對lay ??m對operator
?int?lay[18]; ????????//儲存鍵入字符
char?operator[3];
long?int?tran[6];
????????//儲存計算過程中運算符
void?main()
{
UartInit();
? init1602();
?? ?while(1)
??{?
????temp1=matrixkeyscan(); ???//鍵盤掃描
?
??????? if(temp1==‘c‘)???? ?//將各個數組相當于初始化; ???將1602初始化一下 ?即清屏
{
init1602();
k=0z=0i=0tm=0n=0flag=0;
}?
?
if((temp1!=10))
{
?if((temp1!=‘=‘)&&(temp1!=‘c‘))
{ ?
lay[i]=temp1;?
i++;
if((temp1==‘+‘)||(temp1==‘-‘)||(temp1==‘*‘)||(temp1==‘/‘))
{
write_dat(temp1); ??//顯示運算符
write_com(0x06);
}
?? }
}
if(temp1==‘=‘) ??? ???//?????=在鍵盤掃描已經給顯示了 ???
{? ?lay[i]=temp1;
/******************將多位轉化為每個數字存在另一個數組*************/
???/**********???因為此處的限制?所以只能實現兩個運算符*******/
?????for(?k=0;(lay[k]>=0&&lay[k]<=9);k++)?t=k+1; ?//將運算符找出 ,將t賦值,便于后面運算
if(k>=2)? ?//將單位數字轉化為一個數字
{
switch(k)
?{
?case?2:?lay[k-1]=lay[k-1]+10*lay[k-2]; break;
?case?3:?lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]?;? break;
?case?4:?lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]?;? break;
?case?5:?lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]+10000*lay[k-4]?;? break;
?}
}
tran[0]=lay[k-1];
tran[1]=lay[k];
??for(t++;(lay[t]>=0&&lay[t]<=9);t++)?z++?; //將單位數字轉化為一個數字?,將運算符之間的數字個數
??if(z>=2)? //統計為z
{
switch(z)
?{
?case?2:?lay[k+1]=10*lay[k+1]+lay[k+2]; break;
?case?3:?lay[k+1]=100*lay[k+1]+10*lay[k+2]+lay[k+3]; break;
?case?4:?lay[k+1]=1000*lay[k+1]+100*lay[k+2]+10*lay[k+3]+lay[k+4]; break;
?case?5:?lay[k+1]=10000*lay[k+1]+1000*lay[k+2]+100*lay[k+3]+10*lay[k+4]+lay[k+5]; break;
?}
}
???tran[2]=lay[k+1];
???tran[3]=lay[t];?z=0;
???for(t++;(lay[t]>=0&&lay[t]<=9);t++)?z++?; //將單位數字轉化為一個數字?,將運算符之間的數字個數
??k=t;
??
??if(z>=2)? //統計為z
{
switch(z)
?{
?case?2:?lay[k-1]=lay[k-1]+10*lay[k-2]; break;
?case?3:?lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]?;? break;
?case?4:?lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]?;? break;
?case?5:?lay[k-1]=lay[k-1]+10*lay[k-2]+100*lay[k-3]+1000*lay[k-4]+10000*lay[k-4]?;? break;
?}
}
???tran[4]=lay[k-1]
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????829??2017-12-22?16:50??計算器\1602計算器\jisuan.H
?????文件???????4144??2017-12-26?15:04??計算器\1602計算器\keyscan.h
?????文件???????1155??2017-12-28?15:57??計算器\1602計算器\lcd1602.h
?????文件???????5055??2017-12-30?15:30??計算器\1602計算器\main.c
?????文件??????14969??2017-12-30?15:21??計算器\1602計算器\main.LST
?????文件??????21563??2017-12-30?15:21??計算器\1602計算器\main.OBJ
?????文件????????573??2018-06-18?17:46??計算器\1602計算器\usart.c
?????文件????????196??2017-12-26?14:31??計算器\1602計算器\usart.h
?????文件???????1815??2017-12-30?15:21??計算器\1602計算器\usart.LST
?????文件???????2514??2017-12-30?15:21??計算器\1602計算器\usart.OBJ
?????文件?????201728??2018-03-24?09:25??計算器\1602計算器\電路圖\許相樂.SchDoc
?????文件??????65311??2018-03-31?17:57??計算器\1602計算器\電路圖\許相樂.SchDocPreview
?????文件??????19606??2017-12-30?15:21??計算器\1602計算器\計算機
?????文件????????706??2018-04-02?20:13??計算器\1602計算器\計算機.build_log.htm
?????文件??????10703??2017-12-30?15:21??計算器\1602計算器\計算機.hex
?????文件?????????41??2017-12-30?15:21??計算器\1602計算器\計算機.lnp
?????文件??????23855??2017-12-30?15:21??計算器\1602計算器\計算機.M51
?????文件????????178??2017-12-30?15:30??計算器\1602計算器\計算機.plg
????.......?????90014??2018-10-22?21:08??計算器\1602計算器\計算機.uvgui.lenovo
?????文件??????72773??2018-06-18?17:46??計算器\1602計算器\計算機.uvgui.xyt
?????文件??????72166??2018-03-16?18:08??計算器\1602計算器\計算機.uvgui_xyt.bak
????.......??????6085??2018-10-22?21:08??計算器\1602計算器\計算機.uvopt
????.......?????14420??2018-10-22?21:08??計算器\1602計算器\計算機.uvproj
????.......??????5726??2018-03-09?16:28??計算器\1602計算器\計算機_uvopt.bak
????.......?????14007??2018-03-09?16:28??計算器\1602計算器\計算機_uvproj.bak
?????文件???????3573??2017-12-12?09:09??計算器\1602計算器\鍵盤掃描及賦值.h
?????文件?????149655??2019-03-30?12:29??計算器\計算器硬件\原理圖.pdf
?????目錄??????????0??2018-09-02?20:05??計算器\1602計算器\電路圖
?????目錄??????????0??2018-10-22?21:08??計算器\1602計算器
?????目錄??????????0??2019-03-30?12:29??計算器\計算器硬件
............此處省略4個文件信息
- 上一篇:基于stc89c51的密碼鎖
- 下一篇:ftpscan掃描工具
評論
共有 條評論