09第九讲输出型外设与51io口力天手把手教你学单片机之实战篇一_第1页
09第九讲输出型外设与51io口力天手把手教你学单片机之实战篇一_第2页
09第九讲输出型外设与51io口力天手把手教你学单片机之实战篇一_第3页
09第九讲输出型外设与51io口力天手把手教你学单片机之实战篇一_第4页
09第九讲输出型外设与51io口力天手把手教你学单片机之实战篇一_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手把手教你学51单片机

——之MCS-51实战篇

主讲:尹延辉策划:张勇开发板:LT-Super51QQ群:31646346网址:E-Mail:

实战篇第一讲

——输出型外设与51的IO口本讲内容提要MCS51的IO口概述LED与流水灯蜂鸣器继电器应用实例习题温故知新

——C语言函数与预处理函数定义的一般形式无参函数与有参函数函数参数和函数的值形参与实参,返回值与函数类型局部变量和全局变量变量的作用域,变量同名的处理预处理命令概述三种预处理命令,与C语句的区别宏定义无参宏与有参宏,有参宏与函数的区别条件编译条件编译用途,三种常见形式文件包含多文件程序释疑解惑

——C语言函数与预处理填空题C语言函数的实参可以把自身数值传递给形参,形参不可以(可以,不可以)把自身数值传递给实参。在函数内部定义的变量称为局部变量。作用域可以达到整个文件的变量是全局变量。C提供的预处理功能主要有以下三种:

宏定义,条件编译,文件包含。预处理中的参数宏可以实现类似函数的功能。实验题设计一个函数完成以下功能:计算一个字符型变量循环左移任意位之后的值。提示:循环左移的意思是将左边移出的位补在右边空出的位上;本函数需要2个参数,一个是待移位的原始数据,一个是循环左移的位数;一个返回值,返回第一个参数循环移位后得到的结果。将第三讲中的1秒延时函数封装在一个名为delay.c文件中,并设计一个头文件使该函数可以正常被外部调用。新语新知

——MCS51的IO口概述寄存器RAM中的一些特殊单元,映射到片上外设相应的功能IO口概述可以将“0”与“1”转换为电压信号的端口单片机中最常用的TTL电平:0V代表“0”,+5V代表“1”MCS51有4个8位IO口:P0,P1,P2,P3IO口的性能指标灌电流能力:能够流入IO口的最大电流拉电流能力:能够从IO口流出的最大电流上拉电阻与下拉电阻最大输入电压新语新知

——IO口的两种状态输入与输出口的等效模型输入口等效模型输出口等效模型新语新知

——IO口的输出性能指标MCS51的拉电流能力<100uA,灌电流能力10mA使用MCS51的IO直接驱动LED、数码管等均采用“共阳”接法灌电流能力:能够流入IO口的最大电流拉电流能力:能够从IO口流出的最大电流共阳接法共阴接法新语新知

——IO口的输入性能指标能够承受的最大输入电压范围是否有上拉电阻MCS51的IO口输入状态时有弱上拉电阻效应,值为100k数量级最大输入电压范围:-0.5V~Vcc+0.5V新语新知

——IO、寄存器与变量IO口与IO寄存器的映射(x代表0~3)IO口寄存器:PxC语言变量与寄存器的映射reg52.h这个文件中将所有寄存器映射为同名的变量,对这些变量的读写相当于对寄存器的读写输出状态IO寄存器设置Px某一位置1或0,对应IO口相应位的电平高低在读取Px某一位之前,要向该位写入1,然后读回的数据真实反映该位IO口的输入状态。新语新知

——C语言与硬件环境的映射新语新知

——位运算回顾移位运算符:左边为最高位,右边为最低位左移<<左移n位相当于乘2n运算,左侧n位丢弃,右侧补n个0右移>>右移n位相当于乘2-n运算,右侧n位丢弃,左侧补n个0将某一位置1、置0、取反置1:相应位与1进行按位或|运算:P0|=(1<<n);置0:相应位与0进行按位与&运算:P0&=~(1<<n);取反:相应位与1进行按位异或^运算:P0^=(1<<n);MCS51特有的位操作(位变量):sbitsbitLED_BIT=P1^6;LED_BIT=1;//P1.6输出1新语新知

