版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的时钟及测温系统的开发
摘要
单片机
是单片微型计算机的简称,是一种集成
电路
芯片
,是采用
超大规模集成电路
技术把具有数据处理能力的
中央处理器
CPU
随机存储器
RAM、多种I/O口和
中断系统
、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的
微型计算机系统
,在工业控制领域广泛应用。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。可以说单片机早已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能
IC卡
,民用豪华轿车的安全保障系统,
录像机
、
摄像机
、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开
单片机
。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。单片机以其最优的性价比在人们日常的生产生活中占据着不可动摇的地。
本文就是围绕单片机为中心,搭建外围电子线路来对电子时钟以及测温系统的开发。
关键词:单片机;集成电路;智能机械;电子线路
ABSTRACT
MCUisshortforsinglechipmicrocomputer.ItisakindofintegratedcircuitchipsandapplylargescaleintegratedcircuittechnologywithdataprocessingabilityofthecentralprocessorCPURAM,avarietyofI/Omouthandinterruptsystem,timer/counterfunctionintegrationtoapieceofsiliconconsistingofasmallandperfectmicrocomputersystemwhichiswidelyusedinindustrialcontrolfield.
MCUiswidelyusedinmanyareas,suchasinstrumentsandmeters,householdappliances,medicalequipments,aerospace,specialequipmentofintelligentmanagementandprocesscontrol,MCUhaspenetratedintoeveryfieldofourlives,sotospeak,itisdifficulttofindwheretherewasnosignofthesinglechipmicrocomputer.Variouskindscontrolinstrumentofplane,computernetworkcommunicationanddatatransmission,real-timecontrolanddataprocessing,industrialautomationprocesswidelyusedavarietyofsmartICcard,civilianluxurycarsecuritysystems,videocamera,videocamera,automaticwashingmachinecontrol,aswellasprogram-controlledtoys,electronicpets,etc.,theseareinseparablefromthesinglechipmicrocomputer.Nottomentiontherobotinthefieldofautomaticcontrol,intelligentinstruments,medicalequipmentandallkindsofintelligentmachines.SinglechipmicrocomputerwithoptimalpriceoccupytheunshakablestateinPeople'sDailylife.
Thisarticleisaboutthesinglechipprocessorasthecenter,buildaperipheralcircuittothedevelopmentofelectronicclockandtemperaturemeasuringsystem.
Keywords:MCU;integratedcircuit;intelligentmechanical;electroniccircuit.
目录
TOC\o"1-2"\h\z\u
978
第1章主设计方案
7
25773
1.1主设计方案程序框图
7
23029
1.2主要设计思路
8
14147
第2章系统硬件电路设计
9
6621
2.1USB及电源电路
9
11441
2.2下载部分电路
10
1470
2.3主控制模块
13
16806
2.4测温部分电路
17
1461
2.5显示部分
18
11114
2.6其他部分电路
19
6419
第3章系统软件设计
24
22126
3.1软件系统程序框图
24
25421
3.2Keil-uVisi3软件简介及程序调试
25
9742
3.3程序源代码
27
14621
总结
35
26538
参考文献
36
第1章主设计方案
随着科技的迅猛发展,当今社会智能化系统随去可见,大到航空航天,小到居家生活(物联网),可以说智能化系统已遍布生活、工作的每一个角落,让我们的生活以及工作更加简单,快捷。说到智能化,可以说单片机是无人不知无人不晓的,它已其最优的性价比让其在智能化系统中屹立不倒。
本文是基于STC89C52RC做一个简单的开发:硬件部分以1602(或者12864)为显示界面,单片机为主控芯片,以PL2303为中心的下载系统,以DS18B20芯片为温度采集系统配置其它外围电路等;编程语言使用的是C语言,使用KIEL3对其进行仿真,PCB绘制使用的是AD10.0版本,软件及语言部分具体部分将在后面进行详细介绍。
主设计方案程序框图
图1-
SEQ图1-\*ARABIC
1
主设计方案程序框图
1.2主要设计思路
此设计是建立在单片机基础之上的简单开发:首先此次开发围绕单片机开始的,所以围绕单片机的最小系统必不可缺少,这里不多说,在硬件介绍中将做详细讲解;其次,电源和下载部分当然也不可缺少,单片机要求电源是一般是直流+5V,在本次设计中没有对电源部分做特殊设计,为直接从外部接入+5直流电压,或者直接从电脑USB接入直流电源;硬件与电源部分解决后,就是下载模块。我们的软件部分是在我们的上位机(PC机)上完成的,想下载到我们的MCU中必须要有下载模块,这里的下载有两种方法:第一种是USB转串口下载,使用的是PL2303系列芯片;二是直接串口下载,使用的是MAX232。在这里我选用的是第一种方案;在测温模块中,我选用的是,此模块极其简单,没有任何外围电路,只需将VCC、GND以及与MCU引脚连接正确即可,至于怎么能实现温度采集与传送将在软件部分详细介绍。时间采用的是二十四小时制,全部由软件完成,当然在时间的调节必须要涉及硬件方面的按钮,所以设计了两个按钮用以对时间进行调节;最后就是显示模块,在本此设计中显示模块我设计了两种一种是带字库的LCD1602(只显示英文与字符),另一种则是不带字库的LCM12864(中英文均可显示),两种显示模块各有各自的优缺点,相互互补以满足需要。
第2章系统硬件电路设计
2.1USB及电源电路
图2-
SEQ图2-\*ARABIC
1
USB及电源电路
此部分电路兼顾电源以及连接PC机,为系统提供电源和下载程序的接口。首先在本设计中我使用的下载模式是USB转串口,我们电脑USB有四个引脚其功能如下:
引脚1:电源,是USB设备供电接口(+5V)。
引脚2:接入南桥,用于数据传输,及D-。
引脚3:和引脚2作用一样用也是来数据传输,但两个引脚各有不同,传输信息高低位不同,及D+。
引脚4:接地线,让电路完整。
其示意图如下:
图2-
SEQ图2-\*ARABIC
2
USB示意图
上图中显示的是电脑USB以及本次设计的芯片上使用的USB两种示意图,外观虽然有差异,但其功能相同。通过USB数据线的连接,每个引脚对应连接,其中D-、D+分别接下载部分芯片PL2303的第16(DM)、15(DP)引脚,给单片机下载数据。P4部分为单独设计,当没有USB为系统提供电源时,可以在P4部分直接接入+5V的直流电源为系统供电。加上470uf的电解电容是为了滤波,是为系统提供一个可靠的电源的重要保证。在这里二极管起到很大的作用:当电源正负极连接正确时,二极管的有无没任何影响;但当正负极刚好接反,那么二极管将发挥其重要作用,保持断路状态保护电路。在这里发光二极也起着相当重要的作用:电源是否正常工作是由发光二极管是否正常发亮来指示,S1闭合时,若二极管发光则说明电源部分正常工作,反正则熄灭。
2.2下载部分电路
“工欲善其事,必先利其器”,在整个设计下载部分可以说起到这样的作用,一个好的下载电路会使后面的软件调试变的简单方便。考虑到软件调试要不断修改、下载源程序,所以在本次设计中我选用的是USB转串口下载方便手动连接。USB转串口下载我选择的芯片是PL2303,下面将对其做一个简单的介绍:
PL2303是Prolific公司生产的一款高度集成的RS232-USB接口转换器,为了提供一个解决的RS232全双工异步串行通信装置与USB功能接口方便连接。该器件内置USB控制器,USB收发器,振荡器,并与所有的UART的调制解调器控制信号,只需添加几个电容器可实现USB信号与RS232信号的转换,可以方便地嵌入到手持设备。该器件作为USB/RS232双向转换器,一方面从主机接收USB数据并将其转换为RS232信息流格式发送给外设;从接收数据到外设,另一方面,数据格式传送回主机。这些作品都是由设备自动完成,无论对于开发固件设计的。通过使用USB块传输模式,使用大型数据缓冲区和自动流量控制,PL2303HX能够实现更高的吞吐量比传统吗?UART(通用异步收发器)端口,高达?115200?bps的波特用于更高的性能使用。
以下为其示意图和实物图以及对应引脚图:
图2-
SEQ图2-\*ARABIC
3
PL2303实物图和示意图
引脚特性如下表:
表2-1PL2303对应引脚
引脚
名字
类型
引
脚
描
述
1
TXD
输出
数据输出到串口
2
DTR_N
输出
数据终端准备好,低电平有效
3
RST_N
输出
发送请求,低电平有效
4
VDD_325
电源
RS232
的电源,为串行端口信号的电源引脚;当串口为3.3V,这应该是3.3;
当串行端口是2.5V,这应该是2.5V
5
RXD
输入
串口数据输入
6
RI_N
输出/输入
串行端口(环指示器)
7
GND
电源
接地
8
NC
NA
无连接
9
DSR_N
输出/输入
串行端口(数据集就绪)
10
DCD_N
输出/输入
串行端口(数据载波检测)
11
CTS_N
输出/输入
串行端口(清除发送)
12
SHTD_N
输出
控制
RS232
收发器关机
13
EE_CLK
输出/输入
串行EEPROM时钟
14
EE_DATA
输出/输入
串行
EEPROM
数据
15
DP
输出/输入
USB
端口
D+信号
16
DM
输出/输入
USB
端口
D-信号
17
VO_33
输出
常规
18
GND
电源
接地
19
NC
NA
无连接
20
VDD_5
电源
USB
端口的
21
GND
电源
接地
22
GP0
输出/输入
通用
I/O
引脚
0
23
GP1
输出/输入
通用
I/O
引脚
1
24
NC
NA
无连接
25
GND_A
/
模拟地锁相环
26
PLL_TEST
输入
PLL锁相环测试模式控制
27
OSC1
输入
晶体振荡器输入
28
OSC2
输出/输入
晶体振荡器输出
上图对PL2303的引脚分布和功能做了一个简单的介绍,根据各引脚的作用,设计下载部分电路图如下:
图2-
SEQ图2-\*ARABIC
4
下载部分电路图
对于PL2303来说,电源的正确连接是其正常工作的首要条件。在电源连接正确的前提下,最重要的就是起震电路对于芯片来说就相当于心脏对于人的作用,一个好的震荡电路才能使芯片正常稳健的工作。在本次设计中晶振选用的是12MHz,电容选用的是20pf,如上图所示,晶振电路分别连接芯片的晶体振荡器的输入输出端及OSC1和OSC2。是其中RXD和TXD(及第1和第5引脚)分别连接单片机的P3.0和P3.1(及第10和第11引脚)。如上电路图中所示,电源地之间需经电容隔开,相当于在给芯片输入电源之前给其滤波,提高了电源的质量。
2.3主控制模块
下面介绍的就是我们本次设计的最核心的模块控制模块,所有硬件设计都是围绕控制器所展开。本次设计我所选用的是STC89C52。下面将对其做一个简单的讲解:
STC89C52为一种能耗极低且性能极高的8位微控制器,内部自带有8K的Flash。正是因为像此单芯片而且集成了非常灵活的8位微控制器和在系统可编程Flash,这些优点使其在众多的嵌入式系统中应用极为频繁广泛。
其参数如下:
1.增强型8051
单片机
,6时钟/
机器周期
和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.
2.工作电压:5.5V~3.3V(5V单片机)
3.
工作频率
范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4.用户应用程序空间为8K
字节
5.片上集成512字节RAM
6.通用I/O口(32个),复位后为:P0/P1/P2/P3是
准双向口
/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用
编程器
,无需专用
仿真器
,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。
8.具有EEPROM功能
9.具有
看门狗
功能
10.共3个16位
定时器
/计数器。即定时器T0、T1、T2
11.
外部中断
4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发
中断方式
唤醒
12.通用异步
串行口
(UART),还可用定时器
软件
实现多个UART
13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)
14.DIP
封装
)
以下为其实物图以及示意图
图2-
SEQ图2-\*ARABIC
5
STC89C52实物图及示意图
VCC:供电电压。
GND:接地。
P0/P1/P2/P3
口均有8个双向的输入和输出端口:其中P0口位漏极开路,需要外部接上拉电阻,其他三个端口内部均有上拉电阻,无需外部另外添加上拉电阻。
P0/P1/P2/P3端口,当向其中写1时,P0口位高阻输入,而其他则为被内部上拉至高电平。P0/P1/P2在FLASH编程时起到相关作用:在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高,P1口作为第八位地址接收;P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
。P3口不仅做为普通的双向I/O口,在单片机中还有一些特殊的作用,其作用如下功能表所示:
表2-2P3口引脚功能图
引脚
名称
引
脚
描
述
P3.0
RXD
串行输入口
P3.1
TXD
串行输出口
P3.2
INT0
外部中断0
P3.3
INT1
外部中断1
P3.4
T0
记时器0外部输入
P3.5
T1
记时器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保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。)
了解了STC89C52芯片之后,我们就可以自己动手设计其最小系统了,以下为我所设计的单片机的最小系统原理图:
接下图
图2-
SEQ图2-\*ARABIC
6
STC89C52单片机最小系统
下面对我做设计的最小系统做一个简单的讲解:首先,无论什么芯片想要工作的首要条件就是给其输入一个合适的电源,STC89C52输入电压范围为3.3~5.5V之间,以+5V直流电源最佳。其次就是使芯片能正常工作的心脏——晶振电路,和PL2303一样,晶振对单片机的工作至关重要,直接影响单片机能不能工作,以及工作的频率。STC89C52单片机的机器工作频率=晶振频率/12,在本次设计中我使用的是频率为12MHz的晶振,所以单片机的机器周期=12/12*10-6=0.000001秒。使用不同频率的晶振所得到的的机器周期就各不相同,运算速度也就不同,但在控制精度不是特别精确的情况之下足可以满足要求。在本次设计中我为晶振电路所选择的起震电容是瓷片电容且为30pf,用以满足起震时形成震荡的需要。另外在硬件设计中需要设计一个复位电路,单片机复位电路要求是只要复位按键被按下需要产生两个机器周期的高电平供给单片机的第九引脚及复位引脚(RST)。在之前也说过单片机的P0内部没有上拉电阻,所以其输出时状态不定,为了让其输出状态稳定,所以我们必须为其在外部接入接入电源,拉高其电位,在这里所说的上拉电阻,此上拉电阻则是为了限流作用。这样单片机最小系统可以说是完成了。
2.4测温部分电路
在整个设计中,时间部分均由软件来完成,而检测温度以及将其转换为电信号则需要硬件来完成。在本次设计中我选择的用来测量温度以及将其转换为电信号的芯片是由DALLAS公司生产的DS18B20,接下来对此芯片做一个简单的介绍:
DS18B20是一个集温度采集以及对采集来的温度进行处理输出数据于一体的芯片,所以在抗干扰方面性能优越。而且其有各种不同封装以适应不同的测温场所,阴暗潮湿狭小空间只要温度在-155℃--125℃之间就可以测量。DS18B20为单总线传输及一条总线就能完成与控制器之间双向通讯,所以其连接控制器的电路十分简单,其有三个引脚,分别连接VCC、GND、以及接控制器引脚(本次设计中我连接的是单片机的第22引脚及P2.1),不需要其他任何元器件与其配合。
下面是DS18B20的实物图以及电路图:
图2-
SEQ图2-\*ARABIC
7
实物图及电路图
2.5显示部分
本次设计主体是时间以及温度,所以时间温度需要通过显示器显示出来,在本次设计中我首先使用的是带字库的1602显示器。下图为1602实物图以及设计原理图。
图2-
SEQ图2-\*ARABIC
8
1602实物图及原理图
根据LCD1602各个引脚定义及作用,对其原理图进行初步设计:1和15均接上电源,2和16均接地,3为对比调节电压引脚,所以需要接上一个滑动变阻器,所有电源与地之间需要接电容滤波。其余控制引脚与数据引脚均接上单片机的相关引脚,加以控制。
下表为1602各个引脚的定义及功能:
表2-31602引脚功能表
引脚号
引脚名
电平
作用
1
Vss
/
电源地
2
Vcc
/
电源(+5V)
3
Vee
/
对比调整电压
4
RS
0/1
0=输入指令,1=输入数据
5
R/W
0/1
0=向LCD写入指令或数据,1=向LCD读取信息
6
E
1,1→0
使能信号,1时读取信息,1→0(下降沿)执行指令
7
DB0
0/1
数据总线0
8
DB1
0/1
数据总线1
9
DB2
0/1
数据总线2
10
DB3
0/1
数据总线3
11
DB4
0/1
数据总线4
12
DB5
0/1
数据总线5
13
DB6
0/1
数据总线6
14
DB7
0/1
数据总线7
15
A
Vcc
LCD背光电源正极
16
K
GND
LCD背光电源正极
考虑到1602只能显示英文及数字,不能显示中文以及图片,所以在本次设计的硬件电路中我也在其中添加了以8pin的串口12864显示模块。本设计中采用的12864液晶显示屏为8引脚不带字库,并且串口下载,这样可节约单片机的资源。由于此显示器本身不带字库,所以不能直接将数字或者中文直接写入其中,需要先将我们要写入的数字或者汉字通过字模转码软件将其转换成显示器能识别的代码。本次设计主要使用的是1602显示模块,所以这里所涉及的字模转码软件等不做详细介绍了。以下图为8pin串口12864显示模块的实物图以及原理图。
图2-
SEQ图2-\*ARABIC
9
12864实物图及原理图
2.6其他部分电路
2.6.1按键部分电路
在本次设计中,时间系统部需要人工加以调节,所以需要加上按键,一个是用来选择位(及秒、分、时),另一个怎是用来对以选择的位进行调节(按键每按一次,此位自动加一)。
在前面文章中提到各个端口均有上拉电阻,所以在不做任何操作时,其输出均为高电平,也就是数字电路中的1的状态。而设计中需要在外部将端口电平强制拉低,也就是0的状态,所以按键一端接地,另一端直接接单片机指定的I/O端口即可。其原理图如下页所示:
图2-
SEQ图2-\*ARABIC
10
按键部分原理图
2.6.2LED部分电路
为了增加视觉效果,在本次设计中,我加了四个LED,按照秒数的变化一秒一亮一灭进行轮流变化,以增加整个设计的美感。由于LED其实就是发光二极管,只有正极与负极有一定的电压差就能发光,为了让电流在二极管所承受的范围之内,需要加上电阻,以实现限流的作用。所以在每个二极管的正极部分链接带有电源的合适的电阻,而负极部分连接单片机的相应I/O口,单片机I/O口默认为高电平,所以一开始并不发光,只有相应的I/O口产生电位变化时,才会发生一亮一灭的情形。至于其亮灭时间长短,频率变化均由软件控制。其原理图如下:
图2-
SEQ图2-\*ARABIC
11
LED电路原理图
2.6.3蜂鸣器电路
在本次设计中,我另外加了一个蜂鸣器的部分,用以准点报时。蜂鸣器使用的是有源蜂鸣器,当正极负极有电位差时(3-12V)即可发出蜂鸣声。电路中使用了三极管8550(PNP型),基极链接的是控制端口(单片机的P2.0口),集电极连接电源,发射极连接蜂鸣器的正极。这样当单片机输出高电平时,蜂鸣器就可以发出声音用以报时。其原理图如下页所示:
图2-
SEQ图2-\*ARABIC
12
蜂鸣器原理图
至此,硬件部分所有原理图已经设计结束,其次就是原理图里元器件对应的封装图的设计以及PCB的绘制。对原理图元器件封装以及PCB的绘制我使用的是Altiun公司的AD10.0版本的绘制软件。元器件的封装绘制有两种方法:一是我们使用的许多芯片其对应的公司均给出了其封装图,在这里我们要做的就是确定我们使用什么芯片,出自于那个公司,然后在其公司网站上找到相应的封装图资料,然后导入软件中直接引用即可;第二就是找不到对应的芯片的封装图,那就必须手动绘制,首先我们必须买回我们要使用的芯片,确定其封装(如SMD或DIP等)可以判定我们是使用插件还是贴片,之后就是测量元器件的大小以及引之间的距离,完成其封装图的绘制。当所有元器件的封装绘制完成后,接下来就是PCB绘制,PCB的绘制需要考虑的因素很多:大到元器件的放置位置,小到必须考虑性号干扰等因素,其中需要注意的事项也相当繁多,这里就不一一列出。下页为本次设计所绘制的PCB图以及其3D显示图:
图2-
SEQ图2-\*ARABIC
13
PCB布线图
图2-
SEQ图2-\*ARABIC
14
PCB3D显示图
当PCB绘制结束,以及检测无误之后就可以打包发往PCB厂家进行加工制作。以下为本次设计的PCB焊接完毕正在工作的实物图:
图2-
SEQ图2-\*ARABIC
15
工作中的实物图
第3章系统软件设计
3.1软件系统程序框图
图3-
SEQ图3-\*ARABIC
1
系统程序框图
3.2Keil-uVisi3软件简介及程序调试
系统设计就像人一样,硬件就像人的躯壳,而软件则犹于人的灵魂,没有灵魂的躯壳就是一副破皮囊,再好也没什么用;没有躯壳的灵魂再怎么美好,也没有让其附着的载体。设计完硬件以后软件部分也是此次设计中非常重要的一个部分,本次设计控制器是单片机,一般的编程语言是C语言和汇编语言,各有各的优缺点:C语言在功能与结构上简单易学,可移植性强;汇编语言效率高,对硬件的可操作性强但可移植性性比较差。在本次设计中使用的编程语言是C语言。Keil-uVision3是一个51系列兼容单片机C语言软件开发系统,通过通过一个集成开发环境(uVision)将C编译器、仿真调试器等连接在一起,完成C语言的编写、调试与编译生成Hex文件。C语言仿真如下图:
图3-
SEQ图3-\*ARABIC
2
Keil-uVision3调试
大家都知道C语言为高级语言,而我们的控制器只能识别的语言为机器语言,所以需要借助软件将C语言转换成我们控制器能识别的机器语言及Hex文件。当程序源代码调试结束,生成Hex文件后就可以将其下载到我们的控制器中了。在硬件介绍中已经讲过本次设计采用的是USB转串口下载,通过USB将控制器与电脑连接,右击桌面图标“计算机”,在显示图框中单击属性,之后在弹出的对话框内找到设备管理器并单击,可以找到如下界面:
图3-
SEQ图3-\*ARABIC
3
COM端口识别界面
在上图中可以看到,电脑已经识别新接入的USB端口,并显示为COM4,这样说明硬件设备已经与电脑连接正确,可以进行接下来的下载工作了。打开下载软件,如下图显示,需要注意下载时需要先完成相关参数的修改:控制器的型号(例如本次设计中使用的是STC89C52,所以在软件的MCUType中将其设置为此信号);其次就是COM端口的设置,在上图中我们可以看到电脑已经识别此端口为COM4端口,所以在软件中将其设置为COM4即可。打开程序文件找到生成的Hex文件的所在位置,点击下载,在这需要提醒的是在下载时需要在控制器先断电的情况下点击下载,待软件提示给其上电时打开电源,方可完成下载。
图3-
SEQ图3-\*ARABIC
4
Hex文件下载
3.3程序源代码
#include<reg52.h>
#defineucharunsignedchar
//对I/O进行定义
sbitRS=P2^5;
sbitRW=P2^6;
sbitE=P2^7;
sbitkey1=P2^3;
sbitkey2=P2^2;
sbitDI=P2^0;
sbitDQ=P2^1;
sbitLED1=P1^4;
sbitLED2=P1^5;
sbitLED3=P1^6;
sbitLED4=P1^7;
voidDisplay();
charcodetable[10]="0123456789";
charcodetable1[17]="TIME:TEMPER:.";
intsec,min,hour;
intx,y,z,m;
ucharT;
//延迟函数
voiddelay1()
{inti;
for(i=0;i<=550;i++);
}
//
voidwrite_com(intcom)
{
RS=0;
RW=0;
P0=com;
delay1();
E=1;
delay1();
E=0;
}
voidwrite_data(intdat)
{
RS=1;
RW=0;
P0=dat;
delay1();
E=1;
delay1();
E=0;
}
voidwrite_data1(chardat)
{
RS=1;
RW=0;
P0=dat;
delay1();
E=1;
delay1();
E=0;
}
voidinit()
{
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x80);
}
//以下为温度测温程序
voiddelay(inti)
{
while(i--);
}
//初始化函数
Init_DS18B20(void)
{
charx=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(14);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
//读一个字节
ReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--){
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)dat|=0x80;
delay(4);
}
return(dat);
}
//写一个字节
WriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--){
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
}
//读取温度
ReadTemperature(void)
{
uchara=0;
ucharb=0;
unsignedintt=0;
floattt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;//将温度的高位与低位合并
t=tt*10+0.5;//对结果进行4舍5入
return(t);
}
main()
{
init();
for(y=0;y<5;y++)
{
write_data(table1[y]);
}
write_com(0x40+0x80);
for(z=5;z<17;z++)
{
write_data(table1[z]);
}
while(1)
{DI=0;
ReadTemperature();
T=ReadTemperature();
while(key1==0)
{delay1();
while(key1==0)
{
m++;
while(!key1);
if(m==4)m=0;
}
}
if(m==0)
{
EA=0;
ET0=0;
TR0=0;
TMOD=0x01;
TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
ET0=1;
EA=1;
TR0=1;
}
if(m==1)
{
TR0=0;
EA=0;
ET0=0;
while(key2==0)
{delay1();
while(key2==0)
{sec++;
while(!key2)
if(sec==60)sec=0;
}
}
}
if(m==2)
{
TR0=0;
EA=0;
ET0=0;
while(key2==0)
{delay1();
while(key2==0)
{min++;
while(!key2)
if(min==60)min=0;
}
}
}
if(m==3)
{
TR0=0;
EA=0;
ET0=0;
while(key2==0)
{delay1();
while(key2==0)
{hour++;
while(!key2)
if(hour==12)hour=0;
}
}
}
Display();
}
}
voidtimer0()interrupt1
{
TR0=0;
TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
TR0=1;
x++;
if(x==200)
{x=0;
sec++;
if(sec==60)
{sec=0;
min++;
if(min==
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保护地球建议书15篇
- 中秋节国旗下讲话稿(11篇)
- 人性的弱点读后感(15篇)
- 仲夏夜之梦的读后感范文
- 中学秋季田径运动会开幕词
- 英语代词课件教学课件
- 探究新课改下高中数学有效教学的几点策略
- 影像科危急值报告制度
- 影响心理挫折承受能力的因素
- 联考协作体八年级上学期语文12月月考试卷
- 中国中国鲜红的太阳永不落-合唱简谱-歌词
- 房地产实现场勘查记录表(4张表格)
- 水泵扬程计算表
- 股权赠与协议范本只享有分红权
- COPD诊治新进展ppt课件
- 医院没有空床或医疗设施有限时的处理制度及流程
- 384种矿物与矿石标本实例照片
- 高中数学课本中的定理、公式、结论的证明
- 冬季安全教育主题班会PPT课件
- 集团公司质量管理办法(共19页)
- C++程序设计:第8章 数组
评论
0/150
提交评论