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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机的计算器结构设计Word格式文档下载.docx

1、方案二:采用汉字图形点阵液晶显示器RT12864显示方案。RT12864M汉字图形点阵液晶显示模块,可显示汉字及图形。供电电源为3.3V+5V(置升压电路,无需负压),能采用并行和串行两种通信方式。并有光标显示、画面移位、自定义字符、睡眠模式等功能。综上所叙,12864的显示效果好、功能齐全,所以我们选用12864液晶显示。其与单片机的接口电路如图1-2所示。图1-2 12864与单片机的接口电路 (3)单片机电源部分的设计方案论证与选择由于本次设计中单片机工作电源为5V,所以需要稳压,对于5V电源这里有以下两种方案。用固定式三端稳压器7805。如图1-5,7805系列稳压器输出固定的正电压5

2、V,输入端接电容C1可以进一步滤除纹波,输出端接电容C2能改变负载的瞬态影响,使电路稳定工作C1、C2最好采用漏电流小的钽电容。如果采用电解电容,则电容要比图中数值增加10倍。图1-3 固定式三端稳压器用7805加一些外围器件。虽然7805三端集成稳压管部有过流、过热和安全区的保护电路,但其输出仍有可能发生过压的危险。因此本电路加了过压保护电路,电路如图1-4所示,该电路由稳压管VD3、电阻R3和晶闸管VS组成。另外由于7805的最大输出电流为1.5A,可以通过在7805的1脚与VT1的基极相连,7805的2脚与VT1的集电极相连,这样就可输出1.6A2A的电流。如需更大的电流,可再并联几个大

3、功率三极管。图1-4 可扩流过压保护5V稳压电源综上所述,方案一电路简单,而且已符合本次设计的要求,再加上第二种方案所用元件较多,性能价格比不高,所以我们选择方案一。(4)键盘设计方案与选择独立键盘。独立键盘为一端接地,另一端接I/O口,并且要接上拉电阻。这种键盘的硬件都很容易实现,但每一个按键就要用一个I/O口,非常的浪费单片机的I/O口资源,不适合本次设计。4*4矩阵式键盘。其电路图如图图1-5所示,这种键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。所以本次设计采用这种矩阵式键盘。其电路图如图图1-5 4*4矩阵式键盘电路图 1.2.3 系统组成经过方案比较与论证,

4、最终确定的系统组成框图如图1-6所示。其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者,该系统的结构框图如图。图1-6 系统组成方框图2 重要器件的知识介绍2.1 单片机的知识介绍由于ATMEL公司生产的AT89S52型单片机是即便于下载又好用,而且能够满足本设计的要求。所以我选择AT89S52型单片机。2.1.1 单片机的主要性能(1)与MCS-51单片机产品兼容 (2)8K节在系统可编程Flash存储器(3)1000次擦写周期(4)全静态操作:0Hz-33Hz(5)三级加密程序存储器(6)32个可编程IO口线(7)三个16位定时器计数器(8)八个中断源(9)全

5、双工UART串行通道(10)低功耗空闲和掉电模式(11)掉电后中断可唤醒(12)看门狗定时器(13)双数据指针2.1.2 单片机的功能特性描叙 AT89S52是一种低功耗,高性能CMO58位微控制器,具有8K在系统可编程Flash存储器。使用ATMEL公司高密度非易使性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,迹适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能:8K字节Flash、256字节RAM、32位IO口线

6、、看门狗定时器、2个数据指针、三个16位定时器计数器、一个6向量2级中断结构、全双工串行口、片晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2钟软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM定时器计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.1.3 单片机的部结构方框图及芯片图2-1 单片机的部结构方框图2.1.4 单片机各引脚功能说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。

7、P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口

8、的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如图表2.1。 表2.1 AT8