——发光二极管发光二极管(LED)技术指标封装:直插:贴片:08050603颜色:红黄绿,白发红、白发绿、白发蓝、白发白,双色或者三基色结压降:1.8V~3V不等

新语新知

——蜂鸣器有源蜂鸣器加上电源电压即可发出鸣叫声,消耗电流20mA左右MSC51的IO口无法提供大电流,需要用三极管扩流学习板上采用74HC573驱动蜂鸣器新语新知

——继电器基本原理:低压电控制高压电通断,电磁铁原理。技术指标:线圈额定电压,触点最大电压、触点最大电流LT-Super51学习板用的继电器线圈额定电压:5V触点电压、电流:AC220V/DC30V,3A新语新知

——流水灯部分原理图新语新知

——流水灯例程(1)实验一闪烁灯实验目的:利用8位流水灯写一个最简单的程序,对单片机编程有一个初步而直观的了解。实验现象:8位流水灯(位于学习板左上角的D2~D9)周期性的同时亮灭闪烁,闪烁周期为2S。实验原理:U11-74HC573的L端通过开关连接在单片机IO口P1.6上,当P1.6输出逻辑’1’(高电平,+5V)时,74HC573相当于直通的作用,可以将单片机P0口的状态反映在8路输出上,而输出端接了8个LED,故P0口输出高电平时对应位的LED发光。在单片机的编程环境中,P0对应一个1字节的无符号字符型变量,我们在程序中对此变量赋值,反映到学习板上的现象就是P0口输出的变化。因此我们在程序中先将P0赋值0xff,此时代表8个LED全亮,然后延时1秒;再将P0赋值0x00,然后再延时1秒。然后将此2步骤的代码放到一个死循环的循环体中,实现LED的循环闪烁。注意事项:标有LED的开关拨到上方开的位置;如果实验过程中蜂鸣器鸣响,可以将标有OUTPUT的开关拨下来关掉蜂鸣器。新语新知

——流水灯例程(2)实验二1位流水灯实验目的:利用1位的流水灯实验了解移位运算符,并对字符型变量对应到硬件上的涵义有深入了解。实验现象:1位发光的LED在8位LED上周期性的循环移位,移位时间间隔为1S。实验原理:利用C语言的移位运算符使1位发光的LED产生移位,通过检查P0的数值是否为0判断是否移出8位的位置,如果移出了,则给P0重新赋初值,从而实现循环移位。注意事项:标有LED的开关拨到上方开的位置;如果实验过程中蜂鸣器鸣响,可以将标有OUTPUT的开关拨下来关掉蜂鸣器。新语新知

——流水灯例程(3)实验三2位流水灯实验目的:利用2位的流水灯实验了解移位运算符,并对字符型变量对应到硬件上的涵义有深入了解。实验现象:2位发光的LED在8位LED上周期性的循环移位,移位时间间隔为1S。实验原理:利用C语言的移位运算符使2位发光的LED产生移位,通过检查P0的数值,判断2位发光的LED的位置,从而实现循环移位。注意事项:标有LED的开关拨到上方开的位置;如果实验过程中蜂鸣器鸣响,可以将OUTPUT开关关掉。新语新知

——流水灯例程(4)实验四模块化设计的闪烁灯程序实验目的:通过对实验一的相关代码进行函数封装与预定义处理,熟悉模块化编程的方法。实验现象:(同实验一)8位流水灯(位于学习板左上角的D2~D9)周期性的同时亮灭闪烁,闪烁周期为2S。实验原理:将实验一中用于延时的代码封装成函数,对LED操作的代码封装成预定义宏的形式。注意事项:标有LED的开关拨到上方开的位置;如果实验过程中蜂鸣器鸣响,可以将标有OUTPUT的开关拨下来关掉蜂鸣器。新语新知

