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

下载本文档

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

文档简介

...wd......wd......wd...单片机原理与应用技术课程设计基于51单片机的多功能计算器机电工程学院电子信息工程1班:20134081006指导教师:邵海龙职称:讲师完成日期:2015年9月22日评定成绩:关键词:单片机;液晶显示;计算器;目录引言………………………….31单片机及其应用……………………...3.1.1单片机介绍………………31.2单片机的应用……………41.3STC89C52单片机…………42液晶屏LCD1602原理及应用……………………....52.1液晶屏LCD1602介绍及工作原理…....…………………..52.2液晶屏LCD1602的功能及应用…………53设计思路、仿真及调试……………...73.1设计方法…………………73.2硬件设计…………………….………….73.2.1复位电路……………………….....73.2.2液晶屏LCD1602显示电路…...…………………83.2.34*4键盘的设计……………….....93.2.5多功能计算器的总电路............................................103.3软件设计……………………103.4软件仿真…………………173.5硬件调试……………………..…………..184完毕语……………………..…………..18谢辞…………..……………...18参考文献………..………….191单片机及其应用1.1单片机介绍单片机〔Microcontrollers〕是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能1.2单片机的应用STC89C52是STC公司推出的一款超强抗干扰,加密性强,在线可编程,高速,低功耗CMOS8位单片机。片内含8kbytes的可反复擦写Flash只读程序存储器和256bytes的随机数据存储器〔RAM〕,器件采用STC公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器〔CPU〕和Flash存储单元,功能强大的STC89C52单片机适合于许多较为复杂控制应用场合。1.3STC89C52单片机3.2STC89C52外部构造及特性其外形封装有两种方式:双列直插式40脚封装〔DIP〕和方形44脚封装〔PLCC〕,直插式40脚封装〔DIP〕和外部总线构造如图2和图3所示:图3.1STC89C52引脚排列图3.2外部总线STC89C52的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〞时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔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位地址读取外部数据存储器〔例如执行MOVX@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特殊功能〔第二功能〕使用,如下所示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外部中断0输入口)P3.3INT1(外部中断1输入口)P3.4TO(定时器0外部输入)P3.5TI(定时器1外部输入)P3.6WR(外部数据存储器写选通信号)P3.7(外部数据存储器读选通信号)3.3STC89C52内部组成STC89C52单片机在一块芯片中集成了CPU、RAM、ROM、定时器/计数器、看门狗和多种功能的I/O口设备的等,相当于一台计算机所需要的根本功能部件。STC89C52单片机内包含的具体局部如下:一个8位CPU。一个片内振荡器及时钟电路。8KBFlash程序存储器。256BRAM数据存储器。三个16位定时器/计数器。可寻址64KB的外部数据存储器和64KB的外部程序存储器空间的控制电路。32条可编程的I/O线〔4组8位并行I/O端口〕。一个可编程全双工串口通信。8个中断源、两个优先级嵌套中断构造。STC89C52单片机的框图如图3.3所示,各功能部件由内部总线连接在一起。图3.3STC89C52单片机框图2液晶屏LCD1602原理及应用2.1液晶屏LCD1602介绍LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全一样的,因此HD44780写的控制程序可以很方便地应用于市面上大局部的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚)2.2液晶屏LCD1602的功能及应用5.2.11602LCD液晶显示屏1602LCD显示屏是一种工业字符型液晶,所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全一样的,因此基于HD44780写的控制程序可以很方便地应用于市面上大局部的字符型液晶。1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比方大写的英文字母“A〞的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A〞。其管脚功能表和存放器选择控制表如表5.1和表5.1所示:表5.1管脚功能表引脚符号功能说明1VSS一般接地2VDD接电源〔+5V〕3V0液晶显示器比照度调整端,接正电源时比照度最弱,接地电源时比照度最高〔比照度过高时会产生“鬼影〞,使用时可以通过一个10K的电位器调整比照度〕。4RSRS为存放器选择,高电平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位〔最高位〕〔也是busyflag〕15BLA背光电源正极16BLK背光电源负极表5.2存放器选择控制表RSR/W操作说明00写入指令存放器〔去除屏等〕01读busyflag〔DB7〕,以及读取位址计数器〔DB0~DB6〕值10写入数据存放器〔显示各字型等〕11从数据存放器读取数据3设计思路、仿真及调试3.1设计方法本电路设计采用STC89C51单片机为核心,利用晶振产生频率为1HZ的时钟脉冲信号,利用液晶屏LCD1602显示计算器,通过对STC89C51单片机的编程控制液晶屏LCD1602的显示。显示计算和简易计算的信息同在LCD1602.3.2硬件设计本系统以STC89C51单片机为核心,本系统选用12MHZ的晶振,使单片机有合理的运行速度。起振电容30pf对振荡器的频率上下,振荡器的稳定性和起振的快速性影响较适宜,复位电路为按键高电平复位。3.2.1复位电路为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一局部,复位电路的根本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延迟才撤销复位,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。当单片机的复位引脚出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。所以复位引脚的电容大一点没多大关系,顶多是复位时间长一点;但如果电容太小,高电平持续时间太短,则单片机无法正常复位,就不能工作,电容通常取10UF或22UF,铝电解电容即可。单片机的复位电路在刚接通电时,刚开场电容是没有电的,电容内的电阻很低,通电后,5V的电源通过电阻给电解电容进展充电,电容两端的电会由0V慢慢的升到4V左右〔此时间很短一般小于0.3秒〕,正因为这样,复位脚由低电位升到高电位,引起了内部电路的复位工作;当按下复位键时,电容两端放电,电容又回到0V了,于是又进展了一次复位工作。电路图如图5.1。图5.1复位电路3.2.2液晶屏LCD1602显示电路3.2.34*4键盘的设计其功能如下3.2.5多功能计算器的总电路............................................143.3软件设计程序如下:#include<reg51.h>#definelcd1602_DATAPINSP0#defineuintunsignedint#defineucharunsignedcharsbitlcd1602_E=P2^7;sbitlcd1602_RS=P2^6;sbitlcd1602_RW=P2^5;ucharcodedigit[]={"0123456789+-x/=."};ucharcodekey_code[]={0xd7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0x7e,0x7d,0x7b,0x77,0xb7,0xe7};ucharcodestr[]="InputData:";ucharkey;voiddelay1ms(ucharc)//误差0us{uchara,b; for(;c>0;c--) { for(b=199;b>0;b--) { for(a=1;a>0;a--); } } }voidlcdwritecom(ucharcom){lcd1602_E=0; lcd1602_RS=0; lcd1602_RW=0; lcd1602_DATAPINS=com; delay1ms(1); lcd1602_E=1;delay1ms(5); lcd1602_E=0; }voidlcdwritedata(unsignedchardat){lcd1602_E=0; lcd1602_RS=1; lcd1602_RW=0; lcd1602_DATAPINS=dat; delay1ms(1); lcd1602_E=1;delay1ms(5); lcd1602_E=0;}voidinit(){lcdwritecom(0x38); lcdwritecom(0x0c); lcdwritecom(0x06); lcdwritecom(0x01); lcdwritecom(0x80);}voidkey_scan(){ucharscan1,scan2,keycode,i;P1=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_code[i]) {//查表得键值key=i;}}}else{P1=0xff;//P1口写1,输入状态}}voidmain(){uchari; ucharx,y,sign=0; ucharflag; inta,b;P1=0xff;//写1,读状态delay1ms(15);init(); lcdwritecom(0x80);for(i=0;i<16;i++) {lcdwritedata(str[i]);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(digit[key]); if(x==0) a=key; if(x==1) a=a*10+key; if(x==2) a=a*10+key; x++;} else { lcdwritedata(digit[key]); 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(digit[key]); delay1ms(200);} if((key==10)||(key==11)||(key==12)||(key==13)||(key==14)) { if(key==10) { sign++; flag=1; lcdwritedata(digit[key]); delay1ms(200);} elseif(key==11) { sign++; flag=2; lcdwritedata(digit[key]); delay1ms(200);} elseif(key==12) { sign++; flag=3; lcdwritedata(digit[key]); delay1ms(200);} elseif(key==13) { sign++; flag=4; lcdwritedata(digit[key]); delay1ms(200);} elseif(key==14){ sign=0; lcdwritedata(digit[key]); delay1ms(200); switch(flag) { case1:a=a+b;break; case2:a=a-b;break; case3:a=a*b;break; case4:a=a/b;break; } if(a>0&&a<10) { lcdwritedata(digit[a%10]);} if(a>9&&a<100) { lcdwritedata(digit[a/10]); lcdwritedata(digit[a%10]);} if(a>99&&a<1000) { lcdwritedata(digit[a/100]); lcdwritedata(digit[a/10%10]); lcdwritedata(digit[a%10]);} if(a>999&&a<10000) { lcdwritedata(digit[a/1000]); lcdwritedata(digit[a%1000/100]); lcdwritedata(digit[a%1000/10%10]); lcdwritedata(digit[a%10]);}}} }}}}3.4软件仿真在硬件设计完成后,利用软件进展仿真,以尽可能减少做板子的次数,这次我采用了protues软件进展仿真如图多功能计算器的的显示3.5硬件调试……………………..…………..164完毕语在用单片机实现多功能计算的设计中使用了STC89C51,LCD1602及其4*4键盘的使用,在设计过程中我通过在网上和图书馆查阅资料,收集了相关的单片机和液晶屏LCD160

温馨提示

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

评论

0/150

提交评论