当前位置:文档之家› 带温度显示的万年历--单片机课程设计

带温度显示的万年历--单片机课程设计

带温度显示的万年历--单片机课程设计
带温度显示的万年历--单片机课程设计

课程设计说明书

课程名称:《单片机技术》

设计题目:万年历

院(部):电子信息与电气工程学院

学生姓名:*******

学号:************

专业班级:************

指导教师:*******

20**年5月23日

课程设计任务书设计题目万年历

学生姓名**** 所在院系电子信息与电

气工程学院

专业、年级、班***********

设计要求:

1、设计制作一个用LCD1602显示的带温度显示的万年历;

2、具有年、月、日、星期、时、分、秒、温度等显示功能;

3、具备年、月、日、星期、时、分、秒校准功能;

4、具有闹钟显示、调节设定、整点鸣叫功能。

学生应完成的工作:设计万年历的工作原理,利用DXP 软件绘制电路原理图,利用Keil uVision4软件编写C语言程序并且生成HEX文件,并利用Proteus软件进行电路仿真和调试。并设计制作电路的PCB板(或万用板的元件布局和连线)。根据设计原理对电路进行安装、调试,完成课程设计工作,并提交课程设计报告。

参考文献阅读:

[1]童诗白.模拟电子技术基础[M].北京:高等教育出版社,2005.

[2]阎石.数字电子技术(第五版)[M].北京:高等教育出版社,2005.

[3]邱关源,罗先觉.电路(第五版)[M].北京:高等教育出版社,2006.

[4]周灵彬,任开杰.基于Proteus的电路与PCB设计[M].北京:电子工业出版社,2010.

[5]穆秀春,冯新宇,王宇.Altium Designer原理图与PCB设计[M].北京:电子工业出版社,2011.

[6]郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2012.

[7]张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:高等教育出版社,2010.

[8]李升.单片机原理与接口技术[M].北京:北京大学出版社,2011.

工作计划:5月6号:搜集资料;5月7号:方案论证拟定硬件方案;5月8号:讨论优化并确定硬件方案;5月9号—10号:讨论并确定程序流程并绘制流程图;5月13号:根据流程图编写程序并且进行软件的仿真与调试;5月14号—15号:硬件电路的制作并撰写课程设计报告;5月15号:烧录程序并调试;5月16号:完成课程设计报告的撰写。

任务下达日期:2013 年5 月 6 日

任务完成日期:2013 年5 月17 日

指导教师(签名):学生(签名):

万年历

摘要:设计了一个带温度显示的万年历电路系统,该电路具有年、月、日、星期、时、分、秒、闹钟显示和调整功能,并且还能显示温度和按键鸣叫、整点鸣叫、定时闹钟鸣叫等功能。其中显示部分采用LCD1602显示,时钟部分采用DS1302时钟芯片,温度部分采用DS18B20单线温度传感器。报时鸣叫采用有源蜂鸣器并用三极管驱动。软件方面我们采用C语言编程,利用Keil uVision4软件编写C语言程序并且生成HEX文件。先将程序在Proteus仿真,通过之后再烧录到单片机中。该设计的优点是充分利用了LCD1602的显示功能完成了万年历应该具有的功能并且还扩展了温度和闹钟。不足之处是收到LCD1602显示功能的限制没能显示农历日期,而且报时部分只是发出滴滴声而不是语音报时。

关键词:万年历;LCD1602;温度传感器(DS18B20);时钟芯片(DS1302)

目录

1.设计背景 (1)

1.1时钟的用途及精度的需求 (1)

1.2万年历的使用现状及设计目的 (1)

2.设计方案 (1)

2.1任务分析 (1)

2.2方案选择和论证 (2)

2.2.1显示模块选择方案和论 (2)

2.2.2时钟模块的方案选择和论证 (2)

2.2.3按键控制模块的方案选择和论证 (2)

2.2.4温度采集模块方案选择 (3)

2.2.5方案的整体框图 (3)

2.2.6设计流程图程序部分的拟定案 (4)

3.方案实施 (5)

3.1.1整体电路及其分析 (5)

3.1.2电源电路 (6)

3.1.3单片机最小系统 (6)

3.1.4蜂鸣器及驱动电路 (7)

3.1.5时钟芯片DS1302电路 (7)

3.1.6温度采集芯片DS18B20电路 (8)

3.1.7键盘控制电路 (8)

3.1.8 LCD1602控制电路 (9)

3.2软件仿真 (10)

3.2.1 Proteus仿真软件介绍 (10)

3.2.2电路仿真调试 (11)

3.3 电路的焊接与调试 (12)

4.结果与结论 (14)

5.收获与致谢 (14)

6.参考文献 (15)

7.附件 (15)

7.1电路原理图 (15)

7.2 Proteus仿真图 (16)

7.3电路工作中实物图 (17)

7.4元器件清单 (19)

7.5源程序清单 (20)

1.设计背景

1.1时钟的用途及精度的需求

时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。随着时间的流逝,科学技术的不断发展和提高,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好、更方便、更精确的显示时间,这就要求人们不断设计研发出新型的时钟。

高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

1.2万年历的使用现状及设计目的

如今万年历已经在人们生活中广泛的使用,它不仅是记录日期和时间的工具,而且也成为了一种装饰品。现在的万年历可以说是多种多样,外观精美。放在家里既可以计时也可作为风景壁画,因此越来越受到大众消费者的喜爱。