——流水灯例程(5)实验五速度可调的1位流水灯程序实验目的:通过对实验二的相关代码进行函数封装与预定义处理,熟悉带参数的函数使用方法。实验现象:(同实验二)1位发光的LED在8位LED上周期性的循环移位,移位时间间隔可在代码中调整。实验原理:将实验二中用于延时的代码封装成带参数的函数,对LED操作的代码封装成预定义宏的形式。注意事项:标有LED的开关拨到上方开的位置;如果实验过程中蜂鸣器鸣响,可以将标有OUTPUT的开关拨下来关掉蜂鸣器。新语新知

——蜂鸣器部分原理图新语新知

——蜂鸣器等效原理图新语新知

——蜂鸣器例程(1)实验七蜂鸣器周期性鸣响实验实验目的:初步了解有源蜂鸣器的用法。实验现象:蜂鸣器周期性鸣响,周期为2S。实验原理:学习板上采用的是有源蜂鸣器,即“给电即响”,控制蜂鸣器的IO口(P0.3)输出高电平时蜂鸣器就会鸣响,低电平时蜂鸣器关闭。因此结合1S延时函数,隔一秒钟对P0.3取反一次,即可达到预计的实验效果。新语新知

——蜂鸣器例程(2)实验八蜂鸣器与流水灯同时工作实验实验目的:初步掌握利用74HC573锁存器实现IO口复用的原理与方法,理解通过数字芯片产生片选信号的原理。实验现象:蜂鸣器周期性鸣响,周期为2S;同时1位流水灯以1S为周期循环移动实验原理:在实验六中,可以观察到蜂鸣器鸣响的同时,流水灯第3位也同时闪烁,这是因为我们没有把控制流水灯的74HC573的片选信号置为低电平。我们可以利用74HC573的锁存、数据保持功能,分别将流水灯与蜂鸣器的数据输出到锁存器,使得流水灯与蜂鸣器同时工作而互不影响。根据图5.2.1,可以看出P2.7~P2.3输出为二进制的10001时,U24C的第8脚为低电平,此时P3.6(WR)也为低电平时,U24C会输出高电平(U24C是一个或非门,0与0取或后结果为0,再取非结果为1)。因此保持P2口数据为二进制10001000(十六进制0x88),P3.6给一个低电平就可以将控制蜂鸣器的74HC573选通(L端为高电平),P3.6恢复高电平使得74HC573锁存数据(L端恢复低电平)。因此这一句代码实现的功能是使得控制蜂鸣器的74HC573处于直通状态。P3&=~(1<<6);

P2=0x88;新语新知

——蜂鸣器例程(3)实验九英特尔总线方式控制蜂鸣器实验目的:学习时序图的用法,初步掌握英特尔总线的工作时序与使用方法,理解利用数字芯片和74HC573制作英特尔总线输出型单元的方法。实验现象:蜂鸣器周期性鸣响,周期为2S;同时1位流水灯以1S为周期循环移动。(同实验七)实验原理:英特尔总线时序相关原理见4.5节。对于外部存储器的访问,常用的有两种方式,一是直接通过xdata关键字定义位于外部SRAM中的变量,二是通过XBYTE[Addr]的方式直接按地址访问总线存储单元。LT-Super51学习板的控制蜂鸣器IO相当于处于特定地址(Addr=0x8800)的一字节外部存储单元,因此宜采用第二种方式访问。采用这种访问方式,需要包含头文件absacc.h。注意代码的第26行,可以看出用这种方式操作扩展IO是极其方便的。新语新知

——继电器部分原理图新语新知

——继电器等效原理图新语新知

——继电器例程(1)实验十二继电器定时实验实验目的:初步了解继电器的工作原理与使用方法。实验现象:继电器周期性吸合与断开,周期为2S。实验原理:相比于蜂鸣器,继电器的工作电流要大很多(蜂鸣器20mA,继电器100mA左右),学习板上采用NPN型三极管D8050驱动继电器。输出到三极管的基极的IO口(P0.2)输出高电平时继电器就会吸合,低电平时继电器断开。因此结合1S延时函数,隔一秒钟对P0.2取反一次,即可达到预计的实验效果。动手实战

——课后习题填空题MCS51的IO口拉电流能力是____,灌电流能力是____,因此用MCS51驱动LED

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论