-
大小: 711KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-07
- 語言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
設(shè)計(jì)16鍵盤簡(jiǎn)易計(jì)算器,實(shí)現(xiàn)以下功能。
1、4*4鍵盤輸入,用按鍵輸入數(shù)和運(yùn)算符號(hào)。
1 2 3 +
4 5 6 -
7 8 9 *
C 0 = ∕
2、數(shù)碼管顯示運(yùn)算過程和結(jié)果(十進(jìn)制數(shù)),負(fù)號(hào)用一個(gè)LED燈顯示。
3、具有清零和復(fù)位功能。
4、具有連續(xù)運(yùn)算功能。
5、具有簡(jiǎn)易報(bào)錯(cuò)和提示功能。

代碼片段和文件信息
/******************************************************
*
*項(xiàng)目名稱:簡(jiǎn)易計(jì)算器
*
*函????數(shù):cal.c
*
*作????用:按鍵處理,主函數(shù)
*
*有待改進(jìn):本程序還可以進(jìn)一步的完善,其一就有如按下1+2,
* ???再按下+號(hào)的時(shí)候,就直接計(jì)算出結(jié)果并顯示。
* ???希望有興趣的朋友能夠加以改進(jìn)。
*
*制?作?人:沐雨青林
*
*******************************************************/
#include?“l(fā)ed_8.h“
#define uchar unsigned char
#define usint unsigned? short?int
#define uint unsigned? int
extern?void?Led8_disp(int?num);
extern?const?uchar?key_source_code[];
extern?void?init_key(void);
#define key_add ‘+‘
#define key_de ‘-‘
#define key_mul ‘*‘
#define key_mol ‘/‘
#define key_canal ‘C‘
#define key_means ‘=‘
const?uchar?key_code[]?={?1?2?3?key_add //?+
??4?5?6?key_de //?-
??7?8?9?key_mul //?*
??key_canal?0x00?key_means?key_mol};//?/
int firstnum=0;//存放第1個(gè)數(shù)
int secondnum=0;//存放第2個(gè)數(shù)
uchar operation=‘\0‘;//運(yùn)算符號(hào)
uchar mean_sign=0;//等號(hào)標(biāo)志位 1為開,0位關(guān)
uint optimes=0;//運(yùn)算符號(hào)計(jì)數(shù)位
//以運(yùn)算符+、-、*、/為標(biāo)志,當(dāng)這些標(biāo)志出現(xiàn)后,則輸入的數(shù)字存放到
//secondnum中
//變量初始化
void?init_clear(void)
{
firstnum?=?0;
secondnum?=?0;
operation?=?‘\0‘;
optimes?=?0;
LED_CS4?=?0xff;
Led8_disp(0);
return;
}
//計(jì)算多位數(shù),num為新輸入的一位數(shù)
//算好的多位數(shù)存放在snumsnum為原來存放有數(shù)的變量
int?duoweishu(int?snum?int?num)
{
snum?=?num?+?snum*10;
return?snum;
}
//直入式鍵盤處理
void?op_disdir(usint?key_d)
{
uint?i;
for(i=0;?i<4;?i++)
{
if(key_d?==?key_source_code[i])
{
if(i?==?3)//?‘+’?按鍵處理
{
LED_CS4?=?0x7f;
optimes++;
operation?=?key_code[i];//operation?為‘+’
}
else
{
//在沒有按下運(yùn)算符的時(shí)候,把按鍵對(duì)應(yīng)的鍵值存到firstnum
if(operation?==?‘\0‘)
{
firstnum?=?duoweishu(firstnumkey_code[i]);
Led8_disp(firstnum);
}
else//按下運(yùn)算符的時(shí)候,把按鍵對(duì)應(yīng)的鍵值存到secondnum
{
if(mean_sign?==?1)//等號(hào)標(biāo)志位
{
secondnum?=?0;
mean_sign?=?0;//清等號(hào)標(biāo)志位
}
if(operation?==?‘-‘?&&?optimes?==?1)//負(fù)數(shù)輸入
{
firstnum?=?duoweishu(firstnum-key_code[i]);
Led8_disp(firstnum);
}
else
{
secondnum?=?duoweishu(secondnum?key_code[i]);
Led8_disp(secondnum);
}
}
}
}
}
}
//矩陣鍵盤處理
void?op_dismatrix(usint?key_d)
{
uint?i;
for(i=4;?i<16;?i++)
{
if(key_d?==?key_source_code[i])
{
if(i?==?7) //?‘-’?鍵處理
{
LED_CS4?=?0xbf;
if(operation?==?‘\0‘?&&?firstnum?==?0)
optimes?=?1;
else
optimes?+=?2;
operation?=?key_code[i];
}
else?if(i?==?11) //?‘*’?鍵處理
{
LED_CS4?=?0xdf;
optimes++;
operation?=?key_code[i];
}
else?if(i?==?12) //?‘C’?鍵處理
{
init_clear();//變量初始化
break;
}
else?if(i?==?14) //?‘=’?鍵處理
{
mean_sign=1;//等號(hào)標(biāo)志位
if(operation?==?‘+‘)
firstnum?=?firstnum?+?secondnum;
else?if(operation?==?‘-‘)
firstnum?=?firstnum?-?secondnum;
else?if(operation?==?‘*‘)
firstnum?=?firstnum?*?secondnum;
else?if(operation?==?‘/‘)
{
if(secondnum?==?0)//被除數(shù)為0,結(jié)果為無窮大
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3203??2010-06-17?20:04??程序\boot.s
?????文件???????4383??2010-06-23?19:39??程序\cal.c
?????文件?????199862??2010-06-23?20:50??程序\cal_key\cal_key.mcp
?????文件???????3450??2010-06-23?20:50??程序\cal_key\cal_key_Data\CWSettingsWindows.stg
?????文件??????55100??2010-06-23?20:50??程序\cal_key\cal_key_Data\Debug\TargetDataWindows.tdt
?????文件??????24972??2010-06-23?19:42??程序\cal_key\cal_key_Data\DebugRel\cal_key.axf
?????文件???????6032??2010-06-23?19:42??程序\cal_key\cal_key_Data\DebugRel\cal_key.bin
?????文件???????2424??2010-06-23?19:42??程序\cal_key\cal_key_Data\DebugRel\ob
?????文件??????10192??2010-06-23?19:42??程序\cal_key\cal_key_Data\DebugRel\ob
?????文件???????7688??2010-06-23?19:42??程序\cal_key\cal_key_Data\DebugRel\ob
?????文件???????6688??2010-06-23?19:42??程序\cal_key\cal_key_Data\DebugRel\ob
?????文件??????59664??2010-06-23?20:50??程序\cal_key\cal_key_Data\DebugRel\TargetDataWindows.tdt
?????文件??????53714??2010-06-23?20:50??程序\cal_key\cal_key_Data\Release\TargetDataWindows.tdt
?????文件???????3932??2010-06-23?19:41??程序\key.c
?????文件???????1559??2010-06-23?19:39??程序\led_8.c
?????文件????????600??2010-06-23?19:42??程序\led_8.h
?????文件??????71333??2010-06-23?10:53??1.1.JPG
?????文件??????63152??2010-06-23?12:30??2.1.JPG
?????文件?????105625??2010-06-23?12:35??2.2.JPG
?????文件?????653824??2010-06-24?18:35??實(shí)訓(xùn)報(bào)告.doc
?????目錄??????????0??2010-06-23?19:26??程序\cal_key\cal_key_Data\DebugRel\ob
?????目錄??????????0??2010-06-23?20:50??程序\cal_key\cal_key_Data\Debug
?????目錄??????????0??2010-06-23?20:50??程序\cal_key\cal_key_Data\DebugRel
?????目錄??????????0??2010-06-23?20:50??程序\cal_key\cal_key_Data\Release
?????目錄??????????0??2010-06-23?19:26??程序\cal_key\cal_key_Data
?????目錄??????????0??2010-06-23?20:50??程序\cal_key
?????目錄??????????0??2010-06-23?20:50??程序
-----------?---------??----------?-----??----
??????????????1337397????????????????????27
............此處省略0個(gè)文件信息
評(píng)論
共有 條評(píng)論