毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc

上传人:文库蛋蛋多 文档编号:3980488 上传时间:2023-03-30 格式:DOC 页数:34 大小:671.50KB
返回 下载 相关 举报
毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc_第1页
第1页 / 共34页
毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc_第2页
第2页 / 共34页
毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc_第3页
第3页 / 共34页
毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc_第4页
第4页 / 共34页
毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现.doc(34页珍藏版)》请在三一办公上搜索。

1、基于单片机的多功能钟控收音机的设计与实现闹钟子系统的设计与实现摘 要收音机是现在生活中的一种娱乐工具,它可以扩展我们的知识面,丰富我们是日常生活。但是现在的收音机仅仅只拥有收台、听台、存台的功能,功能上非常的单一,为了让收音机具有更强大的的功能,设计了这套基于单片机的多功能钟控收音机系统。这套系统在传统的收音机上增加了时钟设置、温度测量、液晶显示以及闹钟设置多项功能。本文主要论述了系统的方案设计,系统硬件设计包括硬件选型和硬件电路图;系统软件设计包括程序流程图设计和关键代码。通过编写代码实现收音机节目的播放、音量调节、电台切换及节目的自动搜索、节目频点存储功能、时钟设置、温度测量、液晶显示以及

2、闹钟功能。且能够通过按键调整系统时钟,到达设定闹铃时间值可选择蜂鸣器响或开启收音机到指定频点。该系统与传统的收音机系统相比较,具有结构简单,抗干扰能力强,测量精度高,使用方便的特点。关 键 字:单片机; 收音机; 闹钟; 液晶显示Based on SCM multi-function clock radio control design and realizedAlarm subsystem of design and implementationAuthor:Li Xinfang Tutor:Yang Bo Abstract The radio is now in the life of t

3、he one kind of entertainment tool, it can expand our knowledge, enrich our daily life is. But now the radio only accept ,listen , save a function, the function is a single, in order to let the radio has more powerful function, the set design based on single chip microcomputer multifunctional clock r

4、adio control system. The system in the traditional radio increased the clock set, temperature measurement, liquid crystal display and alarm multiple functions. This paper discusses the design of the whole system, hardware design including hardware selection and hardware circuit diagram; System softw

5、are design including program flowchart design and key code. By writing code realization of radio programs broadcast, volume adjustment, radio switch and programs to be automatic search, the program frequency memory function, clock set, temperature measurement, liquid crystal display and alarm clock

6、function. And to be able to button to adjust the system clock, to set the alarm time value can choose a buzzer rang or open radio frequency to the specified. This system and the traditional radio system comparison, the structure is simple, strong anti-jamming ability, high accuracy, easy to use feat

7、ures.Key words: Single chip microcomputer; the radio; the alarm clock; liquid crystal display目 录1 绪 论11.1课题研究的背景11.2 研究的目的及意义11.3 本文结构22 系统方案设计32.1系统设计的主要任务32.2系统总体设计32.2.1 收音机模块42.2.2 时钟模块42.2.3 温度模块42.2.4 显示模块42.2.5 闹钟模块42.2.6 按键模块53 系统硬件设计63.1主控模块硬件电路设计63.1.1单片机的选型63.1.2 AT89S52单片机的引脚结构分析73.1.3 单

8、片机最小系统设计图83.2 显示模块硬件电路设计83.2.1显示芯片的选型83.2.2 显示模块电路设计93.3 按键模块硬件电路设计93.4 时钟模块的硬件电路设计103.4.1时钟芯片的选型103.4.2时钟芯片DS1302结构分析103.4.3时钟模块电路设计113.5 存储模块硬件电路设计123.5.1存储芯片选型123.5.2存储芯片AT24C02结构分析123.5.2 AT24C02电路设计133.6 打铃模块电路设计134 系统软件设计154.1 系统软件总体设计154.2 主控模块详细设计154.3 显示模块详细设计174.4 按键模块详细设计194.5 时钟模块详细设计194

9、.5.1设置当前时间模块详细设计204.6 存储模块详细设计224.6.1设置打铃时间模块详细设计224.6.2查看打铃时间模块详细设计245系统的调试与实现275.1系统开发环境Keil C介绍276 结束语29参考文献30致谢311 绪 论1.1课题研究的背景 收音机一直在人们的生活娱乐中占有非常重要的地位。从老式的晶体管收音机到今天的网络收音机,可以看出通过广播享受生活一直是人们喜欢的生活方式,收音机在人们生活中应用的非常广泛。1. 收音机在广告媒介中的应用 随着技术的日新月异,当今社会出现了很多的广告媒介,比如报纸、杂志、海报、传单、无线电广播、有线广播、电话、电视、电影、戏剧等,而广

