- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于51单片机计算器课程设计实验报告
项目一:简单计算器
1.实验题目:用51单片机实现简单的计算器功能
2.实验截图:
1).实验运行前截图:
2).实验运行后截图:
3.实验代码:
#includereg52.h
#includeintrins.h
#includemath.h
#includedefined.H
#includeLCD1602.h
unsigned char table1[16]; //1602第一行显示字符
unsigned char table2[16]; //1602第二行显示字符
unsigned char code table_error[] = error;
/* 键扫描函数 */
unsigned char keyscan() //扫描键盘函数
{
unsigned char key_l,key_h,addres,num;
P0=0x0f;
key_l=P0;
P0=0xf0;
key_h=P0;
addres=key_l | key_h;
if(addres!=0xff)
{
Delayms(1);
if(addres!=0xff)
{
P0=0x0f;
key_l=P0;
P0=0xf0;
key_h=P0;
addres=key_l | key_h;
switch(addres)
{
case 0xee:num=1;break;
case 0xde:num=2;break;
case 0xbe:num=3;break;
case 0xed:num=4;break;
case 0xdd:num=5;break;
case 0xbd:num=6;break;
case 0xeb:num=7;break;
case 0xdb:num=8;break;
case 0xbb:num=9;break;
case 0xd7:num=0;break;//按键0
case 0xe7:num=C;break;//按键*
case 0xb7:num==;break;//按键#
case 0x7e:num=/;break;//按键A
case 0x7d:num=*;break;//按键B
case 0x7b:num=-;break;//按键C
case 0x77:num=+;break;//按键D
}
while(addres!=0xff)
{
P0=0x0f;
key_l=P0;
P0=0xf0;
key_h=P0;
addres=key_l | key_h;
}
return num;
}
}
return 0;
}
void clear_lcd(void) //清屏
{
unsigned char j;
for(j=0;j16;j++)
{
table1[j]=\0;
table2[j]=\0;
}
}
void main()
{
unsigned char i=0,j;
unsigned char key;
unsigned char flag_operator = 0; //加减乘除标志位
unsigned char flag_equ = 0; //等于标志位
unsigned char flag_key = 0; //运算位标志
bit flag_MaxValue = 0;
bit flag_minus = 0;//负数
long int value = 0; //最终运算结果
unsigned long int value_H =0; //第一个数据
unsigned long int value_L = 0; //第二个数据
unsigned long int temp[]={1, 10, 100,1000,10000,100000,1000000100000000};
Initialize_LCD();
while(1)
{
key=keyscan();
if(key != 0)
{
if(key == C) //清除键C按下
{
clear_lcd();
i=0;
flag_operator = 0; flag_equ = 0; value = 0; value_H =0; value_L = 0; flag_key = 0; flag_minus=0;
}
文档评论(0)