資源簡介
矩陣鍵盤有數字鍵、加、減、乘、除、等于、清屏鍵。通過輸入數字和運算符號進行簡單計算,按下等于鍵將計 算的值輸出到數碼管顯示(最大顯示8位),計算結果超過8位則輸出符號“-”。清屏鍵用于結束此次運算并清除數碼管顯示。(計算值-32768~32767)

代碼片段和文件信息
/**************************************************
項目名稱:矩陣鍵盤簡易計算器
作????者:Horse
日????期:2020/4/7
項目功能:矩陣鍵盤有數字鍵、加、減、乘、除、等于、清屏鍵。
??????通過輸入數字和運算符號進行簡單計算,按下等于鍵將計
??算的值輸出到數碼管顯示(最大顯示8位),計算結果
??超過8位則輸出符號“-”。清屏鍵用于結束此次運算并
??清除數碼管顯示。(計算值-32768~32767)
**************************************************/
#include?“reg52.h“
typedef?unsigned?char?u8;
typedef?unsigned?int?u16;//對數據類型進行聲明定義
#define?GPIO_DIG?P0
#define?GPIO_KEY?P1
sbit?Dula=P2^6;
sbit?Wela=P2^7;//定義鎖存使能端口
u8?KeyValueKey_num;//定義KeyValue變量和Key_num存放按鍵值
u8?Flag_num_keypress=0;//定義數字按鍵
u8?Flag_cal=0;//定義運算標志位
u8?code?Table_wei[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};//數碼管的位選
u8?code?Table_duan[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f
0x770x7c0x390x5e0x790x710x000x40};//?顯示段碼值0~F和符號‘?‘、‘-‘
u8?Table_display[8]={1616161616161616};//顯示數組
/**************************************************
函數名稱:Delay(u16?i)
函數作用:延時
函數輸入:u16類型的參數i
函數輸出:無
作????者:Horse
**************************************************/
void?Delay(u16?i)
{
while(i--);
}
/**************************************************
函數名稱:char*?itoa(int?numchar*?strint?radix)
函數作用:把整型數轉換成字符串
函數輸入:num:要轉換的整數 str:轉換后的字符串 radix:轉換進制(281016進制)
函數輸出:轉換后的字符串
作????者:Horse
**************************************************/
char*?itoa(int?numchar*?strint?radix)
{
char?temp; //臨時變量,交換兩個值時用到
char?index[]=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ“; //索引表
unsigned?unum; //存放要轉換的整數的絕對值轉換的整數可能是負數
int?i=0jk; //i用來指示設置字符串相應位,轉換之后i其實就是字符串的長度;
//轉換后順序是逆序的,有正負的情況,k用來指示調整順序的開始
//位置;j用來指示調整順序時的交換。
?
//獲取要轉換的整數的絕對值
if(radix==10&&num<0)//要轉換成十進制數并且是負數
{
unum=(unsigned)-num;//將num的絕對值賦給unum
str[i++]=‘-‘;//在字符串最前面設置為‘-‘號,并且索引加1
}
else
unum=(unsigned)num;//若是num為正,直接賦值給unum
?
//轉換部分,注意轉換后是逆序的
do
{
str[i++]=index[unum%(unsigned)radix];//取unum的最后一位,并設置為str對應位,指示索引加1
unum/=radix;//unum去掉最后一位
?
}while(unum);//直至unum為0退出循環
?
str[i]=‘\0‘;//在字符串最后添加‘\0‘字符,c語言字符串以‘\0‘結束。
?
//將順序調整過來
if(str[0]==‘-‘)
k=1;//如果是負數,符號不用調整,從符號后面開始調整
else
k=0;//不是負數,全部都要調整
for(j=k;j<=(i-1)/2;j++)//頭尾一一對稱交換,i其實就是字符串的長度,索引最大值比長度少1
{
temp=str[j];//頭部賦值給臨時變量
str[j]=str[i-1+k-j];//尾部賦值給頭部
str[i-1+k-j]=temp;//將臨時變量的值(其實就是之前的頭部值)賦給尾部
}
return?str;//返回轉換后的字符串
}
/**************************************************
函數名稱:Key_scan()
函數作用:按鍵掃描
函數輸入:無
函數輸出:無
作????者:Horse
**************************************************/
void?Key_scan()
{
u8?a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
Delay(1000);//延時大約10ms進行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case(0x07): KeyValue=0;break;
case(0x0b): KeyValue=1;break;
case(0x0d):?KeyValue=2;break;
case(0x0e): KeyValue=3;break;
}
//測試行
GPIO_KEY=0xf0;
switch(GPIO_KEY)
{
case(0xe0): KeyValue=KeyValue;break;
case(0xd0): KeyValue=KeyValue+4;break;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????23711??2020-04-07?21:12??矩陣鍵盤簡易計算器\Backup?Of?矩陣鍵盤簡易計算器.pdsbak
?????文件???????1851??2020-03-04?19:37??矩陣鍵盤簡易計算器\Backup?Of矩陣鍵盤簡易計算器.pdsbak
?????文件??????23698??2020-04-08?16:03??矩陣鍵盤簡易計算器\Last?Loaded?矩陣鍵盤簡易計算器.pdsbak
?????文件??????23703??2020-04-08?16:10??矩陣鍵盤簡易計算器\矩陣鍵盤簡易計算器.pdsprj
?????文件???????2199??2020-04-08?16:10??矩陣鍵盤簡易計算器\矩陣鍵盤簡易計算器.pdsprj.LAPTOP-RLDCULQ1.hp.workspace
?????文件???????9627??2020-04-08?16:07??矩陣鍵盤簡易計算器\程序\main.c
?????文件??????22785??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\main.LST
?????文件??????16101??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\main.OBJ
?????文件??????13147??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\template
?????文件???????1006??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\template.build_log.htm
?????文件???????6602??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\template.hex
?????文件?????????29??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\template.lnp
?????文件??????17688??2020-04-08?16:08??矩陣鍵盤簡易計算器\程序\template.M51
?????文件????????474??2018-03-19?17:20??矩陣鍵盤簡易計算器\程序\template.plg
????.......????138645??2020-04-08?16:10??矩陣鍵盤簡易計算器\程序\template.uvgui.hp
?????文件???????5320??2020-04-04?14:09??矩陣鍵盤簡易計算器\程序\template.uvopt
?????文件??????13847??2020-03-04?19:16??矩陣鍵盤簡易計算器\程序\template.uvproj
?????文件??????????0??2018-03-19?17:18??矩陣鍵盤簡易計算器\程序\template_uvproj.bak
?????文件???????3934??2020-04-07?21:35??矩陣鍵盤簡易計算器\簡易計算器.png
?????目錄??????????0??2020-04-08?16:10??矩陣鍵盤簡易計算器\程序
?????目錄??????????0??2020-04-08?16:10??矩陣鍵盤簡易計算器
-----------?---------??----------?-----??----
???????????????324367????????????????????21
評論
共有 條評論