基于单片机的lcd1602的多功能计算器_第1页
基于单片机的lcd1602的多功能计算器_第2页
基于单片机的lcd1602的多功能计算器_第3页
基于单片机的lcd1602的多功能计算器_第4页
基于单片机的lcd1602的多功能计算器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理与应用技术课程设计基于51单片机的多功能计算器院 系 :机电工程学院专业(班级):电子信息工程1班姓 名:学 号:20134081006指导教师:邵海龙职 称:讲师完成日期: 2015 年 9月22日评定成绩:关键词:单片机;液晶显示;计算器;目 录引言 .31 单片机及其应用.3.1.1单片机介绍3 1.2单片机的应用4 1.3 STC89C52单片机4 2 液晶屏LCD1602原理及应用. 5 2.1液晶屏LCD1602介绍及工作原理. .52.2 液晶屏LCD1602的功能及应用5 3 设计思路、仿真及调试.7 3.1设计方法7 3.2硬件设计. .7 3.2.1复位电路.7

2、3.2.2 液晶屏LCD1602显示电路.83.2.3 4*4键盘的设计.93.2.5 多功能计算器的总电路. 103.3软件设计 103.4软件仿真173.5硬件调试.18 4 结束语. .18谢辞.18 参考文献.19 1 单片机及其应用1.1单片机介绍 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能1.2单片机的应用 STC89C52 是STC公司推出的一款超强抗干扰,加密性强,在线可编程,高速,低功耗CMOS 8位单片机。片内含

3、 8k bytes 的可反复擦写Flash只读程序存储器和256 bytes 的随机数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,与标准MCS51指令系统及8052产品引脚兼容, 片内置通用8位中央处理器 (CPU)和Flash存储单元, 功能强大的STC89C52单片机适合于许多较为复杂控制应用场合。1.3 STC89C52单片机3.2 STC89C52外部结构及特性 其外形封装有两种方式:双列直插式40脚封装(DIP)和方形44脚封装 (PLCC),直插式40 脚封装(DIP)和外部总线结构如图2和图3所示: 图3.1 STC89C52引脚排列图3.2 外部总线S

4、TC89C52的 4 个 8 位I/O口的功能说明如下:(1)P0口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低 8 位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash 编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 (2)P1口:P1口是一个具有内部上拉电阻的8位双向 I/O口,p1输出缓冲器能驱动4个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为

5、输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和定时器/计数器 2 的触发输入(P1.1/T2EX)。在 flash 编程和校验时,P1口接收低8位地址字节。 (3)P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行MOV

6、X DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送 1。在使用8 位地址(如 MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号。 (4)P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2 输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在 flash 编程和校验时,P3 口也接收一些控制信号。P3 口亦作为AT89C52特殊

7、功能(第二功能)使用,如下所示: l P3.0 RXD(串行输入口) l P3.1 TXD(串行输出口) l P3.2 INTO(外部中断0 输入口) l P3.3 INT1(外部中断 1 输入口) l P3.4 TO(定时器 0 外部输入) l P3.5 TI(定时器 1 外部输入)l P3.6 WR(外部数据存储器写选通信号) l P3.7(外部数据存储器读选通信号) 3.3 STC89C52内部组成STC89C52单片机在一块芯片中集成了 CPU、RAM、ROM、定时器/计数器、看门狗和多种功能的 I/O 口设备的等,相当于一台计算机所需要的基本功能部件。STC89C52单片机内包含的具

8、体部分如下: 一个8 位 CPU。 一个片内振荡器及时钟电路。 8KB Flash 程序存储器。 256 B RAM 数据存储器。 三个16 位定时器/计数器。 可寻址 64KB 的外部数据存储器和 64KB 的外部程序存储器空间的控制电路。 32 条可编程的 I/O线(4组8 位并行 I/O端口)。 一个可编程全双工串口通信。 8 个中断源、两个优先级嵌套中断结构。 STC89C52单片机的框图如图3.3所示,各功能部件由内部总线连接在一起。图3.3 STC89C52单片机框图2 液晶屏LCD1602原理及应用 2.1液晶屏LCD1602介绍LCD1602已很普遍了,具体介绍我就不多说了,市

9、面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚)2.2 液晶屏LCD1602的功能及应用5.2.1 1602LCD液晶显示屏1602LCD显示屏是一种工业字符型液晶,所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的

10、字符型液晶。1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。其管脚功能表和寄存器选择控制表如表5.1和表5.1所示:表5.1 管脚功能表引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4R

11、SRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电

12、源正极16BLK背光 电源负极表5.2寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据3 设计思路、仿真及调试3.1设计方法本电路设计采用STC89C51单片机为核心,利用晶振产生频率为1HZ的时钟脉冲信号,利用液晶屏LCD1602显示计算器,通过对STC89C51单片机的编程控制液晶屏LCD1602的显示。显示计算和简易计算的信息同在LCD1602.3.2硬件设计 本系统以STC89C51单片机为核心,本系统选用12MHZ的晶振,使单片机有合理的运

13、行速度。起振电容30pf对振荡器的频率高低,振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。3.2.1复位电路 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延迟才撤销复位,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。当单片机的复位引脚出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。所以复位引脚的电容大一点没多大关系,顶多是复位时间长一点;但如果电容太小,高电平持续时间太短,则单片

