单片机课程设计报告模板
单片机课程设计报告模板

课程设计成果说明书题目:低频信号发生器学生姓名:蔡超学号: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.花型种类不少于四种,花型自拟;2.可用键控制彩灯按预设的花型进行变换;3.可用键控制分别用快/慢两种节拍实现花型变换。
本机地址为00H,当接到上位机发的00H时,则回发00H当接到上位机发的AAH时,则将预设花型代号发出当收到55H时,则后面的数据为新的花型三、设计整体思路:彩灯控制器可分为彩灯部分、单片机、脉冲震荡部分、复位电路、按键等。
所使用的单片机型号为80C51,80C51提供了32位I/O接口、2个16位定时器/计数器、1个全双工串行口和5个中断源来供用户使用。
同时设置了脉冲电路,为系统提供稳定频率波,也使各单片机之间的时钟信号能够同步。
复位电路所提供的复位功能是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H 单元开始执行程序。
同时,复位操作也使单片机内相应的寄存器复位到初始值。
按键是由P3.4、P3.5 两个I/O口连接,在无按键按下时,P3.4、P3.5均为高电平,当有按键按下,相应的口为低电平。
四、原理图:五、程序模块(流程图):主流程图:花型1流程图:开始中断初始化选择快慢节拍花型循环变换结束花型二流程图:花型三流程图:花型四流程图:六、心得体会:在这次单片机课程设计中遇到了很多的难题,因为以前没有接触过C语言的单片机,但是在老师和同学的帮助下,以及自己通过查找一些资料,顺利的解决了遇到的问题,完成了老师布置的要求。
通过本次课程设计也时我对单片机的一些有关的知识有了更进一步的了解,单片机是一门实践性很强的课程,它必须和其它的芯片一起才能最大可能的发挥出它的各种各样的功能。
所以就需要我们的知识面要广,这样在设计过程中才能有效的解决问题。
由于我们所用的是C语言编程,所以会遇到一些问题,但通过不断的查找资料和尝试最终还是解决了问题。
本次课程设计也锻炼了我们的实践能力,通过编写程序,我们能够把所学的知识很好地应用到实际中去,从而学以致用,能够设计一些生活中很小的系统。
单片机课程设计报告范文完美版

单片机课程设计报告范文完美版基于单片机的步进电机控制器设计江南大学课程名称:设计题目:班级:姓名:指导教师:物联网工程学院课程设计报告单片机原理及应用基于单片机的步进电机控制器设计号:评分:2022年6月30日基于单片机的步进电机控制器设计目录设计报告要求1、设计目的2、设计要求3、仪器设备4、硬件线路图及主要芯片说明5、系统工作原理6、程序框图7、程序清单8、设计体会9、参考文献基于单片机的步进电机控制器设计设计目的通过具体小型测试系统设计,实践单片机系统设计及调试的全过程,以加深对单片机内部结构、功能和指令系统的理解,并进一步学习单片机开发系统的应用及一些外围芯片的接口和编程方法,初步掌握单片机系统的硬、软件设计技术及调试技巧。
设计要求1)电机转速可以平稳控制2)通过键盘和显示器可以设置电机的转速3)显示电机的速度趋势仪器设备1、STC89C51单片机芯片一片2、ULN2003驱动芯片一片3、MT03641BR八位共阳数码管芯片一片4、8550PNP四个5、不同阻值电阻若干6、30pF电容两个7、12M晶振一个8、按键四个9、28BYJ-48电机一个10、+5V电源一个硬件线路图及主要芯片说明28BYJ-48四相八拍步进电机步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的主要技术参数相数:四相电压:5VDC电流:92mA电阻:130Ω步距角:5.625°空载牵出频率:800pp基于单片机的步进电机控制器设计空载牵入频率:500pp减速比:1/64牵入转矩:≥78.4mN.mULN2003ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
单片机课程设计报告范例

单片机课程设计示例交通灯控制系统设计一、总体设计1、设计要求:交通灯的任务要求为:模拟十字路口的交通灯的亮、灭及闪烁基本工作原理:根据交通灯的亮灭情况,可以分为四种状态,利用定时计数器每20秒产生一次中断,每产生一次中断后由是否有特殊情况决定交通灯的状态变换。
2、硬件和软件功能的划分本课题要求实现的功能比较简单。
由单片机的定时/计数器产生八分之一秒的定时时间,通过软件的方式实现20秒的定时时间。
交通灯的亮灭由8255A控制,PA口控制东西向,PB口控制南北向。
3、交通灯状态划分十字路口交通灯如下图所示,将12个交通灯进行编号这12个交通灯共有四个状态:状态1(S1):东西红灯(4、10)亮,南北绿灯(3、9)亮状态2(S2):南北绿灯(3、9)灭,黄灯(2、8)闪烁,东西仍为红灯(4、10)亮状态3(S3):南北红灯(1、7)亮,东西绿灯(6、12)亮状态4(S4):东西绿灯(6、12)灭,黄灯(5、11)闪烁,南北仍为红灯(1、7)亮当东西向(或南北向)有特殊情况,开关K0为低电平则应使交通灯处于S3(东西绿灯、南北),开关K1为低电平则应使交通灯处于S1(南北向绿灯、东西向红灯),当K0、K1均为低电平则取消特殊情况,返回正常显示情况。
二、硬件设计根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。
1、系统扩展最小系统,由8031、地址锁存器和程序存储器组成。
根据课题要求,在此基础上进行扩展。
地址锁存器选74LS373,程序程序器选2764(8K),尽管本系统程序不长,但考虑以后扩展方便,选用2764。
考虑到交通灯数量比较多,控制信号比较多,对单片机的I/O口进行扩展,使用通用I/O接口芯片8255A来对单片机I/O口进行扩展。
2、功能接口所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。
本课题只要求显示接口。
显示设备为2位七段数码管。
要使用七段数码管可以利用8031的串行口、可以利用可编程并行I/O扩展芯片8155或8255。
单片机设计报告 模板