本次课程设计通过利用STC89C52单片机和DS1302芯片以及外围的按键和LCD显示器等部件,设计一个基于单片机的电子时钟。设计的电子时钟通过液晶显示器显示,并能通过按键对时间以及闹钟进行设置。目的来模拟真实产品中万年历的工作原理,具有很强的实用性。

2.设计方案

2.1任务分析

目的是设计一个带温度显示的万年历电路系统,该电路具有年、月、日、星期、时、分、秒、闹钟显示和调整功能,并且还能显示温度和按键鸣叫、整点鸣叫、定时闹钟鸣叫等功能。其中显示部分准备采用LCD1602显示,时钟部分准备采用DS1302时钟芯片,温度部分准备采用DS18B20单线温度传感器。报时鸣叫采用有源蜂鸣器并用三极管驱动。软件方面我们采用C语言编程,利用Keil uVision4软件编写C语言程序并且生成HEX 文件。先将程序在Proteus仿真,通过之后再烧录到单片机中。

2.2方案选择和论证

2.2.1、显示模块选择方案和论证

方案一:

采用点阵式数码管显示。点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且难度也相对较高,所以不用此种作为显示。

方案二:

采用LED数码管动态扫描。LED数码管价格便宜,对于显示数字最合适,但功耗较大,且显示容量不够,所以也不用此种方案。

方案三:

采用LCD液晶显示屏。液晶显示屏的显示功能强大,可显示大量文字,显示多样,清晰可见,且价格适中,所以采用了LCD数码管作为显示。

2.2.2时钟模块的方案选择和论证

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。

方案二:

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V 范围内,2.5V时耗电小于300nA.

2.2.3按键控制模块的方案选择和论证(宋体四号,加粗)

方案一:

直接加减:使用7按键,1按键切换闹钟,6按键对时分秒分别加减,控制方式相当简单,但需要较多按键与I/O口,功能一般,成本较高。

方案二:

矩阵键盘:使用16按键对时分秒直接设置,能最为灵活的对数字钟进行设置,功能强大,但控制方式相对困难,成本较高,需要较多按键与I/O口。

DS1302

AT89S52

按键 LCD 显示

DS18B20

方案三:

换位调整:使用4按键,1设置闹钟,1键设置调整时间,1键调整,1键确定,此种控制方式相对简单,占用I/O 口少,成本低廉,但功能一般。

经过反复比较,在3种方案中选取了第3种——换位调整,此方案成本低,功能已经足够满足数字钟的需要,而且硬件软件均比较简单。

2.2.4温度采集模块方案选择(宋体四号,加粗)

DS18B20数字温度传感器接线方便,独特的单线接口方式,DS18B20在与微处理器

连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。因此DS18B20完全满足设计要求。

2.2.5方案的整体框图(宋体四号,加粗)

图1 整体方框图

2.2.6设计流程图程序部分小组的拟定方案

Y

N

Y

N

图2 设计流程图

开始

完成与DS18B20,LCD1602,DS1302相关的子函数的编程

完成与DS18B20,LCD1602,DS1302相关的初始化设置

CPU 读取DS18B20 ,DS1302的温度和时间数据

CPU 将数据送至LCD1602显示

相关数字及字母数组设置

相关引脚的特殊位定义

检测是否有时间校准按键按下

重新设置时间,并写至进DS1302的寄存器

返回

3.方案实施

3.1.1原理图设计及工作原理分析(宋体四号,加粗)

图3 整体原理图

我们首先构成单片机的最小系统,使单片机能正常工作,在程序中首先对LCD1602、DS1302、DS18B20进行初始化,由CPU完成对DS1302产生的各种时钟数据的读取,然后将数据写至LCD1602,以显示数据,达到可视化的效果。对于课程设计的拓展部分,我们可以利用DS18B20温度传感器来测试周围环境的温度,由CPU完成对数据的读取,然后通过CPU将数据写至LCD1602,以显示温度数据,达到可视化的效果。通过键盘扫描子程序通过测试按键是否闭合来调整各种时间数据和闹钟已达到校准和定时的目的。在按键的同时调用蜂鸣器程序,驱动蜂鸣器响来作为按键提示音,另外我们还扩展了整点报时提示音和闹钟提示音等。

3.1.2电源电路(宋体四号,加粗)

我们采用了USB和变压器双电源供电:

图4 变压器供电电路

变压器输出的9V交流电经桥堆2W10后变成有较大波动的的直流电,然后经过滤波电容和微调电容后变成直流电,再经过L7805三端稳压器输出5V直流电。7805输出端的电容起到了防干扰和微调作用。

图5 USB供电电路

3.1.3单片机最小系统(宋体四号,加粗)

单片机采用了上电自动复位和按键复位的双复位,利用12MHZ晶振作为单片机的外部晶振来驱动单片机工作。其中两个33pf的电容用于晶振的启动。由于单片机的P0口

是准双向IO口,所以需要排阻RP1作为该口的上拉电阻。

图6 单片机最小系统

3.1.4蜂鸣器及驱动电路(宋体四号,加粗)

我们采用的有源蜂鸣器,由于单片机的输出电流较小所以我们采用PNP形的三极管作为驱动电路,来驱动蜂鸣器发声,当单片机给低电平时蜂鸣器响。

图7 蜂鸣器电路

