单片机课程设计51实验报告DOC
(完整word版)51单片机课程设计实验报告
![(完整word版)51单片机课程设计实验报告](https://img.taocdn.com/s3/m/5998773bcc175527072208a0.png)
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;(3)制作51单片机学习板;(4)学会使用Keil C软件下载调试程序;用调试程序将51单片机学习板调试成功。
二、总原理图及元器件清单1.总原理图2.元件清单三、模块电路分析1. 最小系统:单片机最小系统电路分为振荡电路和复位电路,振荡电路选用12MHz 高精度晶振, 振荡电容选用22p和30p 独石电容;图 1 图 2复位电路使用RC 电路,使用普通的电解电容与金属膜电阻即可;图 3当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST为低电平。
正常工作为低电平,高电平复位。
2. 显示模块:分析发光二极管显示电路:图 4发光二极管显示电路分析:它是半导体二极管的一种,可以把电能转化成光能,常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,产生自发辐射的荧光。
图中一共有五个发光二极管其中一个为电源指示灯,当学习板通电时会发光以指示状态。
其余四个为功能状态指示灯,实际作用与学习板有关分析数码管显示电路图 5数码管显示电路分析:数码管按段数分为七段数码管和八段数码管,图中所用为八段数码管(比七段管多了一个小数点显示位),按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管.共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
数码管主要用来显示经电路板处理后的程序的运行结果。
图中使用了八个八段数码管,可以显示八个0-15的数字。
使用数码管可以直观的得到程序运行所显示的结果.也可以显示预置在学习板上的程序,主要通过16个开关来控制。
【课程设计】51单片机课程设计报告(word档)
![【课程设计】51单片机课程设计报告(word档)](https://img.taocdn.com/s3/m/8b7a6ec5453610661fd9f441.png)
51单片机课程设计报告设计题目:专业班级学号学生姓名指导教师设计时间教师评分2012年6 月19 日目录1.概述 (2)1.1目的 (2)1.2课程设计的组成部分 (2)2.XXXX设计的内容及步骤 (2)2.1实验环境及其设备 (2)2.2实验原理图 (2)2.3主要芯片功能及其封装 2.4实验步骤 (3)2.4实验步骤 (8)2.4.1创建一个新项目 (8)2.4.2创建一个新的原理图图纸 (8)2.4.3将原理图图纸添加到项目中 (8)2.4.4绘制原理图 (8)2.4.5在原理图中放置元件 (8)2.4.6连接电路 (8)2.4.7网络与网络标签 (8)2.5设置项目选项 (9)2.6检查原理图的电气参数 (9)2.6.1设置错误报告 (9)2.7创建一个新的PCB 文件 (9)2.8将项目中的原理图信息发送到目标PCB (10)2.9布线 (10)2.10实验结论图 (11)3.总结 (11)3.1课程设计进行过程 (11)3.3体会收获及建议 (11)3.4参考资料(书、论文、网络资料) (12)4.教师评语 (12)5.成绩 (12)1.概述1.1目的1.熟悉Protel DXP的基本操作2.掌握用Protel DXP绘制原理图的基本方法3.掌握用Protel DXP整理PCB板的方法4.设计一个小型的单片机系统1.2课程设计的组成部分1.熟悉Protel DXP软件的基本操作及其基本功能;2.了解各个芯片的型号及其功能;3.在Protel DXP软件上绘制芯片图、芯片的封装及其布线;4.在Protel DXP软件上进行仿真测试;5.整理课程设计的实验报告。
2.XXXX设计的内容及步骤2.1实验环境及其设备Protel DXP软件、电脑一台2.2实验原理图2.3主要芯片功能及其封装1.74HC573封装:功能:做8位数据锁存器。
2.TR1402封装:功能:作为从控制器。
3.HEADER16封装:功能:作为接口插针。
单片机c语言程序设计---C51-交通灯实验报告
![单片机c语言程序设计---C51-交通灯实验报告](https://img.taocdn.com/s3/m/caca0e3ab6360b4c2e3f5727a5e9856a56122634.png)
单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。
路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。
②南面和北面,东面和西面都变成黄灯。
③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。
51单片机课程设计报告
![51单片机课程设计报告](https://img.taocdn.com/s3/m/1af3d17d4a35eefdc8d376eeaeaad1f34693112b.png)
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单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/45f8854a02d8ce2f0066f5335a8102d276a261eb.png)
51单片机实验报告
实验目的:
本实验旨在让学生熟悉并掌握51单片机的基本知识和编程能力,进一步了解单片机的原理和应用。
实验内容:
本次实验主要包括以下几个内容:
1.熟悉51单片机的基本原理和结构;
2.学习51单片机的汇编语言编程;
3.使用51单片机进行简单的I/O控制;
4.学习串口通信的原理和编码。
实验步骤:
1. 配置开发环境:安装Keil C编译器和Proteus电路仿真软件;
2.学习汇编语言编程基础知识,包括寄存器的使用、指令的执行等;
3.编写第一个程序:实现将一个数字显示在数码管上;
4.学习I/O控制:通过按键来控制LED灯的亮灭;
5.学习串口通信:通过串口与计算机进行通信,实现数据的发送与接收。
实验结果:
在实验过程中,我成功编写了几个基本的程序,并在Proteus中进行
了仿真。
通过按键来控制LED灯的亮灭,也成功地使用串口进行了数据的
发送和接收。
通过实验,我更深入地理解了51单片机的工作原理和编程
方法。
实验总结:
通过本次实验,我对51单片机有了更深的理解,并掌握了一些基本
的编程技巧。
通过实际操作,我培养了自己的动手能力和问题解决能力。
作为一门基础课程,51单片机为我今后的学习打下了坚实的基础。
我相信,在今后的学习和实践中,我能够更加熟练地运用51单片机进行各种
应用和项目的设计。
该报告共计1200字。
参考资料:
[1]《单片机技术与应用》.吕春阳、吕立民、钱锋.电子工业出版社,2024年。
51单片机实验一实验报告
![51单片机实验一实验报告](https://img.taocdn.com/s3/m/f0c4b1890b1c59eef9c7b4d1.png)
51单片机实验一实验报告实验报告班级:姓名:学号:组别:课程名称:单片机原理及应用实验室:实验时间:实验项目名称:实验一MCS-51单片机及其开发系统(仿真器)的认识一、实验目的:学习并掌握单片机仿真系统的操作方法,熟悉系统功能及用法。
(1) 了解MCS-51单片机开发常用工具。
(2) 了解仿真器构成、功能及连接。
(3) 掌握MCS-51开发软件(汇编器)安装、功能及基本操作。
(4) 掌握程序的编辑、汇编、运行(包括连续执行、单步执行和跟踪执行)。
(5) 掌握汇编语言指令与机器语言指令之间的对应关系。
(6) 掌握ORG、DATA、BIT等伪指令的作用。
(7) 掌握在仿真开发系统下浏览、修改特殊功能寄存器、内部RAM、外部RAM 单元的方法。
(8) 理解MCS-51单片机在复位期间及复位后有关引脚的状态、特殊功能寄存器的初值。
二、实验内容及原理:Mde单片机仿真系统的安装、设置、主要功能操作练习。
三、实验器材:Mde单片机仿真系统一套、PC机一台。
四、实验步骤及实验结果分析^p :一、程序输入练习:首先在Med下新建一项目,并新建一后缀名为asm的文件(汇编文件),并添加入项目中。
按规定的格式输入以上程序(只输程序部分)。
二、程序运行和控制:1.程序的编译、产生代码并装入: 输入程序完毕后,可在“项目管理”窗口中点击“编译/汇编”选项,如程序无输入错误、语法错误等,编译完成。
在消息窗口中,产生编译成功信息。
如有错误,则消息窗口中指出错误所在行及错误类型,请重新修改程序。
编译成功后,在“项目管理”窗口中点击“产生代码并装入”选项,对编译无误后产生的OBJ文件进行连接,并把代码装入仿真器。
代码装入仿真器后,即可实行仿真。
可在反汇编窗口中查看编译产生的机器码,并与上述程序中对照。
记录你认为能说明问题的检查结果。
2.程序的全速、断点、单步等执行方式: 为提高调试程序的运行速度,程序采用全速断点运行方式。
练习设置及取消设置程序断点。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/ae70d84a1611cc7931b765ce05087632311274c8.png)
51单片机实验报告51单片机是一款非常流行的单片机芯片,被广泛应用于各种电子产品中。
在这篇文章中,我们来探讨一下51单片机的一些实验,以及对于这些实验的理解和体会。
第一部分:实验内容我们进行的51单片机实验主要包括以下几个方面:1. 闪烁LED灯实验:这个实验是入门级别的,主要是为了熟悉51单片机的基本操作和编程方法。
在这个实验中,我们使用了一块51单片机开发板和几个LED灯,通过控制单片机的IO口信号来实现LED灯的闪烁。
2. 按键控制LED实验:这个实验是在闪烁LED实验的基础上进一步延伸的,主要是为了了解如何通过外部按键来控制单片机的输出。
在这个实验中,我们运用了单片机的外部中断和定时器等功能,实现了按键控制LED灯的亮灭。
3. LCD1602显示屏实验:这个实验是为了让我们熟悉如何在51单片机中使用LCD1602液晶显示屏。
在这个实验中,我们使用了I2C总线来与LCD1602进行通信,通过向LCD1602发送命令和数据来实现字符的显示。
4. 电机驱动实验:这个实验是让我们了解如何使用51单片机来控制电机的运转。
在这个实验中,我们运用了单片机的PWM控制功能,通过改变PWM波的占空比来控制电机的转速和方向。
第二部分:实验体会通过这些实验,我对于51单片机有了更深刻的理解和体会。
在这里,我想分享一下我的一些体会。
首先,我认为51单片机具有非常强大的控制能力和灵活性。
通过编写程序,我们可以控制单片机的各种IO口、定时器、PWM输出等功能,从而实现各种复杂的控制任务。
同时,由于其能够直接操作硬件,所以可以快速响应各种外部事件,对实时性要求较高的应用场景有很好的适应性。
其次,我发现在51单片机开发中,良好的软硬件结合非常重要。
由于51单片机具有丰富的外部中断、定时器等功能,因此我们可以很好地利用这些硬件资源来实现各种功能。
同时,在编写程序时,我们也需要充分发挥51单片机的硬件优势,例如使用定时器来完成计时任务,使用外部中断来完成输入检测等等。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/098ccbc84793daef5ef7ba0d4a7302768e996f30.png)
51单片机实验报告
根据所提供的信息,我可以为您提供一个基本的51单片机实验报告的样例。
以下是一个可能的实验报告结构:
实验名称:51单片机的基本使用
实验目的:掌握51单片机的基本使用方法和功能。
实验器材:51单片机开发板、USB接口线、计算机、电源。
实验步骤:
1. 连接电源,将开发板与计算机连接。
2. 打开软件IDE,新建一个工程。
3. 在工程中编写代码,实现将LED灯进行亮灭交替的功能。
4. 将编写好的代码下载到51单片机开发板中。
5. 检查电路连接是否正确,确保没有问题。
6. 启动51单片机开发板,观察LED灯的亮灭情况。
7. 记录实验结果。
8. 关闭开发板和计算机。
实验结果:
通过编写的代码,成功地实现了LED灯的亮灭交替功能。
LED灯每隔一段时间亮起,然后又灭掉,不断循环。
实验分析:
实验结果表明,51单片机因其高性价比和广泛应用领域,可以使用简单的代码实现一些基本功能。
在这个实验中,我们使
用了51单片机的GPIO口控制LED灯的亮灭,通过不断循环的方式实现了交替闪烁的效果。
实验总结:
通过这次实验,我了解了51单片机的基本使用方法,学会了如何编写简单的代码来控制外部设备。
这对于我以后的学习和应用起到了很好的基础作用。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/38d509fe8ad63186bceb19e8b8f67c1cfad6ee1a.png)
51单片机实验报告一、引言51单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。
本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。
二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。
为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。
然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。
三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。
本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。
通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。
四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。
本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。
通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。
五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。
本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。
通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。
六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。
本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。
通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。
七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。
本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。
通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。
八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/5cb7d0255e0e7cd184254b35eefdc8d376ee1488.png)
51单片机实验报告51单片机是一种广泛应用于控制领域的微型处理器。
本文将介绍我所进行的两个基础实验,包括实验目的、实验内容、实验原理和实验结果。
实验一——点亮LED灯实验目的:了解51单片机的基本接口和编程方法;学会使用单片机的开发工具和调试器;掌握51单片机控制LED灯的方法。
实验内容:将LED灯连接至51单片机的P1.0引脚,并进行控制。
编写程序,使得LED灯能稳定地点亮。
实验原理:单片机可通过其IO口控制外部设备,使用高低电平来控制LED灯的开关。
P1.0是51单片机的一个输出端口,可通过赋予其电平状态从而控制LED的点灯与熄灭。
当单片机输出高电平时,LED灯会点亮,否则会熄灭。
实验结果:经过编写程序和调试后,成功实现了LED灯的点亮和熄灭。
按下按键即可改变LED的状态。
实验二——数码管计数器实验目的:了解51单片机的数字口和中断响应机制;掌握编写定时器中断程序的方法;学会使用键盘进行输入和外接数码管进行输出。
实验内容:通过对8位数码管控制台的编程,实现对数字的控制,使用定时器中断实现计数器功能,加深对51单片机中断响应机制的理解。
实验原理:单片机中断请求源包括外部中断源、定时器/计数器中断源以及串口中断源。
本次实验使用定时器中断,可实现一定时间间隔内数字的加减;使用键盘进行输入,采用P3口中断请求源实现按键响应,输出则通过数码管接口外设实现。
实验结果:通过定时器计数器、中断响应和数码管接口外设,成功实现一组数字的计数。
按下按键即可进行数字的加减,并通过数码管显示出来。
结语:本文所述实验为51单片机的基础操作,相信可以为读者提供实用的参考和帮助,帮助大家更加深入地理解51单片机的基础知识和使用方法。
51单片机实训实验报告
![51单片机实训实验报告](https://img.taocdn.com/s3/m/4b699d15650e52ea55189831.png)
课设实习报告题目:步进电机姓名:杨帅班级: 3100303专业:机电一体化学号: 23号一、目的设计一个可以用单片机控制的步进电机正反转。
二、内容1、单片机采用AT89C51。
2、步进电机。
3、要求电路设计合理,系统功能可靠、稳定。
三、功能介绍按下开始按钮后,步进电机正转后自动反转。
四、步进电机的工作原理步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。
通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。
控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。
控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。
同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
五、硬件结构图六、硬件电路图七、程序流程图八、程序编程#include <at89x51.h>#define TIME0H 0xfc#define TIME0L 0xff //定时器0溢出时间:1ms//********************************************************* ****************************************//**//*******************************全局变量**********************************//**//********************************************************* ****************************************unsigned char uc_StepSelect=0; //励磁电流选择序号。
基于51单片机的计算器课程设计实验报告
![基于51单片机的计算器课程设计实验报告](https://img.taocdn.com/s3/m/84e34a0e854769eae009581b6bd97f192279bf62.png)
项目一:简单计算器1。
实验题目:用51单片机实现简单的计算器功能2。
实验截图:1).实验运行前截图:2).实验运行后截图:3.实验代码:#include<reg52。
h〉#include〈intrins.h〉#include〈math.h>#include<defined。
H>#include〈LCD1602.h>unsigned char table1[16]; //1602第一行显示字符unsigned char table2[16]; //1602第二行显示字符unsig ned char code table_error[] = ”error”;/*键扫描函数*/unsigned char keyscan() //扫描键盘函数{unsigned char key_l,key_h,addres,num;P0=0x0f;key_l=P0;P0=0xf0;key_h=P0;addres=key_l | key_h;if(addres!=0xff){Delayms(1);if(addres!=0xff){P0=0x0f;key_l=P0;P0=0xf0;key_h=P0;addres=key_l | key_h;switch(addres){case 0xee:num='1’;break;case 0xde:num=’2';break;case 0xbe:num=’3’;break;case 0xed:num='4';break;case 0xdd:num='5’;break;case 0xbd:num=’6';break;case 0xeb:num=’7’;break;case 0xdb:num='8’;break;case 0xbb:num='9’;break;case 0xd7:num='0’;break;//按键0case 0xe7:num=’C';break;//按键*case 0xb7:num=’=';break;//按键#case 0x7e:num='/’;break;//按键Acase 0x7d:num=’*’;break;//按键Bcase 0x7b:num='—’;break;//按键Ccase 0x77:num='+';break;//按键D}while(addres!=0xff){P0=0x0f;key_l=P0;P0=0xf0;key_h=P0;addres=key_l | key_h;}return num;}}return 0;}void clear_lcd(void)//清屏{unsigned char j;for(j=0;j〈16;j++){table1[j]=’\0’;table2[j]='\0';}}void main(){unsigned char i=0,j;unsigned char key;unsigned char flag_operator = 0;//加减乘除标志位unsigned char flag_equ = 0;//等于标志位unsigned char flag_key = 0;//运算位标志bit flag_MaxValue = 0;bit flag_minus = 0;//负数long int value = 0; //最终运算结果unsigned long int value_H =0; //第一个数据unsigned long int value_L = 0;//第二个数据unsigned long int temp[]={1, 10, 100,1000,10000,100000,1000000,10000000,100000000};Initialize_LCD();while(1){key=keyscan();if(key != 0){if(key == ’C')//清除键C按下{clear_lcd();i=0;flag_operator = 0; flag_equ = 0; value = 0; value_H =0; value_L = 0; flag_key = 0; flag_minus=0;}else{for(j=0; j<i; j++){table1[15—i+j] = table1[15—i+j+1];}table1[15] = key;//table1[i] = key;i++;}if(key == '='){for(j=0; j〈16; j++)//确定运算符位置{if(table1[j] == ’=’){flag_equ = j;flag_key++;break;}if( table1[j]== ’+' || table1[j] == ’—' || table1[j] == ’*' ||table1[j] == '/'){flag_operator = j;flag_key++;}}for(j=16—i; j〈flag_operator; j++) //第一个数据处理{//value_H = value_H + (table1[j]-48) * ( pow(10 ,(flag_operator—j-1)));value_H = value_H + (table1[j]—48) * temp[flag_operator—j—1];}for(j=flag_operator+1; j〈15; j++) //第二个数据处理{//value_L = value_L + (table1[j]-48) * pow( 10 , (flag_equ—j—1));value_L = value_L + (table1[j]—48) * temp[flag_equ—j—1];}if(table1[flag_operator] == '+'){value = value_H + value_L;}else if(table1[flag_operator]== ’-'){value = value_H — value_L;}else if(table1[flag_operator] == '*'){value = value_H * value_L;}else if(table1[flag_operator]== ’/’){value = value_H / value_L;}if(value == 0)table2[15] = (value + 48);else if(value<0){value = abs(value);flag_minus = 1;}else if(value〉2000000000){flag_MaxValue = 1;//break;}j=15;while(value!=0){table2[j] = (value%10 + 48);value = value/10;j—-;}if(flag_minus) //负数{table2[j] = ’—’;}}if(flag_key 〉2 || table1[0] == '0' || flag_MaxValue==1 ){ShowString(5,1,table_error);while(keyscan() != 'C’);clear_lcd();i=0;flag_operator = 0; flag_equ = 0; value = 0; value_H =0; value_L = 0; flag_key = 0; flag_minus=0;}}ShowString(0,0,table1);ShowString(0,1,table2);}}。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/74d23eca6aec0975f46527d3240c844769eaa0a1.png)
实验一数据传送实验实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH, 然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。
将程序经模拟调试通过后, 运行程序, 检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET: AJMP MAINORG 003FHMAIN: MOV R0, #40HMOV R2, #10HMOV A, #0A0HA1:MOV @R0, AINC R0INC ADJNZ R2, A1MOV R1,#40HMOV R0, #50HMOV R2, #10HA3: MOV A, @R1MOV @R0, AINC R0INC R1DJNZ R2, A3LJMP 0000H思考题:1.按照实验内容补全程序.2.CP.对8031内部RAM存储器有哪些寻址方式?直接寻址, 立即寻址, 寄存器寻址, 寄存器间接寻址。
3.执行程序后下列各单元的内容是什么?内部RAM 40H~4FH ___0A0H~0AFH______________________内部RAM 50H~5FH___0A0H~0AFH_______________________实验二多字节十进制加法实验实验内容:多字节十进制加法。
加数首地址由R0 指出, 被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。
将程序经模拟调试通过后, 运行程序, 检查相应的存储单元的内容。
源程序清单: ORG 0000HRESET: AJMP MAINORG 0100HMAIN: MOV SP, #60HMOV R0, #31HMOV @R0, #22HDEC R0MOV @R0, #33HMOV R1, #21HMOV @R1, #44HDEC R1MOV @R1, #55HMOV R2, #02HACALL DACNHERE: AJMP HEREDACN: CLR CDAL: MOV A, @R0ADDC A, @R1DA AMOV @R1, AINC R0INC R1DJNZ R2, DALCLR AMOV ACC.0 , CRET思考题:1.按照实验内容补全程序。
51单片机实验报告
![51单片机实验报告](https://img.taocdn.com/s3/m/c8e5c67282c4bb4cf7ec4afe04a1b0717fd5b3dd.png)
51单片机实验报告
摘要
本实验为51单片机模拟实验,在实验中,用单片机程序控制使得
LED灯按一定程序闪烁,以达到模拟的目的。
本实验利用单片机采用闪烁
程序编写实现LED灯和蜂鸣器的模拟输出,实现LED灯按照一定规律闪烁,蜂鸣器产生指定频率。
关键词:51单片机;LED;蜂鸣器;模拟
1实验目的
本实验旨在利用51单片机模拟LED灯和蜂鸣器的闪烁,利用串口助
手模拟输出。
2实验原理
本实验的实验原理主要是利用51单片机程序实现LED的模拟输出,
利用定时器控制LED灯的闪烁,实现LED按规律闪烁;利用PWM控制蜂鸣器,设置频率实现蜂鸣器的模拟输出。
3实验设备
(1)51单片机开发全套组件,包括51单片机主板、串口助手、编
程器;
(2)LED灯;(3)蜂鸣器。
4实验过程
(1)硬件接线:
将51单片机主板的LED0、LED1、LED2和蜂鸣器接到P2口,符合接线图的要求。
(2)编写并烧写程序:
编写程序完成LED灯和蜂鸣器的模拟输出,将程序烧写到51单片机中,实现输出模拟过程。
5实验结果
实验结果表明,实验中所编写的51单片机程序能够正确地控制LED 灯和器的输出,LED灯按一定程序闪烁。
51单片机数码管显示实验报告
![51单片机数码管显示实验报告](https://img.taocdn.com/s3/m/e480fe62ae45b307e87101f69e3143323868f57d.png)
51单片机数码管显示实验报告实验目的:1.学习51单片机的编程方法和硬件连接方法;2.掌握使用51单片机驱动数码管显示的方法。
实验器材:1.51单片机开发板;2.公共阳极共阳向数码管一个;3.若干杜邦线。
实验原理:数码管是一种数字显示器件,由7个发光二极管和若干个选通器件构成。
每个发光二极管可以发出两种颜色的光,通常使用红色和绿色。
这篇实验报告以共阳数码管为例,共阳数码管的每个发光二极管的阳极都连接到电源VCC上,而七个阴极分别用来选择一些数字进行显示。
当要选择一些数码管显示时,需要对对应的阴极进行低电平使能,而使能其他阴极保持高电平,这样就可以通过控制每个数码管的阴极低电平使能来选择要显示的数字。
实验步骤:1.将51单片机开发板上的数码管连接到51单片机开发板的P1口和P0口上,连接方式如下图所示:```-----------------VCC-P0.0--,a,-----------------P0.1--,b,------P0.2--,c,---,数字2P0.3--,d,------P0.4--,e,------P0.5--,f,---,数字1P0.6--,g,------P0.7--,h,-----------------------P1.0P1.1```2. 在Keil µVision中新建工程,编写程序。
3.利用P0口控制数码管的阴极,利用P1口选择数码管要显示的数字。
4.在主程序中循环选择每个数码管,并通过P0口设置要显示的数字。
实验结果:```---------------------------------P1.0P1.1P0.6P0.7空空数字2数字1abcdefgh---------------------------------```实验结论:通过本次实验,学习了51单片机的编程方法和硬件连接方法,并掌握了使用51单片机驱动数码管显示的方法。
同时,还了解了数码管的工作原理和编程的基本步骤。
51单片机课程设计报告
![51单片机课程设计报告](https://img.taocdn.com/s3/m/f5f3f963ddccda38376bafd1.png)
51单片机实做课课程设计报告学院:专业班级:学号:姓名:指导教师:设计时间:目录一、设计任务与要求 (3)1.1、概述 (3)1.2、 STC89C52介绍 (3)1.3、引脚功能说明 (4)二、总原理图及元器件清单 (5)2.1、总原理图: (5)2.2、显示部分 (5)2.3、声音部分 (6)2.4、按键部分 (6)2.5、继电器 (7)三、模块电路分析 (7)3.1、硬件模块 (7)3.2、单片机控制系统及基本电路 (8)3.3、按键控制模块 (9)3.4、LED显示模块 (10)3.5、交通灯显示模块 (10)3.6、串口通信模块 (11)3.7、继电器 (11)四、调试及结论 (12)4.1 单元调试 (12)4.2 整体调试 (13)五、实验结果 (14)5.1、PCB图 (14)5.2、布线图 (14)5.3、封装结果图 (15)六、心得体会 (15)七、参考文献 (16)一、设计任务与要求1.1、概述通过交通灯的课程设计,将理论知识和实际操作结合起来,熟悉STC89C52的工作原理,设计出符合要求的交通灯。
利用按键控制数码管时间的显示,实现计时和倒数、显示、调节的基本功能。
利用汇编语言编写程序,熟悉掌握汇编语言的编写,提高动手和思维能力,知道交通灯是怎样运行的,与现实生活相贴切。
1.2、 STC89C52介绍·与MCS-51 兼容·8K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·256*8位内部RAM·32可编程I/O线·三个定时器/计数器·6个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路1.3、引脚功能说明(1).电源引脚Vcc(40脚):典型值+5V。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建工程学院软件学院题目:51开发洗衣机班级:物联网工程1202 成员:座号:04 28指导老师:日期:年月日课设报告目录1摘要 (1)2.设计需求 (1)2.1功能需求 (1)2.1.1 基本功能 (1)2.1.2扩展功能 (1)2.2 设计要求 (2)2.2.1 单片机芯片部件功能 (2)2.2.2 LCD数码显示管部件功能 (2)2.2.3 按键部件功能 (2)2.2.4 蜂鸣器部件功能 (2)3硬件设计及描述 (2)3.1总体描述 (2)3.2系统总体框图 (3)3.3Proteus电路图 (3)3.4各部分硬件介绍 (4)3.4.1晶振Protues仿真 (4)3.4.2LCDProtues仿真 (5)3.4.3 按键Protues仿真 (5)3.4.4上拉电阻Protues仿真 (6)3.4.5C51芯片Protues仿真 (6)3.4.6上电复位电路Protues仿真 (8)3.4.7蜂鸣器Protues仿真 (9)4 软件设计流程及描述 (10)4.1程序流程图 (10)4.2函数模块及功能 (10)5功能实现 (11)5.1程序烧入上电调试 (11)5.2时间递增跳变 (12)5.3比分更变 (13)5.4比赛得分复位 (14)5.5比赛时间复位 (14)6 心得体会 (15)7源程序代码: (16)1摘要是为了方便足球比赛时计时与计分及时与准确公开而引申出的实用产品。
在此设计中接入了一个1602液晶显示屏,第一行用来记录赛程的时间,第二行用于显示比赛的得分情况。
赛程计时用倒计时来计时。
在比赛结束时按下相应按键蜂鸣器会响起,提醒比赛时间结束。
这次试验运用C语言进行编程,编程后利用Keil uVision来进行编译,再生成.hex文件装入芯片中,采用Proteus软件来仿真,检验功能是否能够正常实现,最后利用单片机MCS-51实机来实现功能。
本设计以AT89S51单片机作为核心,综合应用单片机定时器、中断、LCD1602 液晶显示等知识,设计一款单片机和简单外设控制的足球计分器应用,同时显示当前的比赛进行时间,比赛队伍,比分状况。
2.设计需求2.1功能需求2.1.1 基本功能(1)屏上显示比赛已运行时间(2)屏上显示A队和B队的得分(3)屏上显示上下半场(H-L)(4)通过按键控制比分的增减2.1.2扩展功能(1)按键实现比赛场次的更换(2)按键实现比赛计时的复位(3)按键实现比赛比分的复位(4)在比赛结束时,蜂鸣器在主裁判的控制下响起2.2 设计要求2.2.1 单片机芯片部件功能在实验开发板上,根据功能需求,设定了控制模块由AT89C51单片机为主控制核心芯片,是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,具有在线编程功能,低功耗,能在5V超低压工作,选用12MHZ 的晶振,使得单片机有合理的运行速度;输入模块由按键控制,选定比赛的节次,加分,比赛的暂停;输出模块由两位LED显示当前洗涤剩余时间。
2.2.2 LED显示管部件功能共阴七段数码管通过80C51的P0口控制其相应显示的值,用除10取余和取整分别给时-分-秒赋值。
2.2.3 按键部件功能该实验设计只用矩阵键盘,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图2-2-1所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,图2-2-1 按键2.2.4 蜂鸣器部件功能蜂鸣器是一种可以把电信号转换成声音信号的一种装置,可以在嵌入式的小型单片机系统中作用,自制音乐之类的,其主要的原理是在待测物体超过常规数值的时候会有电流作用于部件上,通过放大电路将电流放大从而将其转换作用在震动器上,震动器发生震动从而产生了声响,实现蜂鸣功能。
3硬件设计及描述3.1总体描述1)设置LCD第一行用来记录赛程的时间2)设置LCD第二行用于显示比赛的得分情况3)设置按键功能控制LCD相应位显示时间与得分4)利用一个蜂鸣器用来作为比赛结束的警报。
3.2系统总体框图图3-3-1 系统整体Protues仿真图3.4各部分硬件介绍3.4.1晶振Protues仿真图3-4-1 晶振Protues仿真图晶体振荡电路用于产生单片机工作时所需的时钟信号,从而保证各部分工作的同步。
单片机内部有一个高增益反相反大器,只要在输入端XTAL1与输出XTAL2之间挂一个晶体振荡器和微调电容就可以构成一个稳定的自激震荡器并在单片机内部产生的时钟脉冲信号。
电容C1与C2用于稳定频率和快速起振。
3.4.2LCDProtues仿真图3-4-2 数码管Protues仿真图显示方式为动态显示是指依次轮流点亮显示器的各个位,每隔一段时间则点亮一次,设置足够短的时间,利用人的视觉暂停效应和发光二极管的熄灭时的余辉,达到多个字符同时显示的效果。
运行这种显示方式可以降低成本与功耗,但需要较大的驱动电流。
3.4.3 按键Protues仿真图3-4-3 按键Protues仿真图键盘中按键数量设置依系统操作要求而定。
单片机应用系统中的键盘有独立式和行列式两种。
独立式键盘中,每个按键占用一个I/O口线,每个按键相对独立。
行列式键盘用I/O口线组成行列结构,按键设置在交叉点上,在按键数目较多时运用这种连接方式,可节省I/O口连线。
行列式键盘的标识最常用的两种方法:行扫描法和线反转法。
本次实训采用矩阵键盘进行操作实现。
3.4.4上拉电阻Protues仿真图3-4-4 上拉电阻Protues仿真图排阻驱动,用以增加电流,一个脚接高电位VCC,其他脚接单片机I/o口。
3.4.5C51芯片Protues仿真图3-4-5 C51芯片Protues仿真图VCC:电源。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能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(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE 禁止,置位无效。
PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)3.4.6上电复位电路Protues仿真图3-4-6 上电复位电路Protues仿真图本设计采用上电按钮复位电路:首先经过上电复位,当按下按键时,开关直接与VCC相连,为高电平形成复位,同时电解电容被电路放电;按键松开时,VCC 对电容充电,充电电流在电阻上,开关依然为高电平,仍然是复位,充电完成后,电容相当于开路,开关为低电平,单片机芯片正常工作。
其中电阻R2决定了电容充电的时间,R2越大则充电时间长,复位信号从VCC回落到0V的时间也长。
3.4.7蜂鸣器Protues仿真图3-4-7 蜂鸣器Protues仿真图蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的。
但是单片机IO口输出的电流较小,增加电流放大的电路。
程序中通过改变单片机对应IO口输出波形的频率,产生各种不同音色、音调的声音。
可以有两种驱动方式,即用PNP或NPN三极管电流放大电路驱动。
本电路通过一个NPN 三极管来放大驱动蜂鸣器,基极连接R4,发射极E连接一个VCC,集电极C连接蜂鸣器后接地。
单片机在复位后的个I/O口是高电平,此时三极管是截止的,编写程序使选定的I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴的响声。
4 软件设计流程及描述4.1程序流程图主程序主要完成系统的初始化和按键的捕获,在按键没有按下时,调用显示子程序4.2函数模块及功能(1)函数开头用于定义数组,按键端口位置,定义时钟的初始显示时间值和定义程序中最核心的数组部分,为后续的程序实现奠定基础。
程序代码如下:(数组定义不再累述)#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit rs=P2^5; //1602数据/命令选择引脚sbit rw=P2^6; //1602读写引脚sbit en=P2^7; //1602使能引脚(2)void delay(uint del) //延时程序,用于del*1ms延时(3)void wcmd(uchar cmd) //写命令(4)void wdat(uchar dat) //写数据(5)void init() //初始化(6)void write_char(uchar hang,uchar lie,char sign) //写字符(7)void it0(void)interrupt 1 //定时器0中断定时器定义了EA 和ET0开中断,时钟每隔100ms跳变一次实现时间递增(8)void Trup() //定时中断(9)void display() //显示,包括了比赛运行时间与比分的显示(10)uchar Keyscan(void) //判断哪个键按下(11)void KEY() //键值的返回(12)void Outside_Init(void) //开中断(13)void play(uint d) //蜂鸣器(14)void main()//主程序5功能实现(以下调试过程均在联调中进行)5.1程序烧入上电调试图5-1-1 上电调试5.2时间递增跳变图5-1-2 用时015:10图5-1-3 用时113:065.3比分更变图5-1-4 比分05:00图5-1-5 比分05:075.4比赛得分复位图5-1-6 得分复位5.5比赛时间复位图5-1-7时间复位6 心得体会经过两周的课程设计,不断的测试与分析,最终完成了电子时钟的设计与制作。