单片机综合设计实例与实验(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-10 16:50:21

点击下载

作者:唐颖

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

单片机综合设计实例与实验

单片机综合设计实例与实验试读:

前言

单片机原理及应用是电类专业中应用性很强的课程,实践教学环节对学好这门课程起着非常重要的作用。编者多年来从事单片机原理及应用课程的教学、实践指导和电子竞赛辅导培训,积累了丰富的实践教学经验,同时也深感有一本系统的单片机应用实践教材的重要性。为此,与相关企业合作,结合教学与应用实际,编写了围绕着单片机实验、课程设计、毕业设计、电子设计竞赛辅导等实践环节的单片机实践教学指导书。

本书分为单片机综合设计实例和基础实验两大部分。综合设计实例部分共14章,精选了14个单片机综合应用的实例,内容包括单片机在8路抢答器、LED数字钟、超声波测距器、数字温度计、液晶多功能电子台历、数控信号发生器、太阳能热水器控制器、数控直流稳压电源、智能交通灯控制系统、环境监测系统、LED调光器、智能电动小车、触摸遥控器和Zigbee无线通信系统14个应用方向的例子。每章都提供了硬件电路原理图及源程序清单,程序采用C语言编写,有利于读者分析、理解及进行实验制作与验证。在每章中还提供了功能扩展要求,读者可参考书中给出的程序做相应的修改,完成功能扩展,逐步提高单片机的应用能力。基础实验部分含8个实验,主要是配合单片机课程教学安排的实验,内容包括输入/输出端口的基本应用、定时/计数器的基本应用、中断系统的应用、串口通信接口的应用、显示接口应用、键盘接口应用、数模转换的接口应用等,附录中给出了Keil C软件使用简介。

本书可作为高等院校的教师和学生进行单片机设计应用实验、课程设计、毕业设计等实践教学的指导教材,或作为大学生参加电子设计竞赛等科技活动的辅导书,也可以作为单片机设计应用开发人员的参考用书。

本书由浙江树人大学的唐颖、程菊花、陈友荣、阮越、许森编写,黄震梁、骆克静等老师也参加了部分工作,全书由唐颖主编并统稿。在本书的编写过程中,借鉴许多教材的宝贵经验,在此谨向这些作者表示诚挚的感谢。

由于编者水平有限,不妥之处在所难免,衷心希望广大读者批评指正。

编 者

2014年12月

第一部分 综合设计

第1章 单片机8路抢答器

1.1 功能要求

抢答器是为智力竞赛参赛者进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。实现抢答器功能的方式有很多种,本项目要求利用51系列单片机作为核心部件设计一个供8名选手参加、能进行逻辑控制及显示的8路抢答器。

每名选手有一个抢答按钮,按钮的编号与选手的编号相对应,抢答器具有信号的鉴别和数据的锁存、显示的功能。抢答开始后,若有选手按抢答按钮,则在数码管上显示相应的编号,蜂鸣器发出音响提示。同时,电路应具备自锁功能,禁止其他选手再抢答,优先抢答选手的编号一直保持到主持人按下“开始答题”按钮。抢答器具有定时抢答的功能。在主持人发出抢答指令后,定时器立即进行减计时,并在显示器上显示,同时蜂鸣器发出短暂的声响,声响持续0.5s左右。选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器显示选手编号及最后倒计时剩下的时间。主持人按下“开始答题”按钮,答题时间就开始倒计时。当按复位键后,完成一次抢答流程。

系统完成的主要功能:(1)设置一个由主持人控制的系统清除和抢答控制开关,主持人提问后按下启动开关。参加竞赛者要在最短的时间内对问题做出判断,并按下抢答按钮回答问题。(2)抢答器具有锁存与显示功能。当第一个人按下按钮后,在显示器上显示此竞赛者的编号,扬声器发出短暂声响提示。同时对其他抢答案件封锁,使其不起作用。竞赛者的编号保持到主持人将系统清除为止。(3)系统具有定时抢答功能,定时时间由主持人设定。当主持人启动“开始”键后,倒计时显示定时时间。(4)竞赛者在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示竞赛者的编号和抢答剩余的时间,并保持到主持人将系统清除为止。(5)若在规定的抢答时间内无人抢答,则本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

1.2 主要器件介绍——LED数码管显示器

LED数码管显示器是由发光二极管按一定结构组合起来显示字段的显示器件,也称数码管。在单片机应用系统中通常使用的是8段式LED数码显示器,其外形结构和引脚如图1.1(a)所示。它由8个发光二极管构成,通过不同的组合可显示0~9、A~F及小数点“.”等字符。其中7段发光二极管构成7笔的“8”字形,1段组成小数点。

数码管有共阴极和共阳极两种结构。如图1.1(b)所示为共阴极结构,8段发光二极管的阴极端连接在一起作为公共端,阳极端分开控制。使用时公共端接地,此时当某个发光二极管的阳极为高电平,则此发光二极管点亮。如图1.1(c)所示为共阳极结构,8段发光二极管的阳极端连接在一起作为公共端,阴极端分开控制。使用时公共端接电源,此时当某个发光二极管的阴极为低电平(通常接地),则此发光二极管点亮。

显然,要显示某种字形,就必须使此字形的相应字段点亮,即从图1.1(a)中的a~g引脚输入不同的8位二进制编码,可显示不同的数值或字符。通常将控制发光二极管的8位数据称为“字段码”。不同数字或字符的字段码不一样,而对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码,0~9数字的共阴极和共阳极的字段码见表1.1。图1.1 LED数码管表1.1 数字的共阴极和共阳极的字段码

数码管按其外形尺寸有多种形式,使用较多的是0.5″和0.8″,显示的颜色也有多种形式,主要有红色和绿色,亮度强弱可分为超亮、高亮和普亮。数码管的正向压降一般为1.5~2V,额定电流为10mA,最大电流为40mA。由显示数字或字符转换到相应的字段码的方式称为译码方式。数码管是单片机的输出显示器件,单片机要输出显示的数字或字符通常有两种译码方式:硬件译码方式和软件译码方式。

硬件译码方式是指用专门的显示译码芯片来实现字符到字段码的转换。硬件译码电路如图1.2所示。硬件译码时,要显示的一个数字,单片机只须送出这个数字的4位二进制编码,经I/O接口电路并锁存,然后通过显示译码器,就可以驱动 LED 显示器中的相应字段发光。硬件译码由于使用的硬件较多(显示器的段数和位数越多,电路越复杂),缺乏灵活性,且只能显示十六进制数,硬件电路较为复杂。图1.2 硬件译码电路

软件译码方式就是通过编写软件译码程序(通常为查表程序)来得到要显示字符的字段码。由于软件译码不需外接显示译码芯片,使硬件电路简单,并且能显示更多的字符,因此在实际应用系统中经常采用。

1.3 硬件电路设计

根据系统要求的功能,硬件电路可分为抢答电路、显示电路、主持人控制电路、定时电路、报警电路、声音提示电路、键盘控制电路、设置电路及单片机控制电路等。整个硬件电路如图1.3所示。

在图1.3中,通过复位键RST使电路进入就绪状态,等待抢答。首先由主持人发布抢答命令,按下S3(启动)键,进入倒计时状态和抢答状态。在电路中“S7~S14”为8路抢答器的8个按键,如果有人按下按键,程序就会判断是谁先按下的,然后从P0端口输出抢答者号码的七段码值,输送到数码管显示,并封锁键盘,保持刚才按键按下时刻的时间,禁止其他人按键信号的输入,从而实现了抢答的功能。如果在设定的时间内没有人按下按键,一到时间则产生报警信号表示已超时,不可以抢答。当主持人按S4(限时开始)键,答题开始,答题时间开始倒计时。如没有按复位键,时间倒计直到0,并报警。当要进行下一次抢答时,由主持人先按一下复位键S2,电路复位,进入下一次抢答的准备状态。主持人可以在抢答开始前按“S5”、“S6”功能键分别设置抢答时间和答题时间。图1.3 8路抢答器硬件电路1.3.1 LED数码管显示电路

在图1.3中,4个数码管选用共阴极数码管。左边的2个数码管作为倒计时显示用,最右边的1个数码管用于显示抢答者的编号,它们中间的那个数码管显示“-”,用于两种信息的分隔。

P0端口外接上拉电阻,输出软件译码后的字段码,P2.0~P2.3输出4个数码管的位线,用于控制数码管的动态扫描显示。1.3.2 按键电路

在图1.3中,共有13个按键,分别为复位键S2、功能键S3~S6、抢答键S7~S14。复位键S2控制单片机的复位引脚RST,4个功能键S3~S6分别连接单片机的P3.0、P3.2、P3.3、P3.4。它们的功能如下:S3键为主持人的抢答开始启动键;S4键是限时答题启动键;S5键是抢答时间调整键;S6键是限时时间调整键。8个抢答按键S7~S14分别为1~8号抢答者的按键,连接单片机的P0端口。

当主持人按“S2开始”键时,抢答电路和定时电路进入正常抢答状态。当参赛选手按下抢答键时,蜂鸣器声响,抢答电路和定时电路停止工作。主持人按“答题开始”键时,定时电路进入答题时间倒计时状态。1.3.3 声音提示电路

声音提示电路由一个10 kΩ的电阻,一个三极管和一个蜂鸣器组成,如图1.4所示。

1.蜂鸣器电路

蜂鸣器根据结构不同可分为压电式蜂鸣器和电磁式蜂鸣器,而两种蜂鸣器又分为有源蜂鸣器和无源蜂鸣器。这里的源特指振荡源。有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要提供振荡源,理想的振荡源为一定频率(1.5~2.5kHz)的方波。工作电源为1.5~15V。

在图1.4中采用的是无源蜂鸣器,三极管用于驱动,接在三极管基极的10 kΩ电阻为限流电阻,利用晶体管的高电流增益,以达到电路快速饱和的目的。由于系统采用了无源蜂鸣器,所以需要通过编程来控制P3.7端口的翻转来产生一定频率的方波。图1.4 声音提示电路

2.声音提示电路功能

声音提示电路在主持人发出可以抢答信号时、在有人按下抢答按键时、在倒计时时间到时等3种情况下发出蜂鸣声。

抢答器具有定时抢答功能,并且一次抢答的时间由主持人设定(如30s)。当主持人启动总控制的启动键后,定时器进行抢答倒计时,并在显示器上显示。参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,并在LED数码管上显示选手的编号,同时扬声器发出报警声响,提示主持人。同时其他人再按就无效,并一直保持到主持人将系统清除为止。当在设定的时间内没有人抢答,倒计时完毕后蜂鸣器也会发出短时间的叫声,提示本次抢答无效,系统报警并禁止抢答,定时显示器上显示0,并发出持续一段时间的报警声。1.3.4 单片机电路

单片机电路根据键盘输入控制数码管显示或声音提示。通过读取P1.0~P1.7的状态读取按键的情况;通过读取P3.0的状态读取抢答是否开始的信息;通过读取P3.2的状态读取答题倒计时是否开始的信息;通过读取P3.3的状态来确定是否要修改抢答时间;通过读取P3.4的状态来确定是否要修改答题的时间;通过P2.0~P2.3控制显示模块以显示抢答者的编号和倒计时所剩时间;通过P3.7控制蜂鸣器。

1.4 程序设计

系统的工作过程如下:(1)设定抢答的时间已设置好,默认为20s。主持人发布抢答命令,按下S3功能键后,蜂鸣器响一声,开始倒计时。4个数码管的最高两位显示倒计时时间,最低一位显示“0”。(2)若有抢答者率先在规定时间内按键,则蜂鸣器响一声,4个数码管的最低一位显示抢答者的编号。(3)若在主持人未按下抢答启动键或抢答限时结束后有选手抢答,则此时蜂鸣器响一声,最低一位数码管显示犯规者的编号,最高两位数码管显示“FF”用以指示有人犯规。(4)如在规定时间内无人抢答,4个数码管显示“FF F”(倒数第2个数码管不亮)。(5)抢答时间调整时,4个数码管最高两位显示抢答预置时间,最低两位显示“-”。答题时间调整时,4个数码管最高两位显示答题预置时间,最低两位显示“==”。(6)在抢答完毕后,主持人需按一下复位键,这时数码管计时和编号显示位都不显示,表明恢复到初始状态,准备下一轮抢答。

从以上分析可知,系统软件分为按键扫描程序模块、显示程序模块、报警程序模块和主程序等。1.4.1 显示程序

显示程序将完成以下功能:若在抢答限时内有人抢答,则4个数码管中最低位数码管显示抢答者的编号,最高两位数码管显示倒计时间;若无人抢答,则最低位数码管不显示;若超过抢答限时时间还有人抢答,则最低位数码管显示抢答者的编号,最高两位数码管显示“FF”,表示抢答无效;若超过抢答限时时间且无人抢答时,若按下抢答时间设置键(键S5),则最高两位数码管显示时间的设置,最低两位数码管显示“-”,若按下答题时间设置键(键S6),则最高两位数码管显示时间的设置,最低两位数码管显示“==”;若时间设置键没有被按下,则4个数码管显示“FF F”。显示在抢答限时内有人抢答的程序代码如下:1.4.2 按键扫描程序

按键扫描程序模块主要扫描键盘,读取键盘值。判断主持人是否按动启动键,是否有抢答者按动答题键以及对相应按键进行处理的函数。

Key_Scan(void)函数用于检测主持人是否按动启动按键。当程序检测到单片机P3.0引脚变为低电平,延时去抖动后,仍检测为低电平时,判断主持人确实按动了启动键,开启抢答倒计时。程序代码如下:

函数Scan(void)用于检测是否有抢答者按下答题键。程序读取P1口的值,按照从P1.0~P1.7的顺序逐个检测。当某个引脚值为0时,表明有按键被按下。同时对答题键进行处理,当抢答者按下答题键时,函数显示抢答者号码,程序代码如下:1.4.3 报警程序模块

报警程序模块主要用于控制蜂鸣器发出报警,提示声音,这一功能是利用定时器T1定时中断来实现的。程序代码如下:1.4.4 主程序模块

主程序模块主要完成以下功能:定时器初始化后,循环执行以下功能:调检测主持人是否按键函数,若按下,调用8个按键扫描函数,调用显示函数;若有抢答者按键,则等主持人按下答题计时键时,蜂鸣器响起,提示开始答题倒计时。程序代码如下:1.4.5 系统参考程序

系统程序流程图如图1.5所示。图1.5 系统程序流程图

参考程序如下:

若在抢答限时内有人抢答,则4个数码管中最低位数码管显示抢答者的编号,最高两位数码管显示倒计时间;若无人抢答,则最低位数码管不显示;若超过抢答限时还有人抢答,则最低位数码管显示抢答者的编号,最高两位数码管显示“FF”,表示抢答无效;若超过抢答限时且无人抢答时,判断抢答时间设置键(键S5)被按下,则最高两位数码管显示时间的设置,最低两位数码管显示“-”,若答题时间设置键(键S6)被按下,则最高两位数码管显示时间的设置,最低两位数码管显示“==”;若时间设置键没有被按下,则4个数码管显示“FF F”。

定时器初始化后,循环执行以下功能:调用检测主持人是否按键函数,若被按下,调用8个按键扫描函数,调用显示函数;若有抢答者按键,则等主持人按下答题计时键时,蜂鸣器响起提示声,开始答题倒计时。

每隔2ms中断一次,定时1s后,设置的定时初值减1(倒计时),减到最后4s时,蜂鸣器响两声(提示)。

1.5 功能扩展

本设计给出一个基本抢答器的硬件电路及软件设计方法。读者可以对该设计进行功能扩展。例如:通过增加按键数量来增加竞赛人数;加入语音芯片实现不同语音提示;加入通信接口,实现计算机管理多个抢答器等。

第2章 LED数字电子钟

2.1 功能要求

数字时钟是日常生活中广泛应用的电子产品。本项目采用单片机AT89C51作为主控器,以软件设计的方式实现时间、日期显示。用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1。开机时显示时间00-00-00,开始计时:P1.1控制“秒”的调整,每按键一次加1s;P1.2控制“分”的调整,每按键一次加1分;P1.3控制“小时”的调整,每按键一次加1小时,计时满23-59-59时,返回00-00-00重新计时。P1.4控制“日”的调整,每按键一次加1日;P1.5控制“月”的调整,每按键一次加1月;P1.6控制“年”的调整,每按键一次加1年。P1.0作为复位键,在计时过程中若按下复位键,则返回00-00-00状态重新计时。

系统完成的主要功能:(1)时间、日期显示:系统时间采用24小时制。日期显示可判断大、小月、闰月和闰年。(2)设置功能:用户可以对系统的时间、日期进行设置。用户按下“设置”键后,可选择“秒加”、“分加”、“小时加”、“日加”、“月加”、“年加”等按键进行秒、分、小时、日、月、年的设置操作,每按键一次加1。

2.2 硬件电路设计

根据系统要求的功能,硬件电路包括时间显示电路(小时、分、秒、年、月、日)、时间调整电路及单片机控制电路等。整个硬件电路如图2.1所示。2.2.1 数码管动态显示方式及时间显示电路

1.数码管动态显示方式

数码管动态显示是将所有数码管的字段选线(a~g,dp)都并联在一起,连接到一个8位的I/O口上,每个数码管的公共端(称为位线)分别由相应的I/O口线控制,如图2.2所示为一个8位数码管动态显示图。

在图2.2中,由于每一位数码管的段选线都接在一个I/O口上,所以每送一个字段码,8位数码管就显示同一个字符。为了能得到在8个数码管上显示不同字符的显示效果,利用人眼的视觉惰性,采用分时轮流点亮各个数码管的动态显示方式。具体方法是,从段选线I/O口上按位分别送显示字符的字段码,在位选控制口也按相应顺序分别选通相应的显示位(共阴极输送低电平,共阳极输送高电平),被选通位就显示相应字符(保持几个毫秒的延时),没选通的位不显示字符(灯熄灭),如此不断循环。从单片机工作的角度看,在一个瞬间只有一位数码管显示字符,其他位都是熄灭的,但因为人眼的视觉暂留现象,只要循环扫描的速度在一定频率以上,这种动态变化人眼是察觉不到的。从效果上看,就像8个数码管能连续和稳定地同时显示8个不同的字符。

LED动态显示方式由于各个数码管共用一个段码输出口,分时轮流选通,从而大大简化了硬件电路。但这种方法的数码管接口电路中数码管也不宜太多,一般在8个以内,否则每个数码管所分配到的实际导通时间会太少,显得亮度不足。若数码管位数较多时应采用增加驱动能力的措施,提高显示亮度。图2.1 数码管时钟电路图图2.2 8位数码管动态显示

2.时间显示电路

时间显示电路采用数码管动态显示方式,由单片机的P0端口连接显示时、分、秒8个数码管的字段选线上,P2端口接显示年、月、日8个数码管的字段选线上,而P3口则作为位选控制口,同时控制显示时、分、秒和年、月、日数码管的公共端。设初始年份为2014年。2.2.2 按键接口电路

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载