单片机原理及系统课程设计专业:电气工程及自动化班级:气1403姓名: 王攀学号:201408901指导教师:苟军年兰州交通大学自动化与电气工程学院2016年12月31日基于单片机的多路数据采集系统1 引言经过这次课程设计进一步的去培养学生的工程设计能力和工程设计思想,同样把书本的知识应用到实际当中去,考察了学生的实际操作能力和理论知识与实际应用相结合的能力。
1.1 设计目的数据采集系统用于将模拟信号转换为计算机可以识别的数字信号。
该系统目的是便于对某些物理量进行监视。
数据采集系统的好坏取决于他的精度和速度。
设计时,应在保证精度的情况下尽可能的提高速度以满足实时采样、实时处理、实时控制的要求。
在科学研究中应用该系统可以获得大量动态物理量,是研究瞬间物理过程的重要手段,亦是获取科学奥秘的重要手段之一。
本文采用的方法设计,用到的集成芯片主要有89C51单片机、ADC0808等。
ADC0808主要作用是对八路模拟信号进行选择采集,并将其转化为八位数字信号,再送至主控制器(89C51单片机)输出显示。
2 设计方案及原理2.1 系统设计方案利用MCS-51系列单片机设计简易数字电压表测量0~5v的8路输入电压值,并在四位数码管上轮流显示或单路选择显示。
测量误差约为±0.05V。
系统设计方框图如图1所示。
2.2 设计原理通过调节可变电阻实现0-5V的电压输出作为8路输入信号使用,每路信号用2位LED显示采集的结果。
报警:任意一路超过某一门限(自己设定)是,发出报警(声音+灯闪烁,并通过灯指示是哪一路报警),同时停止采集。
3.1电路原理图P3.0为开始抢答,P3.1为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。
P3.4为时间加1调整,P3.5时间减1调整,P3.2抢答时间调整键,P3.3答题时间调整键,如图1。
图1系统原理总框图3.2硬件电路板焊接该抢答器系统由按键模块、非法抢答模块、正确抢答模块、调整抢答时间模块、调整回答时间模块和数码显示等六个模块构成,现将主要的元器件罗列如下。
单片机课程设计报告排版

单片机课程设计报告排版一、教学目标本课程旨在让学生掌握单片机的基本原理、编程方法和应用技巧。
通过本课程的学习,学生将能够:1.理解单片机的基本结构和工作原理;2.掌握单片机的编程语言和编程方法;3.学会使用单片机进行简单应用的开发;4.培养动手实践能力和团队协作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.单片机的基本原理:包括单片机的结构、工作原理和性能特点;2.单片机编程:包括编程语言、编程方法和编程技巧;3.单片机应用:包括常见应用案例分析和实践操作。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学,包括:1.讲授法:用于讲解单片机的基本原理和编程方法;2.案例分析法:通过分析典型应用案例,使学生更好地理解单片机的应用;3.实验法:通过动手实践,让学生熟练掌握单片机的编程和应用技巧。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料;2.参考书:提供相关领域的参考书籍,丰富学生的知识体系;3.多媒体资料:制作精美的PPT和教学视频,提高学生的学习兴趣;4.实验设备:提供充足的实验设备,保证学生动手实践的机会。
五、教学评估本课程的评估方式将采用多元化、全过程的评价体系,以确保评估的客观性和公正性。
评估主要包括以下几个方面:1.平时表现:包括课堂参与度、提问回答、团队协作等,占总评的30%;2.作业:包括课后练习和实验报告,占总评的20%;3.考试成绩:包括期中和期末考试,占总评的50%。
六、教学安排本课程的教学安排将根据课程内容和学生的实际情况进行合理规划。
教学进度将保持紧凑,确保在有限的时间内完成教学任务。
具体安排如下:1.上课时间:每周一到周五,每天2课时;2.上课地点:实验室和理论教室;3.教学进度:按照教材和教学大纲进行安排,确保每个章节都有足够的学时进行讲解和实践;4.实践活动:每个章节结束后,安排一次实验实践,让学生动手操作,巩固理论知识。
单片机课程设计实习报告(共6篇)

