基于与Proteus仿真的键盘计算器的设计
基于Protues的任意N进制计数器的设计与仿真

山西电子技术2009年第6期应用实践 收稿日期:2009-08-11作者简介:杨庆(19592),男,硕士,副教授,研究方向:电子系统设计与仿真。
文章编号:167424578(2009)0620016203基于Prot ues 的任意N 进制计数器的设计与仿真杨 庆,来国红,孙玲姣(湖北民族学院科技学院,湖北恩施445000)摘 要:用集成计数器芯片设计任意N 进制计数器是数字电路教学中的一个难点,其原因一是集成计数器芯片种类繁多;二是集成计数器芯片的清零、置数端采用同步或异步方式清零或置数,其清零或置数的方式不同采用的清零或置数的函数也不同。
采用仿真方式构成任意进制计数器,可以非常直观的将电路和输出状态、输出波形展现在屏幕上,使学生有一个直观的映像。
可以加深学生的理解,提高教学效率,取得事半功倍的效果。
关键词:Protues ;N 进制;计数器;设计;仿真中图分类号:TN0,TN7 文献标识码:A0 引言集成计数器是厂家的定型产品,其函数关系已被固化在芯片中,其状态分配即编码是不可能更改的,而且多为纯自然态序编码,但这些芯片一般都设置有清零输入端和置数输入端。
利用清零端或置数端,让电路跳过某些状态就可以获得任意N 进制计数器[1]。
集成计数器的清零或置数端都有同步和异步之分。
有的集成计数器采用同步方式———当CP 触发沿到来时才能完成清零或置数任务。
有的则采用异步方式———通过时钟触发器异步输入端实现清零或置数,与CP 信号无关。
1 清零、置数都采用同步方式的集成计数器74L S 16374L S163是四位二进制(十六进制)同步加法计数器。
其引脚图如图1所示。
图1 74163引脚图图1中,1脚是清零端,9脚是置数端。
利用清零端和置数端都可以构成任意N 进制计数器。
例如要构成十二进制计数器,其方法如下:(1)写出状态S N -1的二进制代码。
S N -1=1011.(2)求归零逻辑CL R =LOAD =P N -1=P 11.P N -1=P 11=70-3Q 1=Q n 3Q n1Q n0.(3)在Protues 中画出电路图并仿真。
51单片机的简单计算器设计与仿真设计