14、机无法正常复位,就不能工作,电容通常取10UF或22UF,铝电解电容即可。单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电源通过电阻给电解电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),正因为这样,复位脚由低电位升到高电位,引起了内部电路的复位工作;当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作。电路图如图5.1。图5.1 复位电路3.2.2 液晶屏LCD1602显示电路 3.2.3 4*4键盘的设计 其功能如下3.2.5 多功能计算器的总电路. 14 3.3软件设计 程序如下:#include

15、<reg51.h>#define lcd1602_DATAPINS P0#define uint unsigned int #define uchar unsigned char sbit lcd1602_E=P27;sbit lcd1602_RS=P26;sbit lcd1602_RW=P25;uchar code digit="0123456789+-x/=."uchar code key_code=0xd7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0x7e,0x7d,0x7b,0x77,0xb7,0xe7

16、;uchar code str=" Input Data: "uchar key;void delay1ms(uchar c) /误差 0us uchar a,b;for (; c>0; c-) for (b=199;b>0;b-) for(a=1;a>0;a-); void lcdwritecom(uchar com ) lcd1602_E=0; lcd1602_RS=0; lcd1602_RW=0; lcd1602_DATAPINS=com; delay1ms(1); lcd1602_E=1; delay1ms(5); lcd1602_E=0; voi

17、d lcdwritedata(unsigned char dat) lcd1602_E=0; lcd1602_RS=1; lcd1602_RW=0; lcd1602_DATAPINS=dat; delay1ms(1); lcd1602_E=1; delay1ms(5); lcd1602_E=0;void init() lcdwritecom(0x38); lcdwritecom(0x0c); lcdwritecom(0x06); lcdwritecom(0x01); lcdwritecom(0x80);void key_scan() uchar scan1,scan2,keycode,i; P

18、1=0xf0; scan1=P1; if(scan1&0xf0)!=0xf0) /判断是否按键 delay1ms(15); /延时消陡 scan1=P1; if(P1&0xf0)!=0xf0) P1=0x0f; scan2=P1; keycode=scan1|scan2; for(i=0;i<16;i+) if(keycode=key_codei) /查表得键值 key=i; else P1=0xff; /P1口写1,输入状态 void main() uchar i; uchar x,y,sign=0; uchar flag; int a,b; P1=0xff; /写1,

19、读状态 delay1ms(15); init(); lcdwritecom(0x80); for(i=0;i<16;i+) lcdwritedata(stri); delay1ms(10); lcdwritecom(0xc0); delay1ms(5); /lcdwritedata('0'); while(1) P1=0xf0; if(P1&0xf0)!=0xf0) delay1ms(15); if(P1&0xf0)!=0xf0) key_scan();if(key<=9) if(sign=0) lcdwritedata(digitkey); if(

20、x=0) a=key; if(x=1) a=a*10+key; if(x=2) a=a*10+key; x+; else lcdwritedata(digitkey); if(y=0) b=key; if(y=1) b=b*10+key; if(y=2) b=b*10+key; y+; delay1ms(200);if(key=15) lcdwritedata(digitkey); delay1ms(200); if(key=10)|(key=11)|(key=12)|(key=13)|(key=14) if(key=10) sign+; flag=1; lcdwritedata(digitk

21、ey); delay1ms(200); else if(key=11) sign+; flag=2; lcdwritedata(digitkey); delay1ms(200); else if(key=12) sign+; flag=3; lcdwritedata(digitkey); delay1ms(200); else if(key=13) sign+; flag=4; lcdwritedata(digitkey); delay1ms(200); else if(key=14) sign=0; lcdwritedata(digitkey); delay1ms(200); switch(

22、flag) case 1:a=a+b;break; case 2:a=a-b;break; case 3:a=a*b;break; case 4:a=a/b;break; if(a>0&&a<10) lcdwritedata(digita%10); if(a>9&&a<100) lcdwritedata(digita/10); lcdwritedata(digita%10); if(a>99&&a<1000) lcdwritedata(digita/100); lcdwritedata(digita/10%10

23、); lcdwritedata(digita%10); if(a>999&&a<10000) lcdwritedata(digita/1000); lcdwritedata(digita%1000/100); lcdwritedata(digita%1000/10%10); lcdwritedata(digita%10); 3.4软件仿真 在硬件设计完成后,利用软件进行仿真,以尽可能减少做板子的次数,这次我采用了protues软件进行仿真如图多功能计算器的的显示3.5硬件调试.16 4 结束语在用单片机实现多功能计算的设计中使用了STC89C51,LCD1602及其4*4键盘的使用,在设计过程中我通过在网上和图书馆查阅资料,收集了相关的单片机和液晶屏LCD1602显示方面的资料,通过这些资料的学习,我了解了单片机的基本结构和单片机在生活和生产中发挥的作用:液晶屏的原理和使用。本次课程设计完成的主要工作和任务如下:对设计方案的理论研究,单片机的合理选型,硬件电路的设计,元器件的焊接,软件的编写和调试,。通过设计多功能计算器的过程中,我掌握了单片机的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论