3.1.5时钟芯片DS1302电路(宋体四号,加粗)

时钟芯片采用双电源,当系统断电之后由3V的电源—电池供电。保证了系统断电之后时钟继续工作,当系统再次上电之后时钟能显示正确的时间和日期。

3.1.6温度采集芯片DS18B20电路(宋体四号,加粗)

图9 温度采集电路

3.1.7键盘控制电路(宋体四号,加粗)

该设计采用的是独立按键,S1为时间设置,S2为时间或者日期调整,S3为确定键,

S4为闹钟设置。

图10 按键控制电路

3.1.8 LCD1602控制电路(宋体四号,加粗)

LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。第1脚:VSS为电源地。第2脚:VDD接5V电源正极。第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

图11 LCD1602液晶显示电路

3.2软件仿真

3.2.1 仿真软件介绍(宋体四号,加粗)

Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

(1)proteus 的工作过程

运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Definecode generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/removesource files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。

(2)Proteus 软件所提供的元件资源Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。

(3)Proteus 软件所提供的仪表资源

对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在Proteus 软件包中,不存在同类仪表使用数量的问题。Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。

(4)Proteus 软件所提供的调试手段

Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus 提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。

对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation 菜单项或shift-break 组合键停止系统的运

行。其运行方式也可以选择工具栏中的相应工具进行。

对于软件的分步调试,应先执行debug 菜单下的start/restart debugging 菜单项命令,此时可以选择stepover 、step into 和 step out 命令执行程序(可以用快捷键F10、F11 和ctrl+F11),执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start / restart debuging 命令后,在debug 菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看。

3.2 Proteus电路仿真与调试

图12 Proteus下的仿真电路图

本次课程设计我们小组采用分工合作的方式,把任务分成了四个模块:硬件部分、软件部分、仿真调试、实物的制作与调试。我们首先拟定实现的功能方案,然后小组讨论制定系统的整体框图。采用功能模块化、任务具体化、工作协调化的方式,充分发挥小组成员各自的的优势。

本次设计我主要负责仿真与调试模块,因为我之前没有接触过Proteus的仿真,因此在协调小组工作之余我开始学习Proteus仿真软件的使用。可以说仿真是软件和硬件

的组合体,首先要对硬件有充足的了解,明白其中各个模块的功能,而且对软件也要有透彻的了解。因为当仿真结果与预期的结果不一致时,在确保硬件设计合理的基础上只能是软件的编写有误,因此需要对软件进行修改。

在仿真的时候出现的问题让我不知所措,刚开始竟然连液晶都不亮。经检查后发现原来是液晶背光的电源与地接反了。经调整后,液晶亮了,但是什么都不显示。经小组商讨后,我决定用分模块的方式,首先对各个模块分开测试。在修改程序的同时,我学会编程软件KEIL的使用,提高了我的编程能力和软件测试的技巧,第一步:我测试单片机的最小系统,看看单片机是否工作。我写了一个小程序,将4个IO口的电平全部拉低发现单片根本就不工作,IO口的引脚电平还是默认的高电平。我首先判定是单片机的外部晶振出了问题,经检查后发现是晶振的起震电容选取的不合适,经修改后单片机正常工作了。第二步:测试蜂鸣器模块,我们是通过PNP型三极管来驱动蜂鸣器发声的,所以需要单片机给个低电平才能使三极管导通,经测试三极管能正常工作。第三步:测试液晶的初始化程序,让其开显示并且光标闪烁,然后测试液晶的写入程序,经测试后发现该模块的程序均正常。第四步:测试DS1302的读写程序,通过单片机读取DS1302时钟芯片的数据,然后将数据处理后送到液晶显示器液晶能够正常显示,但是与预期的显示位置有差异,经修改写入的地址后,能达到预期的目标。

第五步:DS18B20温度传感器数据的读写,当单片机对其数据进行读入是发现根本就没反应,经过讨论和测试后发现是它的读写时序不对,于是我们对比DS18B20的数据手册,然后进行单步调试确保时序与之对应,然后再次读取它的数据,这次终于成功了。最后将修改过的主程序载入单片机发现各个部分的功能都能实现了。软件仿真部分圆满成功。

3.3焊接与调试(宋体四号,加粗)

我们小组采取分工合作的方式将任务分成了四部分:硬件部分、软件部分、软件仿真与调试、实物的制作与调试。我主要是负责硬件的制作与调试。由于硬件制作是最后一步,所以我之前一直在协助组员之间的工作,负责任务的分配与协调,在此期间我学会了Proteus仿真软件的使用和一些调试的方法,可以说对我以后的硬件电路的调试也是非常有用的。而且在硬件电路设计的时候我明白了各个芯片的使用和各个模块的功能,对以后的焊接与调试也是至关重要的,在此期间我又进一步熟悉了Altium designer 原理图绘制软件的使用。在与小组成员讨论软件设计流程的时候我明白软件设计的要点

和注意事项,明白了软件各个模块的作用和它们之间的执行顺序以及怎样协调工作。通过学习我明白系统开发的流程,了解了需要用到的工具软件。

