蜂鸣器流水灯数码管显示作息时间控制单片机课程设计
单片机流水灯课程设计
![单片机流水灯课程设计](https://img.taocdn.com/s3/m/cd9955f70d22590102020740be1e650e52eacf9f.png)
单片机流水灯课程设计第一篇:单片机流水灯课程设计单片机原理及系统课程设计报告基于AT89C51单片机的流水灯引言1.1 课题简介单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:在智能仪器仪表上的应用,例如精密的测量设备;在工业控制中的应用,用单片机可以构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等;在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
单片机在医用设备领域中的应用,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等;在各种大型电器中的模块化应用,如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。
单片机流水灯课程设计
![单片机流水灯课程设计](https://img.taocdn.com/s3/m/7ebf1957a200a6c30c22590102020740bf1ecd73.png)
添加标题
添加标题
添加标题
添加标题
闪烁频率:测量流水灯每秒闪烁的 次数
稳定性:测试流水灯在长时间工作 下的稳定性,确保其不会因长时间 工作而损坏或失效
流水灯系统的可靠性测试
测试目的:验证流水灯系统的稳定性和可靠性 测试方法:使用不同的输入信号,观察流水灯的反应 测试内容:包括但不限于电源电压、电流、温度、湿度等环境因素 测试结果:记录流水灯在不同环境下的表现,分析其稳定性和可靠性
单片机的 特点:体 积小、功 耗低、可 靠性高、 编程简单 等
单片机的编程语言和开发环境
编程语言: C语言、 汇编语言 等
开发环境:
Keil
uVision、
IAR
Embedd
e
d
Workbe
nch等
编译工具: GCC、 AVR Studio等
仿真工具: Proteus、 Multisim 等
调试工具: J-Link、 ST-Link 等
Part Five
流水灯软件设计
单片机控制程序的编写
编写目的:实现流水灯的动态 效果
编程语言:C语言或汇编语言
程序结构:主程序、子程序、 中断服务程序等
程序功能:控制流水灯的亮灭、 速度、方向等
流水灯的程序流程图设计
初始化:设置流 水灯的初始状态
循环:循环执行 流水灯的显示过
程
判断:判断流水 灯的当前状态
流水灯的电路板布局和布线
电路板布局:根 据流水灯的功能 和需求,合理布 局各个元器件的 位置
布线原则:遵循 信号传输的优先 顺序,避免信号 干扰和串扰
布线技巧:采用 合理的布线方式, 如蛇形布线、星 形布线等,提高 信号传输速度和 稳定性
蜂鸣器单片机课程设计
![蜂鸣器单片机课程设计](https://img.taocdn.com/s3/m/31536d754a73f242336c1eb91a37f111f1850dda.png)
蜂鸣器单片机课程设计一、课程目标知识目标:1. 学生能够理解单片机的结构组成、工作原理及其在自动化控制中的应用。
2. 学生能够掌握蜂鸣器的工作原理,并运用编程知识实现对蜂鸣器的控制。
3. 学生能够了解并掌握相关的电子元器件知识,如电阻、电容、二极管等。
技能目标:1. 学生能够运用所学知识,设计并搭建简单的基于单片机的蜂鸣器控制系统。
2. 学生能够编写程序,实现对蜂鸣器音调、音量的控制,完成特定功能。
3. 学生能够通过实践操作,培养动手能力、问题解决能力和团队协作能力。
情感态度价值观目标:1. 学生能够培养对电子技术的兴趣,激发学习热情,形成自主学习、探索未知的良好习惯。
2. 学生能够认识到单片机在现实生活中的应用,理解科技发展对生活的改善,增强社会责任感。
3. 学生能够在团队协作中学会尊重他人,培养良好的沟通能力和团队精神。
分析课程性质、学生特点和教学要求,本课程旨在让学生在掌握单片机基本原理的基础上,通过实践操作,学会设计简单的蜂鸣器控制系统,培养实际操作能力。
课程目标分解为具体学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理,重点讲解AT89C51单片机的内部结构、引脚功能及其指令系统。
相关教材章节:第一章 单片机概述、第二章 AT89C51单片机结构。
2. 蜂鸣器工作原理:讲解蜂鸣器的基本构造、工作原理,以及如何通过单片机控制蜂鸣器发出不同音调的声音。
相关教材章节:第三章 常用外围设备、第六章 单片机控制蜂鸣器。
3. 程序设计:教授如何编写C语言程序,实现对蜂鸣器音调、音量的控制,并完成特定功能。
相关教材章节:第四章 单片机C语言编程、第五章 单片机中断与定时器。
4. 电子元器件知识:介绍电阻、电容、二极管等常用电子元器件的原理及应用。
相关教材章节:第七章 常用电子元器件。
5. 实践操作:安排学生进行单片机控制蜂鸣器的实践操作,包括电路搭建、程序编写、调试与优化等。
单片机课程设计报告蜂鸣器
![单片机课程设计报告蜂鸣器](https://img.taocdn.com/s3/m/59d0f964cfc789eb162dc81a.png)
河南师范大学新联学院单片机课程设计报告课程单片机原理及接口技术设计题目蜂鸣器演奏歌曲年级专业 2011级计算机科学与技术学号 11 047000000学生姓名李指导教师莹2014年 6 月 15 日蜂鸣器演奏歌曲实验报告一、要求完成驱动蜂鸣器歌曲演奏的实验二、目的1、学习KEIL软件的使用方法;2、掌握BST-V51单片机学习板设计蜂鸣器音乐的发生;3、掌握设计中各模块的功能,能够填入并演奏曲子;4、学习乐谱的基本知识,掌握其演奏的原理。
三、分析1、基本原理简述声音是通过振动产生的。
单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。
若改变输出方波的频率,产生的声音随之改变。
通过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就可以产生电子音乐。
音乐的播放选择可以通过按键的输入得以实现。
为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半。
因此,输出引脚在每个方波周期内要动作两次:一次升高,一次降低。
即输出引脚的频率是原音频率的两倍。
2、单片机产生不同频率脉冲信号的原理(1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。
(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下:N=Fi/2/Fr(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)(3)其计数值的求法如下:T=65536-N=65536-Fi/2/Fr计算举例:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO (523Hz)、高音DO(1046Hz)的计数值。
单片机电子时钟课程设计报告
![单片机电子时钟课程设计报告](https://img.taocdn.com/s3/m/68393864dc36a32d7375a417866fb84ae45cc39d.png)
单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
单片机课程设计蜂鸣器
![单片机课程设计蜂鸣器](https://img.taocdn.com/s3/m/e08c180e3d1ec5da50e2524de518964bcf84d28f.png)
单片机课程设计蜂鸣器一、课程目标知识目标:1. 理解单片机的基本原理,掌握蜂鸣器模块的电路连接和工作原理;2. 学会编写控制蜂鸣器响铃、停铃的程序代码,理解程序中的延时函数及其作用;3. 了解蜂鸣器在不同应用场景下的使用方法,如报警、音乐播放等。
技能目标:1. 能够独立完成蜂鸣器模块与单片机的连接,进行电路调试;2. 掌握使用编程软件编写、编译和烧录程序到单片机,实现蜂鸣器的控制;3. 培养学生的动手操作能力,提高问题解决能力。
情感态度价值观目标:1. 激发学生对单片机编程的兴趣,培养其主动探究精神;2. 培养学生的团队合作意识,学会在团队中沟通与协作;3. 引导学生关注单片机在现实生活中的应用,认识到科技改变生活的意义。
分析课程性质、学生特点和教学要求:本课程为单片机课程的实践环节,以动手操作为主,注重培养学生的实践能力和创新思维。
针对学生年级特点,课程内容以基础为主,逐步提高难度。
在教学过程中,教师需关注学生的学习进度,及时解答疑问,确保学生能够掌握课程内容。
1. 熟练掌握蜂鸣器模块的使用,实现基本的控制功能;2. 提高编程技能,为后续学习更复杂的单片机应用打下基础;3. 增强对单片机应用场景的认识,激发学习兴趣,培养良好的情感态度。
二、教学内容1. 理论知识:- 单片机基础原理介绍,重点掌握CPU、内存、I/O口等基本组成部分;- 蜂鸣器模块工作原理,理解其电路连接方式及控制方法;- 编程软件的使用,包括编写、编译、烧录程序的基本步骤。
2. 实践操作:- 蜂鸣器模块与单片机的连接,学会使用杜邦线进行电路搭建;- 编写程序控制蜂鸣器响铃与停铃,掌握延时函数的使用;- 设计简单的报警程序,实现蜂鸣器不同频率的响铃。
3. 教学大纲:- 第一课时:单片机基础原理学习,蜂鸣器模块介绍;- 第二课时:编程软件的使用,编写简单的控制程序;- 第三课时:实践操作,连接电路,烧录程序,调试蜂鸣器;- 第四课时:拓展应用,设计报警程序,提高编程技能。
单片机论文之流水灯及数码管控制解析
![单片机论文之流水灯及数码管控制解析](https://img.taocdn.com/s3/m/4ee5760b580102020740be1e650e52ea5518ce01.png)
单片机论文之流水灯及数码管控制解析用单片机控制流水灯及数码管目录课程设计目录 (1)课程设计摘要 (2)正文 (3)课程设计涉及的知识及所需平台 (3)元件介绍 (9)电路设计及分析 (12)程序设计 (14)调试运行 (21)设计心得 (23)参考文献 (24)一:课程设计摘要设计摘要设计要求:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减至765398并保持显示此数,与此同时利用定时器0以500MS的速度进行流水灯从上到下的移动,当数码管上的数减到停止时,流水灯也停止然后全部闪烁,3秒后(用T0定时)流水灯全部关闭,数码管上显示“HELLO”,到此保持住。
设计说明:数码管的动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端有效”,并送出相应的字型显示编码。
此时其他位的数码管因位选端无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。
通过定时器可以控制单片机上的数码管以及流水灯的显示时间,从而达到设计的要求。
关键词:单片机,数码管,动态显示,流水灯,定时器设计目的以AT89C52单片机为核心,制作一个数码管和流水灯互相配合显示的器件。
巩固加深对AT89C52单片机的认识,学会用AT89C52设计最小系统,并由此拓展运用单片机实现其他功能的设计。
设计引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
单片机课程设计蜂鸣器
![单片机课程设计蜂鸣器](https://img.taocdn.com/s3/m/1bb2068d370cba1aa8114431b90d6c85ed3a884d.png)
单片机课程设计 蜂鸣器一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握蜂鸣器在单片机系统中的应用。
2. 使学生掌握蜂鸣器的电路连接和工作原理,能够运用编程实现蜂鸣器的控制。
3. 帮助学生掌握相关指令和程序设计方法,实现蜂鸣器的不同音调、音量及节奏的控制。
技能目标:1. 培养学生动手操作能力,能够独立完成蜂鸣器与单片机的连接和调试。
2. 提高学生的编程能力,使其能够设计出功能完善、结构清晰的蜂鸣器控制程序。
3. 培养学生的问题分析和解决能力,能够针对实际需求,调整程序参数,实现不同功能。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣和热情,激发学生主动探索和实践的精神。
2. 培养学生的团队合作意识,鼓励学生在课堂上积极交流、分享经验,共同进步。
3. 培养学生严谨、认真、负责的学习态度,使其在课程学习过程中养成良好的学习习惯。
课程性质分析:本课程为单片机课程设计,以实践操作为主,注重理论联系实际,提高学生的动手能力和创新能力。
学生特点分析:学生处于高年级阶段,已具备一定的单片机基础知识和编程能力,对实践操作有较高的兴趣。
教学要求:结合课程性质和学生特点,明确课程目标,注重理论与实践相结合,充分调动学生的积极性和主动性,培养其独立思考和解决问题的能力。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高其综合素质。
二、教学内容1. 理论知识:- 单片机原理概述,重点掌握其内部结构、工作原理及指令系统。
- 蜂鸣器工作原理,包括蜂鸣器的种类、电路连接方式及声音产生机制。
- 编程语言基础,复习C语言基本语法,强调其在单片机编程中的应用。
2. 实践操作:- 蜂鸣器与单片机的硬件连接,学会使用面包板进行电路搭建。
- 编写蜂鸣器控制程序,实现不同音调、音量和节奏的控制。
- 调试程序,学会使用调试工具,分析并解决程序运行过程中可能出现的问题。
3. 教学大纲:- 第一周:单片机原理复习及蜂鸣器工作原理学习。
单片机流水灯课程设计
![单片机流水灯课程设计](https://img.taocdn.com/s3/m/2ac8f13124c52cc58bd63186bceb19e8b9f6ec5f.png)
单片机流水灯课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理和结构,掌握流水灯的设计方法。
2. 学生能描述流水灯程序的设计流程,包括电路连接、编程语言及指令的运用。
3. 学生了解并能够解释流水灯中涉及的电子元件功能,如电阻、电容、LED 等。
技能目标:1. 学生能够独立完成流水灯电路图的绘制,并正确搭建电路。
2. 学生能够运用指定的编程软件,编写并调试出流水灯的程序代码。
3. 学生通过动手实践,提高问题解决能力和团队协作能力。
情感态度价值观目标:1. 学生通过完成流水灯的制作,培养对电子制作的兴趣,激发创新精神。
2. 学生在团队合作中学会相互尊重、倾听意见,培养良好的沟通能力和团队意识。
3. 学生能够意识到科技在生活中的应用,增强实践是检验真理的唯一标准的认识。
课程性质:本课程为实践操作性强的电子技术课程,结合理论知识与动手实践,培养学生对单片机应用的基本技能。
学生特点:假设学生为八年级,已具备基本的物理知识和逻辑思维能力,对电子制作有好奇心,动手能力强。
教学要求:教师应注重理论与实践相结合,鼓励学生动手实践,关注个体差异,提供个性化指导,确保学生在掌握知识技能的同时,培养积极的情感态度价值观。
通过具体的学习成果分解,后续教学设计和评估将更有针对性。
二、教学内容1. 理论知识:- 单片机基本原理与结构介绍,关联教材第3章。
- 流水灯电路设计原理,关联教材第4章。
- 编程语言基础及指令运用,关联教材第5章。
2. 实践操作:- 电路图绘制,关联教材第6章。
- 流水灯电路搭建,包括元件识别、电路连接,关联教材第7章。
- 程序编写与调试,关联教材第8章。
3. 教学大纲安排:- 第一课时:介绍单片机基本原理与结构,让学生了解流水灯项目背景。
- 第二课时:讲解流水灯电路设计原理,进行电路图绘制练习。
- 第三课时:学习编程语言基础及指令运用,为学生编写程序打下基础。
- 第四课时:分组进行流水灯电路搭建,并进行程序编写与调试。
单片机课程设计流水灯
![单片机课程设计流水灯](https://img.taocdn.com/s3/m/1053dc5653ea551810a6f524ccbff121dd36c5f7.png)
单片机课程设计流水灯一、课程目标知识目标:1. 理解单片机的基本原理和功能,掌握流水灯的设计方法;2. 学会使用特定编程语言(如C语言)编写单片机程序,实现流水灯效果;3. 了解单片机在现实生活中的应用,培养学生对电子科技的兴趣。
技能目标:1. 能够运用所学知识,独立设计并搭建简单的流水灯电路;2. 掌握单片机编程技巧,具备调试程序的能力;3. 培养学生动手实践、解决问题的能力,提高创新思维和团队协作能力。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣,激发学习热情,形成主动学习的习惯;2. 培养学生面对挑战时,勇于尝试、不断调整的心态,增强自信心;3. 培养学生关注科技发展,认识到单片机在科技领域的广泛应用,树立为国家科技事业做贡献的远大志向。
课程性质:本课程为实践性较强的课程,要求学生结合理论知识,动手实践,实现具体的项目。
学生特点:本课程针对初中或高中年级学生,他们对单片机有一定了解,具备基本的编程知识,喜欢动手实践。
教学要求:教师应注重理论与实践相结合,关注学生个体差异,提供个性化指导,确保学生能够完成课程目标。
同时,注重培养学生的团队协作能力和创新思维,提高学生的综合素质。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 理论知识:a. 单片机原理与结构:讲解单片机的内部组成、工作原理及性能特点;b. 编程语言基础:回顾C语言基础知识,强调在单片机编程中的应用;c. 流水灯原理:介绍流水灯的工作原理,分析其电路设计和程序设计要点。
2. 实践操作:a. 电路搭建:指导学生搭建流水灯电路,熟悉各种电子元器件的使用;b. 程序编写:教授学生编写流水灯程序,掌握程序调试方法;c. 项目实施:引导学生将理论知识应用于实践,独立完成流水灯项目。
3. 教学大纲:第一课时:单片机原理与结构介绍,C语言基础知识回顾;第二课时:流水灯原理讲解,电路设计和程序设计要点分析;第三课时:电路搭建及元器件使用方法教学;第四课时:程序编写及调试方法教学;第五课时:项目实践,学生独立完成流水灯项目。
单片机课程设计-作息时间控制器
![单片机课程设计-作息时间控制器](https://img.taocdn.com/s3/m/32ae17843b3567ec112d8ab8.png)
河南理工大学—电子设计综合训练报告作息时间控制器姓名:学号:专业班级:指导老师:所在学院:2010 年7 月2 日本设计是作息时间控制器,由单片机最小系统、按键模块、数码管显示模块、闹钟模块组成。
采用单片机AT89S52与12MHZ晶振相连;通过按键K1、K2、K3、K4控制时间的校正、闹钟时间设定;数码管显示模块用来显示时间,显示格式为“时分”,并能够根据需要显示年、月、日,由数码管小数点闪动作为秒计数;闹钟模块进行到时提醒并作出相应动作:发光二极管闪亮,同时播放音乐。
本设计中,利用单片机定时器设计时间计时处理,采用单片机内部的T0 定时器溢出中断来实现,工作在T1 方式下,定时50 微妙,则连续中断20 次即为一秒,得到了我们所需时间的最小单位秒,60 秒为一分,60 分为一小时,24 小时为一天,1、3、5、7、8、10、12 月为31 天,4、6、9、11 月为30 天,闰年二月为29 天,非闰年二月为28 天,12 个月为一年。
采用这种时间设计思想来进行时间设置。
在整个系统的设计中,单片机的P0 口输出显示信号,P1 口按键输入控制、P2 口用来扫描,为动态显示、P3 口闹钟模块。
该设计用C51 编写程序,由于汇编语言的移植性比较差,而C 语言则比较灵活。
许多子函数都可以直接移植过去。
摘要 (1)目录 (2)1概述 (1)1.151 单片机简介 (1)1.2设计要求及功能 (1)1.3本设计实现的功能 (1)2系统总体方案及硬件设计 (2)2.1系统总体方案框图 (2)2.2按键控制模块 (3)2.3时间显示模块 (4)2.4闹钟模块 (4)3软件设计 (5)3.1系统软件设计思想 (5)3.2系统主程序 (5)3.3中断子程序 (6)3.4按键扫描子程序 (8)4Proteus 软件仿真 (9)4.1Proteus 软件简介 (9)4.2Proteus 软件仿真 (9)5课程设计体会 (13)参考文献: (14)附1:源程序代码 (15)附2:系统原理图 (25)1 概述1.1 51 单片机简介单片微型计算机简称单片机,即把组成微型计算机的各个功能部件,如中央处理器、随机存储器、只读存储器、I/O接口电路、定时器/计数器以及串行通信接口等集成在一块芯片上,构成一个完整的微型计算机。
单片机原理及应用A实验-流水灯、蜂鸣器、独立按键
![单片机原理及应用A实验-流水灯、蜂鸣器、独立按键](https://img.taocdn.com/s3/m/300fd97465ce05087732133f.png)
流水灯、蜂鸣器、独立按键一、实验目的1、学习实验系统的基本操作,了解在实验系统中进行程序设计、仿真和调试的操作方法和步骤;2、了解单片机的基本输入、输出功能;3、熟悉Proteus的基本仿真功能;二、实验原理1、LED流水灯的原理即为单个控制LED的亮灭、亮灭,让单个LED灯先亮然后很快灭掉,并在很短的时间里使下一个LED重复这一过程。
这样让一排LED灯依次亮灭后即形成流水灯的效果。
2、在本次实验中把蜂鸣器用扬声器替代,通过控制扬声器工作时间来控制扬声器的发音频率。
3、按键是机械装置,在其闭合的时候会产生震荡,这会让软件产生误判。
为了消除这种影响,就需要对按键进行软件消抖。
消抖原理为两次判断,只要相隔一段时间的两次判断皆为按键已按下,那么这次的判断结果就是可信的,所以用到延时函数。
三、实验步骤;1、硬件仿真。
先分析实验所需的硬件条件,然后在Proteus上连接好硬件电路,注意连接好必要的电阻等。
2、软件编写。
在Keil或其它的单片机编程软件上用C语言编写出构思好的软件。
3、将程序编译为HEX文件,然后烧录到仿真单片机中,进行仿真。
四、实验结果及分析1、LED流水灯的硬件仿真电路图:实验中加入了循环处理,所以该流水灯可以顺着亮一遍再逆着亮一遍,如此反复。
并且改变流水灯亮灭的时间间隔还可以得到各种不同的效果。
2、蜂鸣器驱动的硬件仿真电路图:这里用扬声器代替蜂鸣器。
以单片机产生的一方波脉冲作为扬声器的电信号输入,用不同频率的方波信号产生不同音调的声音。
3、;4、独立按键延时去抖的硬件仿真电路图:用一个按键控制LED灯的亮灭,在软件中对按键进行消抖。
五、体会这一次的单片机实验让我感到自己对Proteus的运用还欠缺许多,基本可以说是一窍不通。
所以,这次实验以后还要花大量的时间在Proteus的学习上,希望可以从中学习到很多的东西。
还有在编程方面,很多的编程思想都还不成熟,想到的方法都有很多欠缺的地方,和书上所给的例子差距还很大。
基于单片机的定时蜂鸣器课程设计报告
![基于单片机的定时蜂鸣器课程设计报告](https://img.taocdn.com/s3/m/66da1d06bed5b9f3f90f1cc3.png)
信息科学与工程学院通信工程系单片机课程设计报告课程单片机课程设计设计题目基于单片机的定时蜂鸣器年级专业学号学生姓名指导教师2012年6 月24 日课程设计量化评分标准指导教师评语:指标最高分评分要素评分方案设计35方案选择合理,分析、设计正确,原理清楚,电路、程序流程图清晰,结构合理,程序简洁、正确。
调试 15过程清晰,调试方案设计合理,测试点选择适当,程序编写正确,调试步骤清楚。
结果 20 电路及程序运行结果正确,达到预期效果。
设计报告20报告结构严谨,逻辑严密,论述层次清晰,语言流畅,表达准确,重点突出,报告完全符合规范化要求,用计算机打印成文。
工作态度 10工作态度认真,按时完成设计任务,是否独立完成。
总 评 成 绩设计题目:基于单片机的定时蜂鸣器一、要求设计一个基于单片机的定时蜂鸣器系统,要求最长定时时间为2小时,分辨率为1秒,蜂鸣器响应时间为5秒。
二、分析由设计题目分析知:定时蜂鸣器其原理类似于定时闹钟,只需在定时系统的终端调用警鸣模块,即可实现定时蜂鸣器的功能。
根据题目的要求,系统可以分为定时、键盘中断、数码显示和警鸣四个模块。
首先,设计一个最长定时时间为2小时的定时器,其次,在定时器中响应键盘中断并调用数码管显示模块,最后,在定时终端调用警鸣模块。
三、设计1、硬件设计(包括设计方案及说明、完整的硬件连接图等) (1)、方案及说明由单片机实践板的电路图知,蜂鸣器的输入端接在了单片机的P2^6口,数码管由单片机通过CH452控制,同时还控制键盘。
因此,由单片机控制CH452,再由控制芯片控制显示和键盘,蜂鸣器由单片机直接控制,即可实现系统功能。
(2)、完整的硬件连接图见(附件1)2、软件编程(包括流程图、完整的汇编源程序及其注释) (1)、流程图(3) (1)(否)(2) (是)(3)(是)(否) (否)(1)(是) (2)开始 初始化,允许定时器T0溢出 中断及外部中断0中断 调用数码管显示函数 外部中断0(键盘中断) 调用警鸣函数 是否达到计时 时间响应时间是否达到5秒 设置初值 计时 开始计时是否有新的外部中断时间计数器清零 开始新一轮计时(2)、完整的源程序代码及其注释初始化模块:#include"ch451.h"#include<reg52.h>sbit ch451_dclk=P2^3; //串行数据时钟上升延激活sbit ch451_din=P2^2; // 串行数据输出,接CH451的数据输人sbit ch451_load=P2^0; //串行命令加载,上升延激活sbit ch451_dout=P2^1; //键值数据输入,接ch451数据输入sbit beep=P2^6;uchar ch451_key; // 存放键盘中断中读取的键值uint display[6]={0x0d00,0x0c00,0x0b00,0x0a00,0x0900,0x0800};ucharBCD[]={0xbe,0x24,0xea,0xe6,0x74,0xd6,0xde,0xa4, 0xfe,0xf6 };//0~9数字uchar shishi,shige,fenshi,fenge,miaoshi,miaoge,n,m,p,q,e;bit stop_flag=0,ss_flag=0,flag=0;uchar num=1,n=0,f=0;void main(){ch451_write(CH451_RESET); //CH451复位ch451_write(CH451_SYSON2); //开显示、键盘ch451_write(CH451_DSP); //设置BCD不译码方式ch451_write(CH451_TWINKLE); //设置闪烁控制——正常显示ch451_init();timer0count_init();while(1){key_Recognize();time_dispose();smg_Display();}void ch451_init(){ch451_din=0; //先低后高,选择4线输入ch451_din=1;TMOD=0x11 //设置定时器T1工作在16位计时状态EA=1 //开中断总开关ET1=1; //允许中断TR1=1; //开中断PT1=0; //设置低优先级TL1=1; //装载计数初值TH1=200; //此计数初值用来调试}void timer0count_init(){ET0=1;TR0=1;TH0=0x08;TL0=0x00;}计时模块:void time_dispose(){ if((m!=0)&&(f)){ if((miaoge==m)&&(miaoshi==g)&&(fenge==p)&&(fenshi==q)&&(shige==e)) {for(n=0;n<244;n++){ speaker();}miaoge=0;miaoshi=0; fenge=0;fenshi=0;shige=0;shishi=0;}}if(miaoge>9){miaoge=0;miaoshi++;if((miaoge==m)&&(miaoshi==g)&&(fenge==p)&&(fenshi==q)&&(shige==e)) {for(n=0;n<244;n++){ speaker();}miaoge=0;miaoshi=0; fenge=0;fenshi=0;shige=0;shishi=0;}if(miaoshi>5){miaoshi=0;fenge++;if((miaoge==m)&&(miaoshi==g)&&(fenge==p)&&(fenshi==q)&&(shige==e)) {for(n=0;n<244;n++){ speaker();}miaoge=0;miaoshi=0;fenge=0;fenshi=0;shige=0;shishi=0;}if(fenge>9){fenge=0;fenshi++;if((miaoge==m)&&(miaoshi==g)&&(fenge==p)&&(fenshi==q)&&(shige==e)){for(n=0;n<244;n++){ speaker();}miaoge=0;miaoshi=0;fenge=0;fenshi=0; shige=0;shishi=0;}if(fenshi>5){fenshi=0;shige++;if((miaoge==m)&&(miaoshi==g)&&(fenge==p)&&(fenshi==q)&&(shige==e)) {for(n=0;n<244;n++){ speaker();}miaoge=0;miaoshi=0;fenge=0;fenshi=0;shige=0;shishi=0;}if(shige>=2){for(n=0;n<244;n++){ speaker();}miaoge=0;miaoshi=0;fenge=0;fenshi=0;shige=0;shishi=0;}}}}}}键盘模块:void key_Recognize(){switch(ch451_key){ case 0x43:delay(255300); num=1;stop_flag=~stop_flag;break;case 0x42: delay(255300); num++;if(num>6){num=1; }break;case 0x41:delay(255300);f=0;if(stop_flag){switch(num){case 1:if(miaoge<9) {miaoge++; m=miaoge ;}else {miaoge=0;m=miaoge ;}break;case 2:if(miaoshi<5){miaoshi++;g=miaoshi;}else {miaoshi=0;g=miaoshi;}break;case 3:if(fenge<9){fenge++;p=fenge;}else {fenge=0; p=fenge;}break;case 4:if(fenshi<5){fenshi++; q= fenshi;}else {fenshi=0;q= fenshi;}break;case 5:if(shige<2){shige++; e=shige;}else {shige=0; e=shige;}break;case 6:if(shishi<1){shishi=0;}else {shishi=0;}break;}}break;case 0x40:delay(255300);miaoge=0;miaoshi=0;fenge=0;fenshi=0;shige=0;shishi=0;f=1;} }显示模块:void smg_Display(){if(stop_flag){if((num!=6)||(ss_flag==0))//ss_flag每半秒改变一次数值,进行闪烁;当没有选中该数码管,即num不等于6时,正常显示,所以用或语{ch451_write(display[0]+BCD[shishi]);}else if((num==6)&&(ss_flag==1))//当选中该数码管且ss_flag为1时,数码管灭{ch451_write(display[0]+0);}}else if(!stop_flag) {ch451_write(display[0]+BCD[shishi]);}if(stop_flag){if((num!=5)||(ss_flag==0)){ch451_write(display[1]+BCD[shige]); }else if((num==5)&&(ss_flag==1)){ch451_write(display[1]+0);}}else if(!stop_flag){ch451_write(display[1]+BCD[shige]);}if(stop_flag){if((num!=4)||(ss_flag==0)){ch451_write(display[2]+BCD[fenshi]);}else if((num==4)&&(ss_flag==1)){ch451_write(display[2]+0)}}else if(!stop_flag){ch451_write(display[2]+BCD[fenshi]);}if(stop_flag){if((num!=3)||(ss_flag==0)){ch451_write(display[3]+BCD[fenge]);}else if((num==3)&&(ss_flag==1)){ch451_write(display[3]+0);}}else if(!stop_flag){ch451_write(display[3]+BCD[fenge]);}if(stop_flag){if((num!=2)||(ss_flag==0)){ch451_write(display[4]+BCD[miaoshi]);}else if((num==2)&&(ss_flag==1)){ch451_write(display[4]+0);}}else if(!stop_flag){ch451_write(display[4]+BCD[miaoshi]);}if(stop_flag){if((num!=1)||(ss_flag==0)){ch451_write(display[5]+BCD[miaoge]);}else if((num==1)&&(ss_flag==1)){ch451_write(display[5]+0); }}else if(!stop_flag){ch451_write(display[5]+BCD[miaoge]);}}警鸣模块:void speaker(void){uchar i,j;for(j=0;j<250;j++)for(i=0;i<250;i++){ beep=~beep;for(i=0;i<250;i++);}beep=1; //防止结束时候是低电平}3、调试说明首先用Keil软件创建一个工程,将程序源代码输入并编译生成单片可执行的.hex文件。
单片机课程设计作息时间控制器设计报告
![单片机课程设计作息时间控制器设计报告](https://img.taocdn.com/s3/m/6861576f59fafab069dc5022aaea998fcc2240d0.png)
单片机课程设计作息时间控制器设计报告XX大学单片机课程设计报告作息时间控制器设计姓名:学号:专业班级:自动化班指导老师:所在学院:电气工程与自动化学院2022年X月X日摘要本设计是作息时间控制器的设计,由单片机AT89C52芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子作息时间控制器。
该功能的实现主要通过软件编程来完成,降低了硬件电路的复杂性,成本也有所降低。
设计内容包括了秒信号指示、时间“时”和“分”显示电路、按键调整电路、供电电源以及闹铃指示电路等几部分的设计。
采用四个开关来控制作息时间控制器的工作状态,分别为:K1、设置时间和闹钟的小时;K2、设置小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。
当作息时间控制器达到课程设计的要求,在到达设定的定时时间时蜂鸣器便被控制立即发出声音,持续一分钟,而后按K4键退出显示闪烁状态,即恢复时钟状态。
显示采用的四位数码管电路,定时提示采用蜂鸣器发声指示。
本设计方案也可以经过改进作为实现定时控制系统的控制定时电路。
关键词:作息时间单片机显示定时目录1概述31.1课程设计的目的和意义31.2单片机课程设计的要求31.3作息时间控制器的设计要求32系统总体方案及硬件设计42.1系统总体设计42.2系统各个部分的电路设计53软件的设计83.1概述83.2主模块的设计83.3显示模块设计93.4时间设定模块设计93.5闹铃功能的实现104Proteus软件仿真124.1仿真结果124.2性能及误差分析145课程设计体会15参考文献15附1程序源代码16附2原理图261概述1.1课程设计的目的和意义综合利用所学单片机知识完成一个单片机应用系统设计并仿真、由硬件实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下良好基础。
1.2单片机课程设计的要求1、进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;2、掌握单片机仿真软件Proteus的使用方法;3、掌握键盘和显示器在的单片机控制系统中的应用。
51单片机流水灯与数码管显示实验设计
![51单片机流水灯与数码管显示实验设计](https://img.taocdn.com/s3/m/e088a9588762caaedd33d4da.png)
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4; //这个key没用到,具体功能可以完善函数uint temp,shu=432;uchar aa,bb,cc,bai,shi,ge,flag,flag1,t0,t1,count;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x38,0x3f,0};void init();void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge); void delayms(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){init();while(1){if(flag!=1)//减数还未到指定值{temp=_crol_(temp,1);//流水灯P1=temp;//赋值给P1口delayms(10);//流水延时10msdisplay(7,6,5,bai,shi,ge);}// if(t0%4==0) t0这个变量是T0溢出时间的倍数值,每次到指定的倍数值都会被清零,所以这个判断语句错误// if(t0==60) t0每次到10都会被清零,所以这个判断语句错误else if(count!=100) //没有到指定的时间3s,但这里设置的是5s,因为led闪烁的时间是50ms,这样闪烁的次数就多一点,便于看清效果{temp=0xff;P1=temp;delayms(50);//闪烁延时temp=0x00;P1=temp;}else{display(16,14,17,17,18,19);temp=0xff;//关闭ledP1=temp;//这里我们可以看出在位带操作的时候P1是已定义变量,不需要中间变量过度}}}void init(){TMOD=0x11;TH0=(65535-5000)/256;TL0=(65535-5000)%256;TH1=(65535-5000)/256;TL1=(65535-5000)%256;EA=1;ET0=1;ET1=1;TR0=1;temp=0xfe;P1=temp;}void timer0()interrupt 1{TH0=(65535-5000)/256;TL0=(65535-5000)%256;t0++;if(t0==10)t0=0;//闪烁间隔时间10*50msif(flag==1){count++;//计数3sif(count==100){EA=0;//关闭总中断,也可以写TR0=0,因为在数码管停止减数的时候已经关闭了TR1}}}void timer1()interrupt 3{TH1=(65535-5000)/256;TL1=(65535-5000)%256;t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==398){TR1=0;//关闭定时器1,数码管显示的内容不变TR0=0;//这里也可以不关闭TR0直接清零TH0=(65535-5000)/256;TL0=(65535-5000)%256;TR0=1;//这里的定时器0计数值的清零初始是为了3s的算时(函数里设置了5s)flag=1;}}void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) {dula=1;P0=table[aa];dula=0;wela=1;P0=0xfe;wela=0;delayms(1);dula=1;P0=table[bb];dula=0;wela=1;P0=0xfd;wela=0;delayms(1);dula=1;P0=table[cc];dula=0;wela=1;P0=0xfb;wela=0;delayms(1);dula=1;P0=table[bai];dula=0;wela=1;P0=0xf7;wela=0;delayms(1);dula=1;P0=table[shi];dula=0;wela=1;P0=0xef;wela=0;delayms(1);dula=1;P0=table[ge];dula=0;wela=1;P0=0xdf;wela=0;delayms(1);}(注:可编辑下载,若有不当之处,请指正,谢谢!)。
蜂鸣器与流水灯实验报告
![蜂鸣器与流水灯实验报告](https://img.taocdn.com/s3/m/2b34be3f376baf1ffd4fad05.png)
======================蜂鸣器与流水灯实验===================实验(一)蜂鸣器一、电路图二、程序注释1、频率、节拍常数的编码2、定时/计数器0中断赋初值,使计数器计满一次时时间为100ms。
同时没记一满次,n减13、毫秒的延时函数4、无参数返回值的延时函数5、主函数,用switch函数选择,当case为0x00时,延时一段时间再开始6、让i自加1,延时7、选择频率常数,选择m、n为第1个,第2个……第i个频率8、开定时器中断,延时4*m的时间等待节拍完成,当n不等于0时,将选出来的频率依次输出,实验(二)流水灯一、电路图二、程序注释①直接赋值控制亮灯法#include <reg52.h>sbit LED0=P1^0 ; //定义八个流水灯等为输出端口P1^0~P1^7 sbit LED1=P1^1 ;sbit LED2=P1^2 ;sbit LED3=P1^3 ;sbit LED4=P1^4 ;sbit LED5=P1^5 ;sbit LED6=P1^6 ;sbit LED7=P1^7 ;void delay(float t) //延时函数{ unsigned int i,j;j=t*100;while(j--){for(i=8000;i;i--);}}void main() //主函数{while(1){LED0=0; //亮第1个灯delay(0.1); //延时0.1sLED0=1; //熄灭LED1=0; //亮第2个灯delay(0.1);LED1=1;LED2=0; //亮第3个灯delay(0.1);LED2=1;LED3=0; //亮第4个灯delay(0.1);LED3=1;LED4=0; //亮第5个灯delay(0.1);LED4=1;LED5=0; //亮第6个灯delay(0.1);LED5=1;LED6=0; //亮第7个灯delay(0.1);LED6=1;LED7=0; //亮第8个灯delay(0.1);LED7=1;}}②循环左移法#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit p1=P1^0;uchar temp;void delay(uint); //延时函数声明void main() //主函数{temp=0xfe; //将0xfe赋给tempP1=temp; //P1值为temp,即11111110,第一个灯亮 while(1){temp=_crol_(temp,1); /*循环左移函数,每次向左移一位,使其第1,2,3……依次为0*/delay(100); //延时0.1sP1=temp; //将temp值赋给P1使}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程设计目的《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培训:(1)独立工作能力和创造力;(2)查阅图书资料,产品手册和各种工具书的能力;(3)工程绘图的能力;(4)编写技术报告和编制技术资料的能力(5)综合运用专业及基础知识,解决实际工程技术问题的能力;二、设计要求2.1总体要求(1) 独立完成设计任务(2) 绘制系统硬件总框图(3) 绘制系统原理电路图(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写用户操作使用说明书(6) 写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
2.2 具体要求本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。
软件编程是本次工程实践的重要环节。
在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点:1)、熟悉Keil C51编程平台及相关编程软件2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调4)、编写、调试键盘扫描子程序并进行软硬件联调5)、编写、调试数码管动态扫描程序并进行软硬件联调6)、电子钟设计(包括键盘、时钟、显示等)7)、作息时间控制系统设计(包括键盘、显示、时钟、报警等)8)、智能交通灯控制系统设计9)、车速里程测量、显示设计三、设计内容及方法单片机原理及其应用课程设计通常选择一般常见、常用的简单应用装置或对象进行微机控制。
所涉及的系统可以实际制作,也可以实验室模拟,具体步骤和内容如下:3.1设计准备认真研究设计任务书,明确设计要求、条件、内容、和步骤;通过阅读有关资料,了解设计对象;复习课程有关内容,熟悉有关单元电路的设计方法和设计步骤;搜集、分析、消化相关资料、软件等,掌握微型计算机应用系统软件的设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等。
3.2功能设计及系统总体设计要求学生有创新精神和创新意识,分析所掌握的资料,了解设计对象的功能。
在充分考虑功能设计后,进行总体设计,以功能、结构为标,制定总体方案,规划硬、软件功能分配等;初步确定关键元器件地选择。
四、硬件电路总体设计4.1 硬件总框图原理说明: 本电路以单片机AT89C52为主控电路,分别连接按键控制扫描模块、时钟模块、数码显示模块、LED 显示模块、扬声器模块。
首先,按键扫描模块的四个按键分别用来控制数码显示、LED 显示和扬声器工作,P0口用来控制其段选以显示相应的数值。
P1口控制数码管的位选,以显示相应的数值。
在其位选控制部分,采用了9012型的三极管,要求当P1口输出低电平时,位选成功,使得该位选的数码管亮,数码管显示时分通过按键1控制。
P2口作为输出口,用来控制LED 的亮灭,要使其亮只需要让P2.0-P2.7口保持低电平 就可以使8个灯亮起来。
同时通过P3.4端控制蜂鸣器发生,当P3.4输出低电平时候使蜂鸣器发出声音,按下按键3时使蜂鸣器发声。
最后通过按按键4实现作息时间控制的功能。
主控电路 按键控制扫描模块 DS1302实时时钟模块数码管显示模块 LED 显示模块扬声器模块4.1.1 主控电路本次课程设计中主要是设计一个以作息时间控制为主的多功能控制系统。
该设计中我们主控电路部分采用了单片机AT89C52芯片来实现这些功能,AT89C52是一个低电压,高性能CMOS的8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和256B的随机存取数据存储器(RAM)。
其引脚如下图所示:图1.AT89C52引脚图VCC:供电电压。
GND:接地。
P0口(P0.0-P0.7):P0口来控制数码管的段选,以显示相应的数值。
P1口 (P1.0-P1.7):P1口用来控制数码管的位选,以达到动态显示的效果。
P2口 (P2.0-P2.7):P2口来控制LED的亮灭。
P3口 (P3.0-P3.7):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(外部数据存储器读选通)。
XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC (40 脚)和VSS(20 脚)为供电端口,分别接+5V电源正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义。
4.1.2 按键控制扫描模块按键用于控制数码显示、LED显示、扬声器等模块的工作。
通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。
设计中使用单个按键实现单个功能,属于较为简单的控制方式.图2.按键输入电路在多功能系统设计的实验中中我们使用四个按键分别与单片机的P1.4、P1.5、P1.6、P1.7相连,按键1控制数码管显示、按键2控制LED流水灯、按键3控制蜂鸣器发声,按键4控制作息时间。
通过按下相应的按键来处理相应的程序。
4.1.3 DS1302实时时钟模块图3.DS1302模块电路图DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
DS1302与CPU的连接:实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。
只是选择晶振时,不同的晶振,误差也较大。
图4. Ds1302引脚图其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),SCLK始终是输入端。
如图2所示DS1302 控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,利用单片机的外部中断来处理中断系统通过数码管显示出时间。
4.1.4 数码管显示模块设计中采用四位共阳极数码管,共阳极是指其公共端接正极,通过单片机AT89C52的P1口控制其位选,以达到动态显示的效果,再通过P0口,控制其段选以显示相应的数值。
在其位选控制部分,采用了一个9012型三极管,要求当P1口输出低电平时,位选成功。
图5.数码管显示电路硬件电路中,数码管显示的小时和分.小时通过按键2控制,分通过按键3控制。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O 端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。