单片机期末课程设计报告_第1页
单片机期末课程设计报告_第2页
单片机期末课程设计报告_第3页
单片机期末课程设计报告_第4页
单片机期末课程设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

《单片机与嵌入式系统》

课程设计报告

课题名称:基于单片机控制的数字温度计

学院:XXXXXXXXXXXXXXX学院

系:XXXXXXXXXXXXXXXXXXX系

班级:XXXXXXX班

学号:XXX

姓名:Xxx

【中文摘要】随着科学技术的发展,单片机技术在人们

的生活中发挥着越来越重要的作用,其应用的领域也在不断

扩大,在现代工业、科研、生活等各个领域得到了广泛的应

用,本文将介绍一种基于单片机控制的数字温度计,可以随

时显示当前环境中的温度,其附加功能是通过4x4键盘修改进

入系统的密码和退出系统。

【关键词】AT89c51,温度计,DS18B20,AT24C02,12864

【英文摘要】Withthedevelopmentofscienceand

technology,SCMtechnologyinplayinganincreasingly

importantroleinpeople'slife,itsapplicationfieldsarealso

growing,livinginthemodernindustry,scientificresearch,and

otherfieldshasbeenwidelyused,thisarticleintroducesakind

ofdigitalthermometerbasedonsingle-chipmicrocomputer

control,candisplaythecurrentatanytimeintheenvironment

temperature,theadditionalfunctionismodifiedby4x4

keyboardenterthesystempasswordandexitsystem.

【关键词】AT89c51,Thethermometer,DS18B20,

AT24C02,12864

目录

引言4

第一章系统总体设计5

第二章硬件详细设计5

2.1单片机主控模块5

2.2按键输入模块9

2.3液晶显不模块10

2.4EEPROM模块12

2.5温度传感器模块14

第三章软件详细设计17

3.1系统主程序流程图17

3.2按键输入程序流程图18

3.3液晶显不程序流程图19

3.4EEPROM读写程序流程图20

3.5温度采集程序流程图22

第四章系统仿真23

4.1系统仿真原理图23

4.2仿真结果23

第五章小结24

第六章附录25

引言

随着科学技术的发展,单片机技术在人们的生活中发挥着越

来越重要的作用,其应用的领域也在不断扩大,在现代工业、科

研、生活等各个领域得到了广泛的应用,如工业测控、智能仪器

仪表、日用家电、通信产品,等等,这些都离不开单片机的应用。

单片机已成为现代电子系统中最重要的智能化核心部件。

本课程设计是在学习了单片机的基本原理的基础上进行的,

综合所学单片机知识完成一个单片机应用系统设计并进行仿真,

从而加深对单片机知识的理解;进一步熟悉和掌握单片机的内部

结构和工作原理,了解单片机应用系统设计的基本方法和步骤。

课程设计的目标是用单片机和温度传感器及相关部件实现温

度的测量和液晶显示,并通过4x4键盘实现密码的输入及修改,

对各个功能模块进行相应的设计和程序的编写,最后在proteus软

件上进行仿真,实现目标功能。

第一章系统总体设计

基于单片机控制的数字温度计总体设计方框图如下所示,主控

制器用AT89c51,温度传感器用DS18B20,用12864液晶显示温度信

息及相关设计信息,用4x4键盘实现进入系统的密码控制。

图1;基于单片机控制的数字温度计总体设计方框图

第二章硬件详细设计

2.1单片机主控模块

2.1.1AT89C51简要介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器

(FPEROM一FalshProgrammableandErasableReadOnlyMemory)的

低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL

高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和

输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个

芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制

系统提供了一种灵活性高且价廉的方案。

2.1.2引脚功能介绍

GND:接地。

P00:P0口为一个双向8位三态I/O口,每个口可独立控制,

内部没有上拉电阻,为高阻状态,不能正常地输出高低电平,在使用

时务必要外接上拉电阻,一般选择接入10千欧的上拉电阻。

Pl□:P1口是一个内部提供上拉电阻的8位双向I/O口,P1□

缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为

高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是

由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地

址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲

器可接收,输出4个TTL门电流,当P2口被写“1”时一,其管脚被内

部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被

外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外

部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地

址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部

八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内

容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P30:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收

输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电

平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出

电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89c51的一些特殊功能口,如下表所示:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周

期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于

锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器

频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而

要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如

想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行

MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如

果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,

每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次

有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器

(OOOOH-FFFFH),不管是否有内部程序存储器。注意加密方式1时,

/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储

器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)o

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2.1.3最小系统(晶振、复位)电路图

最小系统(晶振、复位)电路图如下图所示。

P3.7TO

1±-P3.6/VVRHi

P3.5/T1

P3.4/T0Hi

1=P3.3)lNTrHi

D1土P3.2AWHg

R1P3.1/TXDl

P3.0^RXD

470R浸

<TEXT>LED-BIBYP2.7/A15

<TEXT>P2.6/A14

31

EAP2.5/A13Hi

ALEP2.4/A12

PSENP2.3/A11

P2.2/A10Hi

10uFP2.1/A9hg

<TEXT>P2.0/A8口

RSTP0.7/AD7Hi

P0.6/AD6嚏

P0.5/AD5

P|R2P0.4/AD4g

10kXTAL2P0.3/AD3

T<TEXT>

P0.2/AD2

P0.1/AD1

3L-aa.

>XTAL1P0.0/AD0

AT89C51

<TEXT>

X1

CRYSTAL

<TEXT>

C3C2

33pF33pF

<TEXT><TEXT>

图2-1最小系统(晶振、复位)电路图

2,2按键输入模块

2.2.1矩阵键盘与单片机硬件连接

下图为protues中按键输入模块矩阵键盘与AT89C51连接的电路

图,由图可知,矩阵键盘的4行分别与单片机的PPO~P1A3相连,矩

2.2.2按键扫描原理

矩阵键盘两端都与单片机的I/O口相连,在检测时需认为通过单

片机I/O口送出低电平。检测时,先拉低第一行的电平,检测厂4列

有无键按下,如有则等待按键松开,返回键值,如无看第二行;拉低

第二行的电平,检测1~4列有无键按下,如有则等待按键松开,返回

键值,如无看第三行;拉低第三行的电平,检测厂4列有无键按下,

如有则等待按键松开,返回键值,如无看下行;拉低第四行的电平,

检测1~4列有无键按下,如有则等待按键松开,返回键值,如无则返

回无键按下。

2.3液晶显示模块

简要介绍12864引脚功能。

介绍12864与单片机的硬件连接。给出电路图。

说明液晶显示字符的原理。

2.3.112864引脚功能

12864引脚功能说明如下:

CS1,CS2一片选输入信号,分别用于选择左屏和右屏,低电平有

GND一模块的电源地

VCC一模块的电源正端

VO—LCD驱动电压输入端

DI—寄存器选择控制线,Dl=l时,表示进行的是数据操作;DI=O

时,表示进行的是写指令或者读状态操作

R/W一读写选择信号,R/W=l表示读,R/W=O表示写

E一读写使能信号,在E的下降沿,数据被锁存到列驱动器

KS0108B,在E高电平期,数据被读出

DB0~DB7—双向数据总线,传输数据的通道

RST一复位,低电平有效

2.3.212864与单片机的硬件连接

下图为protues中液晶显示模块12864液晶与AT89C51连接的电

路图,由单片机的P2A3和P2A4引脚控制片选输入信号,DI、R/W、

E三个引脚分别由单片机的P2A0~P2A2三个引脚控制,DBCTDB7分别

与单片机的POAfTPO”相连。

LCD1

LGM12641BS1R

图2-312864液晶与AT89C51连接的电路图

2.3.3液晶显示字符的原理

12864点阵液晶显示模块就是由128*64个液晶显示点组成的一

个128歹『64行的阵列。每个显示点对应一位二进制数,1表示亮,0

表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某

个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形

或汉字的点阵信息由自己设计•,问题的关键就是显示点在液晶屏上的

