資源簡介
通過4*4按鍵實現+、-、*、/功能的計算器。LCD1602液晶顯示出來。

代碼片段和文件信息
/*******************************************************************/
/***部分內容抄自:ME300B單片機開發系統演示程序?-?矩陣鍵盤鍵值顯示***/??
/*******************************************************************/
#include?
#include?
sbit?BEEP?=?P3^7;??????????//蜂鳴器
unsigned?char??dis_buf;????//顯示緩存
unsigned?char?addr;????????//lcd?顯示地址
unsigned?char?m;
unsigned?char?data?n;?
unsigned?char?data?k;
void?beep();???????????????//蜂鳴器
void?delay0(unsigned?char?x);??????//x*0.14MS
void?cleansec();
void??keydown(void);
void?addi(void);????//加法
void?subt(void);????//減法
void?mult(void);????//乘法
void?divi(void);????//除法
sbit?LCD_RS?=?P2^0;?????????????
sbit?LCD_RW?=?P2^1;
sbit?LCD_EN?=?P2^2;
unsigned?char?code??cdis1[?]?=?{“?A?&?B??=?RESULT“};
unsigned?char?code??cdis2[?]?=?{“????????????????“};
unsigned?char?data??front[]?=?{000};
unsigned?char?data??back[?]?=?{000};
unsigned?char?code?result[?]?=?{“000000“};
/*************************************************************/
/*???????????????????????????????????????????????????????????*/
/*?延時子程序????????????????????????????????????????????????*/
/*???????????????????????????????????????????????????????????*/
/*************************************************************/
void??delay(unsigned?char?x)
{?unsigned?char?j;
????while(x--)
????{?for(j=0;j<125;j++);
????}
}
/*************************************************************/
/*???????????????????????????????????????????????????????????*/
/*檢查LCD忙狀態??????????????????????????????????????????????*/
/*lcd_busy為1時,忙,等待。lcd-busy為0時閑,可寫指令與數據??*/
/*???????????????????????????????????????????????????????????*/
/*************************************************************/?
bit?lcd_busy()
?{??????????????????????????
????bit?result;
????LCD_RS?=?0;
????LCD_RW?=?1;
????LCD_EN?=?1;
????_nop_();
????result?=?(bit)(P0&0x80);
????LCD_EN?=?0;
????return(result);?
?}
/*******************************************************************/
/*?????????????????????????????????????????????????????????????????*/
/*寫指令數據到LCD??????????????????????????????????????????????????*/
/*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。?????????????????????????????*/
/*?????????????????????????????????????????????????????????????????*/
/*******************************************************************/
void?lcd_wcmd(unsigned?char?cmd)
{??????????????????????????
???while(lcd_busy());
????LCD_RS?=?0;
????LCD_RW?=?0;
????LCD_EN?=?0;
????_nop_();
????_nop_();?
????P0?=?cmd;
????_nop_();
????LCD_EN?=?1;
????_nop_();
????LCD_EN?=?0;??
}
/*******************************************************************/
/*?????????????????????????????????????????????????????????????????*/
/*寫顯示數據到LCD??????????????????????????????????????????????????*/
/*RS=H,RW=L,E=高脈沖,D0-D7=數據。???????????????????????????????*/
/*?????????????????????????????????????????????????????????????????*/
/*****************************************************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????26550??2006-08-11?16:25??計算器\count
?????文件??????15770??2009-06-18?19:36??計算器\count.c
?????文件??????13115??2006-08-11?16:25??計算器\count.hex
?????文件??????26700??2006-08-11?16:25??計算器\count.LST
?????文件??????30048??2006-08-11?16:25??計算器\count.M51
?????文件??????30922??2006-08-11?16:25??計算器\count.OBJ
?????文件???????1080??2006-08-11?21:43??計算器\count.Opt
?????文件????????154??2006-08-11?21:43??計算器\count.plg
?????文件???????2055??2006-08-11?16:25??計算器\count.Uv2
?????文件???????1092??2006-08-11?16:25??計算器\count_Opt.Bak
?????文件??????????0??2006-08-11?16:13??計算器\count_Uv2.Bak
?????文件???????5115??2002-04-16?15:32??計算器\STARTUP.A51
?????文件??????11754??2006-08-11?16:25??計算器\STARTUP.lst
?????文件????????834??2006-08-11?16:25??計算器\STARTUP.obj
?????目錄??????????0??2009-05-11?00:04??計算器
-----------?---------??----------?-----??----
???????????????165189????????????????????15
評論
共有 條評論