ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:25.16KB ,
资源ID:19102263      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19102263.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机实验报告范文Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51单片机实验报告范文Word格式.docx

1、unsiedcaa,b;fo(;0;c)-;0;8=b(rof)-;a;03a(rf实验原理这里运用了语言中得位运算符,位运算符左移,初始值得二进制为11110,之后左移一次变成111100,当变成000000000时通过fif语句重置11111110、延迟函数在第一个报告已经说出了,不再多说.实验3流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#nudere5、cldeintrns、videla10(unsigndintc);voman(voi)unsinedcharED;EFx0DE)1(eiwP0=LE

2、D;)05(s01yaleD)1,DE(_lorc_=ELvoidDlay10s(unsigneinc)unsinca,b;c0;)o(=38;b0;b-)-;0a;01a(实验原理利用头文件中得函数,_cro_(,),可以比位操作符更方便得进行22进制得移位操作,比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据,由此比前一个例子不需要fif语句重置操作.数码管实验实验现象单个数码管按顺序显示-与A-F。#ncludm(void)0irahcdngsnuwhie(1)P0=G_CODE;+i)61=i(f=i)0(sm1alevoiDeay10ms(unsgdintc)/0us

3、usignhra,;fo(;c-)r(38;0;-);0;0=a(f实验原理根据数码管得点亮原理,依次找到代表00,A-FF得位码,用循环与延迟函数就可以达到要求了。实验动态数码管#ncludreg1、heineGPIO_DIG0#defineGP_PLACEP1unsnedcharcodeDIG_PAC8=xe,0xfd,f,xf7,0xef,0xd,0bf,x7;unsigedchrcodeDG_OE17=0x3f,0x06,0x5,04f,x66,0xd,0x7d,0x,x7f,0x6f,7,x7c,0x3,x5e,0x79,0x1;nsndchaDipaData8;voidigDisp

4、ly();oi(void)unsignedchari;f(i=;;i+)Displaatai=DIG_CODEi;wle(1)(alsiDgivoidDigiplay()irahcdisnujidgsnufor(i=;8;i+)iECP_GID=ECAPIPGitDyalpsiD=IIPG1=jhl(j);0x=GID_OPG实验原理依然找到相应数字与字母得编码,由于必须通过快速扫描利用视觉暂留来实现数码管得显示,分段码与位码,不断扫描。最后如果更换数字得话,需要消隐操作,防止数码管重复显示所带来得不清楚.实验外部中断实验现象每按一下独立按键,就会在数码管显示屏上+1.includere1、h

5、#includesiLS13A=P;sbitLS13B=P3;itLS13C=P2;unigndinLdumal_1,LedumVl,edOut8;UinedcharcodeDip_ab=0x3f,006,x5b,xf,0x6,xd,0xd,0x07,0x7f,,040;videlay(signeiti)har;fr(i;i0;i-)for(j=200;0;-);vodin(id)unsigndai;=0xff;P=0xff;P2=0xff;IT0=1;EX0=;1=1;EX=1;EA=1;hle(1)LedOu0Dis_TabLedNmVal_%000/10;LedOu1=i_TabLedN

6、mV_1%1000/10080;edOutDis_TabLdNumVl_%10/10;edOt3DispTabdNumVal_1%0;0001/000012_lamuNdeLaT_psi=4tuOeLLdOu=DipTaLedNumVal_2%100/10;dut6=Disp_TabLedumVal_100;Ledut7=Dip_TbLedumVal_210;for(i0;ix-)/外部的循环for(y=110;yy-);/内部的循环P2=0xff;/把P2口清零9/大循环,始终执行括号里的内容P2=0x55;Delay(500);P2=0xaa;/间隔闪烁01010101/间隔闪烁10101

7、010采用宏定义把unsignedint重命名为uint,把unsignedchar重命名为uchar,写一个带有形式参数的函数作为解决“过一段时间”这个问题的延时函数,函数里采用两个for语句嵌套的方式来延时,也可使用while语句,主函数里先将I/O口清零,然后用一个死循环whlie(1),把要执行的内容放在死循环里始终重复执行,具体执行的内容是间隔闪烁,即01010101和10101010,分别以十六进制形式先后赋给P2口并调用延时函数Delay(),在调用Delay()函数时给一个需要延时的时间长度,即500,表示延时500个单位时间。四、实验结论实验三学会了延时函数的使用,知道了如何

8、让LED实现闪烁,但是我认为延时函数可能是空耗CPU,因为延时这段时间CPU什么都没有做,只是等着,所以我认为降低了CPU的效率。10实验四:流水灯流水灯即LED从一端依次亮、灭流向另外一端,有很多方法,着重采用位移操作法和库操作法。采用8个LED灯,用过限流电阻以共阳极接法接在P2口上三、程序代码(1)位移操作法#include#defineuintunsignedint#defineucharunsignedcharvoiddelay(uintz)/延时函数11uintx,y;x-)for(y=110;位移操作符为:,本次采用左移方式将11111110的各二进制位全部左移8位,由于取反其右

9、边空出的位用1填补,高位左移溢出则舍弃该高位。(2)库操作法#include#include#defineuintunsignedint#defineucharunsignedcharvoidmain()uchari;i=0x7f;ucharj;while(1)P2=(1/位移操作法12P2=i;delay(500);i=_cror_(i,1);/库操作法库操作法注意包含intrins.h文件,以便调用_cror_(),i作为一个常数,是流水灯的起始位置,同时也是被操作的数据,1表示循环右移的次数,_cror_()是右移函数,_crol_()是左移函数四、实验结论实验四学会了两种高效率的流水灯

10、方式,其中更倾向于库函数操作法,但是要一定要记得包含intrins.h文件。13实验五:数码管的显示静态显示:采用一个I/O口控制数码管,就像控制8个LED灯一样的控制方法。动态显示:用两个I/O口控制数码管的段选、位选,动态扫描显示是通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。14静态显示采用共阳极数

11、码管,即给低电平亮,对单个数码管来说可以直接和单片机I/O连接,八段按顺序dp-g-f-e-d-c-b-a,和点亮LED的方法相同,看需要的字符是让那几个LED亮就为0,最后得出字符码。动态显示是用两个I/O口控制数码管的段选、位选,动态扫描显示是通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示。静态显示#include#defineuintunsignedint#defineucharunsignedcharuchartable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/09数字voidmain()用一个数组将0-9

12、的显示段码放在一起,在主函数调用的时候直接给里写需要现实的数字,即可显示相应的数字0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90是共阳极数码管0-9的显示码35715while(1)P2=table7;/调用数组里的第7个动态显示#include#defineuintunsignedint#defineucharunsignedcharucharsmg_wei=0x20,0x10,0x08,0x04,0x02,0x01;/位选,第05位,最右端为第0位ucharsmg_duan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x

13、82,0xf8,0x80,0x90,0xbf;/段选09/voidDelay(uintz)/延时z是个形式参数for(y=110;voidsmg(uintwi,du)/数码管函数P1=smg_weiwi;/调用数码管的位选数组P2=smg_duandu;Delay(1);/调用数码管的段选数组/延时稳定一下P1=P2=0xff;/P1、P2口初始化while(1)smg(0,5);smg(1,4);smg(2,3);smg(3,2);/第0位显示5/第1位显示4/第2位显示3/第3位显示216smg(4,1);smg(5,0);/第4位显示1/第5位显示0试验成功!17实验六:蜂鸣器一、实验原

14、理无源蜂鸣器,输入波形会响。单片机通过P2.7口直接连接无源蜂鸣器sounder,蜂鸣器另一端接地。sbitfmq=P27;/位定义蜂鸣器uinti;fmq=1;for(i=0;i18/初始化fmq=fmq;/无源蜂鸣器需要给定波形才会响因为采用的是无源蜂鸣器,内部没有振荡器所以需要通过fmq=fmq;给一个高低电平波形让蜂鸣器响,用一个for语句,并且把for语句放在while(1)大循环下面让蜂鸣器一直按固定的频率响。实验成功!19实验七:独立按键由单片机作为主控,蜂鸣器及周围电路作为输出设备,按键作为输入设备,实现按键按下去蜂鸣器响。蜂鸣器外接一个三极管放大电路三、程序代码sbitkey

15、=P20;20voidbutton()按键的调用函数,判断按键是否按下,第一次判断按下之后延时消抖再次判断按键是否按下,如果是按下了执行里面相应的内容,执行完之后进行一个松手检测,判断是否松手。在主函数的大循环之前将按键置为1,避免误读。四、实验结论fmq=1;key=1;/蜂鸣器赋初值不响/按键写1,避免误读if(key=0)Delay(20);fmq=0;/蜂鸣器响/消抖while(!key);/松手检测/大循环button();/调用按键函数2122实验八:继电器二、实验原理以单片机为主控,按键为输入设备,控制继电器的的开和关二、硬件电路图按键的一端接地,另一端接单片机的I/O口三、程序代码#include#defineuintunsignedint#defineucharunsignedcharsbitjdq=P20;sbitkey=P27;voidaj()23继电器的程序较为简单,只需要置0或者置1即可。五、实验结论jdq=0;jdq=jdq;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1