单片机C语言简易计算器.doc
上传人:白凡****12 上传时间:2024-09-12 格式:DOC 页数:14 大小:77KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

单片机C语言简易计算器.doc

单片机C语言简易计算器.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机C语言简易计算器单片机C语言简易计算器单片机C语言简易计算器课程设计报告课程名称单片机原理及应用设计题目简易计算器设计专业班级姓名学号1。项目概述中国古代最早采用的一种计算工具叫算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可以随身携带。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除,乘方,开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。2。项目要求基于AT89C51单片机的简易计算器,设计要求如下:计算器至少能正常显示8位数。开机时,显示“0”计算器能对整数进行简单的加减乘除四则运算,在做除法时能自动舍去小数部分运算结果超过可显示的位数时能进行出错提示。3.小组人员组成及分工项目组成员完成课程设计的内容主函数设计利用中断持续间时显示按键扫描录入函数计算器加减乘除四则运算4.系统设计八位七段数码管1.框图设计显示AT89C51按键录入模块(0-9+-*/=c)录入5.硬件设计(1)电路原理图:(2)元件清单:元件名称型号数量用途单片机AT89C511控制核心电阻10kΩ4按键电路数码管8位共阳极1显示电路按键16按键电路6.软件设计(1)算法流程图:开始主函数结束调用运算程序录入数值判断符号录入数值中断结束定时器赋初值送显示数据关中断中断开始显示函数按键函数运算查值赋值给变量列扫描行扫描(2)程序清单:#include〈reg51.H〉/***按键程序***/charkeyscan();/***显示程序***/voiddisplay();chardsp[9]={0,0,12,12,12,12,12,12,12};//初始化显示数组/***计算程序***/voidcalculate(chark,charc1[8],charc2[8]);/***片选***/unsignedcharcodeSelect[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};/***码选***/unsignedcharcodeLED_CODES[]={0xC0,0xF9,0xA4,0xB0,0x99,//0-40x92,0x82,0xF8,0x80,0x90,//5-90x86,0xAF,0xFF,0x7F,0xBF,};//E,r,空格,.,—/***main函数***/voidmain(void){chari,j,k,c;chara[8],b[8];/***定时1ms***/TMOD=0;//TL0=-(1000/256);//TH0=—(1000%256);EA=1;//总中断开关ET0=1;//开中断TR0=1;//启用计数器0LR:do{for(i=1;i〈9;i++)//数字录入循环{dsp[0]=keyscan();if(c==2&&dsp[0]<10)//此段代码验证是否有旧的计算结果在显示,且不再参与新计算{dsp[1]=dsp[0];for(j=2;j<9;j++)dsp[j]=12;c=0;}elseif(c==2&&dsp[0]>9)//旧的计算结果将参与新的计算,作为第一个数{c=0;}if(dsp[0]==0&&dsp[1]==0&&dsp[2]==12)//个位为0且十位为空时按下0,按键无效,跳回LR等待正确输入{/***goto跳转标志***/gotoLR;}elseif(dsp[0]〉9)break;//有操作符按下,跳出数字录入循环else{for(j=i;j>0;j-—)dsp[j]=dsp[j—1];//移位,以正确显示数字}}if(i==9)//判断是否输入8个有效数字,是则等待操作符,否则直接判断操作符{do//使用dowhile无论是否第一个数都取一次操作符{dsp[0]=keyscan();//获取操作符号if(dsp[0]==14||ds