当硬件和软件设计及仿真的工作都完成后就轮到我的制作了,由于这次采用的是万用板,可以说元件的布局是非常重要的一部分,我首先对电路进行布局,在布局的同时为了布线的方便对芯片的引脚的位定义进行了局部的调整,在确保无误后开始焊接。可以说焊接是个耐心和细致的工作,特别是用万用板制作,由于它的布线大部分采用的明线,所以看起来会非常乱,一不小心就会出错。还有这次用的万用板是两个插孔在一起的那种,由于从背面插元器件,看不到正面的焊盘是否连接。刚开始焊接的时候就出现了元件引脚相连的情况,而且有的焊盘在重焊的时候还发生了焊盘脱落的情况。这引起了我的重视,在以后的元件放置的时候我很注意焊盘的位置,防止焊盘相连的情况再次发生。我用了整整一天的时间进行焊接,又用了一天的时间进行调试,最后功能完全实现,画上了圆满的句号。

在调试的过程中也遇到了不少的问题,我采用和软件调试类似的方法分模块测试。第一步:测试单片机的最小系统,看看单片机是否工作。我写了一个小程序,将4个IO口的电平全部拉低发现单片根本就不工作,IO口的引脚电平还是默认的高电平。经检查后发现是晶振的起震电容选取的不合适,经修改后单片机正常工作了。第二步:测试液晶的初始化程序,让其开显示并且光标闪烁发现液晶显示非常暗,后来发现是液晶的背光没有接,接上背光后液晶亮了并且工作正常。第三步:DS18B20温度传感器数据的读写,当单片机对其数据进行读入是发现读取的温度与实际有差别,经过讨论和测试后发现是温度的变量数据类型用的uchar型,改成uint型的后温度读取正确。第四步:测试DS1302的读写程序,通过单片机读取DS1302时钟芯片的数据,终于显示了结果,可是现实的结果并不是自己设定的日期,后来才发现在设置初值时,将顺序搞乱了,重新整理后,上面显示正确的结果。第五步:测试蜂鸣器模块,我们是通过PNP型三极管来驱动蜂鸣器发声的,所以需要单片机给个低电平才能使三极管导通,经测试三极管能正常工作。最后将修改过的主程序载入单片机发现各个部分的功能都能实现了。硬件调试与制作部分圆满成功。

4 结果与结论

完成了用LCD1602显示的带温度显示的万年历的预期的全部功能功能。具有年、月、日、星期、时、分、秒、温度等显示功能;具备年、月、日、星期、时、分、秒校准功能;具有闹钟显示、调节设定、整点鸣叫功能。

制作过程中将程序烧到板上时,LCD1602不能显示结果,经过排查,发现是接触不良,重新将其接好后,再次烧录程序。终于显示了结果,可是现实的结果并不是自己设定的日期,后来才发现在设置初值时,将顺序搞乱了,重新整理后,上面显示正确的结果。

该设计的缺点是没能显示农历和语音报时功能,这也是受到LCD1602显示功能的影响。如果换成LCD12864显示就能充分显示农历日期,再加上语音芯片实现语音报时功能就更好了。

5 收获与致谢

为了完成此次课设,我再次翻阅了所学的理论知识,对题目有了一定的理解后,开始相关的设计。整个课设的难处在于程序设计部分。首先,这次课设我们都要用到KEIL 编译软件,虽然很早就接触到了这种软件,但只是会一点皮毛。这个课设要用到很多新的功能,运用起来有一定的困难,不过最后通过查询一些资料,能较好地掌握这些知识。主要的困难在后面的芯片程序设计部分。我们首先查阅芯片手册,研究其操作的时序图,然后按照时序图写程序。首先,对于DS1302时钟芯片,其初始化设置以及CPU读取时间数据,均需要熟悉相应的引脚功能和运用相应的函数,学会运用这些函数耗费了我不少时间,为此我专门复习了一下以前学习的C语言知识。掌握了DS1302的使用方法后,我开始学习LCD的使用方法,与前面一样,我复习了以前的知识,熟悉了其引脚功能,为后面的程序编写积累了知识。这也在一定程度上提高了我们对时序图的了解,也提高了我们的编程能力。另外在做拓展部分是,还掌握了DS18B20的使用方法,此次课程设计着实让我学到了很多硬件和软件方面的知识。

通过此次课设,我对单片机的C语言编程有了初步的掌握,熟悉了几种芯片的使用方法,同时提高了动手操作的能力,理论和实践都有了提高。课设做完后,也发现了自己的一些不足,平时很少自己动手设计程序,以至于用的时候有很多困难,在以后的时间里,我会多设计一些电路,提高自己的动手实践能力。在此还要感谢设计中帮助过我的老师和同学。

6. 参考文献

[1]童诗白.模拟电子技术基础[M].北京:高等教育出版社,2005.

[2]阎石.数字电子技术(第五版)[M].北京:高等教育出版社,2005.

[3]邱关源,罗先觉.电路(第五版)[M].北京:高等教育出版社,2006.

[4]周灵彬,任开杰.基于Proteus的电路与PCB设计[M].北京:电子工业出版社,2010.

[5]穆秀春,冯新宇,王宇.Altium Designer原理图与PCB设计[M].北京:电子工业出版社,2011.

[6]郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2012.

[7]张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:高等教育出版社,2010.

[8]李升.单片机原理与接口技术[M].北京:北京大学出版社,2011.

7. 附件

7.1 电路原理图

图13 整体电路原理图

单片机课程设计 简易计算器的设计