单片机课程设计实习报告(共6篇)ok3w_ads(“s004”);ok3w_ads(“s005”);精选范文:单片机课程设计实习报告(共6篇)实训任务:一、实训目的和要求:(1)熟练掌握keil c51集成开发环境的使用方法(2)熟悉keil c51集成开发环境调试功能的使用和dp?单片机仿真器、编程器、实验仪三合一综合开发平台的使用。
(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。
(4)了解掌握单片机芯片的烧写方法与步骤。
(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。
(6)掌握利用protel 99 se绘制电路原理图及pcb图。
(7)了解pcb板的制作腐蚀过程。
二、实训器材:pc机(一台)pcb板(一块)520ω电阻(八只)10k电阻(一只)led发光二极管(八只)25v 10μf电容(一只)单片机ic座(一块)at89c51单片机芯片(一块)热转印机(一台)dp?单片机仿真器、编程器、实验仪三合一综合开发平台(一台)三、实训步骤:(2)将流水灯程序编写完整并使用tkstudy ice调试运行。
(4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求。
(6)制板。
首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb 板上布线图外的铜全部后,将其取出,清洗干净。
(7)焊接。
将所给元器件根据原理图一一焊至pcb板相应位置。
(8)调试。
先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。
(流水灯控制器原理图)四、流水灯控制器程序的主程序:org 0000hsjmp startorg 0030hstart: mov a,#0ffhmov r0,#1chmov r2,#12hclr cloop1: acall delaydjnz r0,loop2sjmp loop4loop2: mov p1,arlc ajnc loop3sjmp loop1loop3: acall delaymov p1,arrc ajnc loop1sjmp loop3loop4: acall delaydjnz r1,loop5sjmp loop6loop5: mov p1,arrc a[单片机课程设计实习报告(共6篇)]篇一:单片机实习报告课程设计专业综合实习总结专业班级:学生学号:学生姓名:指导教师:实习时间:机电工程学院目录1.实习目的和意义 21.1实习目的 (2)1.2实习意义 (2)2.实习内容 2 3. 硬件介绍 23.1 总原理图 (3)3.2 LED显示模块............................................................... 6 3.3 数码管显示模块............................................................ 7 3.4 键盘模块 (9)3.5 A/D转换模块............................................................... 10 3.6 D/A转换模块 (13)3.7 中断嵌套模块 (14)3.8 时钟日历芯片模块 (15)4. 程序流程图 174.1 LED显示模块……………………………………………………… 17 4.2 数码管显示模块…………………………………………………… 19 4.3 键盘模块……………………………………………………………21 4.4 A/D转换模块.................................................................. 23 4.5 D/A转换模块 (23)4.6 中断嵌套模块 (24)4.7 时钟日历芯片模块 (24)5. 实习心得体会………………………………………………… 26 附录:程序清单……………………………………………………271、实习目的和意义1.1 实习目的1、熟悉本专业自己设计的“单片机课程实习”电路板,领会、掌握该电路板的设计原理及硬件布局。
单片机课程设计报告

单片机课程设计报告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 实施步骤三:系统实现在系统设计完成后,我开始进行系统实现。
单片机课程设计报告模板

单片机课程设计报告
设计题目:电子时钟的设计
姓名: * * *
学号: * * * * * *
班级: * * * * * *
专业: * * * * * *
日期: * * * * * *
一.系统设计的功能
说明本设计完成的功能,功能分1、2、3、4….,功能说明要清晰,为说明清晰,可以举例。
二.硬件总体设计方案
1.系统设计的原理框图
对用Protus软件设计的,系统的原理结构进行说明,系统由单片机、键盘、LED灯、闹铃等模块构成,完成什么功能。
2.各部分的功能实现
提供Protus原理图,对各个模块进行说明(型号、灯几个、键盘几个等,它实现的功能等的说明),说明可长可短,根据自己项目的特点和个人的理解来完成。
三.软件总体设计方案
1.软件的总体框架
通过流程图等形式说明软件的设计框架,总共多少个函数,互相间的关系,每个函数实现的功能。
2.代码副本
复制代码即可。
说明:报告的正文的字号为小四,代码部分字号为五号字,这部分要左右对齐,以整洁为要。
四.课程设计的测试验证
验证1:
验证2:
针对本设计的每个功能,提供在单片机上测试时的照片图片,说明如何在单片机上进行测试,能正确完成。
要做到有图有说明。
五.总结
随意写,可长可短。
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语言的学习和掌握。
单片机课程设计报告模板

单片机课程设计报告模板单片机课程设计报告一、设计目的本次单片机课程设计旨在培养我们对单片机的基本认知和应用能力,通过对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编程实现了与单片机的通讯。
单片机课程设计报告参考模板

注意:以下单片机课程设计报告格式是结合老师发来的报告要求制作的,其中正文“程序存储器和数据存储器的单元分配”没有,由于大部分同学的程序都是使用C语言编写的,单元分配可能无法知道。
本人报告中不具有这部分内容。
本版本报告给是仅供参考!仅供参考!
惠州学院
课程设计
课程:
题目:
学生系别:
学生专业:
学生班级:
学生姓名:
学生学号:
指导教师:
2013年11月25日
惠州学院课程设计任务书
摘要
目录1.设计方案
1.1设计思想
1.2设计说明
2.硬件部分
2.1原理框图
2.2 STC89C52单片机
2.3四位LED共阴数码管
2.4按键电路
2.4.1复位电路
2.4.2电源电路
2.4.3晶振电路
2.4.4调整电路
2.5 74LS373锁存器
3.软件部分
3.1程序流程图
3.1.1主程序流程图
3.1.2子程序流程图
3.2程序清单
4.调试
4.1整合过程
4.2问题与解决方法
4.3实物效果图
5.总结
6.参考文献
7.附录。
单片机技术及应用课程设计报告

课程设计报告第一部分:概述1.1 课程设计的背景和意义单片机技术在现代工业生产和科研中起着举足轻重的作用,因此对单片机技术的理论和应用知识的学习显得尤为重要。
本课程设计的目的在于通过理论与实践相结合的方式,使学生能够全面掌握单片机技术的基本原理和应用方法,为将来的工作和研究打下坚实的基础。
1.2 课程设计的目标和要求本课程设计旨在培养学生对单片机技术的全面理解和应用能力,具体要求包括:- 掌握单片机的基本原理和结构- 熟练掌握单片机的编程语言和开发工具- 能够设计并实现简单的单片机应用系统- 具备一定的单片机故障排除和维护能力第二部分:课程内容2.1 单片机基础知识- 单片机的定义和分类- 单片机的基本结构和工作原理- 单片机的发展历程及应用领域2.2 单片机编程语言- C语言在单片机编程中的应用- 汇编语言在单片机编程中的应用- 单片机常用编程语言对比与选择2.3 单片机开发工具- 单片机编程与仿真工具的选用- 常用单片机开发板介绍与使用- 单片机调试工具的应用2.4 单片机应用系统设计- 单片机控制原理- 单片机在自动控制领域的应用案例- 单片机在智能监控领域的应用案例2.5 单片机故障排除与维护- 单片机常见故障及解决方法- 单片机维护的注意事项- 单片机相关知识的拓展与学习第三部分:课程设计方法3.1 教学内容的设置本课程设计旨在通过理论教学和实践操作相结合的形式展开教学,具体内容包括课堂讲解、实验演示、课程设计等多种形式。
3.2 教学方法的选择- 教师为主导,学生为主体的教学方式- 实验操作和项目设计为主要形式- 多媒体教学与互动授课相结合3.3 课程评估方式本课程将通过平时表现、实验报告、课程设计报告和期末考核等方式对学生的学习情况进行全面评估。
第四部分:课程设计实施4.1 教学内容详细安排- 第1-2周:单片机基础知识- 第3-4周:单片机编程语言- 第5-6周:单片机开发工具- 第7-8周:单片机应用系统设计- 第9-10周:单片机故障排除与维护4.2 实验教学实施方案- 设置不同难度的实验内容- 强调实验操作的规范性和实用性- 配备实验教学相关设备和工具4.3 课程设计作业安排- 各阶段的课程设计报告要求- 课程设计报告的提交时间和形式- 课程设计报告的评分标准第五部分:课程总结和展望5.1 课程总结通过本次课程设计,学生对单片机技术的基本理论和应用能力得到了显著提升,实践操作能力也得到了锻炼和提高。
单片机课程设计报告

单片机课程设计 报告一、课程目标知识目标:1. 学生能理解单片机的基本概念,掌握其工作原理及结构组成。
2. 学生能掌握单片机编程的基本语法,如指令系统、寄存器等。
3. 学生能了解并运用单片机在现实生活中的应用,如智能家居、机器人控制等。
技能目标:1. 学生具备使用开发板进行单片机程序编写、调试的能力。
2. 学生能通过小组合作,设计并实现简单的单片机控制系统,培养动手实践能力。
3. 学生能运用所学知识解决实际问题,具备一定的创新能力和问题解决能力。
情感态度价值观目标:1. 学生通过单片机课程学习,培养对电子技术的兴趣和热情,增强学习动力。
2. 学生在学习过程中,养成团队协作、沟通交流的良好习惯,增强集体荣誉感。
3. 学生了解单片机在我国科技发展中的重要性,培养国家使命感和社会责任感。
课程性质分析:本课程为单片机课程设计,旨在让学生通过实践操作,掌握单片机的基本原理和编程技术,提高解决实际问题的能力。
学生特点分析:本年级学生具备一定的电子技术基础知识,对单片机有一定了解,但编程能力和实践操作经验有限。
教学要求:1. 注重理论与实践相结合,强化学生的动手实践能力。
2. 采用项目驱动教学法,引导学生主动探究、解决问题。
3. 培养学生的团队协作能力,提高沟通表达水平。
4. 结合生活实际,激发学生学习兴趣,培养创新思维。
二、教学内容根据课程目标,本章节教学内容分为以下三个部分:1. 单片机基础理论- 理解单片机的概念、发展历程及应用领域。
- 掌握单片机的硬件结构、工作原理及性能指标。
- 学习单片机的指令系统、寄存器、I/O口编程等基本知识。
教学内容对应教材章节:第一章 单片机概述、第二章 单片机硬件结构及工作原理。
2. 单片机编程与调试- 学习单片机编程语言(如C语言、汇编语言)及开发环境。
- 掌握单片机程序编写、调试方法,了解程序下载、运行过程。
- 学习中断、定时器、串行通信等单片机功能模块的使用。
教学内容对应教材章节:第三章 单片机编程语言、第四章 单片机编程与调试。
《单片机课程设计》报告格式

封面格式如下:《单片机原理及应用课程设计》报告——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) 自定任意时刻自动开/关屏。
单片机课程设计实验报告

单片机课程设计实验报告一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握其内部结构及工作流程。
2. 使学生掌握单片机编程的基本语法和编程技巧,能独立完成简单的程序编写。
3. 帮助学生了解单片机在现实生活中的应用,提高对新技术、新领域的认识。
技能目标:1. 培养学生运用单片机进行实验设计和实践操作的能力。
2. 培养学生分析问题、解决问题的能力,提高创新思维和动手实践能力。
3. 提高学生的团队协作和沟通能力,学会在实验过程中相互交流、共同进步。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养主动学习的习惯。
2. 培养学生严谨、细致的实验态度,养成良好的实验操作习惯。
3. 增强学生的自信心和责任感,使他们认识到学习单片机对国家科技发展的意义。
课程性质分析:本课程为单片机课程设计实验,侧重于实践操作和实际应用。
课程要求学生具备一定的电子技术基础和编程能力,通过实验深入了解单片机的工作原理和应用领域。
学生特点分析:本课程面向高年级学生,他们在之前的学习中已掌握了基本的电子技术和编程知识,具备一定的自学能力和动手实践能力。
但学生在单片机应用方面的实践经验不足,需要通过本课程加强实践锻炼。
教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力。
2. 注重启发式教学,引导学生主动思考、探索,培养学生的创新精神和实践能力。
3. 关注学生的个体差异,给予个别辅导,确保每位学生都能达到课程目标。
二、教学内容1. 单片机基础知识:- 单片机原理与结构- 单片机内部资源及功能- 单片机编程语言(汇编语言、C语言)2. 单片机编程与实验:- 基本输入输出编程- 定时器、中断编程- 模数转换、串行通信编程3. 单片机应用案例:- 实例分析:温度控制器、智能小车等- 创新设计:学生自主选题,设计单片机应用项目4. 实验操作与调试:- 实验步骤与方法- 常用工具与仪器的使用- 故障分析与调试技巧教学大纲安排:第一周:单片机基础知识学习,包括原理、结构、编程语言等第二周:基本输入输出编程,实验一:LED灯控制第三周:定时器、中断编程,实验二:简易电子时钟第四周:模数转换、串行通信编程,实验三:温度传感器数据采集第五周:单片机应用案例分析,学生自主选题,设计单片机应用项目第六周:实验操作与调试,完成设计项目,撰写实验报告教材章节关联:教学内容与教材《单片机原理与应用》相关章节紧密关联,具体包括:- 第一章:单片机概述- 第二章:单片机的结构与原理- 第三章:单片机编程语言- 第四章:单片机内部资源及应用- 第五章:单片机实验与调试教学内容确保科学性和系统性,以培养学生的实际操作能力为目标,注重理论与实践相结合,提高学生的创新能力和实践技能。
单片机课程设计报告[5篇]
![单片机课程设计报告[5篇]](https://img.taocdn.com/s3/m/92b7e9f1c0c708a1284ac850ad02de80d4d806a6.png)
单片机课程设计报告[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);}实验心得体会:通过本次实验,让我对单片机实验有了更深的了解,认为这个实验还是比较容易的,没有花太多的时间。
课程设计报告(单片机)

电子与信息工程学院课程设计报告(2010—2011学年第2 学期)课程名称: 单片机课程设计班级: 电子0802学号:姓名:指导教师:2011年03月三、过程1.交通灯1.1 功能概述(1)、复位后系统进入工作状态,若不设置红绿灯的时间,直接按确定键,则系统进入红灯30s,绿灯25s的工作模式。
(2)、复位后系统进入工作状态,若要设置红绿灯的时间,按设置键进入设置模式,此模式下通过按键可分别对红灯、绿灯的时间进行设置,因为资源的原因,只添加了加值的方式,设置完成后按确认键进入交通灯的正常工作模式。
1.2 硬件电路概述1.2.1 电源电路图1 电源电路电源电路输入为12V的直流电,输出为5V的直流电,用到芯片LM2576。
LM2576系列开关稳压集成电路是线性三端稳压器件的替代品,它具有可靠的工作性能、较高的工作效率和较强的输出电流驱动能力,从而为MCU的稳定、可靠工作提供了强有力的保证。
LM2576系列是3A电流输出降压开关型集成稳压电路,它内含固定频率振荡器(52kHz)和基准稳压器(1.23V),并具有完善的保护电路,包括电流限制及热关断电路等,利用该器件只需极少的外围器件便可构成高效稳压电路。
1.2.2 51单片机概述单片机是集成在一个芯片上的计算机,结构比较复杂,基本部分组成有:中央处理器CPU、内部数据存储器、内部程序存储器、定时器/计数器、并行I/O口、串行口、中断控制电路、时钟电路、位处理器、内部总线。
设计采用的SST89E58RD:是8位FLASH FLEX51系列单片机,有40K片内FLASH EEPROM程序存储器,存储器被分为两个独立的程序存储器块,基本FLASH Block0占用32K字节片内程序存储空间,二级FLASH Block1占用8K字节的片内程序存储器空间;8K字节的二级FLASH块能被映射到32K字节低地址空间它也能从程序计数器中被隐藏掉而用做一个独立的类似EEPROM的数据存储器;工作电压Vdd=4.5~5.5;1K*8的内部RAM。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南科技大学课程设计报告课程名称__ 单片机系统设计_题目名称_ 智能门禁系统设计学生学院 ___ 信息工程学院_____专业班级 ___ 自动化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、何立民. 单片机高级教程.总结设计过程,编写课程设计报告书。
四主要参考文献第1版.北京:北京航空航天大学出版社,20012、徐爱钧KEIL Cx V7.0单片机高级语言编程与uVision2应用实践,北京,电子工业出版社,20043、李全利、仲伟峰、徐军,单片机原理及应用,北京:清华大学出版社,2006五、设计分组及选题安排自动化134班所有学生及自动化133班部分学生。
指导教师签字:2015年05月5日单片机系统设计报告一、设计项目简介随着现代化经济建设和管理的发展,各种酒店、宾馆、写字楼、智能大厦、政府机关和企事业单位、高级物业管理部门等,对门禁系统的需求正发生着重大的变化,其核心是对门锁及其开启、关闭实现智能化管理。
最近几年随着感应卡技术,生物识别技术的发展,门禁系统得到了飞跃式的发展,进入了成熟期,出现了感应卡式门禁系统,指纹门禁系统,虹膜门禁系统,面部识别门禁系统,乱序键盘门禁系统等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长。
在现今社会,随着人们对门禁系统各方面要求的不断提高,门禁系统的应用范围越来越广泛,因此门禁系统的研发已成为现代科技领域的一个热门课题。
通过本论文的研究,我不仅了解门禁系统的相关知识,还掌握了AT89S52系列单片机的性能特点及连接使用,编程方法,以及一些外围芯片的使用及模拟电路的设计。
1.2 门禁系统的现状和发展趋势电子门锁是近几年随着电子计算机技术的提高发展起来的,随之而产生的接触式智能IC卡和密码键盘门禁系统也越来越被人们重视和使用。
它改变了以往如闭路监控、防盗报警等安防产品被动的安防模式,以主动控制替代了被动监视。
从而便构成一个现代化的门禁系统。
在安全技术防范领域,具有防盗报警功能的电子密码锁为主的门禁系统逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品发展趋势的主流。
1.3 论文主要设计内容本设计的目的是利用单片机对门禁系统进行控制。
本设计所采用的控制芯片为AT89S52单片机,此芯片功能强大,能够满足设计要求。
通过对电路的设计,对芯片的外围扩展,使得单片机作为控制器核心,对门禁系统的工作过程进行控制,并用声音将门禁系统的一些工作过程进行提示,使控制过程更人性化。
智能门禁系统设计主要功能是用单片机实现通过矩阵键盘输入密码,密码正确开门,并lcd上显示“欢迎光临”,密码错误lcd上提示“密码错误请重新输入”,三次输入错误报警。
二、总体设计2.1、CPU的选择我们在这个课题的设计上采用了AT89S52单片机系统,之所以采用单片机系统是由于成本较低,功能完全可以满足,发展也比较成熟且完善。
而DSP、ARM 系统虽然科技含量高于51单片机系统,但是其价格昂贵并且发展尚未成熟。
因此,根据我们学的知识和市面上的应用,经过比较我们选择了技术成熟、价格便宜、设计简单、使用方便的单片机平台。
2.2、系统总体设计方案门禁系统主要组成框图如2-2所示:门禁系统主要组成:由CPU、复位电路、振荡电路、蜂鸣器电路、门控锁电路、出门按钮、A/D转换模块模块、感应模块、显示模块等组成。
门禁系统的工作原理:智能门禁系统设计主要功能是用单片机实现通过矩阵键盘输入密码,密码正确开门,并lcd上显示“欢迎光临”,密码错误lcd上提示“密码错误请重新输入”,三次输入错误报警。
三、硬件设计3.1 时钟电路时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。
单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
在AT89S52单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。
在AT89S52芯片内部有一个高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。
AT89S52的时钟电路如图3-1所示:用晶振和电容构成谐振电路。
电容C1、C2容量在15~40pf之间,大小与晶振频率和工作电压有关。
但电容的大小影响振荡器的稳定性和起振的快速性,为了提高精度,本实验板采用30pf的电容作为微调电容。
在设计电路板时,晶振、电容等均应尽可能靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。
3.2 复位电路复位是单片机的初始化操作,其主要功能是使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化以外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境也需按复位键以重新启动。
AT89S52芯片内部有复位电路,RST引脚是复位信号的输入端高电平有效,复位方式有自动复位和手动复位两种。
本单片机系统采用手动复位方式复位。
AT89S52的复位电路如图3-2所示:3.3 蜂鸣器报警电路电路组成如图3-4:以Q6的基级作为蜂鸣器控制信号的输入端与P2.6口相连,主要由蜂鸣器、三极管9012以及10K的偏置电阻组成。
工作原理:当P2.6输出高电平时,Q6截止,蜂鸣器电路断开,蜂鸣器不发出声响。
当P2.6输出低电平时,Q6导通,蜂鸣器电路闭合,蜂鸣器发出声响。
若蜂鸣器发出声响表示密码输入错误。
3.4 显示模块数码管的八段显示通过200Ω的电阻外接单片机的P0口,用四个9015的三极管的基极作为控制数码管位显的输入端与P2.0到P2.3相连。
主要由四位共阳数码管、四个9015的三极管以及200Ω的电阻组成。
工作原理:由P0口控制数码管显示数。
由P2口的高低电平控制数码管位显,当P2口输出低电平时三极管导通,这时位为高电平即选中显示。
3.5 输入模块为了减少按键与单片机接口时所占用的I/O线的数目,本设计采用矩阵键盘。
在按键比较多的时候,通常采用这样方法。
其原理如图3-8:每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种矩阵结构只需要N条行线和N条列线,即可组成具有N×N个按键的键盘。
在这种矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
逐行扫描查询法工作原理:1、判断键盘中有无键按下:将全部行线置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
四、软件设计软件设计分为5个模块,LCD显示屏模块,按键模块,密码模块,延时子程序模块,比较子程序模块。
按键模块主要负责键入用户名,还有密码,密码模块就是可以设置密码的地方,通过比较模块的对比,判别用户名与密码是否一致,一致则在显示屏上显示“OPEN”,如果用户名与密码不一致则显示“ERROR”。
如果连输入三次错误密码则延时程序将把门禁系统在30秒内无法再次输入。
五、程序清单主函数#include "reg52.h"#include "lcd12864.h"#include "zi.h"#include "key.h"#include "mj.h"int main(){init_lcd(); //12864显示屏初始化pp1:Clr_Scr();Show_Logo();while(1){user_load();goto pp1;}}门禁运行程序#include <reg52.h>#include <string.h>#include "key.h"#include "lcd12864.h"#include "zi.h"#include "mj.h"uchar mj_user[] = "1906";uchar mj_mima[] = "123456";static void delay(unsigned int t) // 延时函数{for(;t!=0;t--);}/*********************************************************** * 函数名称:void user_load(void)* 函数功能:用户登录* 入口参数:无* 出口参数:无返回***********************************************************/ void show_inputnum(uchar *disbuffer,uchar lenth){uchar Get_Key;uchar Counter = 0;uchar i = 0;while(1){Get_Key = get_key();if(Get_Key != 0xff){if(Get_Key == 'C') //后退键{if(Counter > 0){Counter--;disbuffer[Counter] = ' '; //修改输入的数}}else if(Get_Key == 'E') //确认键{break;}else{//放入缓冲区if(Counter < lenth)disbuffer[Counter++]=Get_Key; //保存按键值}for(i=0;i<lenth;i++){if(disbuffer[i] == ' ')disp8_16(6,40+8*i,&zf[(10)*16]);elsedisp8_16(6,40+8*i,&zf[(disbuffer[i]-'0')*16]);}}}}void Show_Logo(void)//显示主页面LOGE{uchar i;CS1 = 1;CS2 = 0;for(i=0;i<5;i++){fh_disp_x_y(16,16,3,20+i*16,i,hz);//郑州信盈达}}void user_load(void){uchar user_buffer[5] = " ";uchar password[7] = " ";uchar i = 0;//输入用户for(i=0;i<2;i++){disp16_16(6,0+16*i,&hz_user[i*32]);}disp8_16(6,33,&zf[11*16]);show_inputnum(user_buffer,4);clear_buffer();//输入密码for(i=0;i<2;i++){disp16_16(6,0+16*i,&hz_mima[i*32]);}disp8_16(6,33,&zf[11*16]);show_inputnum(password,6);clear_buffer();//比较用户名和密码if((strcmp(user_buffer,mj_user) == 0) && (strcmp(password,mj_mima) == 0)){Clr_Scr();for(i=0;i<4;i++)disp8_16(1,48+i*8,&zf_open[i*16]);}else{Clr_Scr();for(i=0;i<5;i++)disp8_16(1,48+i*8,&zf_error[i*16]);}delay(60000);delay(60000);}void clear_buffer(void){uchar i =0;for(i=0;i<6;i++){disp8_16(6,40+8*i,&zf[(10)*16]);}}密码模块函数#include <reg52.h>#include "lcd12864.h"sbit Y0=P1^4; //y轴sbit Y1=P1^5;sbit Y2=P1^6;sbit Y3=P1^7;//-----------------------------------------------------static void delay(unsigned int t) // 延时函数{for(;t!=0;t--);}//------------------------------------------------------//================================================== unsigned char Key_Scan(void) //获得按键值{uchar a, key;P1=0xf0;if(!(Y0&&Y1&&Y2&&Y3)){delay(200);P1=0xf0;if(!(Y0&&Y1&&Y2&&Y3)){P1=0xfe; // 0xff;if(!(Y0&&Y1&&Y2&&Y3)){a=P1;goto pp1;}P1=0xfd;if(!(Y0&&Y1&&Y2&&Y3)){a=P1;goto pp1;}P1=0xfb;if(!(Y0&&Y1&&Y2&&Y3)){a=P1;goto pp1;}P1=0xf7;if(!(Y0&&Y1&&Y2&&Y3)){a=P1;goto pp1;}}else a=0xff;}else a=0xff;pp1: key=a;return key;}//-----------------------------------------------------------uchar get_key(void) //获得按键编码值{uchar k, KEY;KEY=0xff;k=Key_Scan();if(k!=0xff){while(k==Key_Scan()); //松手检测switch(k) // 键码{case 0x7e: KEY='3';break; // 3case 0x7d: KEY='7';break; // 7case 0x7b: KEY='B';break; // Bcase 0x77: KEY='F';break; // Fcase 0xbe: KEY='2';break; // 2case 0xbd: KEY='6';break; // 6case 0xbb: KEY='A';break; // Acase 0xb7: KEY='E';break; // Ecase 0xde: KEY='1';break; // 1case 0xdd: KEY='5';break; // 5case 0xdb: KEY='9';break; // 9case 0xd7: KEY='D';break; // Dcase 0xee: KEY='0';break; // 0case 0xed: KEY='4';break; // 4case 0xeb: KEY='8';break; // 8case 0xe7: KEY='C';break; // Cdefault: KEY=0xff;break; // 无键按下}}return KEY;}12864显示屏模块程序#include <reg52.h>#include <lcd12864.h>#define uchar unsigned char#define uint unsigned int/*Define the register command code*/#define Disp_On 0x3f //打开显示#define Disp_Off 0x3e //关闭显示#define Col_Add 0x40 //y轴那一列#define Page_Add 0xb8 //总计8行#define Start_Line 0xc0 //那一行#define Lcd_Bus P0 //MCUP0<------>LCM/*****************************************************函数功能:延时函数**参数:unsigned int t代表要延时的时间******************************************************/ static void delay(uint t){for(;t>0;t--);}/*****************************************************函数功能:往112864中写操作指令**参数:unsigned char cmdcode代表要显示的8位数据* *****************************************************/ void write_com(uchar cmdcode){RS=0;RW=0;Lcd_Bus=cmdcode;delay(1);E=1;delay(2);E=0;}/*****************************************************函数功能:往112864中写显示指令**参数:unsigned char cmdcode代表要显示的8位数据* *****************************************************/ void write_data(uchar Dispdata){RS=1;RW=0;Lcd_Bus=Dispdata;delay(1);E=1;delay(2);E=0;}/****************************************************函数功能:将112864初始化**参数:****************************************************/ void init_lcd(){delay(100);CS1=1;CS2=1;delay(100);write_com(Disp_Off);write_com(Page_Add+0);write_com(Start_Line+0);write_com(Col_Add+0);write_com(Disp_On);Clr_Scr(); //ÇåÆÁdelay(1000);}/****************************************************函数功能:清屏**参数:** void Clr_Scr() *****************************************************/ void Clr_Scr()uchar j,k;CS1=1;CS2=1;write_com(Page_Add+0);write_com(Col_Add+0);for(k=0;k<8;k++){write_com(Page_Add+k);for(j=0;j<64;j++){write_data(0x00);}}}/*************************************************** *函数功能:打印一个数组中包含多个16*16的字符* *参数:pag代表那页开始;col哪行开始;temp显示的数组* ***************************************************/ void disp16_16(uchar pag,uchar col,uchar temp[]){uchar j=0,i=0;for(j=0;j<2;j++){for(i=0;i<16;i++){if((col+i) < 64){CS1 = 1;CS2 = 0;}else{CS1 = 0;CS2 = 1;}write_com(Page_Add+pag+j);write_com(Col_Add+((col+i)%64));write_data(temp[16*j+i]);}}}/*************************************************** *函数功能:打印一个数组中包含多个8*16的字符 **参数:pag代表那页开始;col哪行开始;temp显示的数组* ***************************************************/ void disp8_16(uchar pag,uchar col,uchar temp[]){uchar j=0,i=0;for(j=0;j<2;j++){for(i=0;i<8;i++){if((col+i) < 64){CS1 = 1;CS2 = 0;}else{CS1 = 0;CS2 = 1;}write_com(Page_Add+pag+j);write_com(Col_Add+((col+i)%64));write_data(temp[8*j+i]);}}}//x显示宽度//y显示高度void disp_x_y(uchar x,uchar y,uchar page,uchar col,uchar temp[]) {uchar j=0,i=0;for(j=0;j<y/8;j++){for(i=0;i<x;i++){if((col+i)<64){CS1 = 1;CS2 = 0;}else{CS1 = 0;CS2 = 1;}write_com(Page_Add+page+j);write_com(Col_Add+((col+i)%64));write_data(temp[x*j+i]);}}}void fh_disp_x_y(uchar x,uchar y,uchar page,uchar col,uint ss,uchar temp[]){uchar j=0,i=0;ss = ss*x*y/8;for(j=0;j<y/8;j++){for(i=0;i<x;i++){if((col+i)<64){CS1 = 1;CS2 = 0;}else{CS1 = 0;CS2 = 1;}write_com(Page_Add+page+j);write_com(Col_Add+((col+i)%64));write_data(temp[x*j+i+ss]);}}}void fh_disp_x_y_black(uchar x,uchar y,uchar page,uchar col,uint ss,uchar temp[]){uchar j=0,i=0;ss = ss*x*y/8;for(j=0;j<y/8;j++){for(i=0;i<x;i++){if((col+i)<64){CS1 = 1;CS2 = 0;}else{CS1 = 0;CS2 = 1;}write_com(Page_Add+page+j);write_com(Col_Add+((col+i)%64));write_data(~temp[x*j+i+ss]);}}}六、收获及体会通过为期一周的课程设计,我学会了AT89S52单片机的基本结构以及如何使用I/O接口,如何利用Keil 4编写程序,编译程序。