云文档网 - 专业文章范例文档资料分享平台

基于单片机的电子钟课程毕业设计论文10

来源:网络收集 时间:2024-05-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第 45 页

2013-3-27

2013-3-27 第 45

}

void main() { unsigned int n;

unsigned char code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; while(1)

{ P1=0xFFH; //初始化P1口 for(n=0;n<8;n++)

{P1=ledp[n]; delay();

}}} 5.1.2 显示电路调试

本设计的显示电路使用了共阴LED和74LS164。在连接显示电路之前要明确共阴型8段LED的10个管脚与各段发光二极管的对应关系,熟悉74LS164管脚位置,然后才能开始进行连接[19]。在连接过程中,需要注意以下几点:

1. LED数码管各管脚与74LS164各管脚的对应关系要十分清楚,所有LED数码管与74LS164的连接方式要统一。

2. 因为是移位显示,所以需要注意前一位74LS164的QH脚要与下一位74LS164的A、B脚连接。

3. 明确单片机管脚功能。本设计定义了P1.0连接74LS164的A、B脚,P1.1连接74LS164的CLK脚。

4. 74LS164的CLR脚接高电平。

5. 编写一段显示程序,烧录进单片机,检查好电源正负端和P1.0、P1.1连接是否正

创建时间:2010-11-24

45

第 46 页

2013-3-27

2013-3-27 第 46

确。检查无误后上电,检查显示电路是否正确。

以下是笔者编写的一段显示程序:上电后,7位数码管分别显示0~6。 #include \#define uint unsigned int #define uchar unsigned char void dis(); void sendbyte(); sbit DAT=P1^0; sbit CLK=P1^1; uchar disp_buffer[7];

unsigned char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }; void delay_50ms(unsigned int t) //延时子程序 {

unsigned int j; for(;t>0;t--)

for(j=6245;j>0;j--) {;} }

void dis() //显示子程序,0~6 { unsigned char gsb,led,led1,jj; disp_buffer[0]=tab[0]; disp_buffer[1]=tab[1]; disp_buffer[2]=tab[2];

创建时间:2010-11-24

46

第 47 页

2013-3-27

2013-3-27 第 47

disp_buffer[3]=tab[3]; disp_buffer[4]=tab[4]; disp_buffer[5]=tab[5]; disp_buffer[6]=tab[6]; for(gsb=0;gsb<7;gsb++) { led=disp_buffer[gsb]; for(jj=0;jj<8;jj++)

{ led1=led&0x1; if (led1==0x1) DAT=1; else DAT=0; CLK=0;CLK=1; led=led>>1;

}}}

void main() //主程序 { while(1)

{ dis();

delay_50ms(10); }} 5.1.3 DS1302电路调试

该电路包含DS1302芯片、主电源、备用电源、晶振等部分。在与单片机连接的过

47

创建时间:2010-11-24

第 48 页

2013-3-27

2013-3-27 第 48

程中需要注意以下几点:

1. 清楚DS1302与单片机连接的管脚。本设计定义为:DS1302的SCLK连接P1.5,

I/O连接P1.6,RST连接P1.7。 2. 注意电源正负极连接。

3. DS1302接32.768KHz的晶振。该晶振体型比较小,在焊接时要小心,注意不要

将晶振引脚弄断。同时也要尽量使晶振离DS1302的X1、X2引脚近距离焊接。 4. 编写DS1302的时钟/日历程序,只要求能够正确显示时间。烧录进单片机,检

查电路电源正负极连接是否正确,检查P1.0和P1.1引脚接线是否正确。检查无误后可以上电检查。

笔者编写了一段时钟/日历显示程序,设置初始时间为14:28:00,初始日期为2008年5月12日。上电后LED数码管显示“142800”,之后开始走时。观察32分钟之后,数码管显示“150000”,证明DS1302电路正确。源程序见附录A 5.1.4 按键电路调试

按键电路比较简单,故调试起来也很容易。如果确保按键焊接正确,只需在DS1302的调试程序上加上一段日历显示子程序,并在主程序中写入:

