版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的简易计算器的设计摘 要 单片机是采用超大规模集成电路技术,把一台计算机的主要部件集成在一个芯片上所构成的一种集成电路芯片,因此单片机被称为单片微型计算机。由于单片机体积小、价格低、可靠性高、适用面宽以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。很多大专、本科院校都开设了关于单片机原理与应用方面的课程。本设计就是依据单片机的原理来进行简易计算器的设计的,设计采用了stc89c52rc单片机作为计算器的主控制器,tc1602液晶作为显示器,44矩阵键盘作为输入按键,通过软硬件相结合,来实现整数的“加”、“减”、“乘”、“除”运算。并在计算器顺利完成的基础上,对
2、系统进行了简单的扩展,增加了电子表功能,使系统完善化和多功能化。关键词: 单片机,计算器,运算,扩展 abstractscm is a integrated circuit chips that integrated the main cmponents of a computer in a chip by using the large scale integrated circuit technology.so the scm is called the single chip computer. in various fields, scm has been widely used fo
3、r its small size, low price, high reliability, and wide application etc. many college and universities opened the courses about the principle and application of scm.the design is a simple calculato that based on the principle of scm. the chip of stc89c52rc is the main controller of the calculator an
4、d the display is tc1602lcd in my design, the keyboard of 4 4 matrix is used as input keys, with the combination of hardware and software, it can achieve the integer to plus, reduction, multiplication, division. on the basis of the successful completion, the design can expand the system and make it p
5、erfect and multi-functional. key words:mcs calculator operation expand 目 录1. 绪论11.1课题简介11.2设计目的11.3设计任务22. 课题背景32.1单片机的发展现状32.2 stc89系列单片机的简介42.3计算器的总体功能描述83. 计算器的硬件系统设计93.1计算器的硬件系统框架93.2最小系统的设计103.3键盘接口电路的设计123.4显示电路的设计133.5 ds1302实时时钟电路的设计153.6计算器的硬件电路原理图174. 计算器的软件系统设计184.1主模块程序的设计184.2键盘扫描模块程序的设
6、计194.3运算模块程序的设计214.4显示模块程序的设计234. 5 ds1302实时时钟模块程序的设计245. 计算器系统的组装与调试265.1软件系统的调试与仿真265.2硬件系统的组装与调试27总 结30参考文献31答 谢32附录一331. 绪论1.1课题简介近年来,随着社会的不断发展与进步,人民生活水平、物质水平的不断提高,各种各样的电子产品走进了家家户户,为我们的生活、学习、工作、娱乐提供了各种各样的便利。其中,计算器作为一种操作简便、运算快速、正确率高、便于携带的计算工具而被广泛使用,成为了我们最亲密的伙伴之一。单片机也被称为“单片微型计算机”、“微控制器”、“嵌入式微控制器”等
7、。目前,单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域,许多本科、大专院校、职业培训学校,都开设了单片机原理与应用这方面的课程。这是一门技术性和实践性很强的学科,学习它研究它不论对我们自身还是社会都具有重大的意义。本设计就是依据单片机的原理来进行的设计,它采用了51单片机作为计算器的主控制器,加上必要的外围扩展,通过软硬件的相结合,来实现整数的“加”、“减”、“乘”、“除”运算。1.2设计目的本文设计的计算器看似简单,没有创新性,但是它不仅需要运用我所学过的关于单片机的知识,并且需要查阅大量的资料,这可以进一步提升我对单片机的认识。而且亲自动手设计与制作可以对硬件的结
8、构和功能有全新的认识,以达到理论与实践更好的结合,进一步提高综合运用所学知识进行设计的能力,这是对本人大学四年的学习的检验,具有重要的意义。1.3设计任务本设计主要通过单片机的原理和应用,以电子技术基础的基本理论为指导,利用protues仿真软件和eil编程软件来设计简易计算器,并制作实物。其主要设计要求有:1、对计算器硬件系统的设计;2、运用keil进行计算器软件系统的设计;3、在protues仿真平台上,对软件进行调试及仿真;4、计算器实物的焊接; 5、软硬件结合之后,进行整体电路的调试与测试。2. 课题背景2.1单片机的发展现状单片机是采用超大规模集成电路技术,把一台计算机的主要部件集成
9、在一个芯片上所构成的一种集成电路芯片,因此单片机被称为单片微型计算机(scm)。其主要组成部分有中央处理器(cpu)、存储器(ram和rom)、基本i/o端口以及定时器/计数器等部件,并具有独立的指令系统。由于单片机体积小、价格低、可靠性高、适用面宽以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。单片机的发展大致可归纳为四个阶段。1、第一阶段(19761980):低性能单片机探索阶段。该阶段是以较简单的8位低档单片机为主,将原有的单板机功能集成在一块芯片上,该芯片具有原来单板机的功能。其主要代表芯片为intel公司的mcs-48系列,该系列芯片内集成了8位cpu、并行口
10、i/o接口、8位定时器/计数器,寻址范围为4kb,没有串行通信接口。2、第二阶段(19801983):高性能单片机发展阶段。这一阶段仍以8位机为主,主要增加了串行口、多级中断处理系统、16位定时器/计数器,除片内ram、rom容量加大外,片外寻址范围达64kb。这一阶段的单片机以intel公司的mcs-51系列、motorla公司的6801系列和zilong公司的z8系列为代表。3、第三阶段(19831990):高性能的16位单片机发展阶段。这一阶段的单片机性能更加完善,主频速率提高,运算速度加快,具有很强的实时处理能力,更加适用于速度快、精度高、响应及时的应用场合。其主要代表为intel公司
11、的mcs-96系列。4、第四阶段(1990至今):微控制器的全面发展阶段。各公司的产品在尽量兼容的同时,出现了高速、强运算能力,寻址范围更大的8位、16位、32位通用型单片机,以及小型廉价的专用型单片机。随着微电子技术的不断发展,单片机正朝着高集成度、低能耗、低电压、多功能的方向发展。12.2 stc89系列单片机的简介mcs-51单片机是由美国的intel公司开发研制的。该系列单片机以其优越的性能、成熟的技术及高可靠性和高性价比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。正因为其优越的性能和完善的结构,导致后来许多单片机生产商多沿用或参考了其体系结构。像a
12、tmel、philips、dallas等著名的半导体公司都推出了兼容mcs-51的单片机产品。这些著名厂商的加盟使51系列单片机获得了飞速发展,进一步丰富和发展了51系列单片机,产品性能得到了很大提升。2在这里我们要介绍的是由美国研发,台湾公司生产的stc89系列单片机。stc89系列单片机是mcs-51系列单片机的派生产品,它们在指令系统、硬件结构和片内资源上与标准8051单片机完全兼容。其主要特性有:1、80c51核心处理单元。2、64/32/16/8b片内flash rom,具有在应用可编程(iap)、在系统可编程(isp)的功能,可实现远程软件升级,无需编程器。3、1k字节ram;4、
13、双dptr数据指针;5、支持12时钟或6时钟模式;6、4个8位i/o口, p1口、p2口、p3口可直接驱动led;7、spi(串行外围接口)和增强型uapt;8、有pca(可编程计数器阵列),具有pwm的捕获/比较功能;9、3个16位定时器/计数器;10、可编程看门狗定时器;11、低emi方式(ale禁止);12、兼容ttl和coms逻辑电平;13、掉电模式和低功耗模式等;14、全静态操作0hz24hz;图2.1为stc系列单片机的引脚排列图:图2.1 stc系列单片机引脚排列图其引脚功能如下:1、主电源引脚vcc和vssvcc (40脚):接+5v电源正端;vss (20脚):接电源地。2、
14、外接时钟引脚xtal1和xtal2xtal1 (19脚):外接石英晶体振荡器的一端。xtal2 (18脚):外接石英晶体振荡器的另一端。3、控制信号或与其他电源复用引脚(1)rst (9脚):rst即reset,当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,即可实现系统复位。(2)ale/ (30脚):地址锁存允许信号,当访问外部存储器时,在每个机器周期内ale信号会出现两个正脉冲,用于锁存出现在p0口的低8位地址信息。在不访问外部存储器时,ale端仍以上述频率(振荡器频率的1/6)周期性地输出正脉冲信号,此信号可作为外部其他部件的时钟脉冲或用于定时目的。(3) (29脚):片外
15、程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或读取常数期间,每个机器周期两次有效。访问外部数据存储器期间,信号将不出现。(4) (31脚):为访问外部程序存储器控制信号,低电平有效。当端为高电平时,单片机访问片内程序存储器4kb(52系列为8kb),若超出此范围,自动转去执行外部程序存储器的程序。当端为低电平时,无论片内有无程序存储器,均只访问外部程序存储器。4、输入/输出(i/o)引脚p0口、p1口、p2口及p3口(1)p0口 (39脚32脚):p0.0p0.7。当不接外部存储器,也不扩展i/o接口时,它可作为准双向8位输入/输出接口。当接有外部存储器或扩展i/o接口时
16、,p0口为地址/数据分时复用端口。它分时提供低8位地址信息和8位双向数据信息。(2)p1口 (1脚8脚):p1.0p1.7,p1口是一个带内部上拉电阻的8位准双向i/o端口。在flash编程和校验时,p1口作为第八位地址接收。(3)p2口 (21脚28脚):p2.0p2.7.,可作为普通准双向i/o接口。当构成系统总线时,p2口作为高8位地址总线,传送高8位地址信息。(4)p3口 (10脚17脚):p3.0p3.7,为双功能端口,可以作为一般的准双向i/o接口使用,而每一位都具有第2功能(见表2.1),并且p3口的每一条引脚均可独立定义第1功能的输入/输出或第2功能。表2.1 p3口第2功能引
17、脚符号第2功能p3.0rxd串行口输入端p3.1txd串行口输出端p3.2外部中断0请求输入端,低电平有效p3.3外部中断1请求输入,低电平有效p3.4t0定时器/计数器0计数器脉冲输入端p3.5t1定时器/计数器1计数器脉冲输入端p3.6外部数据存储器写选通信号输出端,低电平有效p3.7外部数据存储器读选通信号输出端,低电平有效2.3计算器的总体功能描述计算器需要实现的功能如下:1、本设计为基于单片机的简易计算器的设计,所以最基本的功能是可以进行整数的“加”、“减”、“乘”、“除”四则运算;2、既然只需要进行基本的四则运算,那么键盘只需16个键即可,包括数字键09,符号键“+”、“-”、“*
18、”、“/”、“=”和一个清零键;3、运算时所键入的数字,符号(+、-、*、/)均需要在显示器上显示,当键下“=”号键时,显示计算所得的结果;4、可以进行多次连续运算,即上次计算所得的结果可以作为下次运算的第一个值; 5、可以进行错误提示,如当除数为零,或者结算结果大于计算器所能运算的范围时(溢出),在显示器上提示错误并内部归零;6、附加功能:在计算器顺利完成的基础上对系统进行简单的扩展,如加时钟芯片,让系统既可以作为计算器,同时也可作为电子表,电子表应具备调时功能。3. 计算器的硬件系统设计硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路
19、和输出设备等组成。一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即当单片机内部的功能单元,如rom、ram、i/o、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、a/d、d/a转换器等,并为这些外围设备设计合适的接口电路。3.1计算器的硬件系统框架计算器的硬件系统框架如图3.1所示:单片机显示电路按键及键扫电路实时时钟电路复位、晶振电路电源系统图3.1 计算器的硬件系统框架图3.2最小系统的设计单片机最小系统是指用最少的元件组成的单片机可以工作的系统
20、。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。1、单片机的选择在第2部分中我们已经介绍了stc89系列的单片机,本设计中我们采用stc89c52rc单片机,其性能稳定,价格便宜。它相对于另一种比较常用的at89系列的单片机来说,在功能上、引脚排列上并没有较大的差异,我会选择stc系列的单片机,主要是觉得其程序写入时可以通过串口采用stc-isp软件在线下载,比at系列大多采用编程器下载更方便。stc89c52rc主要性能有:(1)8kbyte程序存储器;(2)工作频率从静态到33mhz,更加灵活;(3)32根io端口;(4)内置两个16位定时计数器,利用单片机周期工
21、作,方便控制且可靠性高;(5)包含了全双工串行接口,方便与电脑或其它终端通信;(6)内置看门狗,防止程序跑丢,在外界环境突变时可自行复位继续工作;(7)编程简单,可以在线下载,很方便。其引脚如图3.2所示,引脚功能我们在2.2 stc89系列单片机的简介中已详细介绍过,在此就不多做介绍了。图3.2 stc89c52rc引脚图2、晶振电路的设计晶振电路的设计如图3.3所示。对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于图中的电容c1、c2有对系统时钟频率有微调和稳定的作用,因此,在本计算器系统的实际应用中要注意正确选择参数(本设计采用30pf),振荡频率范围是1
22、.2mhz12mhz,这里采用11.0592mhz是因为可以准确地得到9600波特率和19200波特率,便于和计算机进行串口通讯。3图3.3 晶振电路3、复位电路的设计复位是单片机的初始化操作。其主要功能是把程序计数器pc值初始化为0000h,使单片机从0000h单元开始执行程序。除了进入系统的正常初始化之外,程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动单片机。复位操作有上电自动复位和按键手动复位两种方式,其中,按键手动复位分为电平方式和脉冲方式两种。在本设计中,按键手动复位明显比上电复位更人性化、更方便,所以这里采用按键手动复位中的按键电平复位,电路设计如图
23、3.4所示。4图3.4 按键电平复位电路3.3键盘接口电路的设计键盘是一种按键的集合,它是单片机应用系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘中每个按键都是一个常开开关电路。本设计是基于单片机的简易计算器的设计,不需要进行复杂的运算,因此,采用44矩阵式键盘16个键来实现基本的“加” 、“减” 、“乘” 、“除”运算即可。矩阵式键盘的硬件结构比较简单,有行输出口和列输出口构成行列式键盘,按键设置在行、列的交点上。544矩阵式键盘具体按键安排如下: 第0列 第1列 第2列 第3列 第0行: 0 1 2 3 第1行: 4 5 6 7 第2行: 8 9 + - 第3行:
24、 * / 复位电路设计如图3.5所示,图中1.、2、3、4分别接单片机的p1.0p1.4口,5、6、7、8分别接p1.4p1.8口。图3.5 键盘接口电路3.4显示电路的设计单片机应用系统中常用的显示器件有led数码管显示器、led阵列显示器和液晶显示器等。液晶显示器较之led数码管显示器来说虽价格较贵,但其显示功能较强大,体积小、功耗低、界面美观大方。本设计进行的是计算器设计,如果用液晶作为显示器,两行就足够了,一行显示算式,一行显示结果,所以本设计采用tc1602字符型液晶模块进行显示。tc1602的工作原理:tc1602显示模块采用点阵图形来显示字符,显示分为2行、每行16个字符或1行1
25、6个字符两种模式,常用模式为2行16个字符。它有16个引脚,其引脚和电路连接如图3.6所示,引脚功能如下:第1脚gnd:电源地。第2脚vcc:接+5v电源。第3脚vl:液晶显示器对比度调整端。第4脚rs:寄存器选择信号线。高电平时进行读操作,低电平时选择指令寄存器。第5脚rw:读写信号线。高电平时进行读操作,低电平时进行写操作。第6脚e:使能端,当e端由高电平跳变成低电平时,可以写入数据。第714脚:8位双向数据线d0d7。第15脚bla:背光电源正极输入端。第16脚blk:背光电源负极输入端。bla接正,blk接负便会点亮背光灯。图3.6 tc1602电路图图中714脚接单片机的p0口。tc
26、1602液晶显示模块内置有字符发生rom,字符发生ram和字符显示ram,字符发生存储器已经存储了192个不同的点阵字符图形,每一个字符都有固定的代码,我们可以通过查表找出所需要显示的字符的地址让其在液晶中显示出来。13.5 ds1302实时时钟电路的设计在本设计中,ds1302时钟电路属于一个系统扩展模块,是一个附加功能,它跟计算器是分离开来的,在时间和硬件条件的允许下,我决定添加这个模块,让我的计算器除了能进行计算外,还能当电子表使用,使系统功能更加完善。计算器和电子表两种模式通过一个独立按键来进行切换,在同一块液晶屏上显示。实时时钟电路ds1302是dallas公司的一种具有涓细电流充电
27、能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能,采用普通32.768khz晶振,工作电压为2.5v5.5v。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。在本设计中,我们设计的只是电子表,所以用上的只有时、分、秒,这似乎有点大材小用了,我争取在以后对系统进一步扩展,比如做个万年历,使时钟芯片得到充分的利用。其引脚和电路连接如图3.7所示,引脚功能如下:第1脚vcc2:主电源。第2脚x1、第3脚x2:振荡源,外接32.768hz的晶振。第4脚gnd:地线。第5脚:复位/片选线。第6脚i/o:串行数据输入/输出端(双向
28、)。第7脚sclk:串行时钟输入。第8脚vcc1:后背电源。图3.7 ds1302电路图一般的电子表都具有设置时间的功能,我的也不例外。在此模块中,我选择使用4个独立式按键,分别是:“设置” 、“确认” 、“+” 、“-” ,用来对时间进行设置。设置方法是:按设置键1下,可按“+”、“-”对“小时”进行设置,设置完毕按确认键退出;同理,按设置键2下对“分”进行设置,按设置键3下对“秒”进行设置。独立式按键是指直接用一根i/o口线构成的单个按键电路,每个独立式按键单独占有一根i/o口线,每根i/o口线上的按键的工作状态不会影响其他i/o口线的工作状态。独立式按键接口电路配置灵活,软件结构简单。其
29、电路设计如图3.8所示。图3.8 时间设置按键电路3.6计算器的硬件电路原理图图3.9 计算器硬件电路原理图4. 计算器的软件系统设计本设计需单片机硬件电路及软件编程相结合,在单片机的应用系统程序设计时,常用的是汇编语言和c语言。本设计采用c语言进行程序的编写。c语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备了汇编语言的功能。c语言是为了能够胜任系统程序设计的要求而开发的,因此有很强的表达能力,能够用于描述系统软件各方面的特性。它具有较高的可移植性,提供了种类丰富的运算符和数据类型,极大地方便了程序设计。同时它具有丰富的库函数,运算速度快、编译效率高,且可以直接实现对系统硬件
30、的控制。它具有完善的模块程序结构,因此在软件开发中可以采用模块化程序设计方法。目前,使用c语言进行程序设计已成为软件开发的主流。54.1主模块程序的设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终功能实现的多少与好坏。本设计的主功能是计算器,而不是电子表,电子表只是在计算器功能顺利完成的基础上附加的功能,因此在设计的时候要分清主次,系统一开机进入的应该是计算模式,而不是电子表模式,用户可以根据自己的需要通过模式切换键进行两者的切换。本设计的主模块的程序流程图如图4.1所示。开始初始化液晶屏、d
31、s1302及相关变量计算模式判断模式切换键是否按下 n y电子表模式 判断模式切换键是否按下 n返回 y 图4.1 主模块程序流程图4.2键盘扫描模块程序的设计矩阵按键扫描程序是一种节省i/o口的方法,按键数目越多节省i/o口就越可观。键盘扫描模块程序的流程图如图4.2所示。键盘扫描子程序应具有以下功能:(1)判断有无键按下,若有则计算键值。其方法为:行输出口输出全为0,读列输入口信息,若列输入值为全1,则说明无键按下;若不为全1,则说明有键按下,并计算键值。(2)消除按键的抖动。在按键的使用过程中,由于弹性作用的影响按键的机械触电在闭合及断开的瞬间都会有抖动现象,即不能马上实现按键的完全闭合
32、或断开,从而使输入电压信号也出现抖动现象,抖动时间的长短由按键的机械特性决定,一般为5ms10ms。但实际应用中,应大于20ms,否则,会导致按一次做多次处理,影响程序的正常执行。开始是否有键按下 n 消抖 y 确实有键按下 n 判断并计算键号,执行相应命令 y 按键是否释放 n 返回 y图4.2 键盘扫描模块程序流程图 (3)判断按键是否释放。计算出闭合键的键值后,再判断按键是否释放。若按键释放则等待;若键已释放,则再延时消抖。(4)命令处理。根据闭合键的键值,程序应完成该键所设定的功能。24.3运算模块程序的设计在此模块中,要实现“加”、“减”、“乘”、“除”四种整数的运算,我们需要定义三
33、个数:a、b、c ,类型为长整型(-2147483648+2147483647);其中a为第一个数,b为第二个数,c为两数运算的结果。本设计还要求可以根据需要进行连续多次的运算,即把c的值赋给a,输入运算符,再输入b,按下“=”号,再得到c,再赋给a,以此反复。在运算中a的值有可能是负数,而b必定是正数,所以在进行“加”、“减”、“乘”三种运算时都可能产生溢出,都需要进行报错;在除法运算时,若除数为0,也需要报错。设d=+2147483647,e=-2147483648,判断溢出的方法是:(1)加法:当0ad-a,则溢出;(2)减法:当eaa-e,则溢出;(3)乘法:当0ad/a,则溢出; 当
34、eae/a,则溢出;需要注意的是,在本设计中除法运算时为了保留四位小数需对c转化为float型并进行10000的操作,我们可以想象当c +214748.3647时,c扩大一万倍就不再属于长整型的范围了,这就产生了溢出错误。为了不让这种情况发生,本设计规定了当c +214748.3647或c-214748.3648时,结果显示不保留小数;当c-214748.3648时,结果显示保留四位小数。运算模块程序流程图如图4.3所示。开始判断是哪个运算符乘减除加除数是否为0 n错误信息送显示缓冲区运算结果是否溢出y y 数值送显示缓冲区 n 图4.3 运算模块程序流程图4.4显示模块程序的设计在本设计中,
35、液晶只用显示字符,不需要显示汉字或图形,且需要显示的字符在tc1602液晶模块内置的字符发生存储器里都有,在编写程序时,只要查表就可得到相应字符的代码,比较方便。显示程序的流程图如图4.4所示。开显示液晶初始化 判断是否显示字符 n 相应功能的设置 y y送地址 送数据 判断是否显示完 n 返回 y 图4.4 显示程序流程图在这个模块中,我们需要了解液晶的基本操作时序写指令和写数据。写指令:输入:rs=l,rw=l,d0d7=指令码,e=高脉冲;输出:无。写数据:输入:rs=h,rw=l,d0d7=数据,e=高脉冲;输出:无。4. 5 ds1302实时时钟模块程序的设计从前面我们已经了解到了时
36、钟芯片的功能很强大,设计这部分程序前,我们必须对ds1302有关日历、时间的寄存器进行深入的了解。在本设计中,我们只用到了时间,所以我们在这里就只对时间寄存器进行解释,时(85h、84h)、分(83h、82h)、秒(81h、82h)寄存器及控制寄存器(8fh、8eh)介绍如表4.1所示。表4.1 时、分、秒、控制寄存器介绍读寄存器写寄存器bit7 bit6bit5bit4bit3bit2bit1bit0 范围81h80hch10秒秒005983h82h10分分005985h84h 0 020时10时 时0238fh8eh wp 0000000从表中,我们可以很明了的知道以上寄存器的功能和使用方
37、法,需要说明的是控制寄存器的位7(wp)是写保护位,其他七位都为0,在对任何时钟和ram进行写操作前,wp必须为0。当wp为1时,禁止对任一寄存器进行写操作,也就是说在电路上电的初始态wp为1,必须先将它置为0,才可进行写操作。还有秒寄存器的位7位定义为时钟暂停标志(ch)位置为1时,时钟振荡器停止,ds1302时钟芯片处于低功耗状态;为0时,时钟开始运行。例如,执行以下语句,就在时钟芯片中写入了时间12:30:01。write_ds1302(0x8e,0x00); /去保护write_ds1302(0x84,0x12); /写小时,12时write_ds1302(0x82,0x30); /写
38、分钟,30分write_ds1302(0x80,0x01); /写秒钟,01秒write_ds1302(0x8e,0x80); /写完后,上保护ds1302时钟程序流程图如图4.5所示。开始相关变量初始化ds1302去保护复位端产生一个高电平复位端产生一个高电平写1302地址延时写1302地址将该地址数据读出延时地址增加向该地址写数据地址增加数据是否读完 n数据是否写完n显示数据 y y 图4.5 ds1302时钟程序流程图5. 计算器系统的组装与调试5.1软件系统的调试与仿真在本次设计中,c程序是在keil软件中编写并编译的,在程序编写中主要出现了以下问题:(1)由于程序过长过复杂,容易出现
39、少了或多了一个“”的现象。(2)有的变量所定义的类型错误,虽然程序无错误,但一仿真结果错误。(3)事先未被定义的被调函数放在了主调函数的后面,导致错误。(4)所定义的芯片引脚与仿真图中引脚不匹配。(5)仿真的结果有时正确有时是乱码,例如:5+12=17正确,但若是运算2147483645+10,结果就是乱码。这是因为定义的是长整型,而此结果已经溢出,不属于长整型了,我们一眼就能看出是溢出,应该提示错误信息,但是计算机不能,所以在编写程序时不能直接判断运算结果是否大于长整型,而应该间接判断,判断方法在4.3运算模块的设计中已讲解过。在keil和protues的联合调试下,经过了多次认真的分析与修
40、改,程序终于能实现我预期的要求。protues仿真如图5.1所示。图5.1 protues 仿真图5.2硬件系统的组装与调试在软件仿真成功后,下一步就是硬件实物的焊接了,焊接电路图为第3部分硬件设计的原理图(见本文第17页)在焊接前一定要认真阅读焊接注意事项,并在万能电路板上对各元件的放置进行合理布局,此时不仅要考虑正面整体的美观,还要考虑背面布线的方便性,尽可能减少布线的复杂度。焊接完毕后就要进行调试了,此过程中出现了以下问题: (1)通过stc-isp软件把在keil中生成的.hex文件加载到单片机中,开机,进行运算,发现液晶屏点亮但不显示任何数据,经过对电路的检查,发现本应接地液晶第3脚
41、(vl)接到了电源端,改正后液晶可以显示。 (2)液晶虽然可以显示了,但在进行计算时并不能正确显示,经过多次检查,发现硬件并无错误,断定为软件的错误,最后发现软件中液晶初始化不完整,可是在仿真时是正确的,这充分说明了仿真与实际硬件的区别。经过多次的调试,我的计算器终于能达到同仿真时一样的效果了。计算器实物如图5.2所示。图5.2 计算器实物图计算器进行各种运算的截图如图5.3所示。 (a)加 (b) 减 (c)乘 (d) 除 (e) 除数为0 (f)溢出错误 (g)时间显示图5. 3 运算器各种运算截图总 结我的题目是基于单片机的简易计算器的设计,虽然在这之前我们有过类似的经验,比如焊接收音机
42、、电话机,但这跟这次设计是不一样的,对于收音机、电话机,已有现成的电路图及需要的所有元件,我们只要对照电路图直接焊接即可,并且不需要考虑程序和其他因素。但在这次设计中,我们得先对硬件和软件进行设计,要是设计不出来,就无法焊接,这对于我来说,这是一次严峻的考验。比如说在实物焊接的时候由于对于液晶的有些引脚接法还不是太了解,焊接好了之后液晶不显示,用万用表检测也没发现问题,最后又找了关于液晶的详细资料一一对照,发现本应接地液晶第3脚(vl)接到了电源端,改正后液晶终于可以显示。可是在液晶能显示之后还是出现了问题,液晶只能显示按下的键值,不能显示计算的结果,开始怎么找都找不到原因,最后终于发现问题出
43、在软件中,是由于液晶初始化不完整造成的。在这次设计中虽然遇到了很多问题,但最后还是成功的解决了,基本实现了我最初的设想,也成功的实现了时钟功能。通过这次毕业设计使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力,真正为社会服务。参考文献1冯育才单片机系统设计与实例分析西安电子科技大学出版社,2007.5. 2冯育才、雷思孝单片机系统设计及工程应用西安电子科技大学出版社,2005.5. 3李珍、付植桐单片机原理与应用技术清华大学大学出版社,2004.2. 4沈红卫基于单片机的智能系统设计与实现电子工业出版社,20
44、05.9.5姜志海、刘连鑫单片微型计算机原理及应用机械工业出版社,2007.1. 6赵全利、肖兴达单片机原理及应用教程(第二版)机械工业出版社,2007.7.7郑郁正单片机原理及应用成都:四川大学出版社,2003.9.8谭浩强c程序设计(第三版)北京:清华大学出版社,2005.9(日)晶体管技术编辑部编,杨洋等译,宗光华校电子技术:原理制作实验北京:科学出版社,2005.10徐爱钧智能化测量控制仪表原理与设计(第二版)北京航天航空大学出版社,2004.9.11武庆生、仇梅等单片机原理与应用电子科技大学出版,1998.12. 12王宜怀、刘晓升等嵌入式应用技术基础教程北京清华大学出版社,2005
45、.7. 答 谢这次毕业设计的完成要特别感谢我的指导老师王书志老师,在教学繁忙、事务缠身的情况下,王老师多次抽出时间,对我的论文进行悉心的指导,还组织我们小组预答辩,帮我们找出所存在的问题并改正,这能让我们在正式答辩的时候从容面对,不慌乱。平时王老师再忙也与我们保持电话、短信联系,对我们每个人都给予了高度关注,督促并帮助我们按时完成本次设计。还有我的舍友我的同学,虽然他们自己也很忙,当我遇到问题时只要他们能帮一定会帮。在这里真诚地对所有关心我、帮助我、鼓励我的老师、同学、朋友道声:“谢谢!”附录一源程序:#include /头文件#define uint unsigned int #define
46、 uchar unsigned charsbit lcden=p37; /定义引脚sbit rs=p35;sbit rw=p36;sbit busy=p07;sbit key=p27;sbit setkey=p26; sbit surekey=p25;sbit pluskey=p24;sbit reducekey=p23;sbit ds1302_clk=p34; sbit ds1302_io=p33; sbit ds1302_rst=p32;bit w;unsigned temp0,temp1,hour,min,sec,next;char i,j,num;long int a,b,c,d,e;
47、 /a第一个数 b第二个数 c得数 int k,temp,kk;uchar flag,fuhao; /flag表示是否有符号键按下,fuhao表征按下的是哪个符号uchar err=0x72,0x6f,0x72,0x72,0x65,;uchar code table=0,1,2,3,4,5,6,7, 8,9,0,0,0,0,0,0;uchar code table1=0,1,2,3,4,5,6,7,8,9,0x2b-0x30,0x2d-0x30,0x2a-0x30,0x2f-0x30,0x3d-0x30,0x01-0x30,;void delay(uchar z) /延迟函数1msuchar y;for(z;z0;z-) for(y=0;y0;t-) for(j=19;j0;j-);void delay2(uint t) /迟延函数50ms uchar j; for(;t0;t-) for(j=6245;j0;j-);void write_ds1302byte(unsigned char temp1) /ds1302写字节函数 unsigned char i; for (i=8;i0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度供暖服务续约协议
- 2024年度建筑材料研发与技术转让合同
- 2024年城市废弃物处理设施租赁合同
- 2024创意拓展训练服务合同
- 2024年廉洁购销合同范本
- 2024年度安徽省某县高速公路路基施工合同
- 2024年度企业级云存储服务合同
- 2024大型活动场地土方平整合同
- 2024年度果皮箱批量采购合同
- 2024年度国际教育培训项目合作合同
- GB/T 22796-2021床上用品
- 中国联通LAN工程施工及验收规范
- 中间表模式接口相关-住院与his-adt方案
- 临床PCR检验的室内质控方法课件
- 计算机解决问题的过程-优质课课件
- 作文讲评-“忘不了……”课件
- 深基坑安全管理(安全培训)课件
- 12月4日全国法制宣传日宪法日宪法知识科普宣教PPT教学课件
- 血液透析营养管理课件
- 神经内科医疗质量评价体系考核标准
- 绿化监理实施细则
评论
0/150
提交评论