嵌入式实验报告(51单片机)
- 格式:doc
- 大小:3.70 MB
- 文档页数:15
实习报告:嵌入式单片机实习一、实习目的和意义本次实习的主要目的是通过嵌入式单片机系统的实际操作,深入理解嵌入式系统的工作原理,掌握单片机的编程、调试和应用技巧。
通过实习,使学生能够将所学的理论知识与实际操作相结合,提高解决实际问题的能力,为未来的职业发展打下坚实的基础。
二、实习内容和过程实习的主要内容包括单片机系统的设计、焊接、装配、测试和程序编制等。
在实习过程中,我们使用了经典的51系列单片机,通过搭建不同的电路系统,实现了对单片机的各种控制功能。
首先,我们学习了单片机的硬件组成,包括CPU、存储器、输入输出端口等,并通过焊接电路板的方式,亲自组装了一个单片机系统。
在这个过程中,我们深刻理解了电路原理图及电子线路的基本焊接装配工艺、规范及注意事项。
然后,我们对组装好的系统板进行了测试,通过观察和分析系统板的工作原理及性能,掌握了元器件及系统故障的排除方法。
此外,我们还学习了程序编制及调试方法,完成了系统初始化、存储器操作、端口操作、键盘显示等程序的编制及调试。
在实习的过程中,我们使用了汇编语言和C语言进行编程,通过不断地尝试和调试,我们逐渐掌握了单片机的各种编程技巧,解决了一些挑战性问题。
同时,我们也学习了如何通过调试工具对程序进行调试和优化,提高了程序的稳定性和性能。
三、实习收获和反思通过本次实习,我对嵌入式单片机系统有了更深入的理解,掌握了单片机的编程、调试和应用技巧。
我意识到,嵌入式系统的设计和开发不仅需要扎实的理论知识,还需要良好的实际操作能力。
同时,我也明白了团队合作的重要性,通过与团队成员的分工合作,我们共同完成了实习任务。
然而,我也发现自己在实习过程中还存在一些不足之处。
例如,我在编程时有时过于依赖调试工具,没有充分发挥自己的编程能力。
此外,我在团队协作中也存在一些沟通不畅的问题,需要进一步提高自己的沟通能力。
四、实习总结通过本次嵌入式单片机实习,我收获颇丰。
我不仅掌握了单片机的编程技巧,还提高了解决实际问题的能力。
实验一:开发环境的搭建一、(1)、keil的安装与破解点击Keil安装包,一键傻瓜式操作,安装完成后以管理员身份打开Keil,在File里选择license management 把CID复制到注册机里的CID栏,注册机里的Target选择C51,然后点击Generate,将生成的激活码复制到license management里的LIC栏,并点击Add LIC,即完成破解。
(2)、CH340驱动安装(3)、普中烧录软件的使用波特率选择9600,速度选择低速,文件路径选择HEX文件的路径(4)、keil的使用新建工程并保存,在CPU 里面选择STC90C52RC ,再新建C 文件,注意保存时手动加上.c 后缀,再在Source Group 1 右击选择 Add Files to Group'Source Group 1'找到刚才新建的C 文件,然后找到图标并点击,再Target 里将晶振频率改为12MHz,将Output 里生成HEX 文件的勾打上即可生成HEX 文件。
(5)、protues的安装与破解双击安装包开始安装,等进入到Labcenter Licence Manager1.6,也就是许可证管理页面,点击Browse For Key File,找到下载解压软件包中的LICENCE.lxk文件,并打开,再点击install,再点击“是”,继续傻瓜式操作。
破解时以管理员身份运行破解软件,目标文件里找到安装的路径,再点击升级,即可完成破解。
(6)、protues的使用双击蓝色ISIS图标即可打开Proteus,File里新建并保存,然后点击“P”即可选择自己所需元器件,输入AT89C52单片机,确定后在图纸中点击即可,双击单片机将对话框中的Program File 选择Keil生成的HEX文件,电路及程序都完成后,点击左下角即可开始仿真,点击停止仿真。
二、实验结论在实验一里学会了开发环境的搭建,学会并熟练了Keil u Vision4 和Proteus 7.8以及普中烧录软件的使用,基本实现了用Keil编写程序并且生成HEX文件,能够用Proteus 画基本仿真图并且成功实现仿真,在仿真过程中出现了win10电脑不能正常实现仿真的问题,在经过百度等多方面查找之后找到了如下解决办法:1、路径上不能有中文2、仿真时出现cannot open'C:User\?\AppData\Local\Temp\LISA5476.SDF'的错误时:右击我的电脑-属性-高级系统设置-环境变量,在“用户变量”栏里找到TEMP与TMP,分别双击,将变量值都改为%SystemRoot%\TEMP如果还不行将下面的“系统变量”栏里的TEMP与TMP同样修改方法,如果没有新建就行。
at89c51实验报告AT89C51实验报告引言:AT89C51是一款经典的8位单片机,被广泛应用于各种嵌入式系统中。
本实验报告将介绍我对AT89C51的实验过程和结果,以及对该单片机的一些理解和应用。
实验目的:1. 熟悉AT89C51单片机的基本特性和功能;2. 掌握AT89C51单片机的编程方法和调试技巧;3. 实现简单的功能模块并验证其正确性。
实验过程:1. 硬件准备在实验开始前,我准备了一块AT89C51开发板、一台电脑、一根USB数据线以及一些连接线。
将开发板与电脑连接,确保能够正常通信和编程。
2. 软件设置我选择了Keil C51作为开发工具,打开软件后,新建一个工程,并选择AT89C51作为目标芯片。
接着,我编写了一个简单的程序,用于点亮开发板上的LED灯。
3. 编程调试将编写好的程序下载到AT89C51单片机中,然后通过调试工具进行程序的调试和运行。
在调试过程中,我发现程序中存在一处错误,经过仔细排查后,成功修复了问题。
4. 功能实现在程序调试通过后,我开始尝试实现一些功能模块。
首先,我实现了一个简单的计数器,通过按下开发板上的按钮,可以实现数字的加减操作。
接着,我尝试了一些其他的功能,如LED灯的闪烁、蜂鸣器的发声等。
实验结果:经过一系列的实验和调试,我成功地实现了以上功能模块,并验证了其正确性。
AT89C51单片机表现出了良好的稳定性和可靠性,在进行各种操作时没有出现明显的延迟或错误。
对AT89C51的理解和应用:通过这次实验,我对AT89C51单片机有了更深入的了解。
AT89C51作为一款经典的8位单片机,具有较强的处理能力和丰富的外设接口,可以广泛应用于各种嵌入式系统中。
在实际应用中,AT89C51可以用来控制各种外设,如LED灯、LCD显示屏、温度传感器等。
通过编写相应的程序,可以实现各种功能,如数据采集、数据处理、控制操作等。
此外,AT89C51还支持多种通信协议,如UART、SPI、I2C等,可以与其他设备进行数据交互。
51单片机实验报告(共五则)第一篇:51单片机实验报告51单片机实验报告实验一点亮流水灯实验现象 Led灯交替亮,间隔大约10ms。
实验代码#include 〈reg51、h> void Delay10ms(unsigned int c);voidmain(){)1(elihwﻩ{ ﻩP0= 0x00;Delay10ms(50);;ffx0 =0Pﻩﻩ;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}} 实验原理W W hi i le(1)表示一直循环。
循环体内首先将P0 得所有位都置于零,然后延时约5 5 0*10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。
接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。
实验 2 流水灯(不运用库函数)实验现象起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #includemain(){unsigned char LED;LED = 0xfe;while(1){ ﻩ;DEL = 0PﻩDelay10ms(50);00x0 == 0P(fiﻩ {;1〈〈 DEL = DELﻩ)ﻩ;efx0 = DELﻩ} ﻩ}ﻩ} void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)—-b;0〉b;83=b(rofﻩ{ ﻩﻩﻩ;)--a;0>a;031=a(rofﻩ} ﻩ} ﻩ} 实验原理这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1111 1 110, 之后左移一次变成1111 1 100 0,当变成00000 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include 〈reg51、h> #include 〈intrins、h〉void Delay10ms(unsigned int c); void main(void){unsigned char LED;;EFx0 = DELﻩ)1(elihwﻩ{ ﻩP0 = LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_ = DELﻩ} ﻩ} void Delay10ms(unsigned in t c){unsigned chara, b;for(;c〉0;c——){ ﻩfor(b=38;b〉0;b—-){ ﻩﻩ;)-—a;0〉a;031=a(rofﻩ} ﻩ}}实验原理利用头文件中得函数,_cro l_(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与 A-F。
嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。
二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,L5,L6,L7共八个发光二极管,当引脚LED_ SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。
A〜H引脚连接STM32F108VB芯片的PE8〜PE15,程序初始化时,对其进行初始设置。
引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。
注意,LED SEL 连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。
2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。
当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。
三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。
单片机嵌入式实训报告一、引言在当今的电子技术领域,单片机已经成为嵌入式系统设计的核心组件。
为了更好地理解和应用单片机,我们进行了一次单片机嵌入式实训。
本报告将详细介绍实训的目的、过程、发现的问题、解决方案以及对实训的反思和个人的收获。
二、实训目的和岗位认识实训的主要目的是培养我们的实际操作能力,将单片机理论知识与实际应用相结合,使我们更好地理解单片机的选型、外围电路设计、程序编写与调试等技能。
在实训过程中,我对单片机嵌入式系统工程师这一岗位有了更深入的认识。
单片机嵌入式系统工程师需要具备扎实的电子技术基础、编程能力、电路设计能力以及问题解决能力。
同时,他们需要熟悉各种单片机及其开发工具,能够根据项目需求进行系统设计和优化。
三、实训过程与问题解决在实训过程中,我们首先根据项目需求选择了合适的单片机型号。
接着,我们进行了外围电路设计,包括电源电路、输入输出接口电路等。
在编程方面,我们使用了C语言进行编程,并利用开发工具进行了程序烧写和调试。
在实训过程中,我们遇到了一些问题。
首先,在电路设计时,我们发现某个元件的参数选择不当,导致系统无法正常工作。
通过查阅资料和讨论,我们确定了正确的元件参数,并重新进行了电路设计。
其次,在程序调试过程中,我们发现程序存在逻辑错误,导致系统运行异常。
通过逐步调试和代码审查,我们找到了错误的原因并进行了修正。
四、实训总结与收获通过本次实训,我深刻体会到了单片机嵌入式系统设计的复杂性和挑战性。
我不仅学会了如何根据项目需求进行单片机选型、外围电路设计和程序编写,还掌握了单片机的调试技巧和常见问题的解决方法。
同时,实训也锻炼了我的团队协作能力,使我明白了在项目中各成员间沟通与合作的重要性。
五、对实训不足之处的反思与建议虽然本次实训收获颇丰,但我认为仍有一些不足之处。
首先,我在时间管理方面仍有待提高,部分任务进度滞后。
为此,我应提前规划好每个阶段的任务,确保按计划进行。
其次,我在问题解决方面过于依赖已有知识,忽视了新知识的学习。
实验报告内容实验题目:P口输出实验实验目的:通过实验了解P口做为输入输出方式使用时,CPU对P口的操作方式实验要求:控制8个LED灯,完成从左到右然后再从右到左再从左到右依次的循序流水实验器材:计算机和普中科技STC89C52单片机电路板实验步骤/程序流程分析:程序源代码:#include "reg52.h"#include<intrins.h>typedef unsigned int u16;typedef unsigned char u8;#define led P2void delay(u16 i){while(i--);}void main(){u8 i;led=0x7f;delay(50000);while(1){for(i=0;i<7;i++){led=_cror_(led,1);delay(50000);}for(i=0;i<7;i++){led=_crol_(led,1);delay(50000);}}}实验结果分析:实验日期:2017.10.24成绩评定:□优秀(100-90分)□良好(89-80分)□中等(79-70分)□及格(69-60分)□不及格(60-0分)教师签名:年月日实验报告内容实验要求:利用动态扫描和定时器0在数码管上显示出从200开始以1/10秒的速度往下递减直至100并保持此数,以此同时利用定时器1以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时LED灯全亮。
实验器材:计算机和普中科技STC89C52单片机电路板实验步骤/程序流程分析:程序源代码:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uchar t0=0,t1,temp;uchar temp,bai,shi,ge;uint shu=200;uchar codesmgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39 ,0x5e,0x79,0x71};void delay(uint i){while(i--);}void xianshi(uchar bai,uchar shi,uchar ge){LSA = 0;LSB=0;LSC=0;P0=smgduan[ge];delay(250);P0=0x00;LSA=1;LSB=0;LSC=0;P0=smgduan[shi];delay(250);P0=0x00;LSA=0;LSB=1;LSC=0;P0=smgduan[bai];delay(250);P0=0x00;}void main(){TMOD=0x11;TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;ET0=1;ET1=1;TR0=1;TR1=1;temp=0xfe;P2=0xfe;while(1){xianshi(bai,shi,ge);}}void T0_time() interrupt 1 {TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0++;if(t0==10){t0=1;temp=_crol_(temp,1);P2=temp; }}void T1_time() interrupt 3 {TH1=(65536-50000)/256; TL1=(65536-50000)%256; t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==100){TR1=0;TR0=0;P2=0x00;}}}实验结果分析:实验日期:2017.11.30成绩评定:□优秀(100-90分)□良好(89-80分)□中等(79-70分)□及格(69-60分)□不及格(60-0分)教师签名:年月日实验要求:以单片机为核心,设计数字秒表。
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年。
一、实训背景随着科技的不断发展,单片机技术已成为现代电子设备中不可或缺的一部分。
为了提高学生的实际操作能力和工程实践能力,我校组织了单片机嵌入式实训课程。
本次实训旨在使学生掌握单片机的基本原理、开发流程和实际应用,培养学生的创新精神和团队协作能力。
二、实训目标1. 掌握单片机的基本原理和开发环境;2. 学会使用单片机进行简单的编程和调试;3. 能够根据实际需求设计并实现嵌入式系统;4. 培养学生的创新精神和团队协作能力。
三、实训内容1. 单片机基本原理实训过程中,我们学习了单片机的基本结构、工作原理和常用外设。
主要包括:(1)单片机的内部结构:中央处理单元(CPU)、存储器、定时器、计数器、并行I/O口、串行通信接口等。
(2)单片机的工作原理:通过编程,使CPU执行指令,实现对外设的控制和数据处理。
(3)常用外设:LED灯、数码管、按键、传感器、LCD显示屏、串行通信模块等。
2. 单片机开发环境实训过程中,我们学习了Keil uVision软件的使用,该软件是单片机开发过程中常用的集成开发环境。
主要包括:(1)Keil uVision软件的安装与配置;(2)项目管理:创建项目、添加文件、设置编译器、链接器等;(3)代码编写:使用C语言进行编程,实现单片机的功能;(4)调试:使用调试器进行程序调试,观察程序运行过程。
3. 实践项目在实训过程中,我们完成了一个基于单片机的嵌入式系统设计项目。
项目要求如下:(1)设计一个基于STC89C52单片机的抢答器系统;(2)系统包括4个抢答按钮、一个LCD显示屏和一个蜂鸣器;(3)当抢答按钮被按下时,LCD显示屏显示抢答者的编号,蜂鸣器发出提示音;(4)系统具备去抖动功能,防止误操作。
4. 项目实现过程(1)需求分析:明确项目需求,确定系统功能;(2)系统设计:设计系统硬件电路、软件程序和界面;(3)硬件电路设计:绘制电路图,焊接电路板;(4)软件程序编写:使用C语言编写程序,实现系统功能;(5)调试与优化:调试程序,解决出现的问题,优化系统性能。
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单片机实验报告的样例。
以下是一个可能的实验报告结构:
实验名称: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单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。
本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。
二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。
为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。
然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。
三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。
本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。
通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。
四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。
本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。
通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。
五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。
本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。
通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。
六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。
本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。
通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。
七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。
本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。
通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。
八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。
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单片机的基础知识和使用方法。
本科实验报告课程名称:嵌入式系统基础实验项目:实验一双字节加法实验二数据排序程序实验三定时/计数器实验四外部中断实验地点:跨越机房专业班级:通信0903 学号:2009001385 学生姓名:指导教师:武娟萍2012年 5 月18 日实验一双字节加法一实验目的(1)熟悉MCS-51指令系统,掌握程序设计方法。
(2)掌握双字节加法的程序算法。
二实验设备计算机一台。
操作系统:Windows 98/2000/XP应用软件:WAVE 6000或其他。
三实验内容编写并调试一个双字节加法程序,设9930H存在R1R0中,6083H存在R2R3中,计算R1R0+R3R2,结果存在R5R4中。
四实验原理两数的低位相加后保留进位位,高位数相加时,将低位的进位加上。
五WAVE6000操作过程一、新建文件:选择菜单【文件/新建文件】功能,出现一个文件名为NONAME1的源程序窗口,在此窗口中输入编好的程序。
二、保存文件:输完程序后,选择菜单【文件/保存文件】或【文件/另存为】功能,给出文件要保存的位置保存文件,保存文件为MY.ASM。
三、新建项目选择菜单【文件/新建项目】功能,1)加入模块文件,选择刚才保存的文件,按打开键,可以打开多个文件2) 加入包含文件,选择所要加入的包含文件,如果没有包含文件,按取消键3)保存项目为MY,无需后缀。
将用户项目存盘,用户在编译项目时,自动存盘。
注意:当用项目仿真时,系统要求,项目文件,模块文件包含文件在同一个目录(文件夹)下五、项目复制复制项目,用户可以将项目中的所有模块(用户程序)备份到另一个地方。
在多模块项目中,用复制项目功能,可以避免用户因少复制某些模块,而造成编译不能通过,方便用户对程序进行管理六、项目设置选择菜单【设置/仿真器设置】,在仿真器设置栏中1)点击语言栏选择伟福汇编器。
2)仿真器选择栏选择80313)通信设置选择使用伟福软件模拟器七、编译程序:选择菜单【项目/编译】功能编译项目。
c51实验报告C51实验报告引言:C51是一种经典的单片机,广泛应用于嵌入式系统和物联网领域。
本文将对C51实验进行详细的报告,包括实验目的、实验步骤、实验结果以及实验心得等方面的内容。
一、实验目的C51实验的目的是让学生通过实际操作,深入了解C51单片机的工作原理和应用。
具体而言,本次实验的目的包括以下几个方面:1. 熟悉C51单片机的基本结构和指令集;2. 掌握C语言在C51单片机上的编程方法;3. 理解并实践C51单片机的输入输出控制;4. 学习使用C51单片机进行简单的数据处理和算法实现。
二、实验步骤1. 硬件准备:连接C51单片机、示波器、电源等设备,确保电路连接正确;2. 软件准备:安装Keil C51集成开发环境,创建工程并配置编译选项;3. 编写程序:根据实验要求,使用C语言编写相应的程序代码;4. 编译和下载:使用Keil C51进行编译和下载,将程序烧录到C51单片机中;5. 实验调试:通过示波器等工具,对C51单片机进行调试和观察实验现象;6. 实验记录:记录实验过程中的关键信息、实验结果以及遇到的问题。
三、实验结果根据实验步骤的要求,我们完成了一系列C51实验,并得到了一些有意义的结果。
以下是其中几个实验的结果总结:1. LED闪烁实验:通过编写简单的程序,我们成功地控制了C51单片机上的LED灯进行闪烁。
实验过程中,我们发现通过调整延时时间可以改变LED闪烁的频率,这使我们更深入地理解了C51单片机的时钟和计时功能。
2. 数码管显示实验:在这个实验中,我们使用C51单片机控制了一个四位数码管的显示。
通过编写相应的程序,我们可以在数码管上显示不同的数字和字符。
这个实验让我们更好地理解了C51单片机的输入输出控制和数码管的工作原理。
3. ADC采样实验:ADC(模拟数字转换器)是C51单片机中常用的模块之一,可以将模拟信号转换为数字信号。
通过这个实验,我们学会了如何使用C51单片机进行模拟信号的采样和处理。
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灯按一定程序闪烁。
单片机嵌入式系统实验报告Abstract本实验报告通过实际操作单片机嵌入式系统,并进行了相关实验,测试了其性能和功能。
本报告分为以下几个部分进行叙述:实验目的、实验器材和软件、实验方法和步骤、实验结果和分析、实验总结和展望。
1. 实验目的单片机嵌入式系统在当今的电子领域中具有广泛的应用,本实验旨在深入理解单片机工作原理和嵌入式系统的基本构成,并通过实际操作,掌握单片机编程和应用开发的技巧。
2. 实验器材和软件2.1 实验器材本次实验所需的主要器材如下:- 单片机主板- 硬件外设(例如按键、LED灯等)- 电路模块- 逻辑分析仪2.2 实验软件本次实验所用的软件工具如下:- Keil μVision- Proteus3. 实验方法和步骤3.1 硬件连接根据实验要求,将单片机主板和所需的硬件外设进行正确的连接。
确保电路连接准确无误,避免因连接错误导致的实验失败。
3.2 软件编程使用Keil μVision编写单片机嵌入式系统的程序代码。
根据实验要求,编写相应的程序逻辑,包括引脚控制、时钟配置、中断设置等。
3.3 程序下载与调试通过下载器将编写好的程序代码下载到单片机主板中。
在调试过程中,可以使用逻辑分析仪等工具,对程序运行过程中的信号波形进行观测和分析,以确保程序的正常运行。
4. 实验结果和分析根据实验过程中的观测和分析,得出以下实验结果和结论:- 实验中所编写的程序能够正确地控制硬件外设,实现预期的功能。
- 通过逻辑分析仪观测,可以清晰地看到单片机工作时各个引脚的变化情况。
- 在实际应用中,单片机嵌入式系统具有稳定可靠、节能环保的特点,适用于很多领域和场景。
5. 实验总结和展望通过本次实验,我深入了解了单片机嵌入式系统的工作原理和应用开发技巧,增强了我在嵌入式领域的实践能力和应用水平。
然而,本次实验只是对单片机嵌入式系统的简单应用,还有很多更深入和复杂的实验和应用可以开展。
未来,我将继续学习和探索嵌入式系统的更多领域和应用,提升自己的技能和能力。
实验报告内容实验题目:P口输出实验实验目的:通过实验了解P口做为输入输出方式使用时,CPU对P口的操作方式实验要求:控制8个LED灯,完成从左到右然后再从右到左再从左到右依次的循序流水实验器材:计算机和普中科技STC89C52单片机电路板实验步骤/程序流程分析:程序源代码:#include "reg52.h"#include<intrins.h>typedef unsigned int u16;typedef unsigned char u8;#define led P2void delay(u16 i){while(i--);}void main(){u8 i;led=0x7f;delay(50000);while(1){for(i=0;i<7;i++){led=_cror_(led,1);delay(50000);}for(i=0;i<7;i++){led=_crol_(led,1);delay(50000);}}}实验结果分析:实验日期:2017.10.24成绩评定:□优秀(100-90分)□良好(89-80分)□中等(79-70分)□及格(69-60分)□不及格(60-0分)教师签名:年月日实验报告内容实验要求:利用动态扫描和定时器0在数码管上显示出从200开始以1/10秒的速度往下递减直至100并保持此数,以此同时利用定时器1以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时LED灯全亮。
实验器材:计算机和普中科技STC89C52单片机电路板实验步骤/程序流程分析:程序源代码:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uchar t0=0,t1,temp;uchar temp,bai,shi,ge;uint shu=200;uchar codesmgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39 ,0x5e,0x79,0x71};void delay(uint i){while(i--);}void xianshi(uchar bai,uchar shi,uchar ge){LSA = 0;LSB=0;LSC=0;P0=smgduan[ge];delay(250);P0=0x00;LSA=1;LSB=0;LSC=0;P0=smgduan[shi];delay(250);P0=0x00;LSA=0;LSB=1;LSC=0;P0=smgduan[bai];delay(250);P0=0x00;}void main(){TMOD=0x11;TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;ET0=1;ET1=1;TR0=1;TR1=1;temp=0xfe;P2=0xfe;while(1){xianshi(bai,shi,ge);}}void T0_time() interrupt 1 {TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0++;if(t0==10){t0=1;temp=_crol_(temp,1);P2=temp; }}void T1_time() interrupt 3 {TH1=(65536-50000)/256; TL1=(65536-50000)%256; t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==100){TR1=0;TR0=0;P2=0x00;}}}实验结果分析:实验日期:2017.11.30成绩评定:□优秀(100-90分)□良好(89-80分)□中等(79-70分)□及格(69-60分)□不及格(60-0分)教师签名:年月日实验要求:以单片机为核心,设计数字秒表。
设计要求计时范围:0~59分59.59秒,整数四位数和小数两位数显示;计时精度10毫秒;复位按钮,计时器清零,并做好下次及时准备;可以对三个对象(A、B)计时,具有启/停控制;设开始、停止A、停止B、显示A、显示B、复位按钮。
实验器材:计算机和普中科技STC89C52单片机电路板实验步骤/程序流程分析:程序源代码:#include<reg52.h>#define uint unsigned int //宏定义无符号整型#define uchar unsigned char //宏定义无符号字符型#define DUAN (P0) //宏定义数码管段代码#define WEI (P2) //宏定义数码管位代码sbit keystart_stop = P3^2; //定义启动/停止按键sbit keyrest = P3^3; //定义复位/清零按键sbit keyrecord = P3^4; //定义计数/存储按键sbit keydispaly = P3^5; //定义计数/显示按键sbit beep = P3^6; //定义蜂鸣器sbit led = P3^7; //定义uchar x,msec5,msec10,second,minute; //时间变量uchar msec,sec,min; //显示变量uchar code table1[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管数组不带点显示uchar code table2[] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x58,0x00,0x10}; //共阳数码管带点显示/********************************函数名称: 延时函数delay功能: 延时指定毫秒参数: uchar x返回值: 无********************************/void delay(uchar x){uint b,c;for(b = x;b>0;b--)for(c = 110;c>0;c--);}/********************************函数名称: 定时器初始化函数time_init(void)功能: 定时器初始化参数: 无返回值: 无*********************************/void time_init(void){msec5=0;TMOD = 0x01;TH0 = (65536-9174)/256;TL0 = (65536-9174)%256;ET0 = 1;TR0 = 1;EA = 1;}/********************************函数名称: 显示函数display()功能: 数码管显示参数: uchar msec,uchar sec,uchar min返回值: 无*********************************/void display(uchar msec,uchar sec,uchar min){DUAN = table1[(msec%10)%10];// 0.01秒 5.64%10=64%10=0.04 WEI = 0x01;delay(2);WEI = 0x00;DUAN = table1[(msec/10)%10];// 0.1秒 5.64/10=56%10=0.6WEI = 0x02;delay(2);WEI = 0x00;DUAN = table2[(sec%10)]; // 1秒564%10=6WEI = 0x04;delay(2);WEI = 0x00;DUAN = table1[(sec/10)]; // 10秒564/10=56%10=6WEI = 0x08;delay(2);WEI = 0x00;DUAN = table1[(min%10)]; // 1分564/10=56%10=6WEI = 0x10;delay(2);WEI = 0x00;DUAN = table1[(min/10)]; // 10分564/10=56%10=6WEI = 0x20;delay(2);WEI = 0x00;}/******************************** 函数名称: 蜂鸣器函数功能: 蜂鸣器发声参数: 无返回值: 无*********************************/ void beep_led(){beep = 0;delay(600);beep = 1;delay(600);led = 0;delay(600);led = 1;}/******************************** 函数名称: 按键函数功能: 调试按键的函数参数: 无返回值: 无*********************************/ void keys(){if(keystart_stop==0){delay(5);if(keystart_stop==0)TR0 = ~TR0;beep_led();while(!keystart_stop);}if(keyrest==0){delay(5);if(keyrest==0)TR0 = 0;msec5=0;msec10=0,second=0;minute=0;beep_led();while(!keyrest);}}/********************************函数名称: 主函数功能:参数: 无返回值:*********************************/void main(){uchar jishu=0;uchar flag=0;uchar msec1=0,sec1=0,min1=0;uchar msec2=0,sec2=0,min2=0;time_init();while(1){keys(); // 键盘的扫描函数一定要放在while循环里边msec=msec10;sec=second;min=minute;if(flag==1){display(msec1,sec1,min1);}else if(flag==0){display(msec,sec,min);}else{display(msec2,sec2,min2);}if(keyrecord==0){delay(5);if(keyrecord==0){beep_led();jishu++;if(jishu>2){jishu=0;}else if(jishu==1){msec1=msec10;sec1=second;min1=minute;}else if(jishu==2){msec2=msec10;sec2=second;min2=minute;}}while(!keyrecord);}if(keydispaly==0){delay(5);if(keydispaly==0){beep_led() ;flag++;if(flag>2)flag=0;}while(!keydispaly);}}}/**********************************函数名称: 中断函数功能:参数: 无返回值:***********************************/void timer0 () interrupt 1{TH0 = (65536-9174)/256;TL0 = (65536-9174)%256;msec10++; // msec10加一次等于10ms if(msec10==100) // j=100 为1s{msec10 = 0;second++;if(second==60) // second=60 为1minute{second=0 ;minute++;if(minute==60) // minute=60 为1hour{minute=0 ;}}}}实验结果分析:实验日期:2017.12.01成绩评定:□优秀(100-90分)□良好(89-80分)□中等(79-70分)□及格(69-60分)□不及格(60-0分)教师签名:年月日。