资源描述
单片机原理与应用技术课程设计基于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 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位单片机。片内含 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 外部总线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特殊功能(第二功能)使用,如下所示: 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 位 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已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于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写的控制程序可以很方便地应用于市面上大部分的字符型液晶。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位(最高位)(也是busy flag)15BLA背光电源正极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的晶振,使单片机有合理的运行速度。起振电容30pf对振荡器的频率高低,振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。3.2.1复位电路 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延迟才撤销复位,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。当单片机的复位引脚出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。所以复位引脚的电容大一点没多大关系,顶多是复位时间长一点;但如果电容太小,高电平持续时间太短,则单片机无法正常复位,就不能工作,电容通常取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#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 ;uchar code str= Input Data: ;uchar key;void delay1ms(uchar c) /误差 0us uchar a,b;for (; c0; c-) for (b=199;b0;b-) for(a=1;a0;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; void 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; 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;i16;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,读状态 delay1ms(15); init(); lcdwritecom(0x80); for(i=0;i16;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(key0&a9&a99&a999&a10000) 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 胡汉才单片机原理及系统设计M .北京:清华大学出版社,2002.2 王守中. 51单片机开发入门与典型实例M.北京:人民邮电出版社,2007.3 陈雪丽. 单片机原理及接口技术M.北京:化学工业出版社, 2005.4 薛均义,张彦斌.MCS-51系列单片微型计算机及其应用.西安:西安交通大学出版社,2005.5 唐颖,程菊花,任条娟.单片机原理与应用及C51程序设计M.北京:北京大学出版社,2008.6 电子线路设计实验测试第二版.M武汉:华中科大出版社, 20012.1-407 赵健.实用声光电及无线电遥控电路300例.J北京:中国电力出版社,2008.90-1008 郑浩,高静.怎样用万用电表检测电子元器件修订本.J 北京:人民邮电出版社,2009.32-669 全新实用电路集粹编辑委员会编著.全新实用电路集粹. M北京:机械工业出版社,2006.56-7410 王新贤.通用集成电路速查手册第二版.M 山东科学技术出版社,22-5720
展开阅读全文