基于单片机的简易计算器设计与仿真设计题目:基于单片机的简易计算器设计与仿真一、设计实验条件:地点:自动化系实验室实验设备:PC机(装有Keil;Protues;Word ;Visio )二、设计任务:本系统选用AT89C51单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。
(2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。
(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示围时,计算器会在LCD上提示overflow;当除数为0时,计算器会在LCD上提示error。
设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理与提示模块进行设计,并用Visio画系统方框图,keil与protues仿真分析其设计结果。
三、设计时间与设计时间安排:1、设计时间:6月27日~7月8日2、设计时间安排:熟悉课题、收集资料:3天(6月27日~6月29日)具体设计(含上机实验):6天(6月30日~7月5日)编写课程设计说明书:2天(7月6日~7月7日)答辩:1天(7月8日)四、设计说明书的容:1、前言:(自己写,组员之间不能一样,写完后将红字删除,排版时注意对齐)本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。
基于与Proteus仿真的键盘计算器的设计

基于8086与Proteus仿真的4*4键盘计算器的设计一、设计目的本次课程设计的实验目的是通过该实验掌握较复杂程序的设计。
能够独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减法的应用。
独立编写程序,明白和掌握程序的原理和实现方式。
为以后的设计提供经验。
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计内容设计计算器,要求至少能完成多位数的加减乘除运算。
独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减乘除的应用。
三、设计原理与硬件电路设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。
运算完成后将运算的结果储存并显示到LED显示器上。
各部分硬件功能:可编程并行通信接口芯片8255A 8255A内部结构:1. 并行输入/输出端口A,B,C8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。
端口都是8位,都可以作为输入或输出。
通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。
2.A组和B组控制部件端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。
端口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。
A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。
06 12864LCD显示计算器键盘按键实验

目录1 课程设计概述和要求 (1)1.1 课程设计要求与任务 (2)1.2 课程设计思路 (2)1.3 课程设计需要配置的环境 (3)2 系统设计 (3)2.1 设计框图 (3)2.2 元件解析 (3)2.2.1 LCD12864芯片……………………………………………………………42.2.2 AT89C51芯片 (5)2.2.3 其他部件 (6)2.2.4 电路分析 (7)3 软件设计 (12)3.1 程序流程图 (12)3.2 程序代码 (12)4 系统的仿真与调试 (13)4.1 硬件调试 (13)4.2 软件调试 (14)4.3 软硬件调试 (14)5 总结 (14)附录1:程序代码附录2:12864LCD显示计算器键盘按键实验Proteus仿真图1 课程设计概述和要求1.1 课程设计任务与要求设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。
设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器设计计算器键盘按键,系统主要包括硬件和软件两部分。
重点就是各部分硬件的连接设计以及程序的编写。
本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。
将计算器按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显示于12864LCD液晶显示屏上。
1.2 课程设计目的思路1、先把与题目有关的芯片资料找到,熟悉一下芯片资料2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。
3、分析一下此程序的各部分的功能,各零件的工作原理。
4、对程序进行调试,分析调试结果,观察并得出结论。
1.3 课程设计需要配置的环境1、一台主机,一台显示器2、Keil uVision3/Keil uVision4 应用程序软件3、ISIS 7 Professional 仿真软件4、老师交给的仿真电路图,及案例5、纸张,以及一些参考资料2 系统设计2.1.设计框图框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。
proteus设计计数器课程设计

proteus设计计数器课程设计一、教学目标本课程旨在通过Proteus设计计数器,让学生掌握计数器的基本原理和设计方法,培养学生的动手能力和创新能力。
具体目标如下:1.了解计数器的基本原理和结构;2.掌握Proteus软件的基本操作;3.掌握计数器的设计方法和步骤。
4.能够运用Proteus软件进行计数器的设计和仿真;5.能够分析并解决计数器设计过程中遇到的问题;6.能够独立完成计数器的设计和制作。
情感态度价值观目标:1.培养学生对电子技术的兴趣和热情;2.培养学生团队合作精神和动手实践能力;3.培养学生创新思维和解决问题的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.计数器的基本原理和结构;2.Proteus软件的基本操作;3.计数器的设计方法和步骤;4.计数器设计的仿真和测试;5.计数器的制作和调试。
第1周:计数器的基本原理和结构第2周:Proteus软件的基本操作第3周:计数器的设计方法和步骤(1)第4周:计数器的设计方法和步骤(2)第5周:计数器设计的仿真和测试第6周:计数器的制作和调试三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解计数器的基本原理和结构,Proteus软件的基本操作;2.案例分析法:分析典型的计数器设计案例,引导学生掌握设计方法和步骤;3.实验法:让学生亲自动手进行计数器的设计和制作,提高实践能力;4.讨论法:鼓励学生积极参与课堂讨论,培养团队合作精神和创新思维。
四、教学资源本课程所需的教学资源包括:1.教材:《Proteus设计计数器教程》2.参考书:《电子技术基础》、《数字电路设计》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、Proteus软件、电路实验板、电子元器件等以上教学资源将贯穿整个课程,为学生提供丰富的学习体验。
五、教学评估本课程的教学评估采用多元化评价方式,全面客观地评价学生的学习成果。
评估方式包括:1.平时表现:考察学生的出勤、课堂参与度、提问回答等情况,占总评的20%。
基于proteus的AT89C51单片机实现计算器的加减乘数开方等功能

目录一、任务说明 (2)二、原理图绘制说明 (3)三、流程图绘制以及说明 (5)1显示程序设计 (5)2键盘识别程序设计 (6)3运算程序设计 (8)4风鸣器程序设计 (9)四、PROTEUS仿真说明 (10)五、课程设计体会 (15)附I:计算器电路原理图 (16)附II:源程序代码 (17)参考文献 (34)一、任务说明本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻,它可以实现结果低于65535的加、减、乘、除运算。
采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就会认为数码管是同时点亮的,就可以达到动态显示的效果。
采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
这样循环执行。
基本功能如下:1.计算器可显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;2.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音,并且输入的第九个数不接收,仍然显示原来的八位数;3.可以对计算结果小于65535的两个无符号数进行+、-、*、/运算,并显示计算结果,如果输入的预计算的数超过65535,则运算时报错,显示“ERROR”,如果结果超过65535仍然报错,显示“ERROR”,以提示使用者输入错误,应清零后在从新输入。
新基于51单片机的简易计算器

基于51单片机的简易计算器1、前言:本设计是基于51系列单片机来进展的数字计算器系统设计,可以完成计算器的键盘输入,进展加、减、乘、除根本四则运算,并在LCD上显示相应的结果;设计电路采用STC90C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。
2、设计任务:计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;〔2〕LCD 显示模块;〔3〕算术运算模块;〔4〕错误处理及提示模块。
3、主体设计局部:〔1〕、系统模块图:2〕、系统总流程图:4、硬件局部单片机局部+矩阵键盘+1602显示如下列图为简易计算器的电路原理图。
P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表----所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。
简易计算器电路原理图矩阵键盘有16个按键,满足对简易计算器的计算实现,显示局部采用LCD1602,第一行显示计算的数值符号,第二行显示计算结果。
LCD显示模块:本设计采用LCD液晶显示器来显示输出数据。
通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。
5、软件局部*include<reg52.h>*include<intrins.h>*define uchar unsigned charsbit lcden=P2^7;sbit lcdrs=P2^6;sbit lcdrw=P2^5;sbit lcdbf=P0^7;uchar temp,key,i,j,flag,fh,k;long a,b,c;uchar code table[]={1,2,3,0,4,5,6,0,7,8,9,0,0,0,0,0};uchar code table2[]="123+456-789*000/"; void delay(uchar ms){uchar *,y;for(*=ms;*>0;*--)for(y=110;y>0;y--);}/*-------------对LCD1602的操作-----------*/ bit busy(void)//判断忙碌{bit res;lcdrs=0;lcdrw=1;lcden=1;_nop_();_nop_();res=lcdbf;lcden=0;return res;}void write_inst (uchar cmd)//写命令{while(busy()==1); //忙碌就等待lcdrs=0;.lcdrw=0;lcden=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();lcden=1;_nop_();_nop_();lcden=0;}void write_(uchar )//写地址{write_inst(|0*80);}void write_date(uchar dat) //写数据{while(busy()==1);lcdrs=1;lcdrw=0;lcden=0;P0=dat;_nop_();_nop_();lcden=1;_nop_();_nop_();lcden=0;}void init() //初始化{lcden=1;write_inst(0*38);//显示8位2行delay(5);write_inst(0*0c);//显示开,光标关,不闪烁delay(5);write_inst(0*06);//增量方式不位移delay(5);write_inst(0*80);//检测忙碌信号delay(5);write_inst(0*01);//delay(5);}/*------------键盘扫描-----------*/void keyscan()//键盘扫描{P3=0*fe;if(P3!=0*fe){delay(100);if(P3!=0*fe){temp=P3&0*f0;switch(temp){case 0*e0:key=0;break;case 0*d0:key=1;break;case 0*b0:key=2;break;case 0*70:key=3;break;}}while(P3!=0*fe);if(key==0||key==1||key==2){if(j!=0){write_inst(0*01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=1;write_date(table2[key]);}}}P3=0*fd;if(P3!=0*fd){delay(100);if(P3!=0*fd){temp=P3&0*f0;switch(temp){case 0*e0:key=4;break;case 0*d0:key=5;break;case 0*b0:key=6;break;case 0*70:key=7;break;}}while(P3!=0*fd);if(key==4||key==5||key==6){if(j!=0){write_inst(0*01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=2;write_date(table2[key]);}}}P3=0*fb;if(P3!=0*fb){delay(100);if(P3!=0*fb){temp=P3&0*f0;switch(temp){case 0*e0:key=8;break;case 0*d0:key=9;break;case 0*b0:key=10;break;case 0*70:key=11;break;}}while(P3!=0*fb);if(key==8||key==9||key==10) {if(j!=0){write_inst(0*01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=3;write_date(table2[key]);}}}P3=0*f7;if(P3!=0*f7){delay(100);if(P3!=0*f7){temp=P3&0*f0;switch(temp){case 0*e0:key=12;break;case 0*d0:key=13;break;case 0*b0:key=14;break;case 0*70:key=15;break;}}while(P3!=0*f7);.switch(key){case 12:{write_inst(0*01);a=0;b=0;flag=0;fh=0;j=0;k=0;} break;case 13:{if(flag==0){a=a*10;write_date(0*30);P1=0;}else if(flag==1){b=b*10;write_date(0*30);}.} break;case 14:{j=1;if(fh==1){write_(0*4f);write_inst(0*04);c=a+b;while(c!=0){write_date(0*30+c%10);c=c/10;}write_date(0*3d);a=0;b=0;flag=0;fh=0;k=0;}else if(fh==2){write_(0*4f);write_inst(0*04);if((a-b)>0)c=a-b;elsec=b-a;if(c==0)write_date(0*30+0);while(c!=0){write_date(0*30+c%10);c=c/10;}if((a-b)*(-1)>0)write_date(0*2d);write_date(0*3d);a=0;b=0;flag=0;fh=0;k=0;}else if(fh==3){write_(0*4f);write_inst(0*04);c=a*b;if(c==0)write_date(0*30+0);while(c!=0){write_date(0*30+c%10);c=c/10;}write_date(0*3d);a=0;b=0;flag=0;fh=0;k=0;}else if(fh==4){write_(0*4f);write_inst(0*04);i=0;c=(long)(((float)a/b)*1000); //计算c的数据if(c==0)write_date(0*30+0);while(c!=0){write_date(0*30+c%10);c=c/10;i++;if(i==3)write_date(0*2e); //写数据}if((a/b)<=0)write_date(0*30);write_date(0*3d);a=0;b=0;flag=0;fh=0;k=0;}} break;case 15:{if(k==0).{write_date(table2[key]);flag=1;k=1;fh=4;}} break;}}}void main(){init();i=0;j=0;.a=0;b=0;c=0;k=0;flag=0;fh=0;while(1){keyscan();}}6、总结通过该计算器的设计我深入学习数码管扫描和键盘控制,提高对了51系列单片机的实际应用能力。
基于PROTEUS软件的计算器设计

基于PROTEUS软件的计算器设计摘要近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,在很多先进的系统中,单片机往往是作为一个核心部件来使用。
在日常生活中,计算器的应用更是极为普遍,已经成为我们日常生活中必不可少的计算工具,而它的主要部分就是单片机。
本设计介绍了单片机在计算器领域的应用技术,以常用的MCS-51系列(本次选用8051)单片机为基础,简单介绍了单片机与键盘之间以及与显示器之间的应用技术。
本次设计中的键盘的识别是一个非常重要的部分,我们此次所用的是非编码键盘,只需要预先写入识别程序,这种方法使得我们的硬件设计变的简洁许多。
在设计过程中由于实际情况的要求,我们利用部分器件对单片机进行了数据扩展,以满足计算器系统的工作要求。
设计中利用键盘进行数据的输入,然后通过单片机对其进行处理,最后就可以通过LCD显示器显示出来。
关键词:单片机;键盘;显示器;LCD如需程序/Word版本,请访问: 嵌入式软件院。
The calculator design based on PROTEUSAbstractWith the infiltration in the social field of the computer in recent years, the application of the one-chip computer is moving towards deepening constantly, in very many advanced systems, the one-chip computer often was took a core part used. In the daily life, the calculator application is extremely universal, already became in our daily life the essential computation tool, and further its main part was the one-chip computer.This design introduced the one-chip computer in the calculator domain application technology, take the commonly used MCS-51 series the one-chip computer as a foundation(this time selects 8051), introduced between the one-chip computer and the keyboard as well as with the monitor between application technology simply.In this design keyboard recognition is an extremely important part, this time we use the right and wrong code keyboard, only needs to read in the recognizer in advance, this method causes our hardware design to change succinct many. In the design process as a result of the actual situation request, we used the partial components to carry on the data expansion to the one-chip computer, satisfied the calculator system the work requirement.In the design carries on the data input using the keyboard, then carries on processing through the one-chip computer to it, finally may demonstrate through the LCD monitor. Keywords: the one-chip computer; Keyboard; Display; LCD2目录引言 (6)第1章概述 (7)第2章硬件设计 (8)2.1 MCS-51单片机的硬件结构 (8)2.1.1 MCS-51单片机的逻辑结构 (8)2.1.2 MCS-51的外部引脚 (9)2.1.3 数据存储器的扩展 (11)2.2 门电路 (13)2.2.1 74LS373芯片 (14)2.2.2 74LS00芯片 (15)2.2.3 7407芯片 (16)2.3 键盘 (17)2.3.1 键盘简介 (17)2.3.2 非编码键盘 (18)2.3.3 非编码键盘的控制方式 (19)2.3.4 非编码键盘接口技术 (20)2.3.5 键盘实例分析 (22)2.4 LCD显示器 (23)2.4.1 液晶显示器概述 (23)2.4.2 LCD的分类及特点 (24)2.4.3 LCD显示模块 (25)2.4.4 所选器件讲解 (26)第3章软件部分 (28)3.1 总程序流程图 (28)3.2 键盘扫描程序流程图 (28)3.3 显示程序流程图 (30)第4章PROTEUS介绍 (31)4.1 Proteus 介绍 (31)4.2 Keil 与proteus 连接调试 (32)4.2.1 Proteus 与Keil 联机 (32)4.2.2 界面简介 (33)结论与展望 (36)致谢 (37)参考文献 (38)附录A 电气原理总图 (39)附录B 外文文献及其译文 (40)附录C 参考文献及其摘要 (44)附录D 源程序 (46)插图清单图1-1 硬件结构框图 (7)图2-1 MCS-51单片机的内部结构框图 (8)图2-2 8051引脚图 (10)图2-3 MCS-51内、外部时钟连接方式 (11)图2-4 数据存储器6264引脚图 (12)图2-5 MCS-51扩展RAM的示意图 (12)图2-6 扩展8KB数据存储器电路 (13)图2-7 74LS373芯片引脚图 (14)图2-8 74LS373原理结构 (15)图2-9 74LS00逻辑图 (16)图2-10 7407逻辑图 (17)图2-11 独立连接式非编码键盘 (19)图2-12 4行4列矩阵式键盘连接线 (19)图2-13 编码键盘例图 (22)图2-14 点阵式LCD显示字母“A”的情况 (25)图2-15 LCD显示模块的内部结构 (25)图2-16 LCD显示引脚图 (26)图2-17 LCD连接线路图 (27)图3-1 总程序流程图 (28)图3-2 键盘扫描流程图 (29)图3-3 显示程序流程图 (30)图4-1 Keil 目录下的TOOLS.ini 文件 (33)图4-2 使用ISIS打开的原理图 (33)图4-3 选择Keil工程 (34)图4-4 调试程序 (34)图4-5 运行前的界面 (35)图4-6 运行结果显示 (35)4表格清单表2-1 P3口的第二功能 (10)表2-2 6264芯片控制操作 (13)表2-3 74LS373主要电器特性 (14)表2-4 74LS373真值表 (14)表2-5 74LS00主要电特性 (15)表2-6 74LS00功能表(Y=AB) (16)表2-7 7407主要电特性 (16)表2-8 7407功能表(Y=A) (17)表2-9 1602显示器引脚说明 (26)引言可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
基于Proteus的数字计算器设计与实现

基于Proteus的数字计算器设计与实现作者:李嘉诚来源:《软件导刊》2015年第05期摘要:现代开发工具Proteus为研发数字电子功能部件提供了高效途径。
以数字电子技术开发数字部件的生命周期为依据,对数字计算器的功能予以分析,提出对数字电子部件的设计方案,并论述模块的详细设计和实现过程。
关键词:Proteus;数字电子技术;数字计算器中图分类号:TP319文献标识码:A 文章编号:1672-7800(2015)005-0090-02作者简介:李嘉诚(1994—),男,湖北武汉人,南昌大学软件学院学生,研究方向为软件工程、嵌入式系统。
0 引言数字电子技术是深入研究计算机、手机等数字系统的基础,其经典的概念、理论,是深入掌握数字部件的基石。
数字电子技术中的逻辑概念、不同规模的组合电路和时序电路以及基于不同芯片实现计算器等功能部件,对于数字电子技术的深入理解和有效运用具有极大作用。
将数字电子技术的经典概念和方法,用现代设计开发工具予以实现,极大提高了各类数字逻辑部件和系统的设计与开发效能。
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,能实现从概念到产品的完整设计。
电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,是设计和实现数字电路功能部件的极好工具。
本文以数字计算器为例详述其在PCB平台上的设计与实现。
1 计算器功能简述1.1 计算器逻辑功能计算器的工作模式有3种:加法、减法和乘法。
用两位逻辑变量S1S0来控制,A和B表示参加运算的4位二进制数。
对应关系如表1所示。
1.2 计算器算法计算器的加、减和乘都是用加法器实现的。
计算器加法可以直接用一片4位二进制加法器芯片74LS283实现2个4位二进制数A+B的运算。
计算器减法利用补码运算特点,实现加B的反码,再基于74LS283芯片的输入端Cin=1实现2个4位二进制数A-B的运算。
基于单片机的计算器设计报告(含c程序,proteus图等)

基于51单片机的计算机原理图和程序、设计要求:Proteus电路原理图:程序代码:/********************************************************** *电子器件名:计算器*设计要求1:可以通过键盘输入,并能显示输入相对应的数字.*设计要求2:能够进行加,减,乘,除准确的基本运算.*设计要求3:能够进行3位或3位的以上的乘,除运算.*设计要求4:自由发挥其他功能.*设计要求5:要求有单片机硬件系统框图,电路原理图,软件流程图。
管脚接法:P1接矩阵键盘,P2接数码管段选,P3接数码管位选;***********************************************************/#include<reg51.h>#define longint long int#define DU P2#define WE P3#define TIME 600long int temp,temp1;unsigned int tempH,tempL;int a[8]={0,0,0,0,0,0,0,0};/*数码管编码表*/longint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f,0x00};/*delay延时函数*/void delay(longint delaytime){while(delaytime--);}/*数码管显示函数*/void display(){if(temp<100000000){tempH=temp/10000;tempL=temp%10000;a[0]=tempH/1000%10;a[1]=tempH/100%10;a[2]=tempH%100/10;a[3]=tempH%10;a[4]=tempL/1000%10;a[5]=tempL/100%10;a[6]=tempL%100/10;a[7]=tempL%10;if(a[0]==0){a[0]=10;if(a[1]==0){a[1]=10;if(a[2]==0){a[2]=10;if(a[3]==0){a[3]=10;if(a[4]==0){a[4]=10;if(a[5]==0){a[5]=10;if(a[6]==0){a[6]=10;if(a[7]==0){a[7]=10;if(a[8]==0){a[8]=10;}}}}}}}}}WE=0Xfe;delay(5);DU=table[a[0]];delay(100);WE=0Xfd;delay(5);DU=table[a[1]];delay(100);WE=0Xfb;delay(5);DU=table[a[2]];delay(100);WE=0Xf7;delay(5);DU=table[a[3]];delay(100);WE=0Xef;delay(5);DU=table[a[4]];delay(100);WE=0Xdf;delay(5);DU=table[a[5]];delay(100);WE=0Xbf;delay(5);DU=table[a[6]];delay(100);WE=0X7f;delay(5);DU=table[a[7]];delay(100); }else{WE=0xfe;delay(5);DU=0x79;delay(TIME);WE=0xfd;delay(5);DU=0x50;delay(TIME);WE=0xfb;delay(5);DU=0x50;delay(TIME);WE=0xf7;delay(5);DU=0x5c;delay(TIME);WE=0xef;delay(5);DU=0x50;delay(TIME);}}/*键盘扫描函数*/unsigned char keyscan(){unsigned char key;while(1){display();P1=0xfe;if((P1&0xf0)!=0xf0){delay(5);if((P1&0xf0)!=0xf0){key=P1;delay(5000);while((P1&0xf0)!=0xf0){display();}switch(key){case 0xee: return 7;break;case 0xde:return 8;break;case 0xbe:return 9;break;case 0x7e: return 10;break;}}}P1=0xfd;if((P1&0xf0)!=0xf0){delay(5);if((P1&0xf0)!=0xf0){key=P1;while((P1&0xf0)!=0xf0){display();}switch(key){case 0xed: return 4;break;case 0xdd:return 5;break;case 0xbd:return 6;break;case 0x7d: return 11;break;}}}P1=0xfb;if((P1&0xf0)!=0xf0){delay(5);if((P1&0xf0)!=0xf0){key=P1;while((P1&0xf0)!=0xf0){display();}switch(key){case 0xeb: return 1;break;case 0xdb:return 2;break;case 0xbb:return 3;break;case 0x7b: return 12;break;}}}P1=0xf7;if((P1&0xf0)!=0xf0){delay(5);if((P1&0xf0)!=0xf0){key=P1;while((P1&0xf0)!=0xf0){display();}switch(key){case 0xe7: return 13;break;case 0xd7:return 0;break;case 0xb7:return 14;break;case 0x77: return 15;break;}}}}}/*主函数程序段*/main(){longint a,c;unsigned int b,d,flag=0;while(1){while(1) //输入第一个数字;{b=keyscan();if(b==13){temp=0;a=0;b=0;c=0;d=0;flag=0;b=keyscan();}if(b<10){a=a*10+b;temp=a;}else{break;}}while(1) //输入第二个数字;{d=keyscan();if(d<10){c=c*10+d;temp=c;}else{break;}}if(d==14) //加减乘除运算符和等于运算;{if(flag==0){switch(b){case 10:flag++;temp=a/c;a=0;c=0;temp1=temp;break;case 11:flag++; temp=a*c;a=0;c=0;temp1=temp;break;case 12: flag++;temp=a-c;a=0;c=0;temp1=temp;break;case 15:flag++; temp=a+c;a=0;c=0;temp1=temp;break;}}else if(flag==1){ switch(b){case 10:temp=temp1/c;a=0;c=0;temp1=temp;break;case 11:temp=temp1*c;a=0;c=0;temp1=temp;break;case 12:temp=temp1-c;a=0;c=0;temp1=temp;break;case 15:temp=temp1+c;a=0;c=0;temp1=temp;break;}}}/* e=keyscan();if(e==13){temp=0;a=0;b=0;c=0;d=0;flag=0;}*/} }。
51单片机的简单计算器设计与仿真资料讲解

51单片机的简单计算器设计与仿真基于单片机的简易计算器设计与仿真设计题目:基于单片机的简易计算器设计与仿真一、设计实验条件:地点:自动化系实验室实验设备:PC机(装有Keil;Protues;Word ;Visio )二、设计任务:本系统选用AT89C51单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。
(2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。
(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD 上提示overflow;当除数为0时,计算器会在LCD上提示error。
设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真分析其设计结果。
三、设计时间与设计时间安排:1、设计时间:6月27日~7月8日2、设计时间安排:熟悉课题、收集资料: 3天(6月27日~ 6月29日)具体设计(含上机实验): 6天(6月30日~ 7月5日)编写课程设计说明书: 2天(7月6日~ 7月7日)答辩: 1天(7月8日)四、设计说明书的内容:1、前言:(自己写,组员之间不能相同,写完后将红字删除,排版时注意对齐)本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。
制作并仿真一个4位的计数器。该计数器至少具有两个按键,加1按键以及清零按键

成绩实验名称:简单4位计数器仿真实验
一、实验目的
1、了解动态扫描显示的基本原理。
2、能够运用多位数码管显示指定内容。
3、熟悉动态扫描显示方法。
二、实验仪器
三、实验内容
四、实验原理
实验报告
五、实验步骤
1、根据给定的实验要求,分析实验的目的以及实验要求。
2、通过计算机仿真软件Proteus,根据给定电路图设计电路,并绘制电路。
3、复习练习动态扫描显示驱动程序写法,通过程序控制数码显示每一位都不同的数字,
例如“1234”。
4、根据自己所设计的电路,编写控制程序。
5、调试所编写的控制程序,直至程序没有语法错误,可以通过编译。
6、将所编写的无语法错误的程序下载至仿真软件,并进行调试,根据仿真结果,修改程
序。
六、实验程序
#include <reg51.h>
sbit K1=P3^4;
sbit K2=P3^5;
七、实验分析、心得。
基于51单片机的计算器

二、 实验环境 Keil 软件和 protus 软件 三、 实验内容 计算器中存在很多数据,数据的输入需要很多按键,那么这就 要涉及到按键的检测问题,同时产生的数据要送到单片机中进行处 理,处理完的数据要送到数码管上显示出来。 实验仿真图如下:
图 1 实验仿真图 (由于我的开发板上面 P2^3 脚接Байду номын сангаас蜂鸣器,仿真图中就没有用到
} else return 20; } else return 20; } void main() { uchar k,i,hand,h2; bit xsd=0; char data e; double data temp,h1=0,h3=0,h4=0; displaypro(0); while(1) { k=keyscan(); if(k==20) hand=0; for(i=0;i<8;i++) { wela=1; P0=led[i]; wela=0; P0=0xff; dula=1; P0=xx[i]; dula=0; delay(20); P0=0xff; } switch(k) { case 20:break; case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if(hand==0) { h4=0;
} if(h2==0) { h1=sqrt(h1); displaypro(h1); } else if(h3==0) { h1=sqrt(h1); displaypro(h1); h2=0; } else { h3=sqrt(h3); displaypro(h3); } xsd=0;e=0; } hand++; break; case 16:if(hand==0)//小数点 { xsd=1; } hand++; break; case 17:if(hand==0)// 1/x { if(h4!=0) { h1=h4; h4=0; } if(h2==0) { h1=1/h1; displaypro(h1); } else if(h3==0) { h1=1/h1;
基于Proteus软件的4x4矩阵键盘设计与仿真

基于Proteus软件的4x4矩阵键盘设计与仿真4*4矩阵键盘仿真摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
单片机系统的开发过程中,程序设计语言的选择尤为重要。
C51提供高效的代码,结构化的编程和丰富的操作符,多被采用。
C51是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能,而且可以直接实现对硬件的控制。
本毕业设计以AT89S51芯片为核心,程序设计采用汇编语言,辅以必要的电路,并运用proteus软件设计了4*4矩阵键盘仿真。
目录前言 (1)第一章单片机的概述.................................................................. 2 1.1什么是单片机.......................................................................................2 1.2MCS-51单片机内部结构............................................................ 2 1.3单片机的应用领域 (3)1.4 AT89C51简介.......................................................................................4 第二章软件的介绍及使用............................................................ 7 2.2 Proteus软件的介绍和使用.................................................................. 7 2.1Keil uVision2软件的介绍和使用............................................................ 9 第三章系统总体设计..................................................................14 3.1 系统原理.......................................................................................... 14 3.2电路组成.......................................................................................... 14 3.2.1键盘部分..........................................................................................14 3.2.2LED显示.......................................................................................... 15 3.2.3晶振电路..........................................................................................16 3.3系统功能和原理图................................................................................. 16 3.3.1实现功能....................................................................................... 16 3.3.2硬件电路原理图.............................................................................. 16 3.4系统与硬件的连接................................................................................. 17 第四章系统软件设计........................................................................... 18 4.1程序流程图.......................................................................................... 18 4.2源程序................................................................................................ 18 第五章程序的编译调试与仿真............................................................... 21 5.1程序的编译 (21)5.2调试与仿真 (22)第六章结束语………………………………………………………………………………24 6.1论文总结…………………………………………………………………………………24 6.2工作展望.............................................................................................24 参考文献 (25)致谢 (25)前言随着人们生活水平的提高,19世纪兴起的数字电路以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真_课程设计报告

单片机原理及接口技术课程设计报告设计题目:计算器设计信息与电气工程学院二零一三年七月计算器设计单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。
近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。
注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。
字数不要太多,300-500字。
另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。
文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。
1. 设计任务结合实际情况,基于AT89C51单片机设计一个计算器。
该系统应满足的功能要求为:(1) 实现简单的四位十进制数字的四则运算;(2) 按键输入数字,运算法则;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错。
主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。
注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。
2. 整体方案设计计算器以AT89C51单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。
通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。
简易计算器设计及proteus仿真

设计(论文)内容:分析实物的功能及所需的元器件。
查找有关资料并列出流程图。
设计出电路图并写出程序在Keil 软件中调试程序是否满足其功能并在ISIS 7 Professional画出电路图和仿真其功能。
功能:设计4*4的键盘,其中10个数字键0~9,其余6个为“+” “-” “*”“/” “=”和“C”,最大显示实现6位数,可以基本的运算(加减乘除),数据归零和出错提示摘要计算器在人们的日常中是比较的常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的八位计算器。
该设计系统是以AT89C51为单片机,用74LS245为显示位控制, P1口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,并外接驱动电路,系统采用LED数码管作为显示器,软件程序采用均采用C语言编写,便于移植与升级。
报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。
计算器将完成的功能有整数的加,减,乘,除等功能。
关键字计算器数码管 74LS245目录摘要 2第一章绪论 3第二章方案论证与设计 42.1 设计目标和实现方法 42.2方案论证与设计 4第三章硬件模块介绍 63.1 运算模块 63.2 单片机(AT89C51) 73.2.1 单片机(AT89S51)的引脚功能7 3.3.2 引脚介绍83.3 74ls245芯片1274ls245芯片如图3-7所示123.4 输入模块123.4.1 键盘介绍133.5 显示模块143.5 .1 数码153.5.2 数码管的分类15第四章软件设计174.1 LED显示程序流程图设计174.2 读键输入程序流程图设计174.3 主程序流程图设计18第五章仿真及调试20总结21参考文献23附录1 简易计算器源程序24 附录2 仿真电路设计图35。
基于proteus的单片机lcd计算器的仿真设计大学论文

本科毕业设计基于PROTEUS的单片机LCD计算器的仿真设计Simulation design of LCD calculator based on the single chip microcomputer by PROTEUS学院:电子工程学院专业班级:电子信息工程DZ电子091班学生姓名:学号:指导教师:2013年 6 月毕业设计中文摘要摘要:科技的发展提高了人们物质生活水平,许许多多的电子产品来到了我们的生活。
许多复杂的计算是我们不能解决的,并且很容易发生错误,所以计算器凭借着快速和通用的优点给我们的生活带来了方便。
计算器成为了我们日常生活中最亲密的电子产品。
本次设计的简易计算器由单片机主控模块、液晶显示模块、键盘输入模块这三个主要部分组成。
把AT89C51作为主控模块的核心,利用C语言程序进行编程,对AT89C51的I/O 口进行充分的利用,成功的读取了键盘数据和控制了液晶显示;液晶显示模块是用LCD 液晶来实现的,通过利用丰富的显示空间,可以对多数位进行显示;利用4×4 键盘作为键盘输入模块,能够同时定义和采样计算器的多个数字。
通过利用USB数据线插在电脑上来提供所需要的工作电源。
经过调试,该计算器能够实现想要的功能,能够对计划中的加、减、乘、除进行简单的运算。
关键词:计算器;AT89C51单片机;液晶屏LCD毕业设计外文摘要Abstract: The development of science,which features the various electr0nic products,bring about improvement of people's material life.We plane to make a mistake when we compare the complicated calculations.As a result,the calculator,as a rapid and common calculation means,facilitates our life.In other words,it can be renowned as one of the electronic products that has close relationship with us.The design mainly covers SCM control module, Keyboard input module and LCD module.The SCM control module put the AT89C51 as a key part and take programme of C language.as well as its rich I/O,and achieves the data-gathering of the keyboard and the control over the LCD.The LCD module adopts LCD so as to come to the effect of multidigit display by means of rich display space.The Keyboard input module takes the 4*4 size for the sake of achieving definition sampling with more than one figure in the calculator.A string of USB flash disk ,which is inserted in the computer,provides the supply of the whole system.After testing,the calculator come to the expected function that concludes addition,subduction,multiplication and division.Key words: The calculator ;AT89C51 devices ;LCD screen目录1 绪论 (1)1.1 研究的意义 (1)1.2 国内外研究现状和发展趋势 (1)1.3节可行性分析 (1)2 系统总体方案及硬件设计 (1)2.1 系统设计要求 (1)2.2总体设计方案 (2)3 系统仿真 (3)3.1 Proteus ISIS简介 (3)3.2 Keil简介 (3)3.3 keil与proteus联合仿真 (3)3.4 Proteus运行流程 (4)3.5 出现的问题和解决方法 (4)4 系统硬件设计 (5)4.1 单片机概述 (5)4.2 AT89C51单片机简介 (5)4.2.1主要特性 (6)4.2.2管脚说明 (6)4.3复位电路 (6)4.4时钟电路 (7)4.5显示电路模块 (8)4.5.1 LCD液晶简介 (8)4.5.2 字符型液晶显示模块的基本特点 (8)4.5.3字符型接口特性及时序 (9)4.6 MM74C922 芯片 (11)4.7 键盘模块 (12)4.7.1 单片机键盘简介 (13)4.7.2 键盘接口电路 (14)4.8电源模块 (14)5 系统软件设计 (17)5.1 系统结构设计 (15)5.2 键盘扫描设计 (15)5.3 LCD显示设计 (20)5.4 算术运算设计 (22)5.5 总设计 (26)5.6 Proteus功能仿真 (25)结论 (27)致谢 (30)参考文献 (28)附录1系统仿真图 (32)附录2部分源程序 (33)1 绪论1.1 研究的意义随着社会的不断发展和科技的不断进步,各式各样的电子新科技走进了我们的日常生活,让我们的生活变得越来越方便。
16键计算器源程序及仿真实验报告

单片机课程设计报告设计题目:简易计算器系统设计专业班级:电信07101班设计者:潘雄文(24)设计者:罗芬(31)设计者:袁雅丽(33)指导教师:王先春老师设计时间: 2009.12.7-2009.12.18简易计算器系统设计一、设计目的1、进一步熟悉和掌握简单计算器的内部结构及工作原理。
2、掌握计算器中单片机的接口技术相关外围芯片的外特性,控制方法。
3、通过课程设计,掌握以简单计算器系统核心的电路设计的基本方法和技术,了解相关电路参数的计算方法。
二、设计要求设计一个可以进行2位数四则运算的计算器,要求:1,用按键输入数和运算符号;2,用LED显示运算过程和结果(十进制数);3,可以表示出当前的运算类型;4,具有清零和复位功能;5,具有连续运算功能。
注:加和改的部分:1、具有开机和关机动画显示功能;2、当按下按键时,能发出声音;3、把用LED显示运算过程和结果改为用液晶显示三、设计方案本设计是一个实现加,减,乘,除的计算器,AT89C51的P3口用于键盘输入,接4*4矩阵键盘,P2口用于控制液晶显示,P0口用于数据输入,用一个排阻RP1作为P0口的上拉电阻它可以实现8位正负数的加、减、乘、除运算。
四、硬件电路设计电路原理图AT89C51简介:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
proteus13 制作简易计算器

课题
制作简易计算器
授课人
课程类型
一体化课程
范围及性质
普通(校级、市级公开课)源自班级15楼宇班课时
2课时
上课时间
2016-2017学年第二学期
上课地点
4A-512
教学目标
知识与技能:具备基础的单片机知识,能够读懂电路原理图
过程与方法:培养学生查询资料的能力和团结协作的意识
情感态度价值观:培养学生分析问题、解决问题的能力
1、电路原理图设计
1.编写矩阵式键盘、动态数码管显示等功能子程序。
2.提取键盘的输入信息并进行计算。
3.将最后的运算结果在动态数码管上显示(将得数进行个、十、百等的数值分离,并显示在数码管上)。
2、电路控制程序讲解(程序太长,略)
3、C语言的程序结构
为了根据不同的情况作出不同的控制动作,51单片机的C51语言和普通的C语言一样,提供了控制流语句,通过不同的控制六语句的嵌套和组合可以控制单片机实现复杂的功能。控制流语句包括if、else if、switch、while等。
通过引入现实生活中的实例,引入电路
一体化课堂教学
10分钟
20分钟
50分钟实训
10分钟总结
教学反思
C51语言的程序结构可以分为顺序结构、选择结构和循环结构,这三种结构可互相组合和嵌套,组成复杂的程序结构,完成相应的功能。
(1)顺序结构
顺序结构是最简单和基本的程序结构,即程序从程序空间的低地址位向高地址位执行。
(2)选择结构
在选择结构中,程序首先测试一个条件语句,如果条件为“真”则执行某些语句,如果条件为“假”则执行另外一些语句。选择结构可以分为单分支结构及多分支结构,多分支结构又包括串行多分支结构和并行多分支结构。选择语句构成了单片机判断和转移的基础,是模块化程序的重要组成部分。C51语言常用的选择语句有if语句、switch语句,其中if语句有if···else、if和else if三种形式。
8086计算器仿真

实验报告一、设计任务:利用微机原理所学的8086微处理器相关知识为核心,利用Proteus仿真软件,设计一个关于计算器的仿真电路并编写汇编代码。
根据8086的结构和其寻址方式、输入输出、I/O口读写等技术,使用汇编语言的基本语法、伪指令,结合Proteus软件SAMPLES中8086 Demo Board示例的理解分析,自行设计。
二、需求分析:(1)用8086作为核心处理器;(2)用8255芯片连接主机与外设;(3)用74273锁存器对数据进行锁存;(4)用数码管显示器来显示输入的数字以及输出的结果;(5)由于需要输入数字及运算符所以要用到键盘;(6)用蜂鸣器在按下按键的同时发出声响;(7)连接整个电路要用到导线以及总线将相应的引脚相连接。
三、总体方案(选择与论证)1.方案的选择:基于技术成熟的Proteus软件,以Proteus软件SAMPLES中8086 Demo Board示例为蓝本并充分分析理解,在此基础上提出自己的设计方案。
将例子中电路结构优化精简,舍弃不必要的芯片,并用汇编来实现全部功能。
即计算器能够进行4位数的加、减、乘、除运算。
在此基础上,为使设计的计算器更具有实用性,我们通过循环调用的方式加入了对幂运算的功能。
与此同时,为优化人机界面,使计算器更为美观和实用,我们加入软件自带的封装好的矩阵键盘和蜂鸣器。
这就使得整个设计更加紧凑。
蜂鸣器实现了每按下一次按键就发出一次声响的功能以使按键检测更加直观,实际的计算器无差别。
此计算器拥有计数的功能,分自动计数和手动计数两种。
自动计数即为一个简单的计时器,用户可按需要定时,当到预定时间时,计算器会发声音提示用户。
手动计数有加1和减1两种,当用户需要计数某些场合中尤为适用。
2.方案的论证:8086通过74273锁存器与8255A相连,使8086能够读外部数据和给外部芯片写数据。
8255A的A口设置为输出,B口和C口设置为输入,将8255A分别和4*5矩阵、数码管、蜂鸣器相连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于与P r o t e u s仿真的键盘计算器的设计集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)基于8086与Proteus仿真的4*4键盘计算器的设计一、设计目的本次课程设计的实验目的是通过该实验掌握较复杂程序的设计。
能够独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减法的应用。
独立编写程序,明白和掌握程序的原理和实现方式。
为以后的设计提供经验。
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计内容设计计算器,要求至少能完成多位数的加减乘除运算。
独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减乘除的应用。
三、设计原理与硬件电路设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。
运算完成后将运算的结果储存并显示到LED显示器上。
各部分硬件功能:可编程并行通信接口芯片8255A 8255A内部结构:1. 并行输入/输出端口A,B,C8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。
端口都是8位,都可以作为输入或输出。
通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。
2.A组和B组控制部件端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。
端口B和端口C的低4位(PC3~PC0)构成B 组;由B组控制部件实现控制功能。
A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。
3. 数据总线缓冲存储器三态双向8位缓冲器,是8255A与8086CPU之间的数据接口。
与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。
4. 读/写控制部件8255A完成读/写控制功能的部件。
能接收CPU的控制命令,并根据控制命令向各个功能部件发出操作指令。
CS 片选信号:由CPU输入,有效时表示该8255A被选中。
RD, WR 读、写控制信号:由CPU输入。
RD有效表示CPU读8255A,WR有效表示CPU写8255A。
RESET 复位信号:由CPU输入。
RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。
定义工作方式控制字:工作方式0:8255A中各端口的基本输入/输出方式。
5.键盘输入模块键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O口数对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观,这也是键盘能够长期得到人们青睐的原因,可是硬件上的节省必然导致软件上编程的复杂,那就来看看键盘到底使软件编程有多复杂下图是一个4*4键盘的结构图,它是四条I/O线作为行线,四条I/O线作为列线组成的键盘。
在键盘的行线和列线的每一个交点上,设置一个按键,这样键盘中按键的个数是4*4个。
这种行列式键盘结构能够有效地提高单盘及系统中I/O口的利用率。
于是将键盘接8255A的PC口,至于为什么选择PC是有原因的,进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到4*4键盘则要求4个I/O口输入,另外4个输出,这一点PC口刚好符合,而PA、PB口要么全部输入或输出,所以只能是PC口接键盘。
4*4键盘结构图五、设计流程图六、实验程序DATA SEGMENTX DB ,,, ;存放数据的每一位X1 DW ;存放第一个数据值X2 DW ;存放第二个数据值Y DW ;存放运算结果S DB ;存放运算符号值E DB ;按下等号键标记CC DB ;存放运算数据位数H DB 0 ;存放按键行号L DB 0 ;存放按键列号DISCODE DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H ,71H ;段码表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,90H ;设置为A口输入,B口输出,C口输出OUT 46H,ALMOV DI,OFFSET X+3 ;DI指向X的高位KKK: CALL KEY ;扫描按键JMP KKK;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号KEY PROC CHECK: CALL DISP ;等待按键按下的同时进行显示MOV AL,0F0H ;所有行输出低电平OUT 44H,ALIN AL,40HCMP AL,0FFH ;读列值JZ CHECK ;若都为高电平则无键按下,等待MOV CX,50LOOP $ ;延时消抖IN AL,DX ;重读列值CMP AL,0FFHJZ CHECK ;无键按下一直等待MOV H,0 ;有键按下,先把行列号变量清0MOV L,0MOV BL,01HMOV BH,0FEH ;扫描法读键值:从第一行开始测试,即PC0输出低电平NEXT: MOV AL,BHOUT 44H,ALNEXTH: IN AL,40H ;读列值,判断是第几列有键按下TEST AL,BL ;从第一列开始判断JZ WAIT0ROL BL,1CMP BL,10H ;当前行状态下没有任何列有键按下,则转为对下一行的测试JZ NEXTLINC H ;每判断一列,列号加1JMP NEXTH ;再对下一列进行判断 NEXTL: MOV H,0MOV BL,01HROL BH,1 ;对下一行测试,让下一个PC口输出低电平CMP BH,0EFHJZ EXITINC LJMP NEXTWAIT0: IN AL,40H ;若有键按下,则等该按键松开后再计算键值CMP AL,0FFHJNZ WAIT0MOV CX,50LOOP $ ;延时消抖IN AL,40HCMP AL,0FFHJNZ WAIT0CALL KEYVALUE ;调计算键值子程序EXIT: RETKEY ENDP;以下为计算键值子程序,通过行列号计算键值(键值=列号*4+行号) ;键值存放在DL寄存器中KEYVALUE PROCMOV DL,LMOV DH,HSHL DL,1SHL DL,1 ;列号乘4ADD DL,DHCMP DL,9 ;按下的是数字键JNG NUM_CALLCMP DL,14JL CONT_CALL ;按下的是运算键CMP DL,14JZ OUTP_CALL ;按下的是等于键CMP DL,15JZ CLR_CALL ;按下的是清除键NUM_CALL: CALL NUMBER ;调数字键处理子程序JMP EXIT1CONT_CALL: MOV S,DL ;存放运算键的键值MOV E,0CALL COUNT ;调运算键处理子程序,计算第一个加数JMP EXIT1OUTP_CALL: CALL OUTP ;调等号键处理子程序JMP EXIT1CLR_CALL: CALL CLEAR ;调清除键处理子程序EXIT1: RETKEYVALUE ENDP;以下为清除键处理子程序,按下清除键后,X变量全部清0CLEAR PROCMOV X[3],0MOV X[2],0MOV X[1],0MOV X[0],0CALL BITPRETCLEAR ENDP;以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入X2变量;并根据运算符号,调用相应的运算子程序OUTP PROCPUSH AXPUSH DXPUSH BXINC ECALL COUNT ;调运算键处理子程序,计算第二个运算数据CMP S,10JZ ADD_CALL ;运算符为加号,则调用加法子程序CMP S,11JZ SUB_CALL ;运算符为减号,则调用减法子程序CMP S,12JZ MUL_CALL ;运算符为乘号,则调用乘法子程序CMP S,13CALL DIVP ;运算符为除号,则调用除法子程序JMP STORE1ADD_CALL: CALL ADDPJMP STORE1SUB_CALL: CALL SUBPJMP STORE1MUL_CALL: CALL MULPSTORE1: MOV AX,Y ;以下程序将各运算子程序返回的运算结果,按位分解,送入X变量MOV DX,0MOV BX,1000DIV BXMOV X[0], ALMOV AX,DXMOV BL,100DIV BLMOV X[1],ALMOV AL,AHMOV AH,0MOV BL,10DIV BLMOV X[2],ALMOV X[3],AHPOP BXPOP DXPOP AXRETOUTP ENDP;以下为运算键处理子程序,该程序将第一个运算数据的数值计算出来并存入X1变量;或者将第二个运算数据的数值计算出来并存入X2变量;将运算符的值存入S变量COUNT PROCPUSH AXPUSH BXPUSH DXMOV DX,0CALL BITP ;测试X中的数据是多少位CMP CC,4 ;输入的数据是4位数?JZ C4CMP CC,3 ;输入的数据是3位数?JZ C3CMP CC,2 ;输入的数据是2位数?JZ C2JMP C1 ;输入的数据是1位数?C4: MOV AX,0MOV AL,X[0]MOV BX,1000MUL BXMOV DX,AXC3: MOV AL,X[1]MOV BL,100MUL BLC2: MOV AL,X[2]MOV BL,10MUL BLADD DX,AXC1: MOV AL,X[3]MOV AH,0ADD DX,AXCMP E,1JNZ X1_SMOV X2,DX ;按下的是等号,则将第二个运算数据的值存入X2变量JMP EXIT3X1_S: MOV X1,DX ;按下的是运算符号,则将第一个运算数据的值存X1变量MOV X[3],0 ;清空X变量MOV X[2],0MOV X[1],0MOV X[0],0EXIT3: POP DXPOP BXPOP AXRETCOUNT ENDP;以下为数字键处理子程序;该程序,将输入的数据按位存放在X变量中,并由CC记录数据的位数 NUMBER PROCCMP E,1JNZ CONTINUEMOV E,0CALL CLEARCONTINUE: CMP CC,0 ;目前数据为0位,即没有数据,则转到SSSJZ SSS;若已有数据,以下程序将X左移8位。