课程设计-单片机计算器
51单片机计算器课程设计
51单片机计算器课程设计一、课程目标知识目标:1. 让学生掌握51单片机的基本原理及其在计算器中的应用。
2. 使学生理解并掌握计算器程序设计的步骤和要点,包括键盘输入、显示输出、数据处理等。
3. 帮助学生了解并掌握基本的数字逻辑运算,如加、减、乘、除等。
技能目标:1. 培养学生运用51单片机进行计算器硬件设计和程序编写的能力。
2. 培养学生运用Keil等开发工具进行51单片机程序开发的能力。
3. 培养学生通过查阅资料、团队协作解决实际问题的能力。
情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其主动学习的态度。
2. 培养学生的创新意识和动手能力,使其具备解决问题的信心。
3. 培养学生良好的团队协作精神和沟通能力,提高其综合素质。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际问题解决能力。
学生特点:学生具备一定的电子技术基础和编程能力,对51单片机有一定了解。
教学要求:结合学生特点,注重理论与实践相结合,以项目为导向,引导学生主动探索、实践和解决问题。
通过课程学习,使学生达到预定的知识目标和技能目标,并培养其情感态度价值观。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 51单片机原理回顾:涉及51单片机的内部结构、工作原理、寄存器等基础知识。
相关教材章节:第一章《51单片机概述》2. 计算器功能设计:介绍计算器的基本功能,如数字输入、运算符选择、结果显示等。
相关教材章节:第二章《51单片机I/O口应用》3. 硬件电路设计:讲解计算器硬件电路的搭建,包括键盘电路、显示电路等。
相关教材章节:第三章《51单片机硬件设计基础》4. 程序设计:分析计算器程序设计的流程,包括程序框架、各功能模块的实现等。
相关教材章节:第四章《51单片机C语言编程》5. 软件开发工具使用:介绍Keil开发环境的使用方法,编译、下载程序到51单片机。
(完整)单片机课程设计——计算器设计
目录一、设计总绪 (1)1。
1设计思想 (1)1.2设计说明 (1)1。
3关键词:矩阵键盘,单片机,数码管显示,汇编语言 (1)1.4设计目的 (1)1。
5设计要求 (2)二、设计方案 (2)2。
1硬件电路设计方案 (2)2.1.1基本结构 (2)2.1。
2系统框架图 (3)2.1。
3工作流程图 (3)2。
1.4单片机主控制模块 (4)2。
2系统功能描述 (6)三、各模块功能介绍 (7)3.1键盘输入模块 (7)3。
1。
1键盘分布图 (7)3。
1.2工作原理 (7)3。
2运算控制模块 (8)3.3显示模块 (8)3.4振荡电路模块 (9)四、仿真电路 (11)仿真运行结果 (11)五、调试过程总结 (13)附录: (14)参考文献: (14)源程序代码 (14)一、设计总绪1。
1设计思想近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新.在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。
计算机在人们的日常生活中是比较常见的电子产品之一.可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89c51单片机、LCD显示器、控制按键为元件来设计的计算器。
利用此设计熟悉单片机微控制器及汇编语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。
掌握应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法此设计是基于单片机技术的简易计算器的方案,本次设计所提出的一种基于单片机技术的简易计算器的方案,采用具有数据处理能力的中央处理器CPU,随机存储器ROM,多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统-—单片机,配以汇编语言编写的执行程序,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它能将大量的逻辑功能集成与一个集成电路中,使用起来十分方便。
单片机计算器课程设计报告程序讲解
单片机课程设计报告一、内容摘要用单片机做一个四则运算的计算器,首先查资料,了解各个电路的功能,事先须熟悉Keil和Proteus两个软件,及它们的联调,程序和仿真完成,就焊接电路板,焊接完,最后就系统联调,直到得出结果。
二、功能要求利用89c51作为主控器组成一个四则运算的计算器。
三、电路原理图电路图说明:(1)键盘的列扫描接单片机P2口的低4位,行扫描接单片机P1口的低4位;(2)数码管的段选通过单片机的P0口接74LS244来驱动,数码管的位选接单片机的P2口;(3)晶振电路为单片机提供时钟频率;(4)复位电路为单片机提供复位信号。
四、计算器功能说明(1)通过数码管来显示键盘的按键,显示被加数(减数……),加数(……),运算结果;(2)本计算器适合不大于八位整数的加、减、乘、除,要求结果也不大于八位整数,否则出错显示,显示(HELLO);(3)在还没按一个数之前就按下=,+,--,*或/,则显示错误;按下+,--,*或/后,立马按下=,显示错误;(4)若接连好了好几运算符键,实际参与运算的是最后一次按的运算键;(5)本计算器有连加,连减,连乘,连除功能,例如:2+5=7+5=12--5=7*5=35/5=7;(6)减法可以实现负数,除法可以显示小数。
五、软件仿真软件设计时,我是分一个一个模块设计的,设计顺序如下:(1)数码管显示函数void displayljy(void)//"显示"子函数{uchar array3[32]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x38,0x3e,0x6e,0xbe};uchar *p=array,count=0xfe,i,time,time1;F0=1;while(F0){i=*p;P2=count;P0=array3[i];for(time1=0x0c;time1>0x00;time1--)for(time=0xff;time>0x00;time--);p++;count=_crol_(count,1);if(count==0xfe)F0=0;}}(2)判断是否有键按下子函数void iskeyyou(void)//"判断是否有键按下"子函数{P2=0x00;P1|=0x0f;a=P1;a|=0xf0;}(3)键扫子函数void inkeylove(void)//"判断按下的是什么键"子函数{uchar b=0xfe,c=0x00,d;uchar array4[16]={0x07,0x08,0x04,0x05,0x01,0x02,0x0f,0x00,0x09,0x0a,0x06,0x0b,0x03,0x0c,0x0e,0x0d};F1=0;iskeyyou();if(a!=0xff){displayljy();displayljy(); iskeyyou();if(a!=0xff){F0=1;while(F0){P2=b;P1|=0x0f;if(P10==0){a=0x00;F1=1;}else if(P11==0){a=0x02;F1=1;}else if(P12==0){a=0x04;F1=1;}else if(P13==0){a=0x06;F1=1;}else{a=c;a%=4;if(a==0x01){a=0x07;c+=a;}elsec++;b=_crol_(b,1);if(b&0x10==0){F0=0;a=0xff;}}while(F1){a+=c;a=array4[a];d=a;while(a!=0xff){displayljy();iskeyyou();}a=d;F1=0;F0=0;}}}}}(4)两个变形的子函数void bian1(void)//"将uchar型变量转化为ulong型变量"子函数{uchar i;for(i=7;i>0;i--){if(array[i]==0x10)array[i]=0x00;if(array1[i]==0x10)array1[i]=0x00;}num1=(ulong)array1[7]*10000000;num1+=(ulong)array1[6]*1000000;num1+=(ulong)array1[5]*100000;num1+=(ulong)array1[4]*10000;num1+=(ulong)array1[3]*1000;num1+=(ulong)array1[2]*100;num1+=(ulong)array1[1]*10;num1+=(ulong)array1[0];num2=(ulong)array[7]*10000000;num2+=(ulong)array[6]*1000000;num2+=(ulong)array[5]*100000;num2+=(ulong)array[4]*10000;num2+=(ulong)array[3]*1000;num2+=(ulong)array[2]*100;num2+=(ulong)array[1]*10;num2+=(ulong)array[0];}void bian2(void)//声明"将ulong型变量转化为uchar型变量"子函数{uchar i=7,F0=1;if(num1>99999999)error();else{array[7]=(uchar)(num1/10000000);array[6]=(uchar)(num1%10000000/1000000);array[5]=(uchar)(num1%1000000/100000);array[4]=(uchar)(num1%100000/10000);array[3]=(uchar)(num1%10000/1000);array[2]=(uchar)(num1%1000/100);array[1]=(uchar)(num1%100/10);array[0]=(uchar)(num1%10);while(i>0&&F0){if(array[i]==0x00){array[i]=0x10;i--;}elseF0=0;}}}(5)主函数void main(){uchar r7=0x00,i;while(1){displayljy();inkeylove();if(a!=0xff)//如果有键输入,继续往下执行,否则从新开始{if(a==0x0f) //如果输入的是"清除"键,将显示器清屏,同时清存放运算符号的单元{r7=0x00;for(i=0;i<8;i++){array[i]=0x10;array1[i]=0x10;}}else if(a==0x0e)//如果输入的是"=",继续往下执行,否则从新开始{if(array1[0]==0x10)//如果未按下第二个数之前就按下“=”,则出错显示error();else if(r7==0x0d)//如果r7中存放的是"+",则执行加运算{bian1();jia();bian2();r7=0x00;for(i=0;i<8;i++)array1[i]=0x10;}else if(r7==0x0c)//如果r7中存放的是"-",则执行减运算{bian1();jian();r7=0x00;for(i=0;i<8;i++)array1[i]=0x10;}else if(r7==0x0b)//如果r7中存放的是"*",则执行乘运算{bian1();cheng();bian2();r7=0x00;for(i=0;i<8;i++)array1[i]=0x10;}else if(r7==0x0a)//如果r7中存放的是"÷",则执行除运算{bian1();chu();r7=0x00;for(i=0;i<8;i++)array1[i]=0x10;}elseerror();//如果r7没有存进运算符,则转出错处理}else{if(r7!=0x00)//如果已按过运算键,往下执行,否则转else{if(a>0x09&&a<0x0e)//如果还按下运算键,则后按的取代前面按的r7=a;else if(array1[0]==0x10)//判断是不是输入加数(减数...)的第一个数{for(i=0;i<8;i++)//是的话,将被加数(被减数...)存入array1中array1[i]=array[i];for(i=0;i<8;i++)array[i]=0x10;for(i=7;i>0;i--)//array中存入加数(减数...)array[i]=array[i-1];array[0]=a;}else //不是输入加数(减数...)的第一个数{if(array[7]!=0x10)//如果加数(减数...)已是八位整数,则转出错处理error();else{for(i=7;i>0;i--)//否则将加数左移array[i]=array[i-1];array[0]=a;}}}else//之前还没有运算键按下{if(a>0x09)//有运算键按下{if(array[0]==0x10)//但是在运算键按下之前没有输入被加数,则转出错error();elser7=a;//否则将运算键输入r7中保存}else if(array[7]!=0x10)//如果被加数已是八位整数,则转出错error();else //否则将被加数左移{for(i=7;i>0;i--)array[i]=array[i-1];array[0]=a;}}}}}}(6)加、减、乘、除、出错显示子函数void jia(void)//"加运算"子函数{num1+=num2;}void jian(void)//"减运算"子函数{uchar i;if(num1>num2){num1-=num2;bian2();}else if(num1==num2){for(i=1;i<8;i++)array[i]=0x10;array[0]=0x00;}else{num1=num2-num1;bian2();if(array[7]!=0x10)error();elsearray[7]=0x11;}}void cheng(void)////声明"乘运算"子函数{num1*=num2;}void chu(void)//"除运算"子函数{uchar i,j=0x00,k;double num3;num3=(double)(num1)/(double)(num2);num1=(ulong)(num3);num3-=num1;if(num3==0||num1>9999999)bian2();else{bian2();while(array[7]==0x10){j++;for(i=7;i>0;i--)array[i]=array[i-1];array[0]=0x10;}array[j]+=0x12;k=j-1;while(k>0){num3*=10;num2=(ulong)(num3);num3-=num2;array[k]=(uchar)(num2);k--;}num3*=10;num2=(ulong)(num3);array[0]=(uchar)(num2);while(array[0]==0x00){for(i=0;i<7;i++)array[i]=array[i+1];array[7]=0x10;}}}void error(void)//"出错显示"子函数(出错显示"HELLO") {array[7]=0x10;array[6]=0x10;array[5]=0x10;array[4]=0x1d;array[3]=0x0e;array[2]=0x1c;array[1]=0x1c;array[0]=0x12;}(7)全局变量定义,函数声明等#include <reg52.h>#include <intrins.h>//循环左右移要用该头文件(-cror-(),-crol-())#define uchar unsigned char#define ulong unsigned longuchar array[8]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};uchar array1[8]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};uchar a;ulong num1=0,num2=0;sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit F1=PSW^1;//定义一个标志位,F0在头文件里已定义void displayljy(void);//声明"显示"子函数void inkeylove(void);//声明"判断按下的是什么键"子函数void iskeyyou(void);//声明"判断是否有键按下"子函数void bian1(void);//声明"将uchar型变量转化为ulong型变量"子函数void bian2(void);//声明"将ulong型变量转化为uchar型变量"子函数void jia(void);//声明"加运算"子函数void jian(void);//声明"减运算"子函数void cheng(void);//声明"乘运算"子函数void chu(void);//声明"除运算"子函数void error(void);//声明"出错显示"子函数六、系统联调在焊接完板子后,我首先并没有把整个计算器的程序下进去,只是下了个显示的小程序,结果数码管的第四位没显示,首先我想段选肯定不会有错的,检查了程序对应的那个数和程序中位选的设置都没错,我想应该是接线中的位选错了,结果我用万用表检查电路发现也没错,这下我就纠结了,搞不清状况了,可是无意之中我按了板子,发下那个数码管显示了正确的数,但是只是一瞬间的事,我想肯定是我有个地方没焊稳,我就一个地方一个地方的按,最终定位在了单片机,单片机的底座我用的是单排母不是专门配的底座,因为用排母取下放上都比那个专门配的底座容易,我就重新认真的把底座补焊了下,结果就行了,接下来我就把计算器的程序下进去了,成功了,太开心了。
单片机计算器课程设计
摘要本设计是基于51系列的单片机进行的数字计算器系统设计,能够完成计算器的键盘输入,进行加、减、乘、除6位带符号数字的简单四那么运算,并在LED上相应的显示结果。
设计进程在硬件与软件方面进行同步设计。
硬件方面从功能考虑,第一选择MCS51单片机,输入采纳4×6矩阵键盘。
显示采纳6位8段共阴极LED静态显示。
软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
编程语言方面从程序整体设计和高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四那么运算算法专门是乘法和除法运算的实现,最终选用WAVE6000集成调试软件,采纳C语言编程。
关键词:MCS51单片机计算器LED静态显示矩阵键盘目录第一章引言 (1)第二章大体原理 (2)2.1 键盘扫描原理简述 (2)2.2 LED显示器原理 (3)2.3 LED 6位数字显示器和4ⅹ6 键盘电路 (4)第三章硬件设计 (6)第四章软件程序设计 (7)4.1 主程序流程图 (7)4.2 原始程序 (8)4.3 改良后的程序 (13)第五章总结 (19)第六章参考文献 (20)第一章引言简易计算器的原理与设计是单片机课程设计课题中的一个。
在完成理论学习和必要的实验后,咱们把握了单片机的大体原理和编程和各类大体功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
单片机课程设计既要让学生巩固讲义学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的明白得,数字计算器原理与硬软件的课程设计主若是通过学生独立设计方案并自己动手用运算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的熟悉,充分发挥学生的个人创新能力,并提高学生对单片机的爱好,同时学习查阅资料、参考资料的方式。
第二章大体原理2.1 键盘扫描原理简述扫描方式:采纳列扫描法识别按键。
单片机课程设计计算器
单片机课程设计 计算器一、课程目标知识目标:1. 学生能理解单片机的基本原理和功能,掌握计算器的设计流程。
2. 学生能运用所学知识,设计并实现一个具有基本运算功能的单片机计算器。
3. 学生了解并掌握单片机编程的基本语法和逻辑结构。
技能目标:1. 学生掌握使用单片机开发工具进行程序编写、调试和下载的方法。
2. 学生具备分析问题、设计算法和解决问题的能力,能运用单片机技术解决实际计算问题。
3. 学生能够通过小组合作,进行项目设计和实践,提高团队协作能力。
情感态度价值观目标:1. 学生培养对单片机技术及电子工程的兴趣,激发创新意识和探索精神。
2. 学生通过动手实践,体验成功解决问题的喜悦,增强自信心和自主学习能力。
3. 学生在学习过程中,树立正确的价值观,认识到科技发展对社会进步的重要性。
课程性质:本课程为实践性较强的课程,要求学生在理论学习的基础上,动手实践,完成单片机计算器的设计与制作。
学生特点:学生处于高年级阶段,已具备一定的电子技术基础和编程能力,具备独立思考和解决问题的能力。
教学要求:结合学生特点,注重理论与实践相结合,引导学生通过小组合作,完成课程任务,达到课程目标。
同时,关注学生的个性差异,提供个性化的辅导和支持。
在教学过程中,注重培养学生的创新能力、实践能力和团队协作能力,为后续学习打下坚实基础。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. 理论知识学习:- 单片机原理与结构:讲解单片机的组成、工作原理及性能特点,对应教材第1章。
- 编程语言基础:介绍单片机编程的基本语法、逻辑结构和编程规范,对应教材第2章。
2. 实践技能培养:- 硬件设计与连接:学习如何选用合适的元器件,设计计算器硬件电路,对应教材第3章。
- 软件编程与调试:掌握单片机程序编写、调试和下载的方法,对应教材第4章。
3. 项目实践:- 计算器设计与实现:结合所学知识,分组进行计算器项目设计,包括硬件选型、电路设计、程序编写和调试等,对应教材第5章。
单片机计算器课程毕业设计
单片机课程设计一、课程设计的目的通过本课程设计使学生进一步巩固单片机原理与技术的基本概念、基本理论,分析问题的基本方法;增强学生的软件编程实现能力和解决实际问题的能力,使学生能有效地将理论和实际紧密结合,拓展学生在工程实践方面的专业知识和相关技能。
二、总体设计根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计。
具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。
(2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。
(3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上出现错误显示“”。
系统模块图:三、硬件设计(一)、总体硬件设计本设计选用AT89C51单片机为主控单元。
显示部分:采用LCD 静态显示。
总体设计效果如下图:(二)、键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
单片机计算器课程设计报告
单片机课程设计课题名称:单片机简易计算器课程设计姓名:XXXX 学号:XXXXXX 年级专业班级:XXXXXXX学院:XXXX设计时间:XXXXXXX设计地点:XXXXXX指导老师:**目录一、单片机课程设计实习目的 (2)1、增进对单片机的感性认识,加深对单片机理论方面的理解; (2)2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O口等; (2)3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。
(2)二、实习课题任务 (2)1、课题:简易计算器的设计 (2)2、设计基本要求: (2)利用单片机试验箱的键盘模块以及显示模块实现百位以内加减乘除。
(2)任选一种显示方式:即中文液晶显示屏、LED数码管可任选一种。
(2)3、功能实现: (2)4、设计任务 (2)5、设计思路 (2)三、系统分析 (4)四、硬件系统设计 (5)1、键盘接口电路 (5)2、数码管显示电路 (6)五、软件系统设计 (6)六、调试结果 (7)1)10以内计算器 (7)2)100以内计算器 (7)七、结论 (8)八、体会与收获 (8)九、附件(程序): (9)1、程序一:只能进行两位数与两位数格式的四则运算 (9)2、程序二:能进行百位以内的四则运算,但一位与两位数运算结果调试不对 (18)一、单片机课程设计实习目的1、增进对单片机的感性认识,加深对单片机理论方面的理解;2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O 口等;3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。
二、实习课题任务1、课题:简易计算器的设计2、设计基本要求:利用单片机试验箱的键盘模块以及显示模块实现百位以内加减乘除。
任选一种显示方式:即中文液晶显示屏、LED数码管可任选一种。
3、功能实现:计算器将完成的功能有两位数以内加、减、乘、除功能,并通过LED数码管显示输入值及结果。
4、设计任务1.扩展4*4键盘,其中10个数字,5个功能键,1个清零2.使用五位数码管接口电路3.完成十进制的四则运算(加、减、乘、除);4.实现低于三位小于255数字的连续运算;5.使用keil C软件编写程序;6.最后用ptoteus仿真;7.具有较强的抗干扰能力;8.体积小、功耗低,便于嵌入其他系统。
单片机计算器课程设计
测试结果:计算 器功能正常,运 算结果准确无误
内存优化:增加内存容量, 提高数据存储和处理能力
处理器选择:选择更高性能 的处理器,提高计算速度
接口优化:优化接口设计, 提高数据传输速度和稳定性
电源优化:优化电源管理, 提高电源效率和稳定性
优化算法:提高计 算速度,降低功耗
优化界面:简化操 作流程,提高用户 体验
入或关机等
驱动程序功能:控制显示器显示内容 驱动程序结构:包括初始化、显示、刷新等模块 驱动程序实现:使用C语言编写,调用硬件接口 驱动程序优化:提高显示速度,降低功耗
输入驱动程序:用于接收和处理用户输入的程序 输入设备:键盘、鼠标等 输入处理:将用户输入转换为计算机可以理解的格式 输入验证:检查用户输入是否符合预期格式和范围 输入反馈:向用户显示输入结果或错误信息 输入驱动程序设计原则:简单、易用、高效、安全
优化算法:提高计算速度, 减少计算误差
改进硬件:提高硬件性能, 减少硬件故障
优化界面:提高用户友好度, 减少用户操作错误
单片机计算器设计过程 遇到的问题和解决方案 设计成果和性能评估 未来改进方向和展望
单片机计算器将更加便携化, 体积更小,重量更轻
单片机计算器将更加智能化, 实现语音识别、图像识别等功 能
1990年代,ARM公司推出ARM架构,成为现代 智能手机、平板电脑等设备的核心处理器
2000年代,RISC-V架构出现,成为开源硬件运 动的重要组成部分
2010年代,物联网技术的兴起,单片机在智能 家居、工业自动化等领域得到广泛应用
工业控制:用于自动化生产线、机器人等 智能家居:用于智能家电、智能门锁等 医疗设备:用于医疗仪器、医疗机器人等 汽车电子:用于汽车电子系统、自动驾驶等 消费电子:用于手机、平板电脑等 航空航天:用于航天器、无人机等
单片机课程设计-计算器
未来发展方向
智能化:引入人工 智能技术,实现语 音识别、图像识别 等功能
便携化:设计更小、 更轻、更薄的计算 器,方便携带和使 用
网络化:实现计算 器与互联网的连接 ,实现远程控制和 数据传输
环保化:采用环保 材料和节能设计, 降低能耗和污染
感谢您的观看
汇报人:
计算器模式:支持科学计算器模式和普 通计算器模式
错误提示:当
体积小:单片机计算器体积小,便于携带和使用 功耗低:单片机计算器功耗低,可以长时间使用 功能强大:单片机计算器功能强大,可以进行各种复杂的计算 可编程:单片机计算器可编程,可以根据需要进行功能扩展和修改
显示模块
液晶显示屏:用 于显示计算结果 和操作提示
驱动电路:控制 液晶显示屏的显 示效果
接口电路:连接 液晶显示屏与单 片机
背光控制:调节 液晶显示屏的亮 度和对比度
输入模块
键盘输入:通过键盘输入数字 和运算符号
液晶显示:显示输入结果和操 作提示
电源模块:提供稳定的电源供 应
复位模块:用于系统复位和初 始化
弦等
算法设计:采 用模块化设计, 每个功能模块 对应一个算法
算法实现:使 用C语言编写算 法,实现计算
器功能
测试与调试:编 写测试程序,对 算法进行测试和 调试,确保算法 正确性和稳定性
中断服务程序
功能:处理突发事件,如按键、定时器等 结构:包括中断请求、中断响应、中断处理、中断返回等步骤 特点:速度快、实时性强、效率高 应用:广泛应用于各种单片机系统中,如计算器、遥控器等
存储模块
存储容量:根据计算器功能 需求选择合适的存储容量
存储芯片:用于存储计算器 程序和数据
存储方式:采用静态存储或 动态存储方式
单片机计算器课程设计
安庆师范学院单片机课程设计说明书课题名称:简易计算器院系:物理与电气工程学院专业:电子信息科学与技术班级: 12 级 2 班成员姓名:张鹏 xxxxxxx王会祥 xxxxxxxx指导教师王陈宁2014年6月2日目录一、课程设计题目及要求 .................................................... - 2 -1.课程设计题目 .............................................................................. - 2 -2.课程设计要求 .............................................................................. - 2 -二、课题分析 ........................................................................ - 2 -1.成员分工 ................................................................................... - 2 -2.课题的理解及思路 ................................................................... - 3 -3.开发工具说明 ........................................................................... - 3 -三、硬件电路的设计 ............................................................ - 3 -1.AT89C52特性介绍................................................................... - 3 -2.LED数码管的显示原理........................................................... - 4 -3.矩阵键盘的工作原理 ............................................................... - 4 -4.课程设计的电路图 ................................................................... - 5 -四、软件程序的设计 ............................................................ - 6 -1.程序流程图 ............................................................................... - 6 -2.实验程序 ................................................................................... - 8 -五、课程设计总结 .............................................................. - 15 -六、参考文献 ...................................................................... - 15 -一、课程设计题目及要求1.课程设计题目简易计算器设计2.课程设计要求(1)设计实现1位整数加、减运算;(2)键盘采用4*4的矩阵键盘,键盘安排如下;1 2 3 45 6 7 89 0 + -* / 归零=(3)输入数据及运算结果采用两位数码管进行显示;二、课题分析1.成员分工整体方案构思:王会祥、张鹏、孙伟焊接电路:孙伟、张鹏编写程序:王会祥、张鹏调试烧写:孙伟、张鹏文档写作:张鹏、王会祥、孙伟2.课题的理解及思路单片机实现简易计算器的功能,实际是先从矩阵键盘得到信号,进行相对应的判断、选择,从而进行相应的运算,最后把运行结果送到数码管显示。
单片机课程设计——计算器
单片机综合课程设计——计算器一、实验目的1、学习使用单片机内部的I/O功能。
2、熟悉I/O与键盘矩阵和数码管的连接。
3、熟练掌握单片机I/O的编程。
二、实验分工三、功能实现1、采用键盘按键输入,数码管显示的模式。
2、实现计算器两位数以内的基本“+,-,*,/”运算功能。
3、扩展实现了计算器的乘方、阶乘、开平方根功能。
4、实现了计算器的退格功能,可以在运算过程中更改操作数,不影响运算继续进行。
5、数码管操作数显示两位以内,结果显示在四位数以内。
6、键盘各功能键分布如下:1 2 3 + or x a4 5 6 - or n!7 8 9 * orbackspace reset = /由于时间紧张,未来得及实现功能键的复用,只能将扩展功能与基本功能分开,用两个程序实现。
7、具体操作:开始运行程序后,数码管无显示,等待键盘输入。
通过定时中断,定时扫描按键。
有按键按下时,判断为1~9数字键,则显示在数码管上。
按下运算功能键屏幕清零,等待下一个操作数输入。
按下“=”号后,得出计算结果,结果显示于数码管上。
在操作数输入过程中,按下backspace,则数码管显示去掉最后一位数字,继续输入,不影响运算的进行。
按下“reset”,则回到初始状态,数码管显示和运算结果被清除,等待输入新的表达式。
四、实验原理1、通过MSP430 端口控制TM1638 芯片实现读取键盘状态(输入)和控制LED 数码管显示(输出)的功能。
2、键盘:键盘中A-F 分别对应KS1-KS6。
一旦有按键按下,TM1638 中相关的寄存器的值就会改变。
*注意:键盘用坐标形式表示,空白位表示本开发板暂未用到TM1638 最多可以读4个字节,不允许多读。
读数据字节只能按顺序从BYTE1-BYTE4 读取,不可跨字节读。
组合键只能是同一个KS,不同的K 引脚才能做组合键;同一个K 与不同的KS 引脚不可以做成组合键使用。
3、数码管:上图给出一个共阴数码管的连接示意图,如果让该数码管显示“0”,那你需要在GRID1 为低电平的时候让SEG1,SEG2,SEG3,SEG4,SEG5,SEG6 为高电平,SEG7 为低电平,即在00H 地址单元里面写数据3FH 就可以让数码管显示“0”。
基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告引言:计算器是现代社会中常见的电子设备之一,它能够帮助人们进行各种数学运算,提高计算效率。
本文将介绍基于51单片机的简易计算器的设计过程及实现方法。
一、设计目标本次设计的目标是实现一个简易计算器,能够进行基本的加减乘除运算,并能够显示计算结果。
通过该设计,旨在加深学生对51单片机的理解,培养其实际操作能力。
二、硬件设计1. 电源模块:采用稳压电源模块,提供稳定的电压给单片机及其他电路模块。
2. 单片机模块:采用51单片机,作为计算器的核心控制模块,负责接收按键输入、进行运算和显示结果。
3. 按键模块:设计合适的按键电路,用于输入数字和操作符。
4. 显示模块:采用数码管或液晶显示屏,显示计算结果。
5. 连接线:将各个模块连接起来,确保信号的传输畅通。
三、软件设计1. 初始化:设置单片机的工作模式、端口方向和初始状态。
2. 按键扫描:通过轮询的方式检测按键是否被按下,若有按键按下则进行相应的处理。
3. 输入处理:根据按键的顺序和操作符的位置进行输入的处理,将输入的数字和操作符分别存储在相应的变量中。
4. 运算处理:根据输入的操作符进行相应的运算,得出计算结果。
5. 结果显示:将计算结果通过数码管或液晶显示屏进行显示。
6. 清零处理:在计算结果显示完毕后,对相关的变量进行清零处理,以便进行下一次的计算。
四、功能实现1. 加法运算:通过按下"+"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。
2. 减法运算:通过按下"-"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。
3. 乘法运算:通过按下"*"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。
单片机课程设计__简易计算器范文
4×4键盘的简易计算器和LED数码管的显示1、设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统。
2、该系统具有加减乘除等功能。
3、用Proteus 7仿真工作的全过程。
4、有相应的实物图5、掌握4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。
2、设计思想2.1 硬件设计思想用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.7各管脚作输入线,以单片机的P2.0-P2.7和P0.0—P0.7各管脚作输出线,在数码管上显示每个按键“0-9”的序号。
键盘中对应按键的序号排列如图(1)所示。
数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。
即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。
该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。
2.2 软件设计思想整个程序可以实现十进制内的加减乘除,其中包含了延时子程序(去抖动),加法、减法、除法、乘法等子程序。
(1)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。
(2)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。
(3)判别键号先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号的计算。
(4)显示结果显示器接高电频,左边显示器接P0,右边显示接P2,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。
单片机计算器课程设计
《单片机应用》课程设计报告题目:简易计算器的设计院(系):信息科学与技术专业班级:通信工程090220 12 年 6 月 11 日至20 12 年 6 月 15 日一、设计(调查报告/论文)题目简易计算器的设计二、设计(调查报告/论文)主要内容通过对计算器的安装调试,需学习掌握完成:(1)单片机系统的整体设计流程。
(2)单片机系统的硬件、软件调试方法及相关工具的使用。
(3)理解电路原理图与工作过程。
(4)各种常见元器件的选择及使用。
三、原始资料(1)计算器电路原理图及元器件清单(2)制作套装四、要求的设计(调查/论文)成果用80C51/52单片机小系统编程制作的简易计算器,要求:(1)要有4位LED显示器。
(2)要有0—9个数字输入按键,和功能按键分别是“+”,“-”,“*”,“/”,“=”“CLR”,“RET”。
即“加法”,“减法”,“乘法”,“除法”,“等于”,“清除”,“修改”(3)显示过程:实验板通电开机后,第一位LED显示器显示“0”,按下相应数字,在按运算键“+ 、- 、*、/ ”后,再按第一组数字,继续按下“=”即可显示整数运算结果。
按“清除键”,清除当前LED显示器上的全部数字,按“修改键”,清除当前LED显示器上右边的一个数字。
(4)能够正确安装和焊接硬件电路板。
拿到元器件后,用万用表对电子元器件进行参数测量、检查。
焊接时,要焊点饱满、光洁,无虚焊、漏焊、错焊。
(5)熟悉单片机系统的工作原理及调测方法。
软硬件安装调测完成后根据系统的工作原理、过程、测试数据及遇到的问题与处理情况、体会等完成课程设计报告,格式符合学校规范标准,字数不少于2000字。
五、进程安排第一天:讲解课题,选择课题,分发元器件,焊接、调试硬件;第二天到第四天:编写、调试程序;第五天:系统验收、评分,交课设报告。
六、主要参考资料[1] 陈青.单片机应用课程设计指导书.武汉:华中科技大学武昌分校.[2] 姜志海.单片机原理及应用.北京:电子工业出版社,2007.[3] 康华光.电子技术基础模拟部分,北京:高等教育出版社,2003.指导教师(签名):20 年月日课程设计报告撰写内容、格式与成绩评定一、课程设计报告的撰写内容与要求1.课程设计总结报告应包括:前言、基本原理或理论、设计计算书或实验报告、结论、图纸(框图、流程图)、参考资料等;或调查、访谈报告、调查问卷、调查提纲等。
51单片机计算器课程设计
51单片机计算器课程设计1. 前言51单片机凭借其简单易用、功能强大、可靠性高等诸多特点,成为了广大电子爱好者及相关从业人员的首选芯片类型。
在本次课程设计中,我们将利用51单片机的优势,设计一个简单的计算器。
通过该计算器的实现,旨在提高学生对51单片机的掌握程度,并且让他们能够更加深入地理解单片机的中断、定时器、按键等重要功能模块的理解。
2. 计算器设计需求分析在现实生活中,计算器的实现方案有很多,例如典型的哈工大计算器,其实现原理基于双栈式逆波兰表达式求值等。
而在51单片机的实现方案中,为了简化设计难度,我们采用了两次按键计算器。
即用户需要通过按数字键,来输入计算器要计算的操作数,在输入完所有的操作数后,再按下其他的计算符键,计算器通过读取已经输入的操作数,并根据按下的计算符键,来执行计算器指定的计算操作。
3. 设计思路在上面的需求分析中,我们设计了一个基于两次按键进行计算的计算器。
如果直接采用传统数字键和计算符键按下即时执行的计算器交互方式,由于涉及到用户输入顺序的问题,将会使程序开发难度大大增加。
因此,我们可以利用中断机制,在用户按下数字键和计算符键时,分别将其存储到数组中。
等到用户完成所有操作数的输入后,再由程序根据存储在数组中的操作数,按照计算符键的指令,进行计算操作。
4. 硬件设计计算器硬件设计采用与按键通用的IO口输入输出方式。
在本例中,我们设置计算器的数字键和计算符键均为IO口输入。
鉴于本次设计旨在简化流程,我们将设计与单片机外接数码管连接的部分留给读者自行研究。
在本次课程设计中,我们将不涉及数字键和计算符键信号的去抖动处理。
5. 软件设计通过对计算器设计的需求分析、设计思路以及硬件设计的分析后,我们来设计计算器的软件部分。
5.1 端口初始化根据本次课程设计的需求,我们采用两个IO口输入来实现计算器的数字键和计算符键,因此需要对IO口进行初始化。
```void PortInit(){P1=0xff;/数字键P1.0—P1.7设定为输出P1=0xff;/计算符键P2.0—P2.7设定为输出}```5.2 按键检测监测按键是否按下需要使用到中断机制,在本次课程设计中采用P1口的0~7位和P3口的0~3位硬件中断。
课程设计-单片机计算器
广东工业大学课程设计任务书题目名称单片机计算器(上机)/ 单片机应用系统设计(理论设计)学生学院自动化专业班级网络工程姓名XXX学号一、课程设计的内容1.巩固和加深对《单片机原理》课程内容的认识和理解,提高应用水平。
2、完成对单片机应用系统的理论设计。
3.掌握MCS-51汇编语言程序的编制方法。
4.熟悉键盘控制和七段数码管的使用。
具体设计包括系统设计和上机编程两个部分。
二、课程设计的要求与数据一.(一)上机编程上机编程要求和内容已附页给出。
二.(二)系统设计内容要求:系统中具备输入设备(如键盘,键数不限)、输出设备(如LED数码显示管)。
具体内容可自己设计、网上搜索应用例、参考书中例。
非自己设计的应用系统应理解消化,可修改(如增加或减少某些功能部件)。
在系统设计中说明其出处以及自己做的修改部分。
三、课程设计应完成的工作三.(一)上机编程完成符合规定要求的程序并上机调试成功。
(二)系统设计内容1.设计一个单片机应用系统的硬件电路。
2. 选择所需元件,并对每个元件的管脚做简单说明。
3.用35×50cm方格纸作图,画出详细的系统连接图。
撰写课程设计报告四、课程设计进程安排五、应收集的资料及主要参考文献[1] 李广弟、朱月秀、王秀山.单片机基础.(M).北京航空航天大学出版社.2001[2] 何立民,单片机高级教程.(M).北京航空航天大学出版社, 2000[3] 许兴存、曾琪琳微型计算机接口技术(M).北京电子工业出版社,2003[4] 朱宇光,单片机应用新技术教程(M).北京电子工业出版社,2000发出任务书日期:2010年 9 月 10 日指导教师签名:计划完成日期: 2010 年 9 月 25 日基层教学单位责任人签章:主管院长签章:摘要随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。
而使用单片机实现该系统,是深化单片机应用的良好途径。
PIC单片机课程设计-计算器
PIC单片机与存储模块的数据传输速度:取决于通信协议的选择和硬件设计
PART FIVE
C语言:广泛应用于PIC单片机的编程,具有强大的功能
汇编语言:适用于对硬件操作要求较高的场合,但编写难度较大
BASIC语言:简单易学,适用于初学者
嵌入式C++:结合了C语言的高效性和C++的面向对象特性,适用于复杂良好,满足设计要求
优化评估标准:制定更合理的评估标准,如响应时间、准确性等
优化测试方法:采用更科学的测试方法,如黑盒测试、白盒测试等
优化软件:优化代码结构,减少冗余代码,提高代码执行效率
优化系统:优化系统配置,提高系统稳定性和可靠性
优化算法:采用更高效的算法,如快速傅里叶变换、快速排序等
PART SIX
测试方法:采用模拟实际使用环境的方法进行测试
测试指标:计算速度、准确性、稳定性、功耗等
测试环境:实验室环境,温度、湿度、光照等条件符合要求
测试工具:示波器、逻辑分析仪、万用表等
测试结果分析:对测试数据进行统计和分析,评估PIC单片机计算器的性能和稳定性
05
测试报告:编写测试报告,详细记录测试过程、结果和分析结论
06
测试方法:使用标准测试程序和测试工具进行测试
03
测试环境:确保测试环境稳定,避免干扰因素影响测试结果
04
测试目的:验证PIC单片机计算器的性能和稳定性
01
测试项目:计算速度、准确性、功耗、抗干扰能力等
02
测试项目:计算速度、准确性、稳定性等
测试方法:使用标准测试程序进行测试
测试结果:计算速度、准确性、稳定性等各项指标均达到预期要求
单片机简易计算器课程设计
单片机简易计算器课程设计一、课程目标知识目标:1. 学生能理解单片机的基本结构及其工作原理,掌握简易计算器的硬件组成。
2. 学生能掌握C语言编程的基本语法,运用其编写简易计算器的程序代码。
3. 学生能了解简易计算器的工作流程,理解其功能模块的设计与实现。
技能目标:1. 学生能够运用所学知识,设计并搭建简易计算器的硬件电路。
2. 学生能够运用C语言编写简易计算器的程序,实现加、减、乘、除等基本运算功能。
3. 学生能够对计算器程序进行调试和优化,解决实际问题。
情感态度价值观目标:1. 学生通过课程学习,培养对单片机及编程的兴趣,激发探究精神。
2. 学生在团队协作中学会沟通、分享,培养合作意识,增强团队精神。
3. 学生能够认识到所学知识在生活中的应用,体会科技改变生活的意义。
课程性质:本课程为实践性较强的课程,要求学生动手操作,结合理论知识进行实际应用。
学生特点:学生已具备一定的电子基础和编程知识,对单片机有一定了解,但实践能力有待提高。
教学要求:注重理论与实践相结合,引导学生主动参与,培养其动手能力和解决问题的能力。
通过课程学习,使学生能够将所学知识运用到实际项目中,提高其综合素质。
二、教学内容1. 硬件知识:- 单片机基本结构:介绍51单片机的内部结构、工作原理及其引脚功能。
- 硬件电路设计:讲解简易计算器的硬件组成,包括按键、显示屏、电源等模块。
2. 软件编程:- C语言基础:复习C语言基本语法,包括变量、数据类型、运算符、控制结构等。
- 编程实践:根据简易计算器的功能需求,编写程序代码,实现基本运算功能。
3. 系统设计与实现:- 系统设计:分析简易计算器的功能模块,设计程序流程图。
- 系统实现:指导学生搭建硬件电路,编写程序代码,实现简易计算器的功能。
4. 调试与优化:- 调试方法:教授程序调试方法,培养学生解决问题的能力。
- 优化策略:讨论程序优化策略,提高计算器性能。
教学内容安排与进度:1. 第1周:单片机基本结构及硬件电路设计。
单片机课程设计—简易计算器
物理与电气工程学院课程设计报告设计名称:简易计算器院部:物理与电气工程学院专业班级:12级电信三班学生姓名:***080212092刘慧080212096吴阳慧080212101指导老师:***完成时间:2014年6月8日单片机课程设计是单片机原理课程的实践性环节。
是在我们学习了《单片机原理》等课程的基础上进行的综合性训练,我们组这次训练的课题是基于单片机简易计算器,能够进行多位简单的加减运算,同时它能支持2位整数运算。
它主要由STC89C52单片机、数码管,键盘等模块组成。
本计算器是将键盘输入信息经处理通过缓存,送入数码管显示,键盘采用行列式,数码管采用动态扫描方式,计算功能通过软件实现,用汇编语言对单片机可编程芯片进行编程,实现对计算器的设计。
关键词:单片机;计算器;汇编语言;键盘;数码管一.课程设计的目的和要求 (3)1.1课程设计的目的 (4)1.2课程设计要求 (4)二、方案的论证和比较: (4)2.1 按键电路设计 (4)2.2 4*4键盘扫描电路(扫描式,反转式) (4)三.课程设计简述及整体方框图 (5)3.1 方案 (5)3.2、硬件电路设计 (5)3.2.1主控电路设计 (5)3.2.2键盘电路设计 (6)3.2.3数码管显示电路 (6)3.3软件设计简述 (7)3.3.1键盘扫描子程序设计 (7)3.3.2数码管显示电路 (9)3.3.3运算子程序设计 (9)3.4程序主框图 (10)四.仿真软件图 (11)五.系统功能测试与整体指标 (12)5.1 软件调试步骤 (12)5.2 程序调试步骤 (12)5.3 测试结果 (13)六、总结与思考及致谢 (13)附录主程序: (13)一.课程设计的目的和要求1.1课程设计的目的单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
本次设计是设计一个简易计算器,能够进行多位简单的加减运算,同时它能支持2位整数运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计-单片机计算器广东工业大学课程设计任务书题目名称单片机计算器(上机)/ 单片机应用系统设计(理论设计)学生学院自动化专业班级网络工程姓名XXX学号一、课程设计的内容1.巩固和加深对《单片机原理》课程内容的认识和理解,提高应用水平。
2、完成对单片机应用系统的理论设计。
3.掌握MCS-51汇编语言程序的编制方法。
4.熟悉键盘控制和七段数码管的使用。
具体设计包括系统设计和上机编程两个部分。
二、课程设计的要求与数据一.(一)上机编程上机编程要求和内容已附页给出。
二.(二)系统设计内容要求:系统中具备输入设备(如键盘,键数不限)、输出设备(如LED数码显示管)。
具体内容可自己设计、网上搜索应用例、参考书中例。
非自己设计的应用系统应理解消化,可修改(如增加或减少某些功能部件)。
在系统设计中说明其出处以及自己做的修改部分。
三、课程设计应完成的工作三.(一)上机编程完成符合规定要求的程序并上机调试成功。
(二)系统设计内容1.设计一个单片机应用系统的硬件电路。
2. 选择所需元件,并对每个元件的管脚做简单说明。
3.用35×50cm方格纸作图,画出详细的系统连接图。
撰写课程设计报告四、课程设计进程安排五、应收集的资料及主要参考文献[1] 李广弟、朱月秀、王秀山.单片机基础.(M).北京航空航天大学出版社.2001[2] 何立民,单片机高级教程.(M).北京航空航天大学出版社, 2000[3] 许兴存、曾琪琳微型计算机接口技术(M).北京电子工业出版社,2003[4] 朱宇光,单片机应用新技术教程(M).北京电子工业出版社,2000发出任务书日期:2010年 9 月 10 日指导教师签名:计划完成日期: 2010 年 9 月 25 日基层教学单位责任人签章:主管院长签章:摘要随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。
而使用单片机实现该系统,是深化单片机应用的良好途径。
本系统设计由单片机AT89S51为核心控制器和一些外围模块组成,使得其操作简单,显示明了,功能丰富。
使用8段数码管做为显示器,可以显示单价、总金额和路程,可以随时作切换,使系统信息一目了然;本系统除了里程统计和费用计算以外,还具有时钟功能。
本方案充分发挥稳定、冗余的特点,,配合AT24c02掉电存储芯片,保障信息的安全,使整个出租车计价系统更稳定。
目录摘要 (1)目录 (4)单片机计算器设计 (6)一.编程要求和硬件电路6二.流程图8三.程序10单片机应用系统设计——出租车计价器 (24)一.系统功能介绍24二.系统设计说明251.系统基本设计框图 (25)2.芯片的功能及说明 (25)三.连接图4四.软件设计43.主程序的流程图 (4)4.计价流程图 (7)5.单价时间调整流程图 (8)五.设计心得及建议8主要参考文献 (9)单片机计算器设计四.编程要求和硬件电路五.流程图六.程序1.编写程序在四位LED上显示15FC.ORG 0000HLJMP MAINORG 1000HMAIN: MOV 53H,#01HMOV52H,#05HMOV51H,#0FHMOV50H,#0CHDIS:MOV A,#03HMOV DPTR,#7F00HMOVX@DPTR,ASTART:MOV R0,#50HMOVR3,#0F7HMOV A,R3AGAIN: MOV DPTR,#7F02HMOVX@DPTR,AMOVA,@R0MOV DPRT,#DDEGMOVC A,@A+DPTRMOV DPTR,#7F01HMOVX@DPTR,AACALLDL1MSINC R0MOV A,R3JNB ACC.0, STARTRR AMOV R3,AAJMP AGAINDDEG:DB 0FCH,60H,0DAH,0F2 H,66H,0B6H,0BEH,0E 0H,0FEH,0F6H,0EEH, 3EH,9CH,7AH,9EH,8 EHDL1MS: MOV R7,#01HDL0:MOV R6,#0FFH DL1:DJNZ R6,DL1 DJNZ R7,DL0RETEND2.将8个键按实验室要求定义键值,按任意键在显示器上显示对应键值,要求显示值能左移。
当k0=0时,第一排键为98AF,第二排键为EB32.;当k0=1时,第一排键为17CD,第二排键为5604.ORG 0000HLJMP MAINORG 1000HMAIN: MOV 53H,#00HMOV 52H,#00HMOV 51H,#00HMOV50H,#50H KEYSUB:MOV A,#03HMOV DPTR,#7F00HMOVX@DPTR,ABEGIN: ACALL DISACALL CLEARACALL CCSCANJNZINK1AJMP BEGININK1: ACALL DISACALL DL1MSACALL DL1MSACALL CLEARACALL CCSCANJNZINK2AJMP BEGININK2: MOV R2,#0F7HMOVR4,#00HCOLUM: MOV DPTR,#7F02HMOV A,R2MOVX@DPTR,AINC DPTRMOVX A,@DPTRJB ACC.5LONEMOVA,#00HAJMP KCODELONE: JB ACC.4,NEXTMOVA,#04HKCODE: ADD A,R4ACALL LP1ACALL PUTBUFPUSH ACCKON: ACALL DISACALL CLEARACALL CCSCANJNZKONPOPACCNEXT: INC R4MOV A,R2JNB ACC.3,KERRRL AMOV R2, AAJMP COLUMKERR: AJMP BEGINCCSCAN: MOV DPTR,#7F02HMOVA,#00HMOVX@DPTR,AINC DPTRMOVX A,@DPTRCPL AANLA,#30HRET CLEAR: MOV DPTR,#7F01HMOVA,#00HMOVX@DPTR,ARETDIS: PUSH ACCPUSH 00HPUSH 03HMOV A,#03HMOV DPTR,#7F00HMOV R0,#50HMOVR3,#0F7HMOV A,R3 AGAIN: MOV DPTR,#7F02HMOVX@DPTR,AMOVDPTR,#7F03HMOV A,@DPTRJNBACC.0,STEP1MOVDPTR ,#ADDRAJMP STEP2 STEP1: MOV A,@RMOV DPRT,#DDEGAJMP STEP3 STEP2: MOVA,@RSTEP3: MOVC A,@A+DPTRMOV DPTR,#7F01HMOVX@DPTR,AACALLDL1MSINC R0MOV A,R3JNB ACC.0,OUTRR AMOV R3,AAJMP AGAINOUT: POP 03HPOP 00HPOP ACCRET DDEG: DB 9EH,3EH,0F2H,0DAH0F6H,0FEH,0EEH,8E HADDR: DB 0B6H,0BEH,0FCH,66 H,60H,0E0H,9CH,7AHDL1MS: MOV R7,#01HDL0: MOV R6,#0FFHDL1 DJNZ R6,DL1DJNZR7,DL0RETPUTBUF: PUSH 00HMOV R7,A MOV A,52H MOV 53H,A MOV A,51H MOV 52H,A MOV A,50H MOV 51H,A MOV A,R7 MOV 50H,A POP 00H RETEND3.a).定义键盘按键,5个数字键E4689 ,3个功能键:乘号x,减号-,等号=;b).可进行三位10进制减法运算;c).可进行两位16进制乘法运算ORG 0000HLJMP MAINORG 0100H DDEG:DB3FH,06H,5BH,4FH,66 H,DB6DH,7DH,07H,7FH,6FH, DB77H,7CH,39H,5EH,79 H,71HORG 1000H MAIN:MOV 52H,#00H MOV 53H,#00H MOV 51H,#00HMOV 50H,#00H MOV 37H,#00H MOV 38H,#04H MOV 39H,#01H MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H MOV R5,#50H KEYSUB: MOV A,#03HMOVDPTR,#7F00H MOVX @DPTR,A BEGIN: ACALL DIS ACALL CLEAR ACALL CCSCAN JNZ INK1AJMP BEGIN INK1:ACALL DIS ACALL DL1MS ACALL DL1MS ACALL CLEAR ACALL CCSCAN JNZ INK2AJMP BEGININK2:MOV R2,#0FEH MOV R4,#00HCOLUM:MOVDPTR,#7F02H MOV A,R2 MOVX @DPTR,A MOVDPTR,#7F03H MOVX A,@DPTRJB ACC.5,LONE MOV A,#00H AJMP KCODE LONE:JB ACC.4,NEXT MOV A,#04H KCODE: ADD A,R4 ////////////////////////// CJNEA,#00H,NOT00 MOV A,#09H AJMP NEXT0 NOT00: CJNE A,#01H,NOT01 MOV A,#11H AJMP NEXT0 NOT01: CJNE A,#02H,NOT02 MOV A,#10H AJMP NEXT0 NOT02: CJNE A,#03H,NOT03MOV A,#12H AJMP NEXT0 NOT03: CJNE A,#04H,NOT04 MOV A,#08H AJMP NEXT0 NOT04: CJNE A,#05H,NOT05 MOV A,#06H AJMP NEXT0 NOT05: CJNE A,#06H,NOT06 MOV A,#04H AJMP NEXT0 NOT06:CJNEA,#07H,NOT07 MOV A,#0EH NEXT0: NOP NOT07:ACALL PUTBUF PUSH ACCKON:ACALL DIS ACALL CLEAR ACALL CCSCAN JNZ KONPOP ACC NEXT:INC R4MOV A,R2JNB ACC.3,KERR RL AMOV R2,A AJMP COLUM KERR:AJMP BEGIN CCSCAN:MOVDPTR,#7F02H MOV A,#00H MOVX @DPTR,A MOVDPTR,#7F03HMOVX A,@DPTR CPL AANL A,#30HRETCLEAR:MOVDPTR,#7F01H MOV A,#00H MOVX @DPTR,A RETDIS:PUSH ACC PUSH 00H PUSH 03HMOV A,#0DH MOVDPTR,#7F00H MOVX @DPTR,A MOV R0,#50H MOV R3,#0F7H MOV A,R3 AGAIN:MOVDPTR,#7F02H MOVX @DPTR,A MOV A,@R0 MOVDPTR,#DDEG MOVCA,@A+DPTRMOVDPTR,#7F01H MOVX @DPTR,A ACALL DL1MS INC R0MOV A,R3JNB ACC.5,OUT RR AMOV R3,A AJMP AGAIN OUT:POP 03HPOP 00HPOP ACCRETDL1MS: MOVR7,#01HDL0: MOVR6,#0FFHDL1: DJNZ R6,DL1 DJNZ R7,DL0RET PUTBUF:PUSH 00HPUSH ACCMOV A,R5MOV R0,APOP ACCPUSH ACCXRL A,#12HJZ NOTNUMBER POP ACCPUSH ACCXRL A,#10HJZ NOTNUMBER POP ACCPUSH ACCXRL A,#11HJZ NOTNUMBER POP ACCACALL CHANGE MOV @R0,APOP 00HRET NOTNUMBER:NOP KONA:ACALL DIS ACALL CCSCAN JNZ KONAPOP ACCPOP 00HCJNEA,#12H,MULSUBNU MACALL CAL MULSUBNUM:CJNE A,#10H,SUBNUM ACALL MULCALL SUBNUM: CJNE A,#11H,DONE ACALL SUBCALL DONE: RET CHANGE:MOV 53H,52H MOV 52H,51H MOV 51H,50H RETCAL:PUSH 00H PUSH ACC MOV A,39H JZ RESET1 MOV 47H,50H MOV 46H,51H MOV 45H,52H MOV 44H,53H ACALL CLEARSCRMOV A,37H JNZ ISSUB//乘法MOV A,42H MOV 0F0H,#10H MUL ABADDC A,43H PUSH ACC MOV A,46H MOV 0F0H,#10H MUL ABADDC A,47H MOV 0F0H,A POP ACCMUL ABPUSH ACCANL A,#0FH MOV 43H,A POP ACC PUSH ACCANL A,#0F0HRR ARR ARR ARR AMOV 42H,A POP ACCPUSH ACCMOV 48H,B MOV R0,#48H MOV A,@R0 ANL A,#0FH MOV 41H,A POP ACCMOV A,BANL A,#0F0HRR ARR ARR ARR AMOV 40H,A AJMP CALDONE RESET1:AJMPRESET//减法ISSUB:MOV R2,#04H MOV R0,#43H MOV R1,#47H NEXT4:MOV A,@R0 SUBB A,@R1ANL A,#0FH CJNEA,#0AH,NEXTC AJMP NEXT3 NEXTC:JNC NEXT3 CLR CAJMP NEXTD NEXT3: SUBB A,#06HSETB C NEXTD: MOV @R0,ADEC R0DEC R1DJNZ R2,NEXT4 AJMP CALDONE CALDONE:MOV 39H,#00HMOV 50H,43H MOV 51H,42H MOV 52H,41H MOV 53H,40H AJMP CALEND RESET: ACALL CLEARSCRMOV 39H,#01H CALEND:POP ACCPOP 00HRET MULCALL:MOV 43H,50HMOV 42H,51H MOV 41H,52HMOV 40H,53H ACALL CLEARSCR MOV 37H,#00H RET SUBCALL:MOV 43H,50HMOV 42H,51H MOV 41H,52H MOV 40H,53H ACALL CLEARSCR MOV 37H,#01H RET CLEARSCR:MOV 50H,#00HMOV 51H,#00H MOV 52H,#00H MOV 53H,#00H RETEND单片机应用系统设计——出租车计价器一.系统功能介绍1.可以实现在不同条件下,收费标准不同:白天/晚上/途中等待超过10min收费。