If(P_7==0) {

dis_calendar; }

日历显示子程序原理与时钟显示子程序原理相同,源程序见附录A该程序的功能是:当按下K7时,第1~6位LED数码管马上由时间显示日期。当K7弹出后,数码管1~6位有显示日期转为显示实时时间[20]。

创建时间:2010-11-24

48

第 49 页

2013-3-27

2013-3-27 第 49

5.2 软件调试

在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段。在本设计中,软件调试主要分三大部分:实时时钟日历子程序调试、环境温度采集子程序调试、按键子程序调试。将这三部分调试成功,那么整个设计的软件部分也就基本完成了。

在硬件调试部分,已经将实时时钟日历子程序调试完毕了,只需在主程序中调用按键子程序即可,源程序见附录A,这里不再赘述。 5.2.1 环境温度采集子程序调试

DS18B20温度传感器使用起来非常方便,不但接线少,而且编程容易。该温度传感器在读写数据时需要严格的时序,为了方便编写对应的延时程序,此时单片机一般都选用11.0592MHz的晶振 [13]。

为了能正常显示温度,需要将读取到的TL和TH组合成一个字节,再转换成十进制数。本设计使用DS18B20时采用了温度传感器出厂默认设置——12位分辨率,所以定义温度值temp等于TH,左移8位,再与TL进行“或”运算,即可得到温度值。

由于条件限制,笔者无法做出温度采集部分,所以应用了Proteus软件进行仿真。仿真过程见附录D。

温度显示子程序与时间显示子程序原理相同,源程序见附录A 5.2.2 键盘子程序调试

依据设计要求,键盘子程序需要完成对时间/日历的校对、日期/温度的显示和闹铃的开关。为了便于显示子程序和闹铃子程序的调用,除了K1、K2键以外,其余按键都定义功能标志位。例如:

If(K7==0)

