单片机课设报告
stm32单片机课程设计报告
stm32单片机课程设计报告设计背景:一个学生对单片机的好奇心,也激起了我对它进行探索研究的兴趣。
为此,在上完单片机课程以后,同时开始我们的实践活动。
经过几天的努力我们的第一次作品终于出炉了。
通过这次活动使我受益匪浅!由于本人水平有限,书写不当之处还请老师指正,谢谢!设计要求:采用小规模集成电路设计单片机最大特点就是电路简洁、可靠性高和价格低廉.利用51系列的中断结构和硬件看门狗定时器来完成最后的任务,因此,我们只需对各部分加以说明,重点介绍其设计思想即可,如下图所示:(1)定时/计数器采用小规模集成电路设计单片机最大特点就是电路简洁、可靠性高和价格低廉.利用51系列的中断结构和硬件看门狗定时器来完成最后的任务,因此,我们只需对各部分加以说明,重点介绍其设计思想即可,如下图所示:(2)程序存储器部分(3)片内数据存储器部分(4)外围扩展接口部分图2—1程序存储器部分图2-3片内数据存储器部分图2-4外围扩展接口部分1.程序存储器部分片内程序存储器共分四个部分:控制寄存器、数据存储器、程序状态存储器和特殊功能寄存器等。
在这些地方我主要讲解如何用中断控制其工作。
当定时器发生溢出或非法操作,将会产生一个中断请求信号。
由定时/计数器产生的该中断请求信号在中断服务程序中被送到定时/计数器。
定时/计数器将响应中断而执行相应的中断服务子程序,并返回响应中断信号。
利用中断处理实现定时/计数器中断请求:在程序存储器片段存放定时/计数器对象,并使其成为可重入的,从而为每一位提供固定宽度的中断服务。
当中断产生时,片内寄存器的内容随着中断服务程序的调用而改变,寄存器值改变了,那么中断服务子程序中被修改的位的状态也跟着变化;如果该中断请求得到了满足,则可由该寄存器恢复原先的值;否则,仍然保持原先的状态。
而且,该中断请求不会因其他原因而丢失,下次再启动程序时,该中断请求又会被激活。
中断服务程序被装入一个中断向量表( IDT),由中断屏蔽位来确定中断源的类型,以便查询有关寄存器的状态。
单片机记录开机次数课设报告
单片机记录开机次数课设报告1.引言1.1 概述概述在现代科技快速发展的背景下,单片机作为一种常见的嵌入式系统,在各个领域都有着广泛的应用。
而本篇课设报告则着重探讨了如何利用单片机记录开机次数的方法与实现。
开机次数是单片机应用中一个重要的指标,它能够记录设备的使用情况,为后续的数据分析和性能优化提供参考依据。
本篇报告将首先介绍单片机的基本原理,包括其工作原理和结构组成,以便读者更好地理解后续的开机次数记录方法。
接着,将进行对记录开机次数的需求分析,从实际应用的角度出发,针对不同场景下的需求特点进行分析和总结。
在需求分析的基础上,本篇报告将提供一种实现记录开机次数的方法,详细介绍其原理和操作步骤,并给出实验结果与相应的讨论。
本篇报告旨在通过深入研究和实践,为读者提供一种简单而有效的记录开机次数的方法,并探讨其在实际应用中的适用性和优劣势。
通过本篇报告的学习,读者将能够更好地理解单片机的工作原理和应用场景,培养自己解决问题和创新思维的能力。
同时,本篇报告也可作为相关课程的辅助教材,供同学们参考和学习。
在未来的研究和实践中,希望通过更好地利用单片机的功能,实现更多的应用创新和技术突破。
1.2文章结构1.2 文章结构本篇报告主要包括以下几个部分:第一部分为引言,主要从概述、文章结构和目的三个方面介绍本课设报告的背景和目标。
第二部分为正文,主要分为两个小节。
首先,介绍单片机的基本原理,包括什么是单片机以及其工作原理和构成要素等。
接下来,进行记录开机次数的需求分析,探讨为什么需要记录开机次数、记录开机次数的应用场景及其功能要求等。
第三部分为结论,主要包括两个小节。
首先,提出实现记录开机次数的方法,介绍具体的设计方案和实施步骤。
接着,对实验结果进行分析和讨论,评估所设计的方法的可行性和效果,并探讨可能存在的问题和改进方向。
通过以上结构,本报告将全面而系统地介绍单片机记录开机次数的课设内容,使读者能够清晰地了解单片机的基本原理和记录开机次数的需求分析,同时具备实现该功能的方法和工具。
单片机 课程设计报告(完成版)
单片机课程设计报告
题目:音乐门铃
院系:电气信息工程系专业:通信工程
组长:吴楠学号: 20100606019
组员 1 :刘静静学号: 20100606017
组员 2 :张琳娜学号: 20100606018
组员 3 :李元学号: 20100606020
组员 4 :黄智鑫学号: 20100606049
组员 5 :学号:
组员 6 :学号:
指导教师:李宁
2011年01月06日
电气信息工程系课程设计总结报告
PCB原理图
电气信息工程系
单片机课程设计元器件清单指导教师:李宁课题名称:音乐门铃
参考文献:
[1]徐爱钧.单片机原理实用教程[M].北京:电子工业出版社,2009:267-285.
[2]刘焕平.单片机原理及应用[M].北京:北京邮电大学出版社,2008:246-260.
[3]刘南平.单片机实训与开发教程[M].北京:科学出版社,2008:199-209.
[4]吴金戌.8051单片机实践与应用[M].北京:清华大学出版社,2002:242-253.
[5]刘海成.单片机及应用系统设计原理与实践[M].北京:北京航空航天大学出版社,2009:273-281.
[6]杨振江.单片机应用于实践指导[M].西安:西安电子科技大学出版社,2010:378-380.。
单片机课程设计报告代码
单片机课程设计报告代码摘要:一、单片机课程设计报告简介1.单片机概述2.课程设计报告的目的与意义3.报告内容概述二、单片机基础知识回顾1.单片机的定义与历史2.单片机的基本结构3.单片机的工作原理三、单片机应用领域1.工业控制2.通信设备3.消费电子4.汽车电子5.其他领域四、单片机课程设计报告实例分析1.实例一:基于单片机的智能家居系统设计2.实例二:单片机控制的智能交通灯系统设计3.实例三:单片机在智能医疗设备中的应用设计五、单片机课程设计报告撰写建议1.明确设计目标与要求2.详细的设计过程与思路3.合理的硬件与软件设计4.系统测试与优化5.结论与展望正文:一、单片机课程设计报告简介单片机课程设计报告是学生在学习单片机知识后,将理论应用于实际的一个综合性实践环节。
通过对单片机的了解与掌握,学生可以设计出各种具有一定功能的智能系统。
本报告将对单片机课程设计报告进行简要介绍,包括报告的目的、意义以及内容概述。
二、单片机基础知识回顾在开始设计报告之前,我们需要先回顾一下单片机的基础知识,以便更好地理解单片机的工作原理和应用领域。
单片机是一种集成电路,集成了CPU、存储器、外设接口等多种功能于一体,可编程实现各种控制功能。
它具有体积小、成本低、功耗低、功能强大等特点,被广泛应用于各个领域。
1.单片机的定义与历史单片机(Microcontroller Unit, MCU)是一种集成了CPU、存储器、外设接口等多种功能于一体的微型计算机。
自1971年Intel公司推出第一款单片机4004以来,单片机得到了迅速发展,其性能、功能和应用领域不断扩展。
2.单片机的基本结构单片机主要由CPU、存储器、外设接口和时钟电路等部分组成。
CPU是单片机的核心部分,负责程序的执行;存储器用于存储程序和数据;外设接口用于与外部设备进行通信;时钟电路为单片机提供工作节拍。
3.单片机的工作原理单片机根据预先编写好的程序,在时钟信号的作用下,对输入信号进行处理,并产生相应的输出信号,从而实现对各种外部设备的控制。
单片机课程设计报告电子万年历
单片机课程设计报告电子万年历单片机课程设计报告:电子万年历一、设计简介在本次单片机课程设计中,我们选择了电子万年历作为设计主题。
电子万年历是一种结合了数字电路、单片机技术和实时时钟(RTC)技术的电子产品,它具有显示年份、月份、星期、日、时、分、秒的功能,还可以根据用户的需求进行定时、闹钟、报时等功能。
二、硬件设计我们采用了基于8051内核的单片机作为主控芯片。
该单片机具有丰富的I/O 端口,适于实现各种复杂的输入输出操作。
此外,它还内置了定时器和中断控制器,可以很方便地实现实时时钟功能。
1.显示模块:为了方便用户查看时间信息,我们选用了LCD显示屏作为显示设备。
LCD屏具有功耗低、体积小、显示内容丰富等优点。
2.实时时钟(RTC)模块:我们采用了常用的DS1302芯片作为实时时钟模块。
该芯片可以提供秒、分、时、日、星期、月、年的信息,而且还有可编程的报警功能。
3.按键模块:为了实现人机交互,我们设计了一组按键。
用户可以通过按键来调整时间、设置闹钟等。
4.电源模块:为了保证系统的稳定工作,我们采用了稳定的5V直流电源。
三、软件设计我们采用了C语言编写程序。
程序主要由以下几个部分组成:1.主程序:主程序主要负责读取RTC模块的时间信息,并控制LCD显示屏显示时间。
同时,主程序还要检测按键输入,根据用户的需求进行相应的操作。
2.RTC驱动程序:为了正确地读取和设置DS1302芯片的时间信息,我们编写了相应的驱动程序。
驱动程序包括初始化和读写寄存器两部分。
3.按键处理程序:按键处理程序用于检测按键输入,并根据按键值执行相应的操作。
比如,用户可以通过按键来增加或减少时间,设置闹钟等。
4.LCD显示程序:LCD显示程序用于控制LCD显示屏的显示内容。
在本设计中,我们使用了点阵字符库,将时间信息以字符的形式显示在LCD屏上。
四、测试与验证为了确保我们的电子万年历设计正确无误,我们进行了以下的测试和验证:1.硬件测试:首先,我们对硬件电路进行了测试,确保每个模块都能正常工作。
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单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。
单片机课程设计报告
单片机课程设计报告指导老师:任家富学生:钟文旭学号:200906050415一、目的与意义《单片微机原理及应用》是一门技术性、应用性很强的学科,实验课教学是它的一个极其重要的环节。
不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验课教学。
如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节,学习与应用脱节的局面。
任随书本上单片微机技术介绍得多么重要、多么实用、多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会因此对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。
《单片微机课程设计》的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行单片机应用系统的开发设计工作打下一定的基础。
二、硬件电路图1、主板2、四位数码管3、八位LED流水灯4、蜂鸣器5、串口三、程序流程图五、实现的功能及现象1、键盘扫描输入当程序运行时,自动检测是否有按键按下,是哪个按键按下,并且通过返回值,在四位数码管上显示出按下键所对应的数字、字母或执行相应的功能。
2、四位数码管显示通过四位数码管显示相应的按键值、提示语或者执行相关功能。
3、八位流水灯程序运行时,当按下“B”功能键,八位流水灯依次循环点亮熄灭。
4、秒表程序运行时,当按下“C”功能键,数码管清零,从零开始逐秒增加。
5、串口通信程序运行时,当按下“F”功能键,数码管显示“232C”,提示进行串口输入,当从串口助手中输入控制字符时,八位LED灯得到对应的结果。
例如:当输入“00”时,八位灯全亮;当输入“AA”时,八位灯间隔亮。
单片机万年历课程设计报告
单片机万年历课程设计报告一、课程设计目标本课程设计旨在帮助学生掌握单片机应用基础知识,学习并完成万年历电路的设计和代码编写。
通过这个实践,学生将会深入理解单片机在实际生活中的应用,同时提升自己的程序设计和解决问题的能力。
二、课程设计内容1. 万年历电路的原理和设计本次课程设计要求学生完成一个万年历电路的设计,包括硬件电路和程序设计。
在电路设计中,学生需要考虑到显示器、时钟模块、日期模块和温湿度传感器等部分的连接和调试。
在程序设计方面,学生需要实现万年历的功能,包括显示当前日期和时间、自动确定闰年、节假日提示等。
2. 单片机基本原理和应用实践在万年历电路设计之前,本课程将会对单片机基本原理进行介绍,包括单片机内部结构、芯片选型和I/O口控制等。
另外,还将介绍单片机在各种应用场景中的应用实践,如遥控、电脑控制、机器人和智能家居等。
3. 问题解决和困难克服在学生完成万年历电路设计的过程中,难免会遇到各种问题和困难。
本课程将对学生进行相关的实用技巧和方法讲解,帮助他们解决问题和克服难关。
三、课程设计流程1. 单片机基础知识介绍(2学时)讲解单片机内部结构及其原理,并介绍单片机应用实践2. 万年历电路设计(12学时)对万年历的硬件和软件进行介绍,包括连接显示器和外设、编写程序等3. 问题解决(2学时)介绍学生应对问题的技巧和方法,并帮助他们克服电路设计中的问题和难点四、课程设计评价标准1. 设计成果设计成果的好坏是课程设计的重要衡量标准之一,包括电路的设计完整性、软件功能实现等方面。
2. 实践能力课程设计是一种实践性强的学习形式,学生需要通过实践来掌握知识,因此他们的实践能力成为衡量标准之一。
3. 团队合作在课程设计的过程中,学生要协同工作,完成一个大型的项目,因此团队合作能力是衡量标准之一。
4. 学习的态度学习态度是衡量标准之一,包括学生在课程设计中的主动性、积极性和责任感等方面。
五、总结通过这个万年历课程设计,学生不仅学会了单片机应用的基础知识,还掌握了实际项目开发的方法和技巧。
单片机电子时钟课程设计报告
单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
单片机课程设计报告
单片机课程设计实验报告设计题目:基于单片机的多功能综合应用系统的设计专业:电子信息工程班级:姓名:指导老师:目录第一章设计说明1.1 设计目的 (3)1.2 设计内容及要求 (3)第二章硬件电路仿真实现2.1 硬件结构分析 (5)2.2基本功能仿真电图 (6)2.3扩展功能仿真电路图 (10)2.4 实物电路图 (15)第三章软件设计实现3.1软件程序内容 (16)3.2模块分析 (16)3.3 程序流程图 (17)第四章系统测试4.1 软件调试 (19)4.2硬件调试 (19)第五章心得体会 (20)第六章参考文献 (21)附录 (21)第一章设计说明1.1 设计目的单片机在许多领域使用十分广泛,如智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等。
各科任老师们经常说“学好单片机,工作就不成问题了。
”可见学好单片意义之重大。
单片机作为一门基础学科,既是对前期学习C语言的综合运用,也是理论与实践相结合的一大体现。
本次课程设计通过基础部分,拓展功能以及整体电路的实现能很好地锻炼我们的动手及编程能力。
1.2 设计内容及要求内容:1.设计并实现具有复位功能的单片机小系统。
2.利用单片机进行灯光的场景开关控制、循环点亮控制、花样变化控制及速度变化控制(如:左右循环、扩散收缩式移动、流星雨、舞台灯光综合效果、名曲名句跟随显示等。
至少应做两项:前两项选一并有速度变化控制功能,后三项选一或自创特色花样)。
3. 炫彩音乐显示(依据3秒以上某名曲名句,模拟高、中、低音三分频,彩色LED随音频变化而起伏显示的效果,进一步地,LED 亮度跟随音乐响度闪烁)。
4.利用单片机进行灯光的色彩连续变化效果控制。
5.利用单片机进行灯光的三色联动定时控制(以交通灯为例)。
(说明:3、4中二选一,1、2、5必选)6. 配合2至5项中功能,实现液晶屏输出功能或状态信息。
7. 以调节5或4项中的时间为例实现基于4X4键盘的输入功能。
单片机原理及应用课程设计报告
课程设计为学生提供了一个实践平台,学生可以在实践中锻炼动手能力,培养解决实际问题的能力,同时通过创新思 维,设计出具有特色的单片机应用系统。
促进理论与实践相结合
单片机原理及应用课程设计将理论知识与实践操作相结合,使学生能够更好地理解单片机的实际应用场 景,加深对理论知识的理解。
时间安排
共计8周,每周5天, 每天8小时。
04
单片机应用实践
单片机外围电路设计
电源电路
为单片机提供稳定的电源,确 保单片机正常工作。
时钟电路
为单片机提供稳定的时钟信号 ,保证程序正常运行。
复位电路
在单片机出现异常时,能够实 现自动复位或手动复位。
输入输出接口
实现单片机与外部设备的通信 和控制。
单片机程序编写与调试
单片机的编程语言和开发环境
单片机的编程语言主要有汇编语言和C语言。汇编语言是一种低级语言,直接控制硬件操作,但编程 难度较大;C语言是一种高级语言,具有可读性强、易于编程和维护等优点。
单片机的开发环境是指用于编写、编译、调试和烧录程序的软件环境。常用的单片机开发环境有Keil 、IAR、SDCC等。这些开发环境都支持汇编语言和C语言编程,提供了丰富的库函数和调试工具,方 便开发者进行单片机应用开发。
• 解决方案
检查数码管的位选信号和段选信号是否正确连接。
对未来学习和实践的建议与展望
深入学习
进一步研究单片机的内部结构和工作原理,掌握 更多高级功能和应用。
实践应用
将所学知识应用到实际项目中,提高解决实际问 题的能力。
持续学习
关注单片机技术的最新发展动态,保持学习的持 续性。
THANKS
感谢观看
51单片机电子时钟课程设计报告
第一部分设计任务和要求1.1单片机课程设计内容 (2)1.2单片机课程设计要求 (2)1.3系统运行流程 (2)第二部分设计方案2.1总体设计方案说明 (2)2.2系统方框图 (3)2.3系统流程图 (3)第三部分主要器材及基本简介3.1主要器材 (4)3.2主要器材简介 (4)第四部分系统硬件设计4.1最小系统 (6)4.2LCD显示电路 (6)4.3键盘输入电路 (7)4.4蜂鸣器和LED灯电路 (7)第五部分仿真电路图与仿真结果 (8)第六部分课程设计总结 (8)第七部分参考文献 (9)附录A 实物图附录B 系统源程序第一部分设计任务和要求1.1单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。
1.2单片机课程设计要求1.能实现年、月、日、星期、时、分、秒的显示;2.能实现调时功能;3.能实现12/24小时制切换;4.能实现8 : 00—22 : 00整点报时功能。
1.3系统运行流程程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。
若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。
若没到则循环执行。
计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。
调时闪烁中断服务程序用于被调单元的闪烁显示。
调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。
实现了对时间的设置和修改、LCD显示数值等主要功能。
相关的调整是靠对功能键的判断来实现的。
第二部分设计方案2.1总体设计方案说明1.程序设计及调试根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。
2.硬件焊接及调试根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。
3.后期处理对设计过程进行总结,完成设计报告。
单片机课程设计报告(五人表决器)
目录一、方案设计 (2)二、硬件电路设计 (2)三、软件设计说明 (6)四、程序清单 (7)五、制作调试说明 (12)六、操作使用说明 (13)七、总结 (13)单片机课程设计一、方案设计1、设计题目:5人表决器2、设计要求:1)、可供5—7个人进行表决,每个人有一个“同意”和一个“反对”按键,故一个人需要两个按键,表决时两个键先按下的一个有效,同时按下则表示无效,每次表决每个按键只能是第一次按下的有效,多按无效,用单片机设计表决器是硬件电路与软件设计相结合的一种设计,因此在硬件电路只能实现按键的按下与释放,不能智能的实现检测按键被按下几次,则可用软件设计来实现其功能。
2)会议主持人可利用按键控制表决的开始与结束,点亮黄灯用于显示表决开始,熄灭黄灯表示结束,并将表决结果用红灯与绿灯显示。
当不相等时,“同意”多于“反对”点亮绿灯,“同意”少于“反对”点亮红灯。
3)在实现上述功能的基础上增加“同意”数和“反对”数的显示。
二、硬件电路设计1、硬件设计思路:此次设计的题目是5人表决器,分析得设计的硬件电路选用P1口与P2口作为同意与反对按键的输入端。
又表决的开始与结束是由主持人来控制的,因此需要两个按键来表示表决的开始与结束,因此可采用外部中断0与外部中断1来控制表决的开始于结束。
故设计总共需要按键12个。
设计要求中需要四盏灯,分变为一个黄灯,一个绿灯和二个红灯,三盏灯用于输出显示,因此也可以征用单片机的I/O口,由于P1口与P2口作为同意与反对按键的输入端且P0口当做输出端口时可以不用接上拉电阻,因此可将三个显示灯接在P0口用于显示表决的结果。
还有一盏红灯用来做电源指示灯。
2、元器件参数确定:设计要求中需要三盏灯(黄灯,绿灯和红灯)用于输出显示,选用P0口的3个端口与显示灯相连接用于输出,由于输出端口输出的高电平一般为5V,而发光二极管允许的最大电流为5mA,因此需要用到限流电阻,发光二极管可降2V的电压,则限流电阻上的压降为3V,那么限流电阻的最小阻值为R=3V/5mA=600欧姆,由于输出的高电平不是5V,故用510欧姆的限流电阻。
单片机课程设计报告
摘要单片机课程设计主要是让我们增进对c51单片机的感性认识,加深对理论方面的理解。
了解软硬件之间的有关知识,并掌握软硬件的设计过程、方法及实现,为以后的设计和实现应用系统打下良好基础。
本次课程设计主要完成跑马灯及闪烁灯的实验设计。
首先通过Protel 99 SE 或proteus ISIS 画好原理图,然后将绘制好的原理图在PCB 面板上制线,通过导入Keil C 的设计好的汇编语言程序,完成模拟和仿真,最后将所模拟的程序导入已做好的AT89C51芯片上完成功能演示整个过程。
最终根据要求完成所有步骤,实现了预期演示跑马灯、流水灯、闪烁灯任务。
关键词:单片机、软件、硬件、跑马灯、流水灯、闪烁灯、印制板图、程序、数码管 AbstractSCM curriculum design is mainly let us enhance perceptions of the C51microcontroller, to deepen theoretical understanding. Understanding of relevant knowledge between hardware and software, and master the design process ofhardware and software, and the method of realization, and lay a good foundation for the design and implementation of application system. The experimental design of this course design mainly completes the marquee and flashing lights. Through the first Protel 99 SE or Proteus ISIS drawing principle diagram, and then draw principle of good business line in the PCB panel design, through the introduction of Keil C good assembly language program to complete the simulation, finally Complete the whole process of AT89C51 chip demo program to import the simulation done. Finally according to the requirements to complete all the steps to achieve the desired presentation marquees, lights, flashing lights.Keyword:SCM, software, hardware, marquees, lights, flashing lights, printed circuit board diagram, program, digital tube—————————————————————————装订线————————————————————————————————引言本次课程设计通过对单片机的学习和认识,单片机最小系统是在以MCS-52单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。
单片机课程设计报告
(此文档为word格式,下载后您可任意编辑修改!)目录一、课程设计的目的………………………………………………二、课程设计用的仪器和器件……………………………………………三、课程设计的具体内容…………………………………………………1、总体报告…………………………………………………………………2、硬件设计…………………………………………………………………3、软件流程和程序…………………………………………………………4、调试结果…………………………………………………………………四、课程设计的体会和发生的问题……………………………………参考文献………………………………………………………………………一、课程设计的目的单片机系统课程设计是《单片机原理与接口技术》课程与实验结束后的一门综合性实践课。
所选题目《交通灯控制系统》紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度,能充分发挥学生的能动性和想象力。
通过电路设计、安装、调试等一系列环节的实施,提高学生的单片机应用系统的设计能力。
二、课程设计用的仪器和器件实验设备:试验台、电烙铁、焊锡丝、支架、吸枪、剪刀、PC机一台、仿真仪一台实验材料:电路板(12*8 cm 1块)、发光二级管(红、黄、绿各4只)、发光二级管插座(4只)、接线排座(7针)、电阻(300Ω 12只)、导线(红、黄、绿各0.5米)三、课程设计的具体内容1、总体报告本次单片机课程设计的任务是以单片机为核心设计一个完整的交通灯模拟系统,用P1.0、P1.1、P1.2控制南北通道的红、黄、绿灯;用P1.3、P1.4、P1.5控制东西通道的红、黄、绿灯。
开始时,南北红灯亮并保持25秒,同时东西绿灯亮,保持20秒,20秒钟到了之后,东西绿灯闪亮3次(每周期1秒)后熄灭。
继而东西黄灯亮并保持2秒,到2秒后,东西黄灯灭,东西红灯亮并保持25秒,同时南北红灯灭,南北绿灯亮20秒,20秒到了之后,南北绿灯闪亮3次(频率为0.5秒)后熄灭。
单片机课程设计报告
单片机课程设计 报告一、课程目标知识目标:1. 学生能理解单片机的基本概念,掌握其工作原理及结构组成。
2. 学生能掌握单片机编程的基本语法,如指令系统、寄存器等。
3. 学生能了解并运用单片机在现实生活中的应用,如智能家居、机器人控制等。
技能目标:1. 学生具备使用开发板进行单片机程序编写、调试的能力。
2. 学生能通过小组合作,设计并实现简单的单片机控制系统,培养动手实践能力。
3. 学生能运用所学知识解决实际问题,具备一定的创新能力和问题解决能力。
情感态度价值观目标:1. 学生通过单片机课程学习,培养对电子技术的兴趣和热情,增强学习动力。
2. 学生在学习过程中,养成团队协作、沟通交流的良好习惯,增强集体荣誉感。
3. 学生了解单片机在我国科技发展中的重要性,培养国家使命感和社会责任感。
课程性质分析:本课程为单片机课程设计,旨在让学生通过实践操作,掌握单片机的基本原理和编程技术,提高解决实际问题的能力。
学生特点分析:本年级学生具备一定的电子技术基础知识,对单片机有一定了解,但编程能力和实践操作经验有限。
教学要求:1. 注重理论与实践相结合,强化学生的动手实践能力。
2. 采用项目驱动教学法,引导学生主动探究、解决问题。
3. 培养学生的团队协作能力,提高沟通表达水平。
4. 结合生活实际,激发学生学习兴趣,培养创新思维。
二、教学内容根据课程目标,本章节教学内容分为以下三个部分:1. 单片机基础理论- 理解单片机的概念、发展历程及应用领域。
- 掌握单片机的硬件结构、工作原理及性能指标。
- 学习单片机的指令系统、寄存器、I/O口编程等基本知识。
教学内容对应教材章节:第一章 单片机概述、第二章 单片机硬件结构及工作原理。
2. 单片机编程与调试- 学习单片机编程语言(如C语言、汇编语言)及开发环境。
- 掌握单片机程序编写、调试方法,了解程序下载、运行过程。
- 学习中断、定时器、串行通信等单片机功能模块的使用。
教学内容对应教材章节:第三章 单片机编程语言、第四章 单片机编程与调试。
单片机原理与应用课程设计报告
单片机原理与应用课程设计报告一、设计题目基于单片机的智能温度控制系统二、设计目的通过本次课程设计,旨在加深对单片机原理与应用的理解,掌握单片机的基本应用,提高实际操作能力和解决问题的能力。
同时,通过设计一个智能温度控制系统,实现对温度的实时监测和控制,提高系统的自动化和智能化水平。
三、设计原理本设计采用单片机作为主控制器,通过温度传感器采集环境温度信息,经过A/D转换器将模拟信号转换为数字信号,再由单片机进行处理。
根据设定的温度阈值,单片机输出相应的控制信号,驱动加热元件或风扇等执行机构,实现对温度的调节和控制。
同时,通过LED显示屏实时显示当前温度值。
四、硬件电路设计1. 单片机选择:采用常用的51单片机作为主控制器。
2. 温度传感器:采用DS18B20数字温度传感器,具有测量精度高、抗干扰能力强等优点。
3. A/D转换器:采用ADC0809芯片,将温度传感器输出的模拟信号转换为数字信号。
4. 执行机构:采用继电器控制加热元件和风扇等设备。
5. LED显示屏:采用1602液晶显示屏,用于实时显示当前温度值。
五、软件程序设计1. 主程序:初始化单片机和相关硬件,启动温度传感器采集温度数据,循环检测温度值,根据设定阈值控制执行机构。
2. 温度采集程序:启动温度传感器采集环境温度数据,经过A/D转换器转换为数字信号后传送给单片机。
3. 显示程序:将当前温度值实时显示在LED显示屏上。
4. 控制程序:根据设定的温度阈值,输出相应的控制信号驱动执行机构进行温度调节。
六、实验与测试1. 硬件电路搭建:按照设计原理图搭建硬件电路,确保连接正确无误。
2. 程序编写与调试:编写软件程序并进行调试,确保程序运行正常。
3. 系统测试:通过实际测试验证系统的功能和性能,包括温度采集、控制、显示等功能。
4. 结果分析:对测试结果进行分析和总结,找出存在的问题和改进的方向。
七、结论与展望通过本次课程设计,我们成功地设计并实现了一个基于单片机的智能温度控制系统。
《单片机课程设计》报告
机械与车辆学院课程设计题目:姓名:学号:班级:指导老师:时间:成绩:水塔水位控制系统职称:《单片机课程设计》考查评分表、出勤率:□全勤□缺勤较少□缺勤较多□全缺(20%) 2、进度:□较快□正常□较慢□没有按时完成布局焊接:□合理(20%) □错误较多□较合理□原则性错误□基本合理1、程序编写框架:□合理□较合理□基本合理(20%) (10%) (15%) (15%)□原则性错误□基本正确□错漏较多系统调试结果:□实现□基本实现□不能实现1、硬件设计:2、软件设计:3、联调结果:4、过程体味:□合理□合理□正确□属实□较合理□较合理□较正确□较属实□基本合理□基本合理□基本正确□基本属实□不合理□不合理□错漏较多□不属实□思路清晰,内容正确□思路基本清晰,内容基本正确指导教师:吴明友 2022 年 1 月 3 日□错误较多2、程序编写过程:□正确□较正确□思路较清晰,内容较正确□思路较混乱,内容错漏较多一、课程设计性质和目的 (4)二、课程设计的内容及要求 (4)1、硬件设计 (4)2、软件设计 (5)3 、功能要求: (5)三、课程设计的进度及安排 (5)四、设计所需设备及材料 (6)五、设计思路及原理分析 (7)六、流程图及程序编写 (7)(1)根据功能要求画出控制程序流程图。
(8)(2)根据控制程序流程图编写C51 程序 (8)七、调试运行 (10)1 、软件测试: (10)2、硬件测试: (11)八、结果及分析 (12)九、心得体味 (13)十、参考文献 (14)十一、致谢 (14)十二、附录 (15)【1】整流器protel 防真原理图: (15)【2】数字时钟 (16)单片机课程设计是《单片机原理与接口技术》课程与实验结束后的一门综合性实践课。
设计一种基于单片机水塔水位检测控制系统。
该系统能实现水位检测、机电故障检测、处理和报警等功能,实现超高、低警戒水位报警,超高警戒水位处理。
介绍电路接口原理图,给出相应的软件设计流程图和汇编程序,并用Proteus 软件仿真。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告设计课题:基于51系列单片机的时钟设计专业班级:小组成员:指导教师:设计时间:目录设计任务与要求 (3)1.基本设计要求 (3)2.选作项目 (3)相关硬件结构概述 (4)1.硬件结构原理 (4)2.相关电路图: (6)软件结构概述 (12)程序清单 (14)程序调试 (21)课程总结 (22)参考文献 (24)设计任务与要求1.基本设计要求(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。
也可以在其它MCS—51单片机硬件板上完成,或自行设计硬件并制做完成。
(2)程序的首地址应使目标机可以直接运行,即从0000H开始。
在主程序的开始部分必须设置一个合适的栈底。
程序放置的地址须连续且靠前,不要在中间留下大量的空闲地址,以使目标机可以使用较少的硬件资源。
(3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。
开始计时时为000000,到235959后又变成000000。
(4)在键盘上选定3个键分别作为小时、分、秒的调校键。
每按一次键,对应的显示值便加1。
分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。
在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。
(5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法。
(6)上机调试通过。
2.选作项目有能力的同学,在做完以上设计后,可选作此项设计内容。
(1)另设三个键,分别作小时、分、秒的减1调校。
(2)在以上设计的基础上,修改程序制作一个电子秒表。
分、秒各占用2位显示,1/10秒、1/100秒各占用1位显示。
设定二个键分别作启动/停止、清零。
(3)在做完(2)后,将时钟与秒表合二为一,并且在同时使用时互不影响。
即可在时钟与秒表之间任意切换,而不影响走时、计秒。
相关硬件结构概述硬件结构原理该课程设计基于STC89C52单片机为核心完成的,外加少量其他辅助器件,硬件结构比较简单。
由于本电路结构比较简单,单片机I/O口完全够用,故我们将6位8段LED直接和单片机相连。
硬件结构中的6位8段LED显示器,采用动态方式驱动。
我们采用的是共阳电路,一位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间……,周而复始。
只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果。
为了增加和位选相连接的I/O口的驱动能力,直接接上上拉电阻。
在本设计中,只使用了6个按键。
复位键,模式设定键、2个上下调节键。
1、定时器/计数器定时器/计数器简称定时器,其作用主要用于生产各种时间间隔、记录外部脉冲与事件的数量等,是微机中最常用、最基本的部件之一。
89C52单片机有2个16位的定时器/计数器0(T0)和定时器1(T1).T0由2个定时寄存器TH0和Th0构成,T1则由Th1和TL1构成,他们分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器的读写来实现对这两个定时器的操作。
作为定时器时,每个机器周期定时寄存器自动加1,所以定时器也可以看做是计量机器周期的计数器。
由于每个机器周期为12个时钟震荡周期,所以定时器的分辨率是时钟震荡频率的1/12.作为计数器时,只要在单片机外部引脚T0(T1)有从1到0电平的负跳变,计数器自动加1.计数的最高频率一般为振荡频率的1/24,例如,选用12MHz晶振,则最高计数频率为0.5MHz。
2、中断系统当中央处理器CPU正在执行某程序时,由于某种原因,外界向CPU发出暂停目前工作去处理更重要的事情的请求,程序被打断;CPU响应该请求并转入相应的处理程序,处理程序完成以后,再返回原来程序被打断的位置,继续原来的工作,这一过程称为中断。
实现中断功能的部件称为中断系统,或称为中断控制逻辑系统。
89C52单片机的中断系统简单实用。
其基本特点是:有6个固定的可屏蔽的中断源,4个在片内,2个在片外,他们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;6个中断源由两级有先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的编程。
若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且满足如下3个条件时,单片机响应此中断:1)当前正在执行的那条指令已被执行完。
2)当前未响应同级或高级中断。
3不在操作IE、IP中断控制寄存器或执行RETI中断指令。
在正常情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。
中断得到响应后,自动清除中断请求标志(对串行I\O端口的中断标志,要用软件清除),将断点即程序计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装入PC,使程序转入相应的中断服务程序中去执行。
各个中断源在程序寄存器中的中断入口地址如表1所示。
中断源入口地址INT0(外部中断0) 0003HTF0(T0中断)000BHINT1(外部中断T1) 0013HTF1(T1中断) 001BHRI/TI(串行口中断)0023HTF2(T2中断)002BH各个中断入口地址相隔很近,不便于存放各个比较长的中断服务程序,故通常将中断服务程序存放在另外方便存放的地方,而在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入中断服务程序。
由于6个中断源各有其中断求标志IE0、TF0、IE1、TF1、RI/TI以及TF2,在中断源满足中断请求的条件下,各标志自动置1,向CPU请求中断。
如果某个中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件认为清除,中断请求的状态就将一直保持,直到CPU响应此中断为止。
对串行口中断而言,这一过程与其他5个中断的不同之处在于,即使CPU响应了中断,其中断标志RI/TI也不会清零,必须在中断服务程序中设置清除RI/TI的指令后,才有可能再一次提出中断请求。
CPU的现场保护和恢复必须由被响应的相应中断服务程序去完成。
当执行RI/TI中断返回指令后,断点值自动从栈顶2字节弹出并装入PC寄存器,使CPU 继续执行被打断的程序。
本课程设计中用到的定时器T0,并通过T0定时时间到产生中断。
由于实验中定时器T0工作于方式1(即16位方式)且定时器中断允许,因此当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF 自动清零。
所以,在中断服务程序中只需要重新设置定时器初始值。
如果通过对TF查询来确定定时器状态(定时器中断不被允许),在查得TF=1,亦即定时器回零后,要用指令将TF清零,以便下次操作。
相关电路图:八段数码管:共阳极电路:各部分电路原理图:显示部分电路:电源部分电路:单片机部分电路:数码管驱动电路:控制按钮:复位电路:仿真原理图:最后的PCB图:软件结构概述1.主程序在主程序中只完成系统的初始化,同时进行时、分、秒按键的扫描。
如果有按键按下,则做相应时、分、秒计数数据的加1处理。
主程序执行的流程图如下图所示:YYYNN开始初始化( 定时器、显示区、 中断系统、计数单元等)开中断调用显示子程序调用键盘扫描子程序有键按下? 关中断秒键? 秒加1处理分加1处理分键?NY小时键?小时加1处理N图1 主程序流程图(2)定时器中断服务程序定时器T0用于时间计时。
定时计数个数为5000,由于采用12MHz晶体振荡器,所以定时益处中断周期为5000u s=1ms。
为保证计时的准确性,进入中断服务程序时应立即重设计数初始值。
在中断程序中还要判断是否计时1s,若是,还应通过调用其他子程序作时、分、秒值的处理。
定时器中断处理重送初值保护现场计数单元加1N到1秒?秒加1N秒到60?秒清0、分加1N分到60?N小时到24?小时清0恢复现场中断返回图2 定时器中断程序流程图(3)显示子程序该子程序通过在中断服务程序中被调用而执行。
每一次中断程序调用一次,其作用是根据扫描指针循环驱动各个数码管。
(4)时钟调整子程序当中断程序中判断出计时1s时,该程序即被调用执行。
其作用为将秒的计数值加1,同时判断是否应对时批、分作相应修改。
(5)延时子程序用于键盘的延时去抖。
程序清单:#include<reg51.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int/*八段共阳管显示定义*///从右往左6~1依次显示unsigned char wei[6]={0x3e,0x3d,0x3b,0x37,0x2f,0x1f};//从左往右依次为1~6位显示// unsigned char wei[6]= {0X1f,0x2f,0x37,0x3b,0x3d,0x3e,};uchar code duan1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar code duan2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchar BUFF[6];/*定义并初始化变量*/uchar second=56; minute=34; hour=12; unit=0; hun=0; ten=0; sec=0; min=0; m=0, n, q, p,t;sbit P_left_del=P1^0; //键值的定义sbit P_right=P1^1;sbit P_on_off=P1^2;sbit P_add=P1^3;sbit P_sub=P1^4;sbit P_tran=P1^5;/*函数声明*/void delay(uchar k); //延时子程序void time( ); //时间处理子程序void display( ); //时间显示子程序void keyboard( ); //键盘扫描子程序void stopwatch( ); //秒表显示子程序/*****************************//*延时子程序*//****************************/void delay (uchar k){uchar j,i;for(i=k;i>0;i--)for(j=110;j>0;j--);}/*****************************//* 时间显示子程序*//*****************************/void display(void){uchar i;BUFF[0]=~duan1[second%10]; //显示秒的个位BUFF[1]=~duan1[second/10]; //显示秒的十位BUFF[2]=~duan2[minute%10]; //显示分的个位BUFF[3]=~duan1[minute/10]; //显示分的十位BUFF[4]=~duan2[hour%10]; //显示时的个位BUFF[5]=~duan1[hour/10]; //显示时的十位for(i=0;i<6;i++){P0=BUFF[i];P2=wei[i];delay(1);P2=0xff;}}/*******************************//*秒表显示子程序*//******************************/void stopwatch(void){uchar a;if(n==1){TR0=1;ET0=1;TR1=1;ET1=1;}if(n==0){TR0=1;ET0=1;TR1=0;ET1=0;}BUFF[0]=~duan1[hun];BUFF[1]=~duan2[ten];BUFF[2]=~duan2[sec%10];BUFF[3]=~duan1[sec/10];BUFF[4]=~duan2[min%10];BUFF[5]=~duan1[min/10];for(a=0;a<6;a++){P0=BUFF[a];P2=wei[a];delay(1);P2=0xff;}}/*******************************//*键盘扫描子程序*//*******************************/void keyboard (){if(P_tran==0) //如果模式选择被按下,{delay(10);if(P_tran==0){while(!P_tran);m++; //模式切换if(m==2)m=0;}}if(m==1) //秒表模式{if(P_on_off==0) //秒表暂停{delay(10);if(P_on_off==0){while(!P_on_off);n++; //调整方向(左右)if(n==2)n=0;}}}if((m==1)&&(n==0)) //进入秒表显示 00:00:00 n=0表示暂停状态{if(P_left_del==0) //清空{delay(10);if(P_left_del==0){while(!P_left_del);hun=0;ten=0;sec=0;min=0;}}}if(m==0) //时钟{if(P_on_off==0) //停止,调整时间,为1时:调时{delay(10);if(P_on_off==0){while(!P_on_off);q++;TR0=0;if(q==2){q=0;TR0=1;}}}}if(q==1&P_right==0){delay(20);if(P_right==0){while(!P_right);p++;if(p==3)p=0;}}if(q==1&P_left_del==0){delay(20);if(P_left_del==0){// while(!P_left_del);if(p==0)p=3;p--;}}if(p==0){delay(20);if(P_add==0){while(!P_add);second++;if(second==60){second=0;}}if(P_sub==0){while(!P_sub);if(second==0){second=60;}second--;}}if(p==1){delay(20);if(P_add==0){while(!P_add);minute++;if(minute==60){minute=0;}}if(P_sub==0){while(!P_sub);if(minute==0){minute=60;}minute--;}}if(p==2){delay(20);if(P_add==0){while(!P_add);hour++;if(hour==24){hour=0;}}if(P_sub==0){while(!P_sub);if(hour==0){hour=24;}hour--;}}}/**************************//*主函数*//**************************/void main(void){m=n=q=p=0;TMOD = 0x11; //time0为定时器,方式1TH0=(65536-50000)/256; //预置计数初值TL0=(65536-50000)%256;TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA=1;ET0=1; //开定时器0中断ET1=1;TR0=1; //启动定时器0while (1){keyboard(); //按键扫描if(m==0){display();}if(m==1){stopwatch();}}}void timer0() interrupt 1 //定时器0方式1,50ms中断一次{TH0=(65536-50000)/256;TL0=(65536-50000)%256;unit++;if(unit==20){second++;unit=0; //注意点。