ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:466.32KB ,
资源ID:6676988      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6676988.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机的计算器设计方案完整.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机的计算器设计方案完整.docx

1、单片机的计算器设计方案完整3.1 硬件连接图3-1所示为简易计算器的电路原理图。P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表-所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。图3-1 简易计算器电路原理图键值与功能对应表键值0123456789+-/=ON/C功能0123456789+-=清零表3-13.2 计算器的软件设计#include /头文件#define uint unsigned int / #define uchar unsigned charsbit lcden=P23。 /定义引脚sbit rs=P24。sbit rw=P20

2、。sbit busy=P07。char i,j,temp,num,num_1。long a,b,c。 /a,第一个数 b,第二个数 c,得数float a_c,b_c。uchar flag,fuhao。/flag表示是否有符号键按下,fuhao表征按下的是哪个符号uchar code table=7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0。uchar code table1=7,8,9,0x2f-0x30,4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30。void delay(uchar z /

3、延迟函数uchar y。for(z。z0。z- for(y=0。y。void check( / 判断忙或空闲do P0=0xFF。 rs=0。 /指令 rw=1。 /读 lcden=0。 /禁止读写 delay(1。 /等待,液晶显示器处理数据 lcden=1。 /允许读写 while(busy=1。 /判断是否为空闲,1为忙,0为空闲void write_com(uchar com / 写指令函数P0=com。 /com指令付给P0口rs=0。rw=0。lcden=0。check(。lcden=1。void write_date(uchar date / 写数据函数 P0=date。rs=1

4、。rw=0。lcden=0。check(。lcden=1。void init( /初始化 num=-1。lcden=1。 /使能信号为高电平write_com(0x38。 /8位,2行write_com(0x0c。 /显示开,光标关,不闪烁*/write_com(0x06。 /增量方式不移位 显竟獗暌贫 柚?write_com(0x80。 /检测忙信号write_com(0x01。 /显示开,光标关,不闪烁num_1=0。i=0。j=0。a=0。 /第一个参与运算的数b=0。 /第二个参与运算的数c=0。flag=0。 /flag表示是否有符号键按下, fuhao=0。 / fuhao表征按下

5、的是哪个符号void keyscan( / 键盘扫描程序P3=0xfe。 if(P3!=0xfe delay(20。 延迟20ms if(P3!=0xfe temp=P3&0xf0。 switch(temp case 0xe0:num=0。 break。 case 0xd0:num=1。 break。 case 0xb0:num=2。 break。 case 0x70:num=3。 break。 while(P3!=0xfe。 if(num=0|num=1|num=2/如果按下的是7,8或9 if(j!=0 write_com(0x01。 j=0。 if(flag=0/没有按过符号键 a=a*

6、10+tablenum。 else/如果按过符号键 b=b*10+tablenum。 else/如果按下的是/ flag=1。 fuhao=4。/4表示除号已按 i=table1num。 write_date(0x30+i。P3=0xfd。if(P3!=0xfd delay(5。 if(P3!=0xfd temp=P3&0xf0。 switch(temp case 0xe0:num=4。 break。 case 0xd0:num=5。 break。 case 0xb0:num=6。 break。 case 0x70:num=7。 break。 while(P3!=0xfd。 if(num=4|

7、num=5|num=6&num!=7/如果按下的是4,5或6 if(j!=0 write_com(0x01。 j=0。 if(flag=0/没有按过符号键 a=a*10+tablenum。 else/如果按过符号键 b=b*10+tablenum。 else/如果按下的是/ flag=1。 fuhao=3。/3表示乘号已按 i=table1num。 write_date(0x30+i。P3=0xfb。if(P3!=0xfb delay(5。 if(P3!=0xfb temp=P3&0xf0。 switch(temp case 0xe0:num=8。 break。 case 0xd0:num=9

8、。 break。 case 0xb0:num=10。 break。 case 0x70:num=11。 break。 while(P3!=0xfb。 if(num=8|num=9|num=10/如果按下的是1,2或3 if(j!=0 write_com(0x01。 j=0。 if(flag=0/没有按过符号键 a=a*10+tablenum。 else/如果按过符号键 b=b*10+tablenum。 else if(num=11/如果按下的是- flag=1。 fuhao=2。/2表示减号已按 i=table1num。 write_date(0x30+i。P3=0xf7。if(P3!=0xf

9、7 delay(5。 if(P3!=0xf7 temp=P3&0xf0。 switch(temp case 0xe0:num=12。 break。 case 0xd0:num=13。 break。 case 0xb0:num=14。 break。 case 0x70:num=15。 break。 while(P3!=0xf7。 switch(num case 12:write_com(0x01。a=0。b=0。flag=0。fuhao=0。/按下的是清零 break。 case 13: /按下的是0 if(flag=0/没有按过符号键 a=a*10。 write_date(0x30。 P1=0

10、。 else if(flag=1/如果按过符号键 b=b*10。 write_date(0x30。 break。 case 14:j=1。 if(fuhao=1write_com(0x80+0x4f。/按下等于键,光标前进至第二行最后一个显示处 write_com(0x04。 /设置从后住前写数据,每写完一个数据,光标后退一格 c=a+b。 while(c!=0 write_date(0x30+c%10。 c=c/10。 write_date(0x3d。 /再写= a=0。b=0。flag=0。fuhao=0。 else if(fuhao=2write_com(0x80+0x4f。/光标前进至

11、第二行最后一个显示处 write_com(0x04。 /设置从后住前写数据,每写完一个数据,光标后退一格(这个照理说顺序不对,可显示和上段一样 if(a-b0 c=a-b。 else c=b-a。 while(c!=0 write_date(0x30+c%10。 c=c/10。 if(a-b write_date(0x2d。 write_date(0x3d。 /再写= a=0。b=0。flag=0。fuhao=0。 else if(fuhao=3write_com(0x80+0x4f。 write_com(0x04。 c=a*b。 while(c!=0 write_date(0x30+c%10

12、。 c=c/10。 write_date(0x3d。 a=0。b=0。flag=0。fuhao=0。 else if(fuhao=4write_com(0x80+0x4f。 write_com(0x04。 i=0。 c=(long(floata/b*1000。 while(c!=0 write_date(0x30+c%10。 c=c/10。 i+。 if(i=3 write_date(0x2e。 if(a/b write_date(0x30。 write_date(0x3d。 a=0。b=0。flag=0。fuhao=0。 break。 case 15:write_date(0x30+tabl

13、e1num。flag=1。fuhao=1。 break。 main(init(。while(1 keyscan(。第4章 仿真和调试下面用KEIL uVision与 porteus仿真软件实现简易计算器的仿真与调试。4.1 keil 软件的介绍单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不

14、断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选,可以完成编辑、编译、连接、调试、仿真等整个开发

15、流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。3. 采用KEIL 开发的89c51单片机应用程序一般需要以下步骤:1) 在uVision 集成开发环境中创建新工程Project),扩展文件名为.UV2,并为该工程选定合适的单片机CPU器件用

16、uVision 的文本编辑器编写源文件,可以是汇编文件.ASM),也可以使C语言文件扩展名.C),并将该文件添加到工程中去。一个工程文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。3)通过uVision 2 的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。4)对工程中的源文件进行编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个工程。,0 Warning(s.” 下一步就可以在Proteus 软件了调用hex文件及烧入单片机。 图4-1 keil 调试4.3 proteus 7.1 介绍

17、 Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点:1) 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、H

18、C11系列以及各种外围芯片。 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。4.4 Proteus 对于本设计的仿真操作步骤如下:1)进入proteus ISIS 集成环境,在工作前,在systerm菜单下设置界面的颜色、图形界面大小等工程,我采用了系统默认值。 2)通过工具栏中的从库中选择元件命令)命令,在pick devices窗口中选择电路所需的元件,放置元件到编辑区并调整其相对位置,进行元件参数设置,元器件间连线。器件库如表4-1所示,选择后如图4-12所示。器件库器件名称Microprocessor

19、ICs89C51Switches&RelaysBUTTONOptoelectronicsLM016LResistorsRESPACK-8ResistorsPOT-LINTerminals ModePOWER表4-1 器件库及所选器件 本计算器实现8位数的加、减、乘、除运算。(2按下数值键,显示按下的 “数字”按运算符,再,按第2个操作数,显示,按“=”键,得到运算结果。(3按“清零”键清除运算结果,可重新开始。图 4-3 仿真原理4)加载程序。将编译调试完成的简易计算器机器码程序hex文件)加载到AT89C51单片机中。5)单击仿真工具栏中的仿真键,观察仿真结果。可以按暂停、继续、单步、等按钮,查看效果。运行 单步运行 暂停 停止图4-4 仿真工具栏,很短时间您都可以很快的制作一块合格的PCB。 Protel 2004共可进行74个板层设计,包含32层Signal(信号走线层。 16层Mechanical(机构层。 16层Internal Plane(内层电源层。2层Solder Mask(防焊层。 2层Paste Mask(锡膏层。 2层Silkscreen(丝印层。 2层钻孔层钻孔引导和钻孔冲压)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1