10、播在此之中占了很大一部分比例,现在有车的人很多,无论是出租车、公交车、私家车都有收听广播的功能,这样能及时了解路面上的路况消息,不会造成堵车加重,也可以听听歌放松自己。2.收音机在电子产品中的应用如今随着消费类电子的兴起和繁荣以及数字电子的发展,广大从事消费类电子设计的厂商都不忘在诸如MP3、智能手机等产品中嵌入收音机部分。这是他们增加的娱乐功能,具有一定的竞争价值。3. 收音机在网络方面的应用 现在是一个网络世界,不出门可知天下事的社会,我们可以在家里工作通过网络进行远程教学、和好友聊天、网上购物等等,网络收音机也是非常受欢迎的,我们可以边购物边收听购物频道的广播,很快知道哪里的商品最优惠。

11、1.2 研究的目的及意义收音机在人们生活中应用地非常广泛,由单片机集成电路构成的收音机种类也越来越多,单片机应用很广、发展很快、单片机具有体积小、开发较为容易。把它用到仪器和仪表上,可使产品的体积缩小、功能增强、实现不同程度的智能化。随着随身数码科技的发展,独立的半导体收音机已渐渐淡出了人们日常生活的视线,取而代之的是小巧精致的数字音频播放器。在这种环境下,收音机更加受到了无线电行业、专业电子技术机构和无线电发烧团体人员的关注。收音机的存在方式也发生了变化,从原来的独立式半导体发展成了内嵌到其他音频设备的模块化产品。现今的用户对于收音机技术上和功能上的要求相对较高,只能收听电台节目的功能单一的

12、收音机已满足不了用户的需求,用户可能还希望收音机具有时钟、温度测控、闹钟等其他方面的功能,这些功能传统的收音机都不具备,这就促使了收音机的功能需要不断增强。 为了让收音机具有更强大的功能,更好的满足用户的需求,本文将基于单片机设计一款具有一定实用价值的多功能钟控收音机。此收音机不仅能够收听各种电台节目,还具有时钟、温度测量、液晶显示以及闹钟功能.1.3 本文结构本文的基本架构如下:第一章是绪论,主要论述多功能钟控收音机系统研究的背景、目的及意义。第二章是系统方案设计,主要论述系统的总体设计。第三章是系统硬件设计,主要论述闹钟子系统的芯片选型及硬件电路设计。第四章是系统软件设计,主要论述闹钟子系

13、统的流程图及关键代码。第五章是系统调试与实现,论述系统调试过程。第六章是结束语,主要论述系统评价及系统存在的不足。 2 系统方案设计2.1系统设计的主要任务本系统采用AT89S52单片机,加上收音机芯片TEA5767HN,时钟芯片DS1302,温度传感器芯片DS18B20和存储芯片AT24C02制作完成了一个多功能钟控收音机,利用液晶显示LCD1602。本系统需要实现的功能:收听各种电台节目,具有时钟、温度测量、闹钟功能以及液晶显示.整个系统的任务要求:1. 收音机模块拟采用数字收音芯片来实现收音机节目的播放、音量调节、电台切换及节目的自动搜索,同时还要具备节目频点存储功能。2. 时钟模块拟采

14、用时钟芯片来实现时钟设置,可通过按键进行时间的调整。3. 闹钟模块通过按键输入闹铃时间点,当到达设定时间值蜂鸣器响。4. 温度显示模块拟采用温度传感器来实现温度的测量,实时显示在液晶显示器上。5. 显示模块拟采用液晶显示屏来实现时间、温度及频率的显示。2.2系统总体设计由系统主要任务可知硬件电路设计主要包括主控模块、时钟模块、温度模块、闹钟模块、收音机模块、按键模块和显示模块。总体设计框图如图2.1所示。主控模块收音机模块时钟模块显示模块温度模块闹钟模块键盘模块图2.1 系统总体设计框图2.2.1 收音机模块 用户可以通过按启动键启动收音机工作,然后用户可以通过两种方式来调频收音机,一是如用户