9、9S52的一些特殊功能口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1 (记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频

10、率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否

11、有部程序存储器。注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.1.5 单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在MCS-51芯片部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的

12、自激振荡器。 此电路采用12MHz的石英晶体。时钟电路如下图2-2: 图2-2 时钟电路2.1.6 单片机复位电路 复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4s才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路

13、的电容充电来实现的。按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。在本设计中采用了按键电平复位方式,其复位电路如下图2-3。图2-3 复位电路2.1.7 单片机下载口电路下载口电路以一块74HC373芯片为主,电路原理图如图2-4所示。由于电路中只用了一片74HC373所以完全可以把电路装在DB25插针式并口插头部,这个可以做到很小巧,可以很方便的使用。为了稳定也可以芯片外围加一些电阻、电容等元件,具体电路网上有提供下载。光是做好下载线是不行的,S51系统的ISP下载方式还要求要下载程序单片机运行在最小化系统中。只要把的相应引脚连接起来就可以对S51进行ISP下载了。要接的引线是S

14、51的6,7,8,9,20,40引脚。晶振可以在3M24M间选用,当然是看你的目标板而选择。为了方便使用我们需要做一个下载头,电路简单接线正确的话一般无需要调整就可以正常使用,如有问题可以用软件中的IspTest.exe(下载线调试程序) 检查你的74HC373芯片是否正常和你的电脑并口是否正常。图2-4 下载口电路原理图3 程序流程图主程序流程图显示程序流程图键扫程序流程图致 毕业设计是我大学学习生活的最后一项学习任务,是对我大学学习的综合考核。在为期三个多月的毕业设计过程中,我不仅较为系统的复习了以前学过的知识,而且又学习了许多新知识,使我的只是结构更加系统化,也更加完善。同时,也提高了我

15、独立分析问题、解决问题的能力。在本文的选题、构思、写作和修改直至最终定稿的过程中,更是浸透了导师大量的心血,感激之情难以言表。而且,在和老师的交流过程中,还学到了许多做人、处事的道理,使我终身受益。我要诚挚地向培养我的各位领导以及实验室的各位老师表示感!在此,我表示衷心感。三年的学习生活,他们无形中给了我很大的帮助,使我顺利完成学业。掌握了一技之长。同时,我要感我的母校襄阳汽车职业技术学院,特别是我即将踏上工作岗位时,给我这样一个锻炼、学习的机会,使我加深了对以前知识的理解,拓宽了知识面,也提高了我对所学知识的综合应用能力。在此我谨向我的导师以及在毕业设计过程中给予我很大帮助的老师、同学们致以

16、最诚挚的意。参考文献(1) 广弟 单片机原理及应用 航天航空大学 2008.2(2) 新民 微型计算机控制技术 电子工业 2008.5(3) 梅丽凤 单片机原理及接口技术 清华大学 2004.6(4) 陪金 C语言程序设计案例教程 电子科技大学 2008.1(5) 戴佳 51单片机C语言应用程序设计实例精讲 电子工业 2006.4(6) 谭浩强 C程序设计 清华大学 2006.4附录1 系统原理图附录2 程序清单#include stdio.hintrins.hmath.h#define uchar unsigned char#define uint unsigned int#define u

17、long unsigned long sbit rs=P20;sbit rw=P21;sbit en=P22;sbit psb=P23;sbit ret=P25;sbit rd=P37;sbit s=P10;sbit s1=P14;sbit s2=P15;sbit s3=P16;sbit s4=P17;uchar count,s1num;unsigned int nin,ss;char yue,re,qi,shi,fen,miao;uchar dshi,dfen,dmiao,ling,aa,t1,p;uchar command,data0,data1,data2,com0,j,l;unsign

18、ed char command,data1,data2,com0,bb,bb0,aa,cc,i,yun;/uchar lcdH,lcdL,key; float ds,m,k;ulong ds0;bit flag,flag1,flag2,flag3,flag4;uchar disbuf9=0; /定义显示缓冲区/uchar code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e;uchar code table1=0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce

19、,0xe5,0xc1,0xf9;/日六/uchar code table2=0x32,0x30,0x30,0x39,0xc4,0xea,0x30,0x35,0xd4,0xc2,0x30,0x31,0xc8,0xd5; /年月日/uchar code table4=0xd0,0xc7,0xc6,0xda,0xc1,0xf9; /星期六/uchar code tabping=32,29,32,31,32,31,32,32,31,32,31,32;uchar code tabrun=32,30,32,31,32,31,32,32,31,32,31,32;uchar code xing1=3,6,0,

20、3,5,1,3,6,2,4,0,2;uchar code xing2=4,0,0,3,5,1,3,6,2,4,0,2;uchar xing12=0;uchar tab12=0; /延时/void delay(uint ms) /延时250us uchar i; while(ms-) for(i=0;i125;i+); /LCD初始化/void lcd_int() ret=0; delay(3); ret=1; _nop_(); psb=1; /将PSB置1,通信方式为8BIT数据并口/写指令程序/void write_command(uchar command) rs=0; rw=0; P0=

21、command; en=1; en=0;/写数据程序/void write_data(uchar data0) rs=1; P0=data0;/LCD功能设置/void lcd_set() command=0x30; /基本指令集/ write_command(command); command=0x01; command=0x06; command=0x0c;/清屏程序/void clear_lcd () command=0x34;void display() command=com0; data2=lcdH; write_data(data2); data1=lcdL; write_dat

22、a(data1);void display1(uchar y, uchar x, uchar *p) switch (y) case 1:write_command(0x7f+x); break; /液晶第一行 case 2:write_command(0x8f+x); /0x90+(x-1) case 3:write_command(0x87+x);break; case 4:write_command(0x97+x); default: while(*p) write_data(*p+);void xiaoshu()/先判断k是否为小数,如果k为小数,就将k转化为小数/ uint mg=1

23、; if(flag1)cc;i+) mg*=10; k=k/(mg*1.0); cc=0; flag1=0;/键扫描程序/uchar keyscan()uchar scancode,tmpcode; P1=0xf0; / 行全为0 if(P1&0xf0)!=0xf0) /有键按下 delay(100); /延时去抖动=0xf0) /判是否真的有键按下 scancode=0xfe; /诼行扫描 while(scancode&0x10)!=0) P1=scancode; if(P1&=0xf0) /本行有键按下 tmpcode=(P1&0xf0)|0x0f; /返回特征字节码,为1的位即对应于行和

24、列 return(scancode)+(tmpcode); else scancode=(scancode1)|0x01; /行扫描码左移一位 return(0); /无键按下,返回值为0 disjia() com0=0x83;lcdH=0xbc;lcdL=0xd3;display(); com0+; lcdH=0xb7;lcdL=0xa8; com0=0x87;disjian()lcdL=0xf5;discheng()lcdH=0xb3;lcdL=0xcb;dischu()lcdL=0xfd;void jishu()/把ds0处理后放入显示缓冲区中/ disbuf0=ds0/1000000000%10; disbuf1=ds0/100000000%10; disbuf2=ds0/10000000%10; disbuf3=ds0/1000000%10; disbuf4=ds0/100000%10; disbuf5=ds0/10000%10; disbuf6=ds0/1000%10; disbuf7=ds0/100%10;

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

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