目录 摘要 (1) 绪论 (1) 1.设计要求及功能分析 (1) 1.1 设计要求 (1) 1.2 基本功能 (2) 2.设计方案 (2) 2.1 硬件部分设计方案 (2) 2.1.1 单片机部分 (2) 2.1.2 按键部分 (2) 2.1.3 显示部分 (2) 2.2 软件部分设计方案 (2) 3.系统的硬件总体设计 (4) 3.1 系统的总体硬件设计 (4) 3.2 键盘连接电路 (4) 3.3 显示屏连接电路 (5) 3.4 单片机芯片AT89C51 (6) 3.5 外接电路 (7) 4.系统的软件总体设计 (8) 4.1 键盘识别程序设计 (8) 4.2 显示程序 (11) 4.3 运算程序 (11) 5.元器件清单及程序清单 (12) 5.1 元器件清单 (12) 5.2 程序清单 (12) 6.软件仿真 (18) 6.1 仿真验证 (18) 6.2 性能分析 (20) 6.3 出现故障及其原因 (20) 6.4 解决方法 (20) 结论 (20) 参考文献 (21) 致谢 (21) 附录PCB图 (22)

简易计算器的设计 学生:李飞马鹏超舒宏超 指导老师:王孝俭 摘要:单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 关键词:单片机、计算器、控制电路、仿真。 绪论 设计要求掌握数码管移位动态扫描显示的编程方法,掌握矩阵扫描的编程方法,掌握数据在内部运算的编程方法。设计任务实现最大8位正整数加、减、乘、除,具备清零、等于功能,16个按键功能依次为:数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除。 1.设计要求及功能分析 1.1设计要求: 本次单片微型计算机与接口技术课程设计做的是利用C51单片机为主体的计算器,实现了简单的加、减、乘、除功能。采取的是键盘输入和液晶显示屏的输出结果显示。主要硬件构成部分由四个,一个AT89C51单片机芯片,一个液晶显示屏,一个4*4键盘和一个排阻(10K)做P0口的上拉电阻,可以实现16位的数值操作计算。 1.2基本功能: 首先,计算器可现实8位数字,开机运行时,只有数码管最低位显示为“0”,其他位全部不显示;

带温度显示的万年历_数码管显示(附电路图和源代码)

设计报告 设计任务: 设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。并能准确计算闰年闰月的显示。设计要求: 通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示: 图3 仿真按键 4)温度采集部分: DS18B20温度传感器,测温范围-55℃~+125℃,固有测温分辨率0.5℃。独特的单线接口方式,DS18B20在与微处理器

连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20的采集数据通过DQ传入单片机,单片机读取数据后将数据输出!如图所示 : 程序如下: ReadOneChar(void) { unsigned char i=0;// 定义i用于循环 unsigned char dat = 0;// 读取的8位数据 for (i=8;i>0;i--)//8次循环 { DQ = 0;// 拉低DQ总线开始读时序 dat>>=1;// dat左移一位 DQ = 1; //释放DQ总线 if(DQ)// 如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat 即为读取的数据) //DQ=0,就跳过 dat|=0x80; Tdelay(4);// 延时以完成此次读时序,之后再读下一数据 } return(dat); 返回读取的dat } //写一个字节 WriteOneChar(unsigned char dat) { unsigned char i=0;// for (i=8; i>0; i--)// { DQ = 0;// DQ = dat&0x01;// Tdelay(5);//延时以完成此次读时序,之后再读下一数据

单片机课程设计-电子钟

中北大学 单片机课程设计说明书 数字钟设计 1 设计任务与要求 (1)

1.1设计任务 (1) 1.2设计要求 (1) 2单片机简介 (2) 2.1单片机的发展历程 (2) 3系统设计思路和方案 (3) 3.1系统总体方案 (3) 3.2硬件简介 (3) 3.2.1硬件选择 (3) 3.2.2 51单片机的构成 (4) 3.2.3 STC89C52RC引脚功能说明 (5) 3.2.4 LED简介 (6) 3.3 Keil调试 (7) 4、系统实物图 (9) 5、课程设计体会 (9) 参考文献 (10) 附录A (11) 附录B (13) 附录C (14)

1 设计任务与要求 1.1设计任务 本课题应完成以下设计内容: 1)硬件设计 设计数字钟的电路原理图,用PROTEL绘制硬件电路。制作实物。 2)软件设计 (1)时、分、秒的设置及显示; (2)画出程序框图; (3)调试与分析。用PROTEUS仿真。 3)课程设计说明书 1.2设计要求 本课程设计的基本要求是使学生全面掌握单片机控制系统设计的基本理论,熟悉掌握MCS-51 系列单片机的编程方法,具体要求:本例利用AT89C51的定时器和6位7段数码管,设计一个电子时钟。显示格式为“XX XX XX”,由左向右分别是:时、分、秒。

2单片机简介 2.1单片机的发展历程 单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段, 16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。、32位单片机推出阶段,以满足不同的用户需要。纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。 2.2实用价值与理论意义 在单片机模块里比较常见,数字时钟是一种用0数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更高的使用寿命,新词得到了广泛的应用。 数字时钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公用场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度远远超过老式钟表,钟表的数字化给人们的生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。因此研究数字时钟及扩大其应用有着非常现实的意义。

单片机课程设计计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号:

学生姓名: 学生成绩: 指导教师: 课程设计时间:至

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,,……;论文中的表、图和公式按章编号,如:表、表……;图、图……;公式()、公式()。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