15、已经保存有电台信息时,可以通过选台键查看已保存的电台信息,然后通过左/右键选择某一电台,用户选好台后按选台键收音机调频到用户选择的电台频率;二是用户可以直接按左右键进行选台,当用户按右键时,收音机会自动增加收音频率直到搜到有效电台为止,继续按右键收音机会继续增加收音频率搜索有效电台,用户按左键与右键一样,只是以收音频率减少的方式搜台。在收音过程中,用户可以按静音键,收音机静音,喇叭不再发出声音,用户再次按静音键,喇叭恢复原状态;同时用户可以按音量加/减键对音量大小进行调节。用户可以按睡眠模式键,收音机将进入睡眠状态,用户再次按睡眠模式键,收音机恢复原状态。2.2.2 时钟模块系统准时运行状态下

16、,能够准确显示时、分、秒信息,秒在不停地加1并显示,当秒加到60时秒变为00,同时分自动加1;在分加到60时分变为00,同时小时自动加1;在小时加到24时,小时变为00,同时日自动加1。2.2.3 温度模块在系统通电情况下,每隔一定的时间,系统采集当前的环境温度,对采集的数据转换为显示器可显示的数据显示出来。2.2.4 显示模块 正确显示时钟,温度以及收音机频率。2.2.5 闹钟模块用户通过按设置键,系统进入闹钟设置状态,显示屏上显示时、分、秒设置信息,首先是秒区域闪烁,用户通过加/减键对秒加减1,秒设置完毕后,用户按设置键进入分区域闪烁状态,用户可以通过加/减键对分加减1,用户按设置键进入时

17、区域闪烁状态,用户可以通过加/减键对时加减1,时设置完毕后,用户断续按设置键将保存用户设置的闹钟信息。退出闹钟设置状态,系统能够根据用户设置的闹钟信息在某一时间点上蜂鸣器鸣响。2.2.6 按键模块 通过按键可以实现对收音机,时钟,闹钟,温度进行实时操作。 3 系统硬件设计 闹钟子系统的硬件设计主要由主控模块电路设计、显示模块电路设计、按键模块电路设计、时钟模块电路设计、存储模块电路设计、打铃模块电路设计构成。下面是各个模块的详细硬件电路设计。3.1主控模块硬件电路设计 主控模块部分主要由AT89S52单片机组成,它是系统中控制部分关键的元件。下面分别从单片机的选型和硬件电路图来设计主控模块。3

18、.1.1单片机的选型方案一:采用AT89C2051芯片。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机,它具有体积小、功耗小。含有中断、定时/计数器。虽然其价钱相对便宜,但IO口数和存储空间相对较少,所以此芯片不利于系统的工作和系统功能的扩展。方案二:采用AT89C51芯片。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容,它具有AT89C51芯片的所有功能。且IO口数相对较多,价钱相对也比较便宜。方案三:采用AT89S52芯片

19、。AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,掉电保护方式下,RAM内容被保存,在众多嵌入式控制应用系统中得到广泛应用。 但其价格比C51昂贵。 通过对上面三种方案的比较,选择AT89C51芯片作为本此系统的主控芯片既有利于系统的工作和功能的扩展,成本又低。3.1.2 AT89S52单片机的引脚结构分析引脚图如图3.1所示。 图

20、 3.1 AT89S52引脚图VCC:电源 GND:地P0口:P0口是一个8位漏极开路的双向I/O口。P1口:P1口是一个具有内部上拉电阻的8 位双向I/O口,p1输出缓冲器能驱动4 个 TTL 逻辑电平。P2 口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4 个 TTL逻辑电平。P3 口:P3口是一个具有内部上拉电阻的8 位双向I/O口,p2输出缓冲器能驱动4个TTL 逻辑电平。P3口亦作为AT89S52 特殊功能(第二功能)使用,如表3.2所示。 引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INTO(外部中断低电平有效)P3.3INT