位置(行和列)与其在存储器中的地址之间的关系。

12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,

每半屏有一个512*8bits显示数据RAMo左右半屏驱动电路及存储器

分别由片选信号CS1和CS2选择。

显示点在64*64液晶屏上的位置由行号(line,0~63)与列号

(column,0-63)确定。512*8bitsRAM中某个存储单元的地址由页地

址(Xpage,0~7)和列地址(Yaddress,0~63)确定。每个存储单元存储

8个液晶点的显示信息。为了使液晶点位置信息与存储地址的对应关

系更直观关,将64*64液晶屏从上至下8等分为8个显示块,每块包

括8行*64列个点阵。每列中的8行点阵信息构成一个8bits二进制

数,存储在一个存储单元中。存放一个显示块的RAM区称为存储页。

即64*64液晶屏的点阵信息存储在8个存储页中,每页64个字节,

每个字节存储一列(8行)点阵信息。因此存储单元地址包括页地址

(Xpage,0~7)和列地址(Yaddress,0~63)o

2.4EEPROM模块

2.4.1AT24C02的引脚

AT24co2的引脚如图,各引脚功能如下:

SCL:串行时钟输入管脚,用于产生器件所有数据发送或接收的

时钟。

SDA:双向串行数据/地址管脚,用于器件所有数据的发送或接收。

AO、Al、A2:器件地址输入端。这些输入脚用于多个器件级联

时设置器件地址,当这些脚悬空时默认值为0。使用AT24co2最大可

级联8个器件,如果只有一个24co2被总线寻址,这三个地址输入脚

AO、Al、A2可悬空或连接到VSS。

WP:写保护。如果WP管脚连接到Vcc,所有的内容都被写保护,

只能读。当WP管脚连接到Vss或悬空,允许器件进行正常的读/写操

作。

VSS:电源地(GND)。

VCC:电源电压(5V)

□vAT2482芯片有8个引脚,其中i

AQCPcc

至地址引期

27□WPA2~A0

SDA串行数据地址引划,

36

A2J□SCLSCL串行时钟?倒

Vss匚,2_□SOAWP因注到\区械写保妒只能读,连到

Yss或悬空允讦进行正常的读写操作।

AT24O1菅脚示意图VCC电源漏

GND接出t

2.4.2AT24C02与单片机的硬件连接

AT24C02的时钟引脚和数据地址引脚分别接在单片机的P3A6引

脚和P3A7弓|脚,三个地址引脚和WP引脚直接接地。

图2-4AT24C02与单片机的硬件连接

2.4.3AT24C02数据读写的原理

它通过SDA(串行数据线)及SCL串行时钟线)两根线在连到总线

上的器件之间传送信息、,并根据地址识别每个器件。数据传送:当时

钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开

始”信号,起始状态应处于任何其他命令之前;当SCL线处于高电平

时,SDA线发生低电平到高电平的跳变为“结束”信号。

2.5温度传感器模块

2.5.1DS18B20引脚功能:

DS18B20引脚功能如下:

GND一电压地

DQ一单数据总线

VDD—电源电压

NC一空引脚

引脚排列

D4UJ0

引脚说明

GND-地

g-数据1加

依"可选VDD

MC-空脚

图2-5DS18B20引脚图

2.5.2DS18B20与单片机的硬件连接

DS18B20的DQ端与单片机的外部中断0引脚相连,并通过上拉

电阻连到电源,VCC端连接电源,GND端接地。

P2.0/A8

P2.1/A9

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15

P3.0/RXD

P3.1/TXD

P3.2)iNT0'

P3.3/iNlF

P3.4/T0

P3.5/I1

P3.6/WR

P3.7W

图2-6DS18B20与单片机的硬件连接

2.5.3温度采集的原理

DS18B20工作原理及应用:DS18B20的温度检测与数字数据输

出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分

为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有

必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资

源,它们分别是:ROM只读存储器,用于存放DS18B20ID编码,

其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯

片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数

据在出产时设置不由用户更改。DS18B2O共64位ROM。RAM数据

暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共

9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数

据值信息、,第3、4个字节是用户EEPROM(常用于温度报警值储存)

的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个

EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得

到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存

单元。第9个字节为前8个字节的CRC码。EEPROM非易失性记忆体,

用于存放长期需要保存的数据,上下限温度报警值和校验数据,

DS18B2O共3位EEPROM,并在RAM都存在镜像,以方便用户操作。

DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单

总线为开漏所以需要外接一个4.7K的上拉电阻。如要采用寄生工作

方式,只要将-VDD电源引脚与单总线并联即可。

第三章软件详细设计

3.1系统主程序流程图

3.2按键输入程序流程图

3.3液晶显示程序流程图

3.4EEPROM读写程序流程图

写操作流程

读操作流程

3.5温度采集程序流程图

第四章系统仿真

4.1系统仿真原理图

4.2仿真结果

LCD1

LGU12G«1B81R

请输入密码:余丹

Z013Z56Z

简易温度计设计

x:N°oao-

g§5^5ziuiSS

bb—LLb]

■N)sE)■ftft3I3

IM□r,nwr-

二;

第五章小结

本系统实现了期末设计题目的所有要求,包括进入系统前先输

入密码,判断密码正确再进入系统,进入系统后显示设计者信息,延

时显示主菜单,按键选择菜单内容,按键修改系统密码,按键退出系

统等功能。

在这次的课程设计中,我学到了很多东西。在画protues仿真图

前要先确定自己做的设计的目的功能,选好每个功能对应的的函数模

块需要的芯片,将芯片与单片机主控制模块的引脚进行正确有条理的

连接,最后再根据仿真图以及各芯片的驱动程序编写源代码。在编写

程序的过程中,一定要注意各个引脚与单片机I/O口的对应的连接,

否则即使源代码写好了仿真还会出错,且很难找到错误点O

老师是在四周前布置的期末设计作业,在这四周中,老师也讲

解了很多关于这个课程设计的思路以及代码的编写,在写这份课程

设计报告的时候我还通过翻阅资料和查阅文库加深了更多关于

AT24co2、DS18B20.12864液晶、4x4键盘等的硬件知识的了解。

但系统还有一些不足之处,比如在显示温度的时候第一次总会

显示+85.0C,以自己目前的知识还不能做到将这个缺点进行更好的改

正,我会在日后的学习中对此进行更加完善的改进。

第六章附录

#include<reg51.h>

#include<string.h>

#defineucharunsignedchar

#defineuintundsignedint

externvoidLCDInitialize();

externvoidDisplayString(ucharp,ucharl,uchar*s);

externvoidClearScreen();

externfloatReadTemperature();

externvoidDisplayChar8X16(ucharp,ucharI,ucharc);

externvoidWriteString(ucharadd,uchar*s);

externvoidReadString(uchar*s,ucharadd.ucharn);

externucharkeyscan();

ucharPassword[7];

ucharUserPassword口="000000";〃使用者输入的密码

ucharkeyval;

ucharTempBuffer[]="+000.0C";

voidDelayxms(intx)

(

inti;

ucharj;

for(i=0;i<x;i++)

for(j=0;j<120;j++);

}

voidlnputPassword()

(

uchari,keyJine=O;

for(i=0;i<6;i++)

key=keyscan();

while(key>9)

key=keyscan();

)

UserPassword[i]=key+48;

DisplayChar8X16(2,line/*,);

line=line+8;

)

while(key!=15)

(

key=keyscan();

)

}

voidCheckPassword()

(

ReadStringfPassword.OxOO/G);

Delayxms(200);

while(strcmp(UserPassword,Password)!=0)

ClearScreen();

DisplayString(O,O,"密码错误");

Delayxms(2000);

ClearScreen();

Displaystring。。,"请重新输入

lnputPassword();

)

ClearScreenf);

DisplayString(O,O,"密码Right");

DisplayString(2,0,"欢迎进入系统");

D

温馨提示

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

评论

0/150

提交评论