带温度计的万年历

设计课题题目: 带温度计的万年历 一、设计任务与要求 1. 显示准确的北京时间(时、分、秒)及公历日期显示功能(年、月、日); 2. 可通过按键切换年、月、日及时、分、秒的显示状态; 3. 可随时可以调校年、月、日或时、分、秒; 4. 可每次增减一进行时间调节,也可快速增减进行时间调节; 5. 可显示环境温度。 二、系统设计方案 方案一、用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS 公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点。显示时间和温度使用数码管显示。 方案二、用主芯片为STC89C52的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,温度传感器使用 DS18B20。显示时间和温度使用LCD1602显示。 方案一片内定时器会导致计时节拍的时间误差,当进行年、月、日的日历计时,定时中断误差扥积累就会很大。使用片内定时器进行计时的时候,单片机始终要处于工作状态。才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。为了满足单片机系统的实时钟需求,本设计采用的是方案二,系统框图如图2-1所示。 图2-1 三、单元电路分析与设计 1. 原理分析 1.1主控制器 单片机STC89C52 具有低电压供电和体积小等特点,如图3-1所示。

1.2晶振电路 AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图3-2所示方式连接。晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz 之间,电容C1、C2取值范围在5~30pF 之间。 根据实际情况,本设计晶振选择频率为12MHZ ,电容选择30pF 如图3-2。经计算得单片机工作的机器周期为:12×(1÷12M )=1us 。振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上。时钟发生器是个二分频的触发器,它将振荡器的信号频率fosc 除以2,向CPU 提供两相时的时钟号。 1.3复位电路 时钟电路工作后, 芯片内部开始进行初始复位,如图3-3 。 1.4 LCD 显示电路 显示器是单片机常用的功能单元之一,显示器的工作是由单片机通过显示接口驱动的。本设计采用的是LCD1602显示电路图如图3-4所示。

基于单片机的电子时钟课程设计报告

目录 一、引言········ 二、设计课题········· 三、系统总体方案········· 四、系统硬件设计······ 1.硬件电路原理图 2.元件清单 五、系统软件设计········· 1.软件流程图 2.程序清单 六、系统实物图········ 七、课程设计体会········ 八、参考文献及网站········· 九、附录·········

一.引言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用HD74LS373驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。

基于51单片机的万年历的设计

单片机课程实训SCM PRACTICAL TRAINING

目录 第一部分课程设计任务书 (1) 一、课程设计题目 (1) 二、课程设计时间 (1) 三、实训提交方式 (1) 四、设计要求 (1) 第二部分课程设计报告 (2) 一、单片机发展概况 (2) 二、MCS-51单片机系统简介 (2) 三、设计思想 (3) 四、硬件电路设计 (3) 1. 总体设计 (3) 2. 晶振电路 (4) 3. 复位电路 (4) 4. DS1302时钟电路 (5) 5. 温度采集系统电路 (5) 6. 按键调整电路 (6) 7. 闹钟提示电路 (6) 五、软件设计框图 (7) 六、程序源代码 (8) 1. 主程序 (8) 2. 温度控制程序 (11) 3. 日历设置程序 (13) 4. 时钟控制程序 (18) 5. 显示设置程序 (20) 七、结束语 (23) 八、课程设计小组分工 (23) 九、参考文献 (23)

第一部分课程设计任务书 一、课程设计题目 用中小规模集成芯片设计制作万年历。 二、课程设计时间 五天 三、实训提交方式 提交实训设计报告电子版与纸质版 四、设计要求 (1)显示年、月、日、时、分、秒和星期,并有相应的农历显示。(2)可通过键盘自动调整时间。 (3)具有闹钟功能。 (4)能够显示环境温度,误差小于±1℃ (5)计时精度:月误差小于20秒。

第二部分课程设计报告 一、单片机发展概况 单片机诞生于20世纪70年代末,它的发展史大致可分为三个阶段: 第一阶段(1976-1978):初级单片机微处理阶段。该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。 第二阶段(1978-1982):高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围可达 64KB。 第三阶段(1982-至今)位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。 二、MCS-51单片机系统简介 MCS-51系列单片机产品都是以Intel公司最早的典型产品8051为核心构成的。MCS-51单片机由CPU 、RAM 、ROM 、I/O接口、定时器/计数器、中断系统、内部总线等部件组成。8051单片机的基本性能有: ◆8位CPU; ◆布尔代数处理器,具有位寻址能力; ◆128B内部RAM,21个专用寄存器; ◆4KB内部掩膜ROM; ◆2个16位可编程二进制加1定时器/计数器; ◆32个(4×8位)双向可独立寻址的I/O口; ◆1个全双工UART(异步串行通信口); ◆5个中断源,两级中断结构; ◆片内振荡器及时钟电路,晶振频率为1.2MHz~12MHz; ◆外部程序/数据存储器寻址空间均为64KB; ◆111条指令,大部分为单字节指令; ◆单一+5V电源供电,双列直插40引脚DIP封装。

AT89C51单片机C实现简易计算器

AT89C51单片机简易计算器的设计 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图:

二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

(二)、键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。 图 2 矩阵键盘布局图 矩阵键盘内部电路图如图3所示:

单片机课程设计--数字钟