21、O(外部中断低电平有效)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通低电平有效)P3.7RD(外部数据存储器写选通低电平有效)表 3.2 P3口 第二功能说明XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2: 振荡器反相放大器的输出端。3.1.3 单片机最小系统设计图图3.3 单片机最小系统设计图3.2 显示模块硬件电路设计 显示模块部分采用LCD1602显示单片机处理后的时间。下面分别从显示芯片的选型和电路图来设计显示模块硬件电路。3.2.1显示芯片的选型 方案一:采用LED数码管。LED数码管(LED Segmen

22、t Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。但数码管只能显示数字,而本系统除了需要显示数字之外还需显示字符,所以LED数码管满足不了本系统的要求。方案二:采用LCD1602液晶显示屏。1602是一种字符液晶显示屏,1602 液晶内部的字符发生存储器(CGROM)已经存储了160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中的点阵字符图形显示出来,就能看到字母“A

23、”。方案三:采用LCD2402液晶模块,用LCD 显示一个字符时比较复杂,因为一个字符由68 或88 点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM 区的8 字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。由于LCD1602液晶显示模块显示16*2个字符,而LCD2402液晶显示模块能够显示24*2个字符,但在本设计中要显示的字符比

24、较少,相对于应用LCD2402来说LCD1602的功耗低、接口简单、价格实惠。综上所述,选择LCD1602作为本设计的显示模块。3.2.2 显示模块电路设计如图3.4所示LCD1602液晶显示电路图。图3.4 LCD1602液晶显示3.3 按键模块硬件电路设计通常使用的按键有独立式键盘和4*4矩阵式键盘,由于本系统用到的按键比较多, 所以选用4*4矩阵式键盘。如图3.5所示。图3.5 4*4矩阵式键盘3.4 时钟模块的硬件电路设计 时钟模块部分采用DS1302时钟芯片对时间进行读写操作;时钟模块电路设计主要由时钟芯片的选型和电路图构成。3.4.1时钟芯片的选型方案一:采用DS1307时钟芯片。

25、DS1307是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能。方案二:采用DS1302时钟芯片。DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。相对DS1307,DS1302可以提供掉电保护是本系统非常需要的功能,所以本系统选用DS1302.3.4.2时钟芯片DS1302结构分析DS1302 与单片机之间能简单地采用同步串

26、行的方式进行通信仅需用到三个口线(1)RES(复位)(2) I/O (数据线) (3)SCLK(串行时钟)时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。 DS1302引脚说明图3.6 DS1302的外部引脚 X1 X2:32.768KHz 晶振管脚 GND:地 RST:复位脚 I/O:数据输入/输出引脚 SCLK:串行时钟 Vcc,Vcc1:电源供电管脚3.4.3时钟模块电路设计 DS1302电路图如图3.7所示。图3.7 DS1302电路图3.5 存储模块硬件电路设计 存储模块部分采用AT24C02存储芯

27、片存储设置好的打铃时间。下面分别从存储芯片选型和电路图来设计存储模块硬件电路。3.5.1存储芯片选型方案一:AT24C04存储芯片。AT24C04是512字节的存储芯片,是低功耗CMOS串行EEPROM,存储器电压VCC是2.5V,频率1MHZ。方案二:AT24C08存储芯片。AT24C08是1024字节的存储芯片,也是低功耗CMOS串行EEPROM,用于许多要求低功耗和低电压操作的工业级或商业级应用。2-Wire串行接口。方案三:AT24C02存储芯片。AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功

28、耗。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。与AT24C04、AT24C08比较,AT24C02它具有工作电压宽、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。所以本系统采用AT24C02存储芯片。3.5.2存储芯片AT24C02结构分析闹钟模块设计中要把设置好的打铃时间存储起来所以要用到存储芯片,本系统中用到的是AT24C02存储芯片。在图3-8中AT24C02 的1、2、3 引脚是三条地址线,用于确定芯片的硬件地址。在设计上它们都接地,第8 脚正电源。第5 脚SDA为串行数据输入/输出,数据通过这条双向I2C总线

29、串行传送,第6 脚SCL为串行时钟输入线。SDA 和SCL 都需要和正电源间各接一个10k 的电阻上拉,第7脚和第4 脚分别需要接地,24C02 中带有片内地址寄存器.每写入或读出一个数据字节后,该地寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8 个字节的数据。图 3.8 AT24C02管脚图A0、A1、A2:器件地址选择SDL:串行数据、地址SCL:串行时钟WP:写保护VCC:+1.8V6.0V工作电压VSS:地3.5.2 AT24C02电路设计 电路图如图3.9所示。图 3.9 AT24C02电路图3.6 打铃模块电路设

30、计打铃模块采用蜂鸣器,在指定的打铃时间鸣叫。系统蜂鸣器的工作原理如下:当单片机端口输出高电平时,三极管与单片机连接的那极处于高电平,三极管不导通,蜂鸣器不响。当单片机端口输出低电平时,三极管与单片机连接的那极极处于低电平,三极管导通,蜂鸣器鸣响。在本系统中如果要运用到实际中的话本来是要把单片机端口P3.7口接上继电器再控制220V电源的电铃的,但由于各种原因,在这次设计中选用蜂鸣器来显示出打铃的效果的,蜂鸣器与单片机的连接图如图3.10所示。图 3.10 蜂鸣器连接图4 系统软件设计4.1 系统软件总体设计闹钟系统软件设计主要由五大模块构成即主控模块、显示模块、按键模块、时钟模块、存储模块。系

31、统软件总体设计图如图4.1所示。主控模块显示模块按键模块时钟模块存储模块设置当前时间设置打铃时间查看打铃时间设置秒设置分设置时设置时设置分4.1 系统软件总体设计图4.2 主控模块详细设计在主控模块中先初始化LCD1602,然后从时钟芯片中读取当前的时间和星期并在显示芯片上显示,不断地判断是否有键按下且比较当前时间是否为打铃时间,如有键按下则判断键号,如为0则进入时间设置状态,按2则进入查看打铃时间界面,按4则进入打铃时间设置界面,如果当前时间为打铃时间则打铃否则继续判断。 图 4.2 主控模块流程图流程图的关键代码:main() uchar a; uchar sec,min,hour,wee

32、k;time_w(); /读取ds1302中的时间while(1) lcd_pos(0x05); hour=ds1302_readhour();/显示小时lcd_wdat(hour/16+48);lcd_wdat(hour%16+48);lcd_wdat(:);min=ds1302_readmin();/显示分钟lcd_wdat(min/16+48);lcd_wdat(min%16+48);lcd_wdat(:);sec=ds1302_readsec();/显示秒钟lcd_wdat(sec/16+48);lcd_wdat(sec%16+48); key=0; if(keyscan() swit

33、ch(key) case 0:ds1302set(); /当前时间的修改 break; case 2: display_time(); /显示设置好的打铃时间 break; case 4: settime(); /设置打铃时间并存储到AT24c02中 break; time_w(); /显示当前ds1302中的时间 for(a=0;a0x7f;)if(hour/16*10+hour%16)=rd_byte_24c02(a+)if(min/16*10+min%16)=rd_byte_24c02(a+) BEEP=0;delay(20);BEEP=1;4.3 显示模块详细设计显示模块流程图如图4.

34、3所示开始设置命令口地址读状态字忙吗写命令寄存器初始化完毕吗设置数据口地址读状态字忙吗写显示数据数据写完吗结束YNNYYNYN4.3 显示模块流程图4.4 按键模块详细设计按键模块流程图如图4.4所示。开始P1口初始化判断是否有键按下?扫描行获取行号Y延时去抖扫描列获取列号计算键值设0标志NP1口初始化返回0或键值4.4按键模块流程图4.5 时钟模块详细设计时钟模块要实现的功能有设置当前时间包括对时、分、秒的设置。4.5.1设置当前时间模块详细设计进入时间设置函数后,先判断是否按键号为6,如为6则退出否则判断按键号进行秒、分、时的设定。退出是否退出秒分时设置设置秒设置分设置时键盘扫描键按下且按

35、键号为0或6键盘扫描,鸣叫按键为0秒分时设置切换YNYYNN02图 4.5 时间设置程序流程图关键代码:void ds1302set() /用四个键来设置时钟,功能键用号键,当功能键按下后才能进入设置状态,每按一次功能键,在秒、分、时等数据间切换设置,另设两键,实现数据加减, /最后一个是确认键,当数据设置完毕之后,按确认键退出当前设置状态。加的键号为,减为,确认键号为 uchar director=0; while(key!=6)switch(director) case 0: secset(); break; case 1:minset(); break; case 2:hourset()

36、; break; delay(1000);keyscan();while(!flag&(key!=0|key!=6)keyscan();BEEP=BEEP;delay(10); /等待用户再次按键设置 BEEP=1; if(key=0) director+;if(director=3)director=0;对秒的设置(分、小时原理如此):按键号为1则时间加1,为5则时间减1,为6则退出当前进入下一个设置。图 4.6 设置当前时间秒程序流程图4.6 存储模块详细设计 存储模块详细设计包括设置打铃时间和查看打铃时间两部分。设置打铃时间包括对打铃时间的小时、分钟分别进行设置然后存入AT24C02中。

37、4.6.1设置打铃时间模块详细设计进入打铃时间设置函数后,先判断是否按键号为6,如为6则退出否则判断按键号进行分、时的设定。图 4.6 打铃时间设置程序流程图关键代码:void settime() /用四个键来设置打铃时间,功能键为4号键,当功能键按下后才能进入设置状态,没按一次功能键, /在分、时间进行切换,每设置好一个后就按确认键就储存在AT24c02中,加号键为1,减号键为5,确认键为6;char a;uchar code ts=TimeSet:0 00:00;uchar director=0,b=0; /director用来选择是设置时还是分,b用来记录确认键的次数已确定在AT24c0

38、2中的存储位置; lcd_init();lcd_pos(0); /第一行显示地址a=0;while(tsa!=0)lcd_wdat(tsa);a+;while(key!=6)lcd_pos(0x08); lcd_wdat(b+48);switch(director) case 0: sethour(b); break; case 1:setmin(b); break; delay(1000);keyscan();while(!flag&(key!=4|key!=6)keyscan();BEEP=0;delay(10); /等待用户再次按键设置 BEEP=1; if(key=4) b+; dir

39、ector+;if(director=2)director=0; 对打铃时间小时的设置(分钟也是如此)程序流程图如图4.7所示图 4.7 设置打铃时间小时程序流程图4.6.2查看打铃时间模块详细设计查看打铃时间模块:先对LCD清屏,然后判断键号是否为6,如为6则退出当前界面,否则循环读取AT24c02中已存储的时间并显示。图 4.8查看打铃时间程序流程图查看打铃时间关键代码:void display_time() uchar i,j,a;uchar code FT=display time:; lcd_w(0x01);/清屏lcd_pos(0); /第一行显示地址j=0;while(FTj!=

40、0)lcd_wdat(FTj);j+;while(key!=6)keyscan();for(i=0;i0x09;) / 循环读取范围为0x000x7f中的存储数据(0x7f是AT24c02中的最大地址)lcd_pos(0x44);lcd_wdat(i/2)+48);lcd_pos(0x46);a=rd_byte_24c02(i);lcd_wdat(a/10+48); /循环读取AT24c02中的数据并显示lcd_wdat(a%10+48);lcd_pos(0x48);lcd_wdat(:); lcd_pos(0x49);a=rd_byte_24c02(i+1);lcd_wdat(a/10+48

41、); /循环读取AT24c02中的数据并显示lcd_wdat(a%10+48);i=i+2; delay(250);delay(250);5系统的调试与实现5.1系统开发环境Keil C介绍随着单片机开发技术的不断发展,从普通使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是美国KEIL Software公司出品的基于Windows的51系列单片机C语言集成开发系统,是目前最流行开发51系列单片机的软件,这从近几年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一

42、个集成开发环境(u Vision)将这些部分组合在一起。掌握Keil这一软件的使用方法对于使用51系列单片机的爱好者来说是十分重要的。如果使用C语言编程,那么Keil几乎是不二之选,因为keil u Vision3生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势,即使不用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令人事半功倍。其集成开发环境界面如图5-1所示。图5.1 Keil软件界面 下面是建立一个新工程的步骤: ProjectNew project,弹出下面的框: 选择保存的路径给工程起个名字,确定后出

43、现另一个框: 选择AtmelAT89S52确定。接下来FileNew,写好后保存。 这是一组编译的工具 这是输出的结果,可以清晰的看到你的代码是否出错,出错在哪里便于修改。 到此系统调试就已经结束了。6 结束语本课题成功开发了基于单片机多功能钟控收音机系统,充分发挥了51单片机优点及其它芯片的特性。利用C语言采集温度传感器、时钟芯片及数字收音芯片的实时数据,通过单片机对数据进行合理的处理,就可以动态地显示数据,该基于单片机的多功能收音机系统比传统的收音机系统在性能上有所改善,而且功能也有所增加。在对多功能钟控收音机系统进行总体设计深入研究后,选用了AT89S52单片机、DS1302时钟芯片、AT24C02存储芯片、LCD1602液晶显示屏及蜂鸣器,合理利用了该单片机和其他芯片的特性及资源,从而使用较少的元器件开发出性能较好且成本低廉的系统。在广泛查阅和研究分析文献资料的基础上,将系统分为几个部分进行硬件电路设计及软件设计,设计出硬件电路图和各个模块程序流程图,最终通过KeilC编写C语言代码实现各个模块的功能,通过反复修改代码加上实际试验得出了最终的结果实现了想要的功能。该多功能钟控收音机系统除了具有一般的收音机的节目的播放、音量调节、电台切换及节目的自动搜索功能以外,还增加了节目频点存储及红外遥控功能,时钟功能和环境温度测量功能,且时钟可以通过按键调整,并且

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号