单片机课程设计-设计报告参考模板--
单片机课程设计报告模板
课程设计成果说明书题目:低频信号发生器学生姓名:蔡超学号:111311106学院:东海科学技术学院班级:c11电信指导教师:东海科学技术学院教务处2014年1月7日第1章系统总体方案选择与说明1.1总体设计方案因输出信号的频率较低,可使用单片机作为信号数据产生源,中断查表法完成波形数据的输出,再用DA转换器输出规定的波形信号。
另外也可利用多余的端口经DA转换输出0度~360度的移相波形,同时也可输出一路方波信号。
系统实现的结构框图1.2设计要求及意义50Hz的正弦波、三角波信号,其中正弦波和1.低频信号发生器要求输出0.1~50Hz的范围内调三角波信号可以用按键选择输出,输出信号的频率可以在0.1~整。
2.原理图设计:根据所确定的设计电路,利用Proteus软件绘制电路原理图。
3.软件设计:根据电路工作过程,画出软件流程图,根据流程图编写相应的程序。
利用Proteus与Kiel μVision4联调,直到实验现象正确为止。
第2章系统硬件与工作原理2.1 系统硬件概述低频信号发生器要求能输出0.1~50HZ的正弦波、三角波信号,其中正弦波和三角波信号可以用按键选择输出,输出信号的频率可以在0.1~50HZ的范围内调整。
控制部分控制芯片选择89C52系列单片机。
P3.3~P3.5口接3个按键,其中P3.3口按键为频率增加键,P3.4口按键为频率减小键为正弦波与三角波选择键。
P1口输出正弦波或三角波数据,P2口输出移相波数据,P3.2输出方波。
数模(D/A)转换部分DAC0832是CMOS工艺制造的8位D/A转换器,属于8位电流输出型D/A转换器,转换时间1us,片内带输入数字锁存器。
DAC0832与单片机接成数据直接写入方式,当单片机吧一个数据写入DAC寄存器时,DAC0832的输出模拟电压信号随之相应变化。
利用D/A转换器可以产生各种波形,如方波、三角波、锯齿波等以及它们组合产生的复合波形和不规则波形。
单片机课程设计报告
单片机课程设计报告单片机课程设计报告一、设计目的本次课程设计的目的是通过实践操作,了解和掌握单片机的基本原理、控制方法和应用技术,提高学生的综合素质和实践能力。
二、设计内容本次课程设计的内容是设计一个基于单片机的温度控制系统。
系统通过读取温度传感器的数据,对温度进行监测,并根据设定的温度范围控制加热和制冷设备的开关。
三、设计原理1. 硬件设计:本设计采用STC89C52单片机作为控制核心,并使用LM35温度传感器进行温度检测。
另外,还需要接入一个电阻加热器和一个制冷装置,用于温度控制。
2. 软件设计:单片机程序的设计主要包括以下几个部分:(1) 温度获取:通过ADC接口读取温度传感器的模拟信号,并转换为数字信号。
(2) 温度比较:将获取到的温度值与设定的温度上下限进行比较,判断是否需要开启加热或制冷设备。
(3) 加热控制:若温度低于设定上限,单片机将控制电阻加热器开启,加热提高温度。
(4) 制冷控制:若温度高于设定下限,单片机将控制制冷装置开启,制冷降低温度。
(5) 显示功能:将当前温度值和控制状态通过数码管显示出来,方便观察和调试。
四、设计步骤1. 硬件搭建:将STC89C52连接好电源和调试下载线,将温度传感器和数码管连接到对应的引脚,并连接电阻加热器和制冷装置。
2. 软件开发:使用Keil C51软件进行编程。
根据设计原理,逐步实现温度获取、温度比较、加热控制、制冷控制和显示功能。
3. 调试测试:将程序下载到单片机,进行硬件和软件的调试测试。
通过串口调试助手观察温度变化和控制状态是否正确。
4. 优化改进:根据测试结果,对程序进行优化和改进,提高系统的性能和可靠性。
五、设计总结通过本次单片机课程设计,我对单片机的原理和应用有了更深入的了解。
通过实践操作,我掌握了单片机的编程方法和调试技巧。
在设计过程中,我也遇到了一些问题,如温度传感器的误差和加热控制的精度等,但通过不断学习和改进,最终完成了设计任务。
单片机课程设计报告
单片机课程设计报告一、设计目的本课程设计旨在通过对单片机的学习和实践,培养学生的嵌入式系统设计能力。
通过设计报告的撰写,学生需要整理和总结自己在课程设计中的工作,提高自己的表达和沟通能力。
二、设计背景随着科技的迅猛发展,嵌入式系统在各个领域得到广泛应用。
单片机作为嵌入式系统设计的重要组成部分,具有体积小、功耗低、可靠性高等优势,被广泛应用于家电、智能家居、汽车电子等领域。
因此,掌握单片机的基础原理和应用技巧对于工程师来说至关重要。
三、设计内容本次课程设计的主要内容为设计并实现一个简单的单片机应用系统。
具体要求如下:1. 选取一个合适的单片机型号,并给出详细的理由;2. 设计一个实际应用场景,如温度监测、电子琴等,要求具备一定的实际意义;3. 硬件方面,设计电路及相关外围电路,如传感器、显示器等;4. 软件方面,设计控制程序,实现所选应用场景的功能;5. 进行系统集成和调试,确保系统正常工作;6. 撰写设计报告,对设计过程和结果进行详细说明。
四、设计方案1. 单片机的选择在选择单片机时,需要考虑应用需求和成本因素。
根据本次设计的要求,我们选择了XX单片机,这款单片机具有性能稳定、易于编程和丰富的外围接口等特点,非常适合本次设计的需求。
2. 应用场景的设计本次设计的应用场景为温度监测系统。
随着人们对室内温度的要求越来越高,设计一个简单且准确的温度监测系统对于提高生活质量至关重要。
我们将使用温度传感器和数码显示器来实现温度的监测和显示功能。
3. 硬件设计在硬件设计方面,我们将按照以下步骤进行:a) 选择合适的温度传感器,将传感器与单片机进行连接;b) 设计电源电路和信号采集电路,确保传感器与单片机之间的正常通信;c) 设计数字显示电路,将单片机采集到的温度数值进行显示。
4. 软件设计软件设计主要包括编写单片机控制程序。
我们将按照以下步骤进行:a) 初始化单片机和相关外围设备,确保其正常工作;b) 采集传感器的温度数值,并进行数据处理;c) 控制数码显示器,将温度数值显示在屏幕上。
单片机课程设计报告
单片机课程设计报告项目简介本文档将详细介绍单片机课程设计项目的背景、目标、实施过程和结果。
本项目旨在通过单片机开发一个特定功能的系统,并实现相应的硬件和软件设计。
背景单片机是一种集成电路,集中了处理器、存储器和其他外围器件的功能。
它的小巧、低功耗和低成本使得它成为嵌入式系统中常用的控制器。
单片机课程设计是大多数电子工程专业的必修课程,通过实际设计和开发单片机系统,提高学生在硬件和软件方面的实践能力。
目标本项目的主要目标是设计一个基于单片机的系统,能够完成特定任务。
我们选择了一个温度监控系统作为设计任务,主要包括以下功能: - 采集温度数据 - 实时显示温度 - 根据设定温度报警设计过程硬件设计在硬件设计方面,我们选用了ATmega328P单片机作为主控芯片,通过使用温度传感器LM35来采集温度数据。
单片机与温度传感器之间通过模拟输入引脚连接。
为了实现实时显示温度,我们选择了一个七段LED显示器,将数字信号发送至显示器实现温度的显示。
此外,我们还使用按钮来设置报警温度,并通过蜂鸣器进行报警。
软件设计在软件设计方面,我们使用C语言进行单片机程序的编写。
通过编写相应的代码,实现以下功能: 1. 初始化单片机及相关外设 2. 采集温度数据并进行处理 3. 将温度数据转换为七段LED显示所需的数字信号 4. 设置报警温度,并进行判断 5. 当温度超过报警温度时,触发蜂鸣器进行报警实施结果经过设计和实施,我们成功实现了温度监控系统的目标功能。
在系统测试中,我们能够准确采集温度数据,并通过七段LED显示器实时显示。
当温度超过设定的报警温度时,系统能够准确触发蜂鸣器进行报警。
整个系统工作稳定,达到了预期效果。
总结单片机课程设计是电子工程专业中重要的实践环节,通过实际设计和开发单片机系统,可以提高学生的动手能力和解决问题的能力。
本项目以温度监控系统为例,详细介绍了硬件和软件的设计过程,并展示了最终的实施结果。
在未来的学习和工作中,我们将继续积极运用单片机技术,深入研究和探索更多的应用领域。
单片机课程设计报告 (2)
单片机课程设计报告1. 引言本文为单片机课程设计报告,主要介绍了课程设计的背景、目的、设计方案、实施过程以及结果分析和总结。
2. 背景单片机是嵌入式系统的核心部件,广泛应用于各个领域。
作为计算机科学与技术专业的学生,掌握单片机的基本原理和应用是必不可少的。
因此,本次课程设计旨在通过实践,加深对单片机的理解和应用能力。
3. 目的本次课程设计的目的是设计一个基于单片机的智能温度监控系统。
该系统能够实时监测环境温度,并通过显示屏展示当前温度值,并在温度超过设定阈值时发出警报。
4. 设计方案4.1 硬件设计本设计使用STC89C52单片机作为控制核心,配合温度传感器和液晶显示屏,实现温度监测和显示的功能。
温度传感器负责采集环境温度,将采集到的数据发送给单片机进行处理;液晶显示屏用于显示当前温度值和警报信息。
4.2 软件设计软件设计分为两个模块:温度采集和温度监控。
温度采集模块通过单片机的ADC接口获取温度传感器的模拟信号,将其转化为数字信号,并保存在单片机的内存中。
温度监控模块不断读取内存中的温度值,并与设定的阈值进行比较,如果温度超过阈值,则发出警报信号,同时在液晶显示屏上显示警报信息。
5. 实施过程5.1 硬件实施首先,根据设计方案的要求,将STC89C52单片机、温度传感器和液晶显示屏组装在一起,搭建出硬件平台。
接下来,使用面包板和杜邦线等连接元件,将各个模块按照设计方案进行连线。
最后,使用电源适配器给整个系统供电。
5.2 软件实施软件实施主要分为两个步骤:编写硬件控制程序和编写温度监控程序。
硬件控制程序主要负责初始化硬件设备和处理硬件输入输出;温度监控程序则负责实现温度采集和温度监控逻辑。
在编写硬件控制程序时,需要使用STC89C52的GPIO接口对传感器和显示屏进行控制。
在编写温度监控程序时,需要使用STC89C52的ADC接口进行温度采集,以及使用GPIO接口对警报信号和显示屏进行控制。
6. 结果分析和总结经过实施过程的努力,我们成功地完成了基于单片机的智能温度监控系统。
单片机课程设计报告
单片机课程设计报告1. 引言本文档旨在总结并详细介绍单片机课程设计的相关内容。
本次课程设计的主题为XXXX,我将在接下来的章节中介绍该课程设计的目标、设计思路、具体实施过程以及结论。
2. 设计目标本次单片机课程设计的目标是XXXX。
通过该设计,我希望能够进一步提升对单片机的理解和应用能力,掌握单片机的基本原理、编程技巧以及相关技术。
3. 设计思路在进行单片机课程设计之前,我对基于单片机的XXXX进行了详细的调研和学习,确定了设计思路和方案。
该设计主要分为以下几个步骤:3.1 步骤一:需求分析在开始设计之前,我首先进行了对需求的分析。
通过与指导老师和同学们的交流,我了解到XXXX,因此在设计中需要考虑到XXXX的特点和要求。
3.2 步骤二:系统设计基于对需求的分析,我进行了系统设计。
该系统涵盖了硬件和软件两个方面。
硬件方面,我选择了XXXX作为主控芯片,并设计了适配的电路板;软件方面,我使用XXXX编程语言进行开发,并设计了相应的算法和逻辑控制。
3.3 步骤三:系统实现在完成系统设计后,我开始进行系统实现。
首先,我搭建了相应的实验环境和开发平台,确保能够顺利进行编程和仿真。
然后,根据系统设计中的硬件和软件需求,逐步实现了系统功能。
3.4 步骤四:系统测试在完成系统实现后,我进行了系统测试。
通过模拟实际应用场景,对系统进行了功能性测试和稳定性测试,保证系统可以正常运行并且满足设计需求。
4. 设计实施在设计实施阶段,我按照设计思路和步骤进行了详细的操作和编程工作。
具体实施过程如下:4.1 实施步骤一:需求分析在这一步骤中,我与指导老师进行了深入的交流,详细了解了项目的需求和目标。
4.2 实施步骤二:系统设计基于需求分析的结果,我进行了系统设计。
首先,我绘制了电路图,并选择了合适的单片机作为主控芯片。
在软件方面,我使用XXXX编程语言进行开发。
4.3 实施步骤三:系统实现在系统设计完成后,我开始进行系统实现。
51单片机课程设计报告
51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。
技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。
课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。
学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。
通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。
二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。
2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。
3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。
4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。
单片机课程设计报告模板
单片机技术及应用综合训练(设计报告)题目:姓名:学院:专业:班级:学号:指导教师:2014年5 月一、选题要求临床求助呼叫监护是传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断和护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士,并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。
呼叫系统的优劣直接关系到病员的安危,要求及时、准确、可靠、简便可行。
本呼叫系统基于Ateml89C52单片机,振荡电路的晶振采用12MHz,由控制核心AT89C52单片机、电源电路、振荡电路、复位电路、数码管解码芯片、病房选择和七段数码管等部分组成,系统框图如下:二、硬件电路设计工作原理为:电源电路为单片机以及其他模块提供5V电源。
晶振模块为单片机提供时钟标准,使系统各部分能协调工作。
复位电路模块为单片机系统提供复位功能。
单片机作为主控制器,根据输入信号对系统进行相应的控制。
病房一共为四个,从1号病房到4号病房病人的情况由重到轻,即1号病房的优先级最高,4号病房的优先级最低。
所以,当有两个病房一起呼叫时,优先级高的病房号显示;当低优先级的病房呼叫完毕后高优先级的病房呼叫,系统显示的号码改变;当优先级高的病房呼叫完毕后工作人员未复位的情况下,低优先级的病房呼叫无效。
另外,当有病房呼叫时蜂鸣器响直至复位。
此次设计的电路图如下:三、软件设计1、功能介绍:启动系统后,数码管显示0。
当有一个病人呼叫时,数码管显示相应病房号,同时蜂鸣器响起;当有多个病人同时呼叫时,数码管显示优先级高的病房号,同时蜂鸣器响起;当有一个病房呼叫后另一个病房呼叫,若后呼叫的病房优先级低,则数码管显示不变,若后呼叫的病房优先级高,则数码管显示后呼叫的病房号,两种情况下蜂鸣器都会叫,只是在有别的病房呼叫时有一点变音。
2、程序流程图:3、程序源代码:#include <reg51.h>#define uchar unsigned char sbit key4=P3^0;//定义按键位置sbit key3=P3^1;sbit key2=P3^2;sbit key1=P3^3;sbit reset=P3^4;//复位sbit BEEP=P1^7;//定义蜂鸣器端口uchar flag,i;void choice();void clean();void delay();void de();void ring();void main(){while(1){P3=0xff;reset=0;BEEP=0;flag=0;choice();delay();clean();}}void choice()//确定病人{ while(reset!=1&&flag==0) {if(key1==0){de();if(key1==0){P0=0X86;flag=1;}}else if(key2==0){de();if(key2==0&&key1!=0){P0=0Xdb;flag=1;}}else if(key3==0){de();if(key3==0&&key1!=0&&key2!=0){P0=0Xcf; flag=1;}}else if(key4==0){de();if(key4==0&&key1!=0&&key2!=0&&key3!=0){P0=0Xe6; flag=1;}}}}void clean() //RESET 为高的时候复位{if(reset==1){BEEP=0;P0=0x3f;}}void delay() //RESET为低的时候延时{while(!reset){ring();}}void ring(){for(i=0;reset==0;i++)//喇叭发声的时间循环{de();BEEP=!BEEP;if(key1==0||key2==0||key3==0)//第二次呼叫{if( P0==0X86)P0=0X86;else if(P0==0Xdb&&key1==0)P0=0X86;else if(P0==0Xcf&&key1==0)P0=0X86;else if(P0==0Xcf&&key1==1&&key2==0)P0=0Xdb;else if(P0==0Xe6&&key1==0)P0=0X86;else if(P0==0Xe6&&key1==1&&key2==0)P0=0Xdb;else if(P0==0Xe6&&key1==1&&key2==1&&key3==0)P0=0Xcf;}}}void de(){for(i=300;i>0;i--);}四、软硬件调试结果1、未通电:2、通电时:3、低优先级病房先呼叫:(蜂鸣器响)高优先级病房后呼叫:(蜂鸣器响)4、高优先级病房先呼叫:(蜂鸣器响)低优先级病房后呼叫:(蜂鸣器响)呼叫有效呼叫无效5、当有三个病房同时呼叫时:1号2号4号病房同时呼叫显示1五、总结本次实验程序参考网上,但下载时程序有误,经细心验证检查得已改正,这有助于我进一步对C语言的学习和掌握。
单片机课程设计报告模板
河南科技大学课程设计报告课程名称__ 单片机系统设计_题目名称_ 智能门禁系统设计学生学院 ___ 信息工程学院_____专业班级 ___ 自动化134班学号 131404010410学生姓名 __ 华科 _ ___指导教师 __ 刘磊坡 _2016年5 月25 日课程设计任务书(指导教师填写)课程设计名称单片机系统设计学生姓名华科专业班级自动化134班设计题目智能门禁系统设计一、课程设计目的1.培养学生单片机开发应用能力,如何利用键盘输入密码,开启门禁系统。
2.培养学生综合分析问题、发现问题和解决问题的能力。
3.培养学生综合运用知识的能力和工程设计的能力。
4.培养学生理论联系实际的能力。
5.提高学生课程设计报告撰写水平。
二、设计内容、技术条件和要求1设计内容智能门禁系统设计主要功能是用单片机实现通过矩阵键盘输入密码,密码正确开门,并lcd上显示“欢迎光临”,密码错误lcd上提示“密码错误请重新输入”,三次输入错误报警。
(1)设计矩阵键盘模块、定时器模块;(2)设计中断、LCD模块(3)EEPROM(AT24CXX)的使用2 设计要求•设计单片机最小系统(包括复位按钮、晶振电路等);•绘制实现本设计内容的硬件电路(原理图),系统的组成框图。
•相应的控制状态表;•编写本课程设计内容的软件设计(包含程序流程图和对程序注释)。
3 总体设计思想(供参考)•利用矩阵键盘实现输入;•IIC通信协议;•采用LCD12864作为显示屏。
4 设计参考智能门禁系统设计主要包含单片机主控电路、显示电路、键盘电路、IIC通信协议模块电路等组成。
5 知识点准备:•+5V电源原理及设计;•单片机复位电路工作原理及设计(元件选择的依据);•单片机晶振电路工作原理及设计(元件选择的依据);•LCD显示特性、驱动设计及应用;•单片机引脚资源、引脚分配等;•单片机汇编语言及程序设计(中断、延时子程序的设计)。
三时间进度安排按教学计划规定,单片机原理课程设计总学时为1周,其进度安排和时间大致分配如下:1.十二周周一至周二查阅资料、进行软、硬件初步设计;2.十二周周三至周四上机调试,发现问题,解决问题,完善课程设计;十二周周五3.1、何立民. 单片机高级教程.总结设计过程,编写课程设计报告书。
单片机课程设计报告模板
xxxxxx单片机课程设计报告题目8乘8点阵字符显示院系物理与电子工程学院专业电子信息工程姓名吴小康班级学号指导教师二零一一年十一月目录摘要 (3)关键词 (3)1 本设计的目的要求及意义 (3)1.1目的 (3)1.2 基本要求 (3)1.3 意义 (3)2 设计原理 (4)2.1 所完成的系统性能指标及设计分析 (4)2.2 单片机引脚的适用分布 (4)2.2.1仿真图 (4)2.2.2 仿真调试过程 (5)2.2.3 仿真结果分析 (5)3 软件总体设计 (5)3.1 系统软件和应用软件列表 (5)3.2 程序框图及清单 (6)3.3 程序 (7)4 调试过程 (7)4.1 ?? (7)4.2 ??? (7)4.2.1 ???? (7)4.2.2 ????? (7)5 心得体会 (7)6 参考文献 (8)7 致谢 (8)注意我发的这个模板,主要是给大家格式上的参考,具体内容你们的可以跟这个不一样,总之,你觉得如何能很好的反映出你的设计过程,就行。
摘要包括目的、方法、结果、结论(150-300字)关键词:(3-5个)Ats52;LED;单片机1 本设计的目的要求及意义1.1目的(1)综合运用所学单片机知识来解决常见的问题;(2)掌握单片机的内部结构及工作原理;(3)熟悉点阵的点亮原理;(根据自己的设计内容写)(4)掌握实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
1.2 基本要求(该部分可以大致参考,基本不用改)(1)画出电路图并进行仿真;(2)画出程序流程图;(3)编制出实现其功能的程序;(4)焊接电路图实物,将程序烧写入单片机进行调试。
1.3 意义自己写内容2 设计原理2.1 所完成的系统性能指标及设计分析开机点阵显示屏上滚动显示“九江学院电子工程学院B0932班”字符,且不停地循环滚动显示。
2.2 单片机引脚的适用分布AT89C51的P2口接通共阳数码管的段码引脚,单片机的P1.0、P1.1、P1.2、P1.3接数码管的1234控制引脚;P3.4与DS18B20相连。
单片机课程设计报告模板
单片机课程设计报告模板单片机课程设计报告一、设计目的本次单片机课程设计旨在培养我们对单片机的基本认知和应用能力,通过对STC89C52单片机的学习和实践,提升我们的编程能力和创新思维,同时让我们深入了解单片机的工作原理和应用场景,为未来工作和学习打下坚实基础。
二、设计内容本次课程设计主要涵盖了单片机的基本原理、C语言编程以及电路设计。
我们以智能家居为例,设计了一个可以通过Wi-Fi连接到手机APP控制家电的智能开关系统。
1.单片机的选择我们选择STC89C52作为单片机的核心控制器,这是一款8位高性能单片机,拥有大容量闪存和SRAM存储器、多种定时器和计数器、16位定时器等重要功能,非常适合用于物联网控制和智能家居领域。
2.开发环境的搭建我们采用KEIL软件和PROTEUS电路仿真软件作为开发工具,为了让我们更加熟练地使用这两款软件,我们在课堂上进行了详细的讲解和实践操作,学习了单片机的汇编、C语言编程、调试和调试工具的使用。
3.电路设计为了实现智能家居的控制,我们需要搭建一个能够与单片机相互协作的电路。
我们选择了常见的继电器来控制家电设备的开和关。
具体的电路设计方案如下:①按键电路:在电路中加入按键触发模块,实现单片机中断、感应等功能。
②Wi-Fi WiFi模块:为了实现远程控制,我们使用了ESP8266模块和手机APP进行通讯。
③继电器模块:该模块内置独立的继电器驱动IC,设计电容保护电路和DIP开关控制当前继电器输出端口,保障免受电磁干扰和防止继电器共振。
4.软件设计本次课程设计的重点是编写单片机程序。
我们通过不断的实践和调试,成功编写了相应的程序,实现了以下功能:①通过Wi-Fi模块连接到手机APP,实现APP和单片机的通讯。
②实现对接ESP8266模块,并正确设置ESP8266模块的IP地址和端口号。
③通过单片机控制继电器模块,实现对家电的远程控制。
5.上位机程序设计上位机程序我们选择了Visual Studio C++作为开发工具,通过Socket编程实现了与单片机的通讯。
单片机课程设计报告
单片机课程设计报告单片机课程设计报告一、设计目的本次设计旨在通过对单片机的学习和实践,锻炼学生的综合能力和创新思维,提高学生对单片机工作原理的理解和应用能力。
二、设计内容本次设计以控制LED灯的闪烁为主题,在实现基本闪烁功能的基础上,加入了渐变效果和呼吸灯效果等功能。
三、设计过程1. 硬件设计:(1)准备材料:单片机主板、蓝色LED灯、电阻、杜邦线等;(2)连线:按照电路图将单片机与蓝色LED灯连接起来;(3)测试:使用万用表对电路进行测试,确保电路连接正常。
2. 软件设计:(1)编写主程序:在Keil C中编写主程序,设置LED灯闪烁的时间间隔;(2)编写闪烁函数:编写一个函数使LED灯在设定的时间间隔内闪烁;(3)编写渐变函数:利用PWM(脉冲宽度调制)技术,使LED灯的亮度逐渐增加或减小;(4)编写呼吸灯函数:利用PWM技术,使LED灯呼吸般变亮变暗;(5)调试程序:将程序下载到单片机主板上,通过调试工具进行调试,确保LED灯能按照设计要求正常闪烁、渐变和呼吸。
四、设计结果经过反复调试和修改,最终实现了LED灯的闪烁、渐变和呼吸灯等效果。
LED灯的闪烁时间可以通过修改程序中的参数进行调整,渐变和呼吸灯效果可以根据需求进行改动。
五、心得体会通过本次设计,我对单片机的原理和应用有了更深入的了解。
在实践中,我遇到了许多问题,比如电路连接错误、程序调试失败等,但通过钻研、查找资料和与同学、老师讨论,我逐渐解决了这些问题。
这个过程让我学会了不断尝试和学习,培养了我的耐心和解决问题的能力。
六、改进意见在进行本次设计时,由于时间和条件的限制,我只实现了LED灯的基本闪烁、渐变和呼吸灯效果,但这些功能在实际应用中已经比较常见。
如果有更多的时间和资源,我可以进一步完善程序,增加更多创新的功能,或是将LED灯与其他传感器结合,实现更复杂的控制。
总结:通过本次单片机课程设计,我不仅对单片机有了更深入的认识,也锻炼了实践能力和创新思维。
单片机课程设计报告
单片机课程设计报告单片机课程设计报告一、设计目标:本次课程设计旨在培养学生的单片机编程能力和电路设计能力,同时加深对单片机工作原理的理解。
设计目标是通过单片机控制一个电子系统的运行,实现特定的功能。
二、设计内容:设计一个温度控制系统,通过单片机控制温度传感器获取温度数据,并根据设定的温度值,控制电动风扇的开关。
当温度高于设定值时,风扇自动启动,降低温度;当温度低于设定值时,风扇自动关闭,保持温度稳定。
三、设计步骤:1. 硬件设计:a. 使用温度传感器DS18B20作为温度检测模块,通过单片机的引脚连接传感器。
b. 使用单片机的PWM输出功能来控制电动风扇的电流大小,通过一个三极管来放大电流。
c. 设计一个驱动电路来驱动电动风扇,使其能够正确运行。
2. 软件设计:a. 配置单片机的IO引脚,将温度传感器连接到合适的引脚上,并配置PWM输出引脚和风扇控制引脚。
b. 编写初始化函数,对单片机进行初始化设置,包括时钟、IO口和PWM等配置。
c. 编写温度检测函数,通过读取温度传感器的数据,将温度值转换为摄氏度并保存。
d. 编写温度控制函数,根据设定的温度值,判断当前温度是高于还是低于设定值,并控制风扇的开关。
e. 编写主程序逻辑,循环执行温度检测和温度控制函数。
四、实施结果:经过硬件和软件设计后,成功地实现了温度控制系统。
当温度高于设定值时,风扇会自动启动;当温度低于设定值时,风扇会自动关闭,保持温度稳定。
五、总结与展望:本次课程设计使我对单片机的应用有了更深入的理解,通过实践锻炼了单片机编程能力和电路设计能力。
在今后的学习和工作中,我会进一步探索和应用单片机技术,不断提升自己的能力。
单片机课程设计报告模板
烟台南山学院
单片机课程设计与制作报告(题目数字电子钟的设计)
姓名
学号
专业名称电子信息工程
指导教师牛立强
提交日期 2011年6月
烟台南山学院电子工程学院
二〇一一年六月
数字电子钟的设计
报告写作要求:一级标题采用宋体4号、加粗、两端对齐,行间距1.5倍;二级标题采用宋体小四号、加粗、两端对齐,行间距1.5倍;正文采用宋体小四号、不加粗、两端对齐,首行缩进2字符,行间距1.5倍(正文中附加的简短程序采用time new roman、不加粗、两端对齐、单倍行距)
无论几级标题和正文全部采用1.5倍段间距。
一级标题采用1.
二级标题采用1.1
装订要求:采用A4纸单面打印,采用默认页边距。
正文页数在3-4页,正文中不需要完整的程序,也不需要附录,可以将程序流程图放在正文中。
左侧装订,钉两个钉子
1。
单片机课程设计报告
单片机课程设计 报告一、课程目标知识目标:1. 学生能理解单片机的基本概念,掌握其工作原理及结构组成。
2. 学生能掌握单片机编程的基本语法,如指令系统、寄存器等。
3. 学生能了解并运用单片机在现实生活中的应用,如智能家居、机器人控制等。
技能目标:1. 学生具备使用开发板进行单片机程序编写、调试的能力。
2. 学生能通过小组合作,设计并实现简单的单片机控制系统,培养动手实践能力。
3. 学生能运用所学知识解决实际问题,具备一定的创新能力和问题解决能力。
情感态度价值观目标:1. 学生通过单片机课程学习,培养对电子技术的兴趣和热情,增强学习动力。
2. 学生在学习过程中,养成团队协作、沟通交流的良好习惯,增强集体荣誉感。
3. 学生了解单片机在我国科技发展中的重要性,培养国家使命感和社会责任感。
课程性质分析:本课程为单片机课程设计,旨在让学生通过实践操作,掌握单片机的基本原理和编程技术,提高解决实际问题的能力。
学生特点分析:本年级学生具备一定的电子技术基础知识,对单片机有一定了解,但编程能力和实践操作经验有限。
教学要求:1. 注重理论与实践相结合,强化学生的动手实践能力。
2. 采用项目驱动教学法,引导学生主动探究、解决问题。
3. 培养学生的团队协作能力,提高沟通表达水平。
4. 结合生活实际,激发学生学习兴趣,培养创新思维。
二、教学内容根据课程目标,本章节教学内容分为以下三个部分:1. 单片机基础理论- 理解单片机的概念、发展历程及应用领域。
- 掌握单片机的硬件结构、工作原理及性能指标。
- 学习单片机的指令系统、寄存器、I/O口编程等基本知识。
教学内容对应教材章节:第一章 单片机概述、第二章 单片机硬件结构及工作原理。
2. 单片机编程与调试- 学习单片机编程语言(如C语言、汇编语言)及开发环境。
- 掌握单片机程序编写、调试方法,了解程序下载、运行过程。
- 学习中断、定时器、串行通信等单片机功能模块的使用。
教学内容对应教材章节:第三章 单片机编程语言、第四章 单片机编程与调试。
单片机课程设计报告
单片机课程设计报告一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构及工作方式。
2. 学生能掌握单片机编程的基本语法,具备编写简单程序的能力。
3. 学生能了解单片机在各种实际应用中的功能,如智能家居、机器人等。
技能目标:1. 学生能够运用所学知识,独立完成单片机的硬件连接与调试。
2. 学生能够运用编程软件,编写简单的单片机程序并进行烧录。
3. 学生能够通过小组合作,完成一个具有实际应用价值的单片机项目。
情感态度价值观目标:1. 学生培养对单片机及电子技术的兴趣,激发探索精神。
2. 学生通过课程学习,提高问题解决能力和团队协作能力。
3. 学生能够认识到单片机技术在实际应用中的价值,增强社会责任感和创新意识。
课程性质:本课程为实践性较强的学科,要求学生结合理论知识,动手实践,培养实际操作能力。
学生特点:六年级学生具备一定的逻辑思维能力,对新事物充满好奇,但需加强团队协作和问题解决能力的培养。
教学要求:注重理论与实践相结合,关注学生的个体差异,提高学生的动手能力和创新能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得明显成果。
教学设计和评估将围绕具体学习成果展开,确保课程目标的实现。
二、教学内容1. 单片机基础理论:包括单片机的基本原理、内部结构、工作方式等,对应教材第一章内容。
- 单片机的发展历程与分类- 单片机的内部结构与功能- 单片机的工作原理与指令系统2. 单片机编程语言:学习单片机编程的基本语法和编程技巧,对应教材第二章内容。
- 汇编语言的编写与烧录- C语言的编写与烧录- 常用编程指令的应用3. 单片机硬件连接与调试:学习如何搭建单片机硬件系统并进行调试,对应教材第三章内容。
- 单片机最小系统搭建- 外围电路的设计与连接- 硬件调试方法与技巧4. 单片机应用案例:分析并实践单片机在各种实际应用中的功能,对应教材第四章内容。
- 智能家居系统设计- 机器人控制程序编写- 物联网应用案例分析5. 实践项目:结合所学知识,完成一个具有实际应用价值的单片机项目,为期4周。
《单片机课程设计》报告格式
封面格式如下:《单片机原理及应用课程设计》报告——X X X X X X设计专业:班级:姓名:学号:指导教师:2011年月日报告正文部分:(要求:正文部分一律用小四号字,宋体,1.5倍行距。
一级大标题靠左,加粗。
二级大标题靠左,不加粗。
)课程设计的内容如下:1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2.课程设计要求2.1 XXXXXXXXXXXXXXXX2.2 XXXXXXXXXXXXXXXX•••••3.硬件设计3.1 设计思想•••••3.2主要元器件介绍•••••3.3 功能电路介绍••••••••••4.软件设计4.1 设计思想•••••4.2软件流程图•••••4.3 源程序••••••••••5.调试运行5.1 XXXXXXXXXXXXXXXX5.2 XXXXXXXXXXXXXXXX•••••6.设计心得体会参考书目:(五号,宋体加粗)[1] 肖金球. 单片机原理与接口技术.[M].北京:清华大学出版社,2004.12[2]………………………………………………………………………..•••••(要求:五号字,宋体,单倍行距。
按作者、书名、出版社、地点、出版时间格式逐一列出,中间用逗号格开)蓝色字一律不要打印参考题目题目1 智能电子钟(LCD显示)设计要求:以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3) 五路定时输出,可任意关断(最大可到16路)。
(4) 时间、月、日交替显示。
(5) 自定任意时刻自动开/关屏。
单片机课程设计报告[5篇]
单片机课程设计报告[5篇]第一篇:单片机课程设计报告《单片机课程设计报告》学校:专业:班级:姓名:学号:指导教师:摘要由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。
通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。
关键词单片机,程序,流水灯,数码管,温度计,键盘扫描,定时器等。
实验内容一、课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。
在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。
实验一:键盘操作实验实验要求:通过本次实验实现对键盘的控制,操作数码管的显示数字。
实验程序:#include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar codetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80 ,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar codetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x0 0,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE [0XA000]=0XFF;XBYTE[0XB000]=0XFF;}void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)return 1;else return 0;}void time_init(){ TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;} void time_display(){if(count==10000)count=0;XBYTE[0X8000]=table_16_1[coun t%10];XBYTE[0X9000]=table_16_1[count%100/10];XBYTE[0XA00 0]=table_16_1[count%1000/100];XBYTE[0XB000]=table_16_1[co unt/1000];} void TIME_SET(){ uchar a,b,c,d,key;while(flag==1){ led_clc();while(!key_test());a=keyscan();XBYTE[0XB000]=table_16_1[a];while(!key_test());b=keyscan();XBYTE[0XA000]=table_16_2[b];while(!key_test());c=keyscan();XBYTE[0X9000]=table_16_1[c];while(!key_test());d=keyscan();XBYTE[0X8000]=table_16_1[d] ;while(!key_test());key=keyscan();if(key==11){shi = a*10+b;fen = c*10+d;flag=0;} } } void TIME_DIS(){if(tim==60){ fen++;tim=0;if(fen==60){ shi++;fen=0;if(shi==24)shi=0;} } XBYTE[0X8000]=table_16_1[fen%10];XBYTE[0X9000]=table_16_1 [fen/10];XBYTE[0XA000]=table_16_2[shi%10];XBYTE[0XB000]=ta ble_16_1[shi/10];} void main(){ uint temp;led_clc();// serial_init();time_init();while(1){ temp=keyscan();if(temp==10)fla g=1;TIME_SET();//XBYTE[0X8000]=table_16_1[temp];//time_display();TIME_DIS();} } void time()interrupt 2 { uchar m;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){ m=0;count++;tim++;} } void serial()interrupt 4 { if(RI==1){ x=SBUF;RI=0;} put_char(x);delay_1ms(5);}实验心得体会:通过本次实验,让我对单片机实验有了更深的了解,认为这个实验还是比较容易的,没有花太多的时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机原理与应用课程设计》设计报告2014——2015学年第2学期设计题目:基于单片机的简易电子琴姓名:王云飞专业班级:光电信息132 学号: 1893130221安徽科技学院数理与信息工程学院1 课题设计内容本文的主要内容是用AT89C51单片机为核心控制元件,设计一个简单的电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
定时器按设置的定时参数产生中断,由于定时参数不同,就会发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。
先根据要求设计硬件电路和编写相应的程序,然后进行仿真调试,最后细心焊接硬件电路图,将程序烤入芯片中,最终达到设计目的。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
具体实现的功能:按下音符键可以发出相应的音符。
2 设计方案论证基本乐理知识:乐音听起来有的高、有的低,这就叫做音高。
音高是由发声物体振动频率的高低决定的,频率高声音就高,频率低声音就低。
音持续时间的长短即时值,一般用拍数表示。
休止符表示暂停发音。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率组合,加以拍数对应的延时,构成音乐。
如果单片机要自己播放音乐就必须考虑到节拍的设置。
对于AT80C51而言要产生一定频率的方波一般是先将某口线输出高电平,延迟一段时间后再输出低电平。
通过改变延迟时间可以改变单片机的输出频率。
单片机的延时主要有两种方式,即软件延时和使用定时/计数器延时。
其中软件延时不是很精确,而电子琴电路由于每个音符的频率值要求比较严格,因此我们选用定时/计数器延时。
由于本课程设计是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。
因此,我们只需弄清楚音乐中的音符和对应的频率,利用单片机的定时/计数器来产生方波频率信号即可。
要产生相应的音频脉冲,只需要计算出某音频的周期,再除以2。
利用计数器计时半周期,计满时使P2.0反向,然后重复计时再反向。
本例中,单片机工作在12MHz时钟,使用定时器/计数器T0,工作模式为1,改变计数初值TH0、TL0就可产生不同频率的脉冲信号。
例如低3MI音,频率为330Hz,其周期T=1/f=1/330=3030us,计数值N=3030/2=1515,所以每计数1515次P2.0反向。
计数初值T=65536-N=64021。
C调的各音符对照表如表1所示。
表1 C调各音符频率与计数值T对照表1、基本思想:简易的电子琴系统主要是采用AT89C51单片机,单片机工作于12MHZ的时钟频率,使用其定时/计乐,因为单片机产生的音频脉冲没有足够的驱动能力,所以用三极管放大电路实现音频的放大,保证扬声器能产生所要实现的音符声音。
2、硬件框图:3.系统的硬件结构3.1系统硬件设计硬件电路的设计主要包括芯片89C51,、4*4键盘电路、振荡电路、复位电路及音频电路组成。
简易电子琴硬件电路图:3.2 键盘电路键盘是最常用的单片机输入设备,大致可以分为独立连接式键盘和矩阵式。
独立连接式键盘是最简单的键盘电路,每个键独立接入一根数据线。
这种键盘结构简单,使用方便,但是占用的I/O口线较多。
矩阵式键盘由行线和列线组成,按键位于行列的交叉点上,行列式键盘可节省I/O口,适合按键数较多的场合。
所以本设计的4*4键盘采用矩阵式键盘。
3.3 振荡电路单片机的时钟信号用来提供单片机内各种位操作的时间基准,时钟信号通常有两种电路形式得到:内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部震荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
晶振通常选用6MHz、12MHz或者24MHz。
本设计中采用的是12MHz。
电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般5~30pF。
内部振荡方式所得的时钟信号比较稳定,电路中使用较多。
振荡方式如下图:3.4 复位电路复位操作完成单片机内电路的初始化,是单片机从一种确定的状态开始运行。
当单片机的复位引脚RET出现5ms以上的高电平时,单片机就完成了复位操作。
如果RST 持续为高电平,单片机就处于循环复位状态,而无法执行程序。
因此要求单片机复位后能脱离复位状态。
根据应用要求,复位操作通常有2种基本形式:上电复位、开关复位。
上电复位要求接通电源后,自动实现复位操作。
开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。
上电后,由于电容要充电,是RST持续一段时间高电平时间。
当单片机已经在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。
通常选择C=10~30uF,R=10~1kᾨ常用的复位电路如下图所示:在单片机启动后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。
当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。
随着时间的推移,电容的电压从5V释放到变为了1.5V,甚至更小。
根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。
单片机系统自动复位。
3.5 音频放大电路使用PNP管来放大,其中发射极接5V电源,集电极接喇叭,电路中的电容是用来隔离直流电用的。
PNP管放大原理:当PNP管的VC<VB<VE时,使得集电结反偏,发射结正偏时,管子的发射极电流流入管子,基极电流和集电极电流流出管子,且集电极电流跟基极电流之间成β关系,三极电流满足IE=IB+IC=IB(1+β·IB)。
即,基极电流可以控制集电极电流,这种控制作用就称为管子的放大作用。
本课程设计的音频放大电路图(三极管型号为9015):4.系统软件设计本设计采用AT89C51单片机作为核心处理器件,按下复位键,进入初始化,调用键盘扫面子程序,获得键值,查询音阶表,获取定时初值,向喇叭输入相应频率的脉冲驱动,发出相应的音调,若按键没有释放,则一直发声;若按键松开,则停止发声。
当读到结束符时,停止播放音乐。
具体软件流程图如下:4.1主程序流程图:中断服务子程序流程图4.2系统的软件主程序:#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit P20 = P2^0; //P2.0外接扬声器uint FTemp;unsigned int code tab[] = { //定时半周期的初始值64021,64103,64260,64400, //低音3 4 5 664524,64580,64684,64777, //低音7,中音1 2 364820,64898,64968,65030, //中音4 5 6 765058,65110,65157,65178}; //高音1 2 3 4/************************************************************* * 函数功能 : 用扫描法读 P1 外接 4×4 键盘**************************************************************/ uchar Keyscan(void){uchar i, j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7};for(j = 0; j < 4; j++) //循环四次,扫描四行{ P1 = Buffer[j]; //在低四位分别输出一个低电平_nop_();temp = 0x80; //计划先读出P1.7位for(i = 0; i < 4; i++) //循环四次,检查四列{ if(!(P1 & temp)) //从高四位,截取1位{ return (i + j * 4); //返回取得的按键值}temp >>= 1; //换右边一位} }return 16; //没有键按下就返回16}主函数***************************************************************/ void Main(void){uchar Key_Value = 16, Key_Temp1, Key_Temp2;//读出的键值TMOD = 0x01; //T0定时方式1ET0 = 1; //允许T0中断EX0 = 1; //允许INT0中断EA = 1;//开总中断while(1){ TR0 = 0; //T0工作停,暂不发音Key_Temp1 = Keyscan(); //第一次读入按键if(Key_Temp1 != 16) { //有键按下Key_Temp2 = Keyscan(); //再读一次if (Key_Temp1 == Key_Temp2) //两次相等{ Key_Value = Key_Temp1; //就确认下来FTemp = tab[Key_Value]; //根据键值,取出定时半周期的初始值 TR0 = 1; //启动定时器T0,发音while (Keyscan() < 16); //等待释放P20 = 1; //停止发音} } } }//============================================================== void T0_INT(void) interrupt 1{TL0 = FTemp; //载入定时半周期的初始值4.3 系统的软件的调试仿真硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。
这里我们使用Proteus软件进行仿真,加载编译好的.HEX即文件到单片机后,点击运行按钮即可,仿真电路图如下:(当我们按键时如果成功就会听到我们想要的音乐)。