单片机课程设计--数字钟 一、设计目的及意义 (1)巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力; (2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力; (3)对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、内容及步骤 二、原理图设计中简要说明设计目的 (1)功能:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。 (2)原理图中所使用的元器件功能在图中的作用 1.主要元件AT89C51 P3.2 /INT0(外部中断0) 定时器/计数器0溢出中断 2.LED及按键开关 用于时间的显示和设定 (3)各器件的工作过程及顺序 计时状态,AT89C51通过P1口持续向LED发送信号,使LED扫描显示刚前时分秒,当出现定时器/计数器0溢出中断时,时间加多1秒,AT89C51从P1口向LED输出新的时间;只按住SET UP键时,进入外部中断0,时间计数停止,通过点击按键H,M,S对时分秒进行调整,新的时间值送给了计时程序,松开SET UP键退出中断,回到计时状态; 按住SET UP键和ALARM键时,进入外部中断0,时间计数停止,通过点击按键H,M对时分进行闹钟定时,AT89C51记忆时分值,退出时先松开SET UP键再松开ALARM; 闹铃:当时间值和设定闹铃值一样时,进行闹铃一分钟。

(3)流程图 Y Y 按下设定键 N (4)程序清单 #include #define uint unsigned int #define uchar unsigned char sbit wela1=P2^0; sbit wela2=P2^1; sbit wela3=P2^2; sbit wela4=P2^3; sbit wela5=P2^4; sbit wela6=P2^5; sbit dp= P1^7; sbit c0= P0^0; sbit c1= P0^1; sbit c2= P0^2; sbit c3= P0^3; sbit c4= P0^4; sbit c5= P0^5; 定时器溢出中断0 LED 扫描显示 初始设定 时间加1秒 外部中断0 按下闹钟? 时间调整 闹钟定时 时间相同? 闹铃

推荐-基于51单片机控制的语音报时万年历课程设计1 精品

基于51单片机控制的语音报时万年历 -----20/11/20XX SDU(WH) 一.实验要求 运用单片机及相关外设实现以下功能: 1)万年历及时钟显示 2)时间日期可调 3)可对时间进行整点报时和随机报时 二.方案分析 根据实验要求,选用STC公司的8051系列,STC12C5A16S2增强型51单片机。此单片机功能强大,具有片内EEPROM、1T分频系数、片内ADC转换器等较为实用功能,故选用此款。 实验中,对日期和时间进行显示,显示的字符数较多,故选用12864LCD屏幕。该屏幕操作较为便捷,外围电路相对简单,实用性较强。 为了实现要求中的时间日期可调,故按键是不可缺少的,所以使用了较多的按键。一方面,单片机的I/O口较为充足;另一方面,按键较多,选择的余地较大,方便编程控制。 实验中,并未要求对时间和日期进行保存和掉电续运行,所以并未添加EEPROM和DS12C887-RTC芯片。实际上,对万年历来说,这是较为重要的,但为了方便实现和编程的简单,此处并未添加,而是使用单片机的定时器控制时间,精度有差别。且上电默认时间为20XX-01-01 09:00:00 之后需要手动调整为正确时间。 要求中的语音报时功能,这里选用ISD1760芯片的模块来帮助实现。此模块通过软件模拟SPI协议控制。先将所需要的声音片段录入芯片的EEPROM区域,之后读出各段声音的地址段,然后在程序中定义出相应地址予以控制播放哪一声音片段。 三.电路硬件设计 实际效果图 四.程序代码部分

Main.h #ifndef _MAIN_H #define _MAIN_H #include "reg52.h" #include "INTRINS.H" #include "math.h" #include "string.h" #include "key.h" #include "led.h" #include "12864.h" #include "main.h" #include "isd1700.h" #include "sound.h" extern unsigned int count; extern unsigned int key_time[8]; extern unsigned char key_new; extern unsigned char key_old; extern unsigned char stop_flag; extern unsigned char key_follow[8]; extern unsigned int key_num[8]; sbit BEEP=P3^7; sbit ISD_SS=P0^7; sbit ISD_MISO=P0^4; sbit ISD_MOSI=P0^5; sbit ISD_SCLK=P0^6; extern unsigned char date_show[]; extern unsigned char time_show[]; extern unsigned char sec; extern unsigned char min; extern unsigned char hour; extern unsigned char day; extern unsigned char month; extern unsigned char year_f; extern unsigned char year_l; extern unsigned char leap_year_flag;

单片机课程设计——基于C51简易计算器

单片机双字节十六进制减法实验设计 摘要 本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计 算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus 仿真。 引言 十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阴极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单.................................. 一、设计任务和要求

单片机课程设计数字电子钟[修改好的]

单片机技术课程设计说明书数字电子钟 院、部:电气与信息工程学院 学生姓名:郭红满 指导教师:王韧职称副教授 专业:通信工程 班级:1102 完成时间:2013-12-20

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键K1、K2、K3和K4键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。 关键词电子钟;AT89S52;硬件设计;软件设计

ABSTRACT Clock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons K1, K2, K3 and K4 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value. Key words Electronic clock;AT89S52;Hardware Design;Software Design

单片机课程设计—万年历[1]

郑州轻工业学院 软件学院 单片机与接口技术课程设计总结报告 设计题目:电子万年历 学生姓名: 系别: 专业: 班级: 学号: 指导教师: 2011年12月16日