{

创建时间:2010-11-24

49

题 目:基于单片机的电子钟的设计

学生姓名:

学 号:

专 业:

班 级:

指导教师:

多功能电子钟的设计

摘 要

电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。

本设计主要为实现一款可正常显示时钟/日历、测量环境温度、带有定时闹铃的多功能电子时钟。

本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C51芯片作为核心,7位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能,同时利用DS18B20温度传感器测量环境温度。这种实现方法的优点是电路简单,性能可靠,实时性好,时间和温度精度高,操作简单,编程容易。

该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

关键词:电子时钟;多功能;AT89C51;时钟日历芯片;

创建时间:2010-11-24

I

XX职业技术学院

目 录

摘 要 ......................................................................................................................................... I 第一章 引 言 ............................................................................................................................ 5

1.1 多功能电子时钟研究的背景和意义 .......................................................................... 5 1.2 电子时钟的功能 ......................................................................................................... 6 第二章 电子时钟设计方案分析 .............................................................................................. 8

2.1 FPGA设计方案 ........................................................................................................... 8 2.2 NE555时基电路设计方案 .......................................................................................... 8 2.3 单片机设计方案 ......................................................................................................... 9 第三章 基于单片机的电子时钟硬件设计............................................................................. 12

3.1 主要IC芯片选择 ..................................................................................................... 12

3.1.1 微处理器选择 ................................................................................................ 12

3.1.2.1常用时钟日历芯片比较 ....................................................................... 14 3.1.2.2 DS1302简介 ........................................................................................ 14 3.1.2.3 DS1302引脚说明 ................................................................................ 14 3.1.2.4 DS1302的控制字和读写时序说明 ..................................................... 15 3.2.1.5 DS1302的片内寄存器 ........................................................................ 17 3.1.2 环境温度传感器选择 .................................................................................... 20

3.1.3.1 常用温度传感器比较 .......................................................................... 20 3.1.3.2 DS18B20简介 ...................................................................................... 20 3.1.3.2 DS18B20内部结构 .............................................................................. 21

3.2 电子时钟硬件电路设计 ........................................................................................... 23

创建时间:2010-11-24

II

XX职业技术学院

3.2.1 时钟电路设计 ................................................................................................ 24 3.2.2 环境温度采集电路设计................................................................................. 25 3.2.3 显示电路 ........................................................................................................ 26 3.2.4 按键电路设计 ................................................................................................ 27 3.2.5 闹铃电路设计 ................................................................................................ 29 3.2.6 复位电路设计 ................................................................................................ 30

第四章 电子时钟软件设计 .................................................................................................... 33

4.1 主程序设计 ............................................................................................................... 33 4.2 子程序设计 ............................................................................................................... 34

4.2.1 实时时钟日历子程序设计............................................................................. 34 4.2.2 环境温度采集子程序设计............................................................................. 34 4.2.3 显示子程序设计 ............................................................................................ 38 4.2.4 键盘扫描子程序 ............................................................................................ 38 4.2.5 闹铃子程序设计 ............................................................................................ 39

第五章 系统调试 .................................................................................................................... 43

5.1 硬件调试 ................................................................................................................... 44

5.1.1 单片机基础电路调试 .................................................................................... 44 5.1.2 显示电路调试 ................................................................................................ 45 5.1.3 DS1302电路调试 ........................................................................................... 47 5.1.4 按键电路调试 ................................................................................................ 48 5.2 软件调试 ................................................................................................................... 49

5.2.1 环境温度采集子程序调试............................................................................. 49 5.2.2 键盘子程序调试 ............................................................................................ 49

创建时间:2010-11-24

III

XX职业技术学院

结 论 ...................................................................................................................................... 51 程序 ...................................................................................................................................... 52

创建时间:2010-11-24

IV

开始初始时间显示第 40 页

2013-3-27

2013-3-27 第 40

送入function_count值function_count=1否?Y调hour显示Nfunction_count=2否?Y调min显示Nfunction_count=3否?Y调sec显示Nfunction_count=4否?Y调clk_hour显示Nfunction_count=5否?Y调clk_min显示Nfunction_count=6否?Y调sec显示ANfunction_count=7否?Y调year显示NN日期显示标志位=1否?日期显示function_count=8否?Y调month显示NN温度显示标志位=1否?温度显示function_count=9否?Y延时调date显示返回NN继续调时显示确认标志位=1否?时间显示A 图4.4 显示子程序流程图

40

创建时间:2010-11-24

创建时间:2010-11-24

第 41 页

2013-3-27 第 41

2013-3-27

开始扫描键盘送键值keyKey=DF否?YNfuntion_cont++Key=EF否?YNfuntion_cont对应位加1Key=F7否?YNfuntion_cont对应位减1Key=FD否?YN闹铃开Key=FB否?YN时间显示子程序Key=7F否?YN日期显示子程序Key=BF否?YN温度显示子程序Key=0返回 图4.5键盘扫描子程序

41

第 42 页

2013-3-27

2013-3-27 第 42

开始初始化Alarm_flag=true否?NBeepr=false返回Y闹铃开Clk_min=min否?NBeepr=false返回YClk_hour=hour否?NYBeepr=true响铃开始Beepr=false返回min=(Clk_min+5分钟)否?N响铃继续Y响铃停返回停止标志位=true否?N响铃继续Y响铃停返回贪睡标志位=true否?N响铃继续Y记录该时刻MIN响铃继续min=(MIN+5分钟)否?Y响铃停返回N响铃继续

图4.6 闹铃子程序流程图

创建时间:2010-11-24

42

第 43 页

2013-3-27

2013-3-27 第 43

第五章 系统调试

调试工作分硬件调试和软件调试两部分,调试方法介绍如下:

首先,硬件调试主要是先搭建硬件平台,然后利用万用表等工具对电路检查,最后应用程序进行功能调试。硬件调试比较费时,需要细心和耐心,也需要熟练掌握电路原理。

然后,可以直接应用一些编辑或仿真软件进行软件调试,比如单片机C51编辑软件Keil。该软件提供了一个集成开发环境uVision,它包括C编辑器、宏编辑器、连接器、库管理和一个功能强大的仿真调试器。通过编译、运行,可以检查程序错误。但应用此方法,仍需要十分了解所使用元器件的工作方式和管脚连接方式。在软件调试过程中要仔细耐心,即便是多写或少些一两个字符,都无法编译成功。而有时往往在Keil中编译、运行无错,但烧录到单片机中运行起来就会出错,很可能是编程时管脚或时序编辑得不对。

还有一种方式,即应用仿真软件搭建电路的软件平台,再导入程序进行仿真调试。如果电路出错,可以在计算机上方便的修改电路,程序出错可以重新编辑程序,这种方法节时、省力,经济、方便。笔者应用的仿真软件为Proteus。

总之,调试过程是一个软硬件相结合调试的过程,硬件电路是基础,软件是检测硬件电路和实现其功能的关键[13]。

在调试过程中,首先必须明确调试顺序。例如:本设计是在单片机系统基础上建立起来的,所以必须先确定单片机基础电路能否正常工作。为了正确显示时间,接下来还要确定显示电路能否正常工作。硬件调试的过程,也是软件调试的过程。

然后,要准备好调试的工具。硬件调试需要万用表、示波器等,软件调试一般需要诸如Keil等仿真编辑器。笔者根据自己实际制作该多功能电子时钟的经验,将调试过程

创建时间:2010-11-24

43

第 44 页

2013-3-27

2013-3-27 第 44

介绍如下:

5.1 硬件调试

5.1.1 单片机基础电路调试

单片机基础电路包括电源、单片机、外部时钟震荡电路、复位电路和外部接口电路。调试过程需要注意以下几点:

1. 检查电源是否完好。

2. 单片机电源要连接正确,并且保证AT89C51的31号引脚接高电平。AT89C51的31号引脚是外部程序存储器选择信号端,当该引脚为高电平时,单片机会一直从片内程序存储器内取指令。

3. 如果使用P0口做I/O口,要接上拉电阻。

4. 使用万用表排查电路中是否存在断路或者短路情况。笔者在制作外部接口电路时使用的是排针,焊接时容易出现管脚之间短路,所以在上电以前必须先排查电路。

5. 编辑一个使一组发光二极管循环点亮的程序并烧录到单片机内,上电运行,检查单片机是否正常工作,复位电路是否正确。

笔者编辑了使一组P1口点亮8个发光二极管循环点亮的程序,程序代码如下: #include

void delay(void) //延时子程序 {

Unsigned char i, j,k; //延时时间根据变量i,j,k不同而改变 for(i=50;i>0;i--) for(j=50;j>0;j--) for(k=250;k>0;i--);

创建时间:2010-11-24

44

3第 30 页 页 42013-3-27 第 30 2013-3-27 5闹铃电路的管脚送出高电平时,音乐集成电路会给蜂鸣器特定脉冲,使蜂鸣器发声。此类集成电路体积较小,使用方便,不足的是音乐简单、单一。 闹铃的音乐不是本设计中的重点,故采用最简单的方法,占用单片机一根I/O口P2.0, 中间用PNP型三极管S9012连接P2.0和蜂鸣器。当P2.0引脚为低电平时,S9012的发射极和集电极导通,使蜂鸣器发声。当响铃标志位为“1”时,P2.0送一定频率脉冲,使蜂鸣器U11发出声音[16]。如图3.12。 +5P2.0R810KQ1S9012U11BUZZER 图3.12 闹铃电路 3.2.6 复位电路设计 复位是单片机的初始化操作,以便使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,也可按复位键重新启动。 复位后,PC内容初始化为0000H,使单片机从0000H单元开始执行程序。单片机复位后,除了PC之外,还对片内的特殊功能寄存器有影响,它们的复位状态如表3.9所示。单片机复位后不影响内部RAM的状态[17]。89C51单片机复位信号的输入端是RST引脚,高电平有效。其有效时间持续24个时钟周期(2个机器周期)以上。 RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。 3创建时间:2010-11-24 TitleSizeBDate:File:N8-JuC:\\D30 45

第 31 页

2013-3-27

2013-3-27 第 31

上电自动复位是利用电容储电来实现的,如图3.13(a)所示。上电瞬间,RC电路充电,RST端出现正脉冲,随着充电电流的减少,RST的电位逐渐下降。按键手动复位有电平方式和脉冲方式两种。按键电平复位是相当于RST端通过电阻接高电平,如图3.13(b)所示;按键脉冲复位,利用RC微分电路产生正脉冲,如图3.13(c)所示[12]。

出于应用方便,本设计采用按键电平复位电路。实际电路请参见附录C,复位按键为K8。

表3.9 单片机寄存器的复位状态表

寄存器 PC ACC PSW SP DPTR P1、P3 IP IE TMOD 复位状态 0000H 00H 00H 07H 0000H FFH ××000000B 0××00000B PCON 00H 0×××0000B(CHMOS) TL1 SCON SBUF 00H 00H 不定 0×××××××B(NMOS) 寄存器 TCON TH0 TL0 TH1 复位状态 00H 00H 00H 00H

创建时间:2010-11-24

31

页 +5Vcc22uFRST1KGND89C51(a)上电复位创建时间:2010-11-24

第 32 页 2013-3-27 第 32 2013-3-27 +5+5RESETRESETVccVcc20022uF22uFRST22uFRST1K10K1KGNDGND89C5189C51(b)按键电平复位(c)按键脉冲复位图3.13 上电复位和按键复位电路 3432

TitleSizeBDate:File:25

第 33 页

2013-3-27

2013-3-27 第 33

第四章 电子时钟软件设计

C51单片机可以应用汇编语言和C语言进行编程。,汇编语言与机器指令一一对应所以用汇编语言编写的程序在单片机里运行起来效率较高。C语言程序可读性高,更便于理解。

本设计使用C语言编程。

4.1 主程序设计

第一次上电,系统先进行初始化, LED显示初始时间“14:28:00”,并开始走时。初始日期为2008年5月12日,此刻若按K1键,LED显示“080512”。

单片机依次开始调用键盘扫描子程序、DS1302子程序、DS18B20子程序、闹铃子程序,经过延时,返回程序开头循环运行。

主程序流程图如图4.1。

开始初始化显示子程序键盘扫描子程序DS1302子程序DS18B20子程序闹铃子程序延时子程序

图4.1 多功能电子钟主程序流程图

创建时间:2010-11-24

33

第 34 页

2013-3-27

2013-3-27 第 34

4.2 子程序设计

4.2.1 实时时钟日历子程序设计

该程序主要实现对DS1302写保护、充电,对年、月、日、时、分、秒等寄存器的读写操作。在读写操作子程序中都执行了关中断指令,因为在串行通信时对时序要求比较高,而且在此是用I/O口软件模拟串行时钟脉冲,所以在通信过程中最好保证传输的连续性,不要允许中断。其流程图如图4.2。

开始初始化写入时钟初值开始计时读出数据返回

图4.2 实时时钟日历子程序流程图

DS1302每次上电时自动处于暂停状态,必须把秒寄存器的位7置位0,时钟才开始计时。如果DS1302一直没有掉电,则不存在此问题。

在进行写操作时,需要先解除写保护寄存器的“禁止”状态。当用多字节模式进行操作时,必须写够8字节[18]。

源程序见附录A。 4.2.2 环境温度采集子程序设计

DS18B20是1—wire单线器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议来对读写数据提出严格的时序要求,而AT89C51单片机并不支持单线传输。因此,必须采用软件的方法来模拟单线的协议时序。

创建时间:2010-11-24

34

第 35 页

2013-3-27

2013-3-27 第 35

主机操作单线器件DS18B20必须遵循下面的顺序。 1. 初始化

单线总线上的所有操作均从初始化开始。初始化过程如下:主机通过拉低单线480μs以上,产生复位脉冲,然后释放该线,进入RX接收模式。主机释放总线时,会产生一个上升沿。单线器件DS18B20检测到该上升沿后,延时15~60μs,通过拉低总线60~240μs来产生应答脉冲。主机接收到从机的应答脉冲后,说明有单线器件在线。

2. ROM操作命令

一旦总线主机检测到应答脉冲,便可以发起ROM操作命令。共有5位ROM操作命令。如表4.1。

表4.1 DS18B20的ROM操作命令

命令类型 命令字节 功能说明 此命令读取激光ROM中的64位,只能用于总线上单个DS18B20器Raed Rom 33H 件的情况,多挂则会发生数据冲突 此命令后跟64位ROM序列号,寻址多挂接总线上的DS18B20。只Match Rom 55H (匹配ROM) 配的将等待复位脉冲。此命令可用于单挂接或者多挂接总线。 此命令用于单挂接总线系统时,可以无需提供64位ROM序列号皆Skip Rom CCH (跳过ROM) 行读命令,将会发生数据冲突。 Search Rom F0H (搜索ROM) Alarm Search ECH (告警搜索) 一次温度测量时满足了告警触发条件,才会响应此命令。 的ROM序列号。 此命令流程图和Search Rom命令相同,但是DS18B20只有在最近的 主机调用此命令,通过一个排除法过程,可以识别出总线上所有器件可运行内存操作命令。如果总线上接多个DS18B20,并且在此命令后执有序列号完全匹配的DS18B20才能响应后面的内存操作命令,其他不匹3. 内存操作命令

创建时间:2010-11-24

35

第 36 页

2013-3-27

2013-3-27 第 36

在成功执行了ROM操作命令之后,才可以使用内存操作命令。主机可以提供6种内存操作命令,如表4.2。

表4.2 DS18B20内存操作命令

命令类型 Write Scratchpad 4EH (写暂存器) Rrad Scratchpad BEH (读暂存器) 时发起复位脉冲以停止此操作。 此命令将暂存器中的内容复制进E2RAM,以便将温度告警触发字Copy Scratchpad 48H (复制暂存器) 行复制就会输出0,复制完成后,再输出1。 Convert T 44H (温度转换) Recall E2 B8H (重调E2存储器) Read Power Supply B4H (读供电方式) 的供电方式:0为寄生电源方式,1为外部供电方式。 到暂存器中。此重调操作在DS18B20加电时自动产生。 主机发起此命令后的每个读数据时隙内,DS18B20发信号通知它么只要器件在进行温度转换就会输出0,转换完成后再输出1。 将存储在E2RAM中的温度告警触发值和配置寄存器值重新拷贝 此命令开始温度转换操作。如果在此命令后主机产生读时隙,那节存入非易失内存。如果在此命令后产生读时隙,那么只要器件在进在发起复位脉冲之前,3个字节都必须要写。 此命令读取暂存器内容,从字节0一直读取到字节8。主机可以随命令字节 功能说明 此命令写暂存器中地址2~4的3个字节(TH、TL和配置寄存器)4. 数据处理

DS18B20要求有严格的时序来保证数据的完整。在单线DQ上,存在复位脉冲、应答脉冲、写“0”、写“1”、读“0”和读“1”几种信号类型。其中,除了应答脉冲之外,均由主机产生。而数据位的读和写则是通过使用读、写时隙实现的。

首先了解写时隙。当主机将数据线从高电平拉至低电平时,产生写时隙。有2种类型的写时隙:写“1”和写“0”。所有写时隙必须在60μs以上(即由高拉低后持续60μs以上),各个写时隙之间必须保证最短1μs的恢复时间。DS18B20在DQ线变低后的15~60μs的窗口对DQ进行采样,如果为高电平,就为写“1”;如果为低电平,就

创建时间:2010-11-24

36

第 37 页

2013-3-27

2013-3-27 第 37

为写“0”。对于主机产生写“1”时隙的情况,数据线必须先被拉低,然后释放,在写时隙开始后的15μs,允许DQ线拉至高电平。对于主机写“0”时隙的情况,DQ线必须被拉至低电平且至少保持低电平60μs。

再来了解读时隙。当主机从DS18B20读数据时,把数据线从高电平拉至低电平,产生读时隙。数据线DQ必须保持低电平至少1μs,来自DS18B20的输出数据在读时隙下降沿之后15μs内有效。因此,在此15μs内,主机必须停止将DQ引脚置低。在读时隙结束时,DQ引脚将通过外部上拉电阻拉回至高电平。所有的读时隙最短必须持续60μs,各个读时隙之间必须保证最短1μs的恢复时间。

开始初始化DS18B20N应答脉冲否?Y发起Skip Rom命令发起Convert T命令延时1s,等待温度转换完成初始化DS18B20N应答脉冲否?Y发起Resd Scratchpad命令读低8位字节TL数据读高8位字节TH数据温度T=((TH<<4)&0x7F)+(TL>>4)

创建时间:2010-11-24

37

第 38 页

2013-3-27

2013-3-27 第 38

图4.3 环境温度采集子程序流程图

所有的读写时隙至少需要60μs,且每两个独立的时隙之间至少需要1μs的恢复时间。在写时序中,主机将在拉低总线15μs内释放总线,并向DS18B20写“1”。若主机拉低总线后能保持60μs的低电平,则向单总线器件写“0”。DS18B20仅在主机发出读时隙时才向主机传输数据,所以,当主机向DS18B20发出读数据命令后,必须马上产生读时隙,以便DS18B20能传输数据[13]。

实现环境温度采集转换并读取数据的程序流程图参见图4.3。源程序见附录A。 4.2.3 显示子程序设计

用74LS164驱动LED数码管静态显示电路,编程也很容易。只要将需要显示的数字编辑成对应的BCD码,逐位送入74LS164的A、B串行输入端,数码管将正常显示。关键之处是要实现根据键值显示不同的数字。

为了方便实现按键显示,程序中调用的都是各个标志位,通过判断标志位的“真”、“假”来决定显示的内容。显示子程序流程图参见图4.4。源程序见附录A。 4.2.4 键盘扫描子程序

单片机对键盘扫描的方法有随机扫描方式、定时扫描方式和中断扫描方式。 在随机扫描方式中,CPU完成某特定任务后,即执行键盘扫描程序,以确定键盘有无按键输入,然后根据按键功能转去执行相应的操作。在执行键盘按键规定的功能中不理睬键盘输入。

定时扫描方式与随机扫描方式基本相同,只是利用CPU内的定时中断,每隔一定时间扫描有无按键被按下,键盘反应速度较快,在处理按键功能过程中,可以通过键盘命令进行干预,如取消、暂停等操作。

前两种扫描方式均会占用CPU大量时间。不管有没有键入操作,CPU总要在一定

38

创建时间:2010-11-24

第 39 页

2013-3-27

2013-3-27 第 39

的时间内进行扫描,这对于单片机控制系统是很不利的[16]。

由于本设计中AT89C51单片机在系统中的主要任务是接受DS1302和DS18B20的数据并送出显示,完成时钟/日历校对和日期/温度显示控制。89C51单片机完全有能力完成以上工作,所以采用随机扫描键盘方式,系统也能够正常运行。程序流程如图4.5。

单片机扫描完键盘,得到键值,并根据键值转入执行对应任务,以实现按键功能。如果没有按键按下,则程序扫描到Key=FFH,将键值Key清零,返回主程序。

源程序见附录A。 4.2.5 闹铃子程序设计

闹铃子程序最主要的任务是不断用时钟分(min)与时(hour)同设定的闹铃分(clk_min)与闹铃时(clk_hour)比较,只要满足min等于clk_min、hour等于clk_hour,响铃启动5分钟,并根据外部按键执行相应贪睡任务。该程序流程图参见图4.6。源程序见附录A。

创建时间:2010-11-24

39

百度搜索“yundocx”或“云文档网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,云文档网,提供经典综合文库基于单片机的电子钟课程毕业设计论文10在线全文阅读。

基于单片机的电子钟课程毕业设计论文10.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.yundocx.com/wenku/194941.html(转载请注明文章来源)
Copyright © 2018-2022 云文档网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219