设计题目: 电子万年历 设计任务与要求: 1、显示年月日时分秒及星期信息 2、具有可调整日期和时间功能 3、增加闰年计算功能 方案比较: 方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用 AT89C52单片机为控制中心,显示模块采用普通的共阴LED数码管,键输入采用中断实现 功能调整,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通 过按键盘开关实现对时间、日期的调整。 方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源 电路、复位电路、晶振电路等模块。主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对 时间、日期的操作。 两个方案工作原理大致相同,只有显示模块和时钟电路不同。LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功 能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说 要昂贵些,但是基于本设计显示的东西较多,若采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块。DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的 应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具 有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。单片机有定时 器的功能,但时间误差较大,且需要编写时钟程序,因此采用DS1302作为时钟电路。 对比以上方案,结合设计技术指标与要求我们选择了方案二进行设计。

单片机课程设计——基于C51简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

万年历阴历星期温度

#include #include #include #define uchar unsigned char #define uint unsigned int sbit CLK=P1^1; //DS1302时钟线 sbit SDA=P1^0; // DS1302数据线 sbit RST=P1^2; //DS1302复位线 sbit RS=P2^0;//数据/指令选择端口 sbit RW=P2^1;//读写端口 sbit EN=P2^2;//使能端口 sbit K1=P3^4; // 选择 sbit K2=P3^5; // 加 sbit K3=P3^6; // 减 sbit K4=P3^7; // 确定 uchar tCount=0;//一年中每个月的天数,2月的天数由年份决定 uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; uchar *WEEK[]={"sun","mon","tus","wen","thu","fri","sat"};//周日,周一到周六 uchar LCD_DSY_BUFFER1[]={"Date 00-00-00 "}; //LCD显示缓冲 uchar LCD_DSY_BUFFER2[]={"Time 00-00-00 "}; uchar DateTime[7]; //所读取的日期时间 char Adjust_Index=-1; //当前调节的时间:秒,分,时,日, uchar Change_Flag[]="-MHDM-Y"; uchar Read_LCD_State();//读LCD状态 void LCD_Busy_Wait();//判忙 void Write_LCD_Data(uchar dat);//写数据 void Write_LCD_Command(uchar cmd);//写命令 void Init_LCD();//LCD初始化 void Set_LCD_POS(uchar p);//设置显示位置 void Display_LCD_String(uchar p,uchar *s);//写字符串 void DelayMS(uint x)//延时 { uchar i; while(x--) for(i=0;i<120;i++); } uchar Read_LCD_State()//读LCD状态 { uchar state;

单片机课程设计电子钟汇编语言

ORG 0000H MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H MOV R0,#00H MOV R1,#00H CLR P3.0 CLR P3.1 UU: MOV TMOD ,#00H MOV TH0,#00H MOV TL0,#00H CLR TR0 MM: MOV A,40H MOV 50H,#11111110B MOV P2,50H MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P0,A LCALL YY MOV A,50H RL A MOV 50H,A MM1: MOV P2,50H MOV DPTR,#TAB MOV A,41H ADD A,#0AH MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM2: MOV P2,50H MOV DPTR,#TAB MOV A,42H

MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM3: MOV P2,50H MOV DPTR,#TAB MOV A,43H ADD A,#0AH MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM4: MOV P2,50H MOV DPTR,#TAB MOV A,44H MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM5:MOV P2,50H MOV DPTR,#TAB MOV A,45H ADD A ,#0AH MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM6: MOV P2,50H MOV DPTR,#TAB MOV A,46H

单片机课程设计报告(万年历)

v .. . .. 目录 一、摘要 (2) 二、设计任务 (4) 三、总体方案设计与论证 (4) 1、液晶显示模块 (4) 2、实时时间计算模块 (5) 3、实时环境温度采集模块 (5) 4、报警模块 (6) 5、设置模块 (6) 四、总体方案组成框图 (7) 五、系统硬件设计 (8) 1、LCD显示模块 (8) 2、实时时间计算模块 (12) 3、实时环境温度检测模块 (16) 4、报警模块 (21) 5、设置模块 (22) 六、系统软件设计 (23) 七、系统硬件电路设计 (24) 八、系统硬件PROTEUS仿真原理图 (25) 九、系统硬件仿真运行情况图 (26) 1、显示欢迎界面 (26) 2、显示实时时间 (26) 3、显示当前温度 (27) 4、时间设置 (27) 5、最高报警温度设置 (28) 6、闹钟时间设置 (28) 7、超温 (29) 8、闹钟时间到 (29) 附录一:实物图 (30) 附录二:PCB图 (32) 附录三:源程序代码 (33) 附录四:参考文献 (62) . . . 资料. .

v .. . .. 摘要 单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作而成的电子万年历,该电子万年历包括三大功能:实时显示年、月、日、时、分、秒;实时监测环境温度(可根据需要启动高温报警功能);电子闹钟。M bn 本设计采用的是AT89S52单片机,该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。 计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。 温度检测采用DALLAS公司的数字化温度传感器,该芯片采用的是独特的“一线总线”的方式与单片机进行通信,一线总线独特而且经济的特点,是用户可以轻松的组建传感器网络,为测量系统的构建引入全新的概念。实时温度采用一线总线的方式传输大大的提高了信号的抗干扰性,分辨率可通过软件设置,其小巧的体积为各种环境下测量温度提供了方便。 . . . 资料. .

相关主题
文本预览
相关文档 最新文档