《单片机项目实践教程刘燎原-项目二流水灯.ppt》由会员分享,可在线阅读,更多相关《单片机项目实践教程刘燎原-项目二流水灯.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 微控制器系统设计与应用微控制器系统设计与应用微控制器系统设计与应用微控制器系统设计与应用 刘燎原刘燎原 徐州建筑职业技术学院徐州建筑职业技术学院信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u实验实验1.Keil步骤步骤-编程,产生编程,产生.hex文件文件2.Proteus步骤步骤-画图,加载画图,加载.hex文件,仿真文件,仿真3.思考题:通过按键控制灯闪烁快慢思考题:通过按键控制灯闪烁快慢 带形参的延时程序带形参的延时程序信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院
2、徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u#include /包含包含AT89X52.H头文件头文件usbit LED=P10;/定义定义LED是是P1.0引脚对应的变量名引脚对应的变量名usbit sw=P30;uvoid Delay(unsigned int t)u u unsigned int i,j;u for(i=0;it;i+)u for(j=0;j255;j+);u uvoid main(void)uuwhile(1)u u LED=LED;u if(sw=0)Delay(100);u else Delay(500);u u信息电子信息电子
3、信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院 项目二 流水灯流水灯信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u知识目标知识目标:1.掌握单片机的内部硬件资源掌握单片机的内部硬件资源2.理解并运用相关指令理解并运用相关指令3.掌握微控制器的输出接口的电路形式与作用掌握微控制器的输出接口的电路形式与作用u技能目标:技能目标:1.掌握流水灯电路的制作掌握流水灯电路的制作2.掌握延时程序的计算和编写掌握延时程序的计
4、算和编写3.掌握掌握LED与单片机之间的连接与单片机之间的连接信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院任务任务4:控制八只发光二极管按一定的规律循环点亮控制八只发光二极管按一定的规律循环点亮 八个八个LED如何和单片机连接?如何和单片机连接?信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院uP1P1口接发光二极管口接发光二极管(LEDLED)的阴极,)的阴极,P1P1口口的管脚输出低电平时对的
5、管脚输出低电平时对应的发光二极管点亮。应的发光二极管点亮。n问题:问题:如何控制灯按顺序如何控制灯按顺序一个一个点亮?一个一个点亮?u通过程序按一定的规律向P1口的管脚输出低电平和高电平,控制八只发光二极管循环点亮。n问题:问题:程序怎么使程序怎么使P1P1口的口的管脚循环输出低电管脚循环输出低电平和高电平?平和高电平?首先要了解单片机的首先要了解单片机的并行并行I/OI/O口。口。信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u单片机经常要和外设之间传输数据(输入,输出),单片机经常要和外设之
6、间传输数据(输入,输出),P0P0,P1P1,P2P2,P3P3就是可以和外设完成并行数据传输的接口。就是可以和外设完成并行数据传输的接口。u一、一、P1P1口口u1.1.结构结构u其其1 1位的结构原理如图所示。位的结构原理如图所示。uP1P1由由8 8个这样的电路组成个这样的电路组成 u锁存器起输出锁存作用锁存器起输出锁存作用,u场效应管(场效应管(FETFET)V V组成输出驱动器组成输出驱动器,以增大带负载能力以增大带负载能力;u三态门三态门1 1是用于读锁存器端口是用于读锁存器端口;u三态门三态门2 2是引脚输入缓冲器是引脚输入缓冲器;信息电子信息电子信息电子信息电子 工程学院工程学
7、院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u2.2.功能功能u(1 1)输出(外接发光二极管)输出(外接发光二极管)uP1=0XdataP1=0Xdatau内部总线输出内部总线输出“0 0”,则,则D=0D=0,uQ=1Q=1,V V导通,则输出点导通,则输出点=0=0u(2 2)输入(外接开关)输入(外接开关)ua.a.读引脚读引脚uA=P1A=P1u读引脚脉冲有效,为高电平,把该三态缓冲器打开,这样端口引脚上的数据经过读引脚脉冲有效,为高电平,把该三态缓冲器打开,这样端口引脚上的数据经过三态门缓冲器读入到内部总线。三态门缓冲器读入到内
8、部总线。u如果输入数据走该通道,那么如果输入数据走该通道,那么V V是否对引脚有影响?有的。是否对引脚有影响?有的。u 如果锁存器原来寄存的数据如果锁存器原来寄存的数据Q=0Q=0,那么则,那么则V V导通,引脚始终被嵌位在低电平,不导通,引脚始终被嵌位在低电平,不可能输入外接电路的高电平。所以在输入前,必须用输出指令可能输入外接电路的高电平。所以在输入前,必须用输出指令向锁存器写入向锁存器写入“1 1”,使,使V V截止截止(断开断开),保证单片机输入的电平与外接电路电平相同。所以,保证单片机输入的电平与外接电路电平相同。所以P0P0口被称为口被称为一个一个准双向口准双向口。uP1=0XFF
9、HP1=0XFFHuACC=P1ACC=P1u复位时?复位时?ub.b.读锁存器读锁存器u如:ANL P0,A 称为“读-改-写”信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院二、二、P0P0口口1.1.结构结构与与P1P1不同:不同:多路选择开关多路选择开关(选择它的两种功能)(选择它的两种功能)V1V1:输出驱动器:输出驱动器2 2功能功能(1 1)输出)输出开关连接开关连接B B点,点,V1V1截止(其它同截止(其它同P1P1口)口)因为输出驱动器漏极开路,所以外接上拉电阻因为输出驱动器漏
10、极开路,所以外接上拉电阻(2 2)输入(准双向口,先写入)输入(准双向口,先写入“1 1”)外接上拉电阻(其它同外接上拉电阻(其它同P1P1口)口)(3 3)地址)地址/数据线数据线开关接在开关接在A A点,输出地址信号(低点,输出地址信号(低8 8位)或输出位)或输出/输入数据信号输入数据信号不需接上拉电阻不需接上拉电阻信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u三、三、P2口口u1.结构结构u多路选择开关(接在多路选择开关(接在Q上)上)u反相器、反相器、Q0输出驱动输出驱动u2.功能功
11、能u(1)输出(同)输出(同P1口)口)u(2)输入(同)输入(同P1口)口)u(3)地址总线(高)地址总线(高8位)位)u 与与P0口构成口构成16位地址位地址信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u四、四、P3P3口口u1.1.结构结构u2.2.功能功能u(1 1)输出(同)输出(同P1P1口)口)u(2 2)输入(同)输入(同P1P1口)口)u(3 3)第二功能)第二功能u第二功能输入:第二功能输入:u缓冲器缓冲器2 2关闭,关闭,P3P3口的口线状态通过缓冲器口的口线状态通过缓冲
12、器0 0送入送入“第二功能输入端第二功能输入端”u第二功能输出:第二功能输出:uQ Q端为高电平时端为高电平时,P3,P3口的口线状态就取决于第口的口线状态就取决于第2 2功能输出线的状态。功能输出线的状态。uuP3P3第二功能各引脚功能定义:第二功能各引脚功能定义:uP3.0P3.0:RXDRXD串行串行口输入口输入uP3.1P3.1:TXDTXD串行串行口输出口输出uP3.2P3.2:INT0INT0外部中断外部中断0 0输入输入uP3.3P3.3:INT1INT1外部中断外部中断1 1输入输入uP3.4P3.4:T0T0定时器定时器0 0外部输入外部输入 P3.5P3.5:T1T1定时器
13、定时器1 1外部输入外部输入uP3.6P3.6:WRWR外部写外部写控制控制 P3.7P3.7:RDRD外部读外部读控制控制信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院总结:总结:准双向口准双向口通用通用I/O口口上拉电阻上拉电阻(I/O口)口)其它用途其它用途P0口口 数据线数据线/低低8位地址线位地址线P1口口P2口口高高8位地址位地址线线P3口口第二功能第二功能信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐
14、州建筑职业技术学院u五、带负载能力(驱动能力)五、带负载能力(驱动能力)u负载能力就是说能够在一定的电压(负载能力就是说能够在一定的电压(0-5V)0-5V)下面能够灌入或拉出的最大电流。下面能够灌入或拉出的最大电流。u拉电流和灌电流是衡量电路输出驱动能力的参数,这种说法一般用在数字电路拉电流和灌电流是衡量电路输出驱动能力的参数,这种说法一般用在数字电路中。中。u1.1.灌电流灌电流(输出(输出低低电平)电平)u当负载的另一端接当负载的另一端接VCC/VDDVCC/VDD,输出端口输出低电平时,就会产生灌电流。,输出端口输出低电平时,就会产生灌电流。u就是从负载流向输出端口,就是从负载流向输出
15、端口,“灌进去灌进去”的电流的电流,一般是要吸收负载的电流,其吸一般是要吸收负载的电流,其吸收电流的数值叫收电流的数值叫“灌电流灌电流”。u2.2.拉电流拉电流(输出(输出高高电平)电平)u当负载的另一端接地,输出端口输出高电平时,就会产生拉电流;当负载的另一端接地,输出端口输出高电平时,就会产生拉电流;u就是从输出端口流向负载,就是从输出端口流向负载,“拉出来拉出来”的电流,的电流,一般是对负载提供电流,其提一般是对负载提供电流,其提供电流的数值叫供电流的数值叫“拉电流拉电流”.u一般地,一般地,LSTTLLSTTL即低功耗肖特基晶体管。即低功耗肖特基晶体管。1 1个个LSTTLLSTTL:
16、拉电流(高电平):拉电流(高电平)0.20uA,0.20uA,灌电流(低电平)灌电流(低电平)0.35mA0.35mA。u所以所以灌电流一般它比拉电流要大得多。灌电流一般它比拉电流要大得多。u3.I/O3.I/O口驱动能力口驱动能力 uP0:P0:灌入,驱动灌入,驱动8 8个(没有高电平能力,必须上拉电阻)个(没有高电平能力,必须上拉电阻),2.88,2.88mAuP1-3P1-3:灌入、拉,驱动:灌入、拉,驱动4 4个个,1.44,1.44mAu5151系列的芯片低电平的驱动能力比较大一点系列的芯片低电平的驱动能力比较大一点 。举例说明流水灯。举例说明流水灯u4 4个引脚,每个引脚灌电流个引
17、脚,每个引脚灌电流10mA每个端口每个端口8 8个引脚灌电流之和个引脚灌电流之和:P0:P0 26 26mA P1 P1、P2P2、P3 P3 15 15mA信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院任务任务4:控制八只发光二极管按一定的规律循环点亮控制八只发光二极管按一定的规律循环点亮向右循环点亮:向右循环点亮:第一次:第一次:D1亮,亮,P1.7输出低电平,其他都输出高电平输出低电平,其他都输出高电平 P1=FEH第二次:第二次:D2亮,亮,P1.6输出低电平,其他都输出高电平输出低电平
18、,其他都输出高电平 P1=FDH第八次:第八次:D8亮,亮,P1.0输出低电平,其他都输出高电平输出低电平,其他都输出高电平 P1=7FH信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院如何编程?如何编程?u方法一:方法一:u#include /包含包含AT89X52.H头文件头文件usbit LED=P10;/定义定义LED是是P1.0引脚对应的变量名引脚对应的变量名uvoid Delay(unsigned int t)u u unsigned int i,j;u for(i=0;it;i+)u
19、 for(j=0;j255;j+);u uvoid main(void)uu P1=0XFF;uwhile(1)u P1=0XFE;Delay(200);u P1=0XFD;Delay(200);u P1=0XFB;Delay(200);u P1=0XF7;Delay(200);u P1=0XEF;Delay(200);u P1=0XDF;Delay(200);u P1=0XBF;Delay(200);u P1=0X7F;Delay(200);u信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u方
20、法二方法二:(看数是否有规律?):(看数是否有规律?)u#include /包含包含AT89X52.H头文件头文件u#include /intrins.H中有循环左移函数中有循环左移函数uvoid Delay(unsigned int t)u u unsigned int i,j;u for(i=0;it;i+)u for(j=0;j255;j+);u uvoid main(void)uunsigned char m;u P1=0XFF;uwhile(1)u P1=0 xfe;Delay(200);u for(m=0;m8;m+)u P1=_crol_(P1,1);u Delay(200);u
21、 u u信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u方法三方法三:(数没有任何规律):(数没有任何规律)u#include /包含包含AT89X52.H头文件头文件usbit LED=P10;/定义定义LED是是P1.0引脚对应的变量名引脚对应的变量名uunsigned char code sz1=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;uvoid Delay(unsigned int t)u u unsigned int i,j;u
22、for(i=0;it;i+)u for(j=0;j255;j+);u uvoid main(void)uunsigned char m;uwhile(1)u u for(m=0;m8;m+)u P1=sz1m;u Delay(200);u u uuCode:表示数组的存储类型,存储在程序存储器表示数组的存储类型,存储在程序存储器信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院任务任务5:8个流水灯从先从上到下逐个点亮,然后再从下个流水灯从先从上到下逐个点亮,然后再从下到上逐个点亮,然后依次循环到上
23、逐个点亮,然后依次循环信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院实验实验3:,:,K1按下,按下,8个流水灯从上到下逐个点亮,若个流水灯从上到下逐个点亮,若K1断开,断开,8个流水灯从下到上逐个点亮,然后依次循环个流水灯从下到上逐个点亮,然后依次循环信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u#include /包含包含AT89X52.H头文件头文件usbit k1=p30;uunsign
24、ed char code sz1=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;uvoid Delay(unsigned int t)u u unsigned int i,j;u for(i=0;it;i+)u for(j=0;j255;j+);u uvoid main(void)uunsigned char m;uwhile(1)u u if(k1=0)u for(m=0;m0;m-)u P1=sz1m-1;u Delay(200);u u信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学
25、院徐州建筑职业技术学院徐州建筑职业技术学院关于关于LED的例子的例子1.要求P1.0所接的灯闪烁u#include usbit LED=P10;uvoid Delay(unsigned int a)uuunsigned char i;uwhile(-a!=0)uufor(i=0;i125;i+);uuuvoid main()uwhile(1)uLED=0;uDelay(1000);uLED=1;uDelay(1000);uuu红色段可改写为:LED=LED;DELAY(1000);信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑
26、职业技术学院徐州建筑职业技术学院u2、八个灯循环点亮、八个灯循环点亮u#include uvoid delay(unsigned int a)uuunsigned char i;uwhile(-a!=0)uufor(i=0;i125;i+);uuuvoid main()uuunsigned char k,i;u while(1)u u k=0 xfe;u for(i=0;i8;i+)u P1=k;u delay(1000);u k=k1;u k=k|0 x01;uu u u信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术
27、学院徐州建筑职业技术学院u3、左右来回循环流水、左右来回循环流水u#include u#include uvoid delay(unsigned int a)uuunsigned char i;uwhile(-a!=0)uufor(i=0;i125;i+);uuuvoid main()uuunsigned char i,j;u P1=0 x7f;u while(1)u u for(i=0;i8;i+)u P1=_crol_(P1,1);u delay(1000);u u for(j=0;j7;j+)u P1=_cror_(P1,1);u delay(1000);u u u 信息电子信息电子信息
28、电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u4、花样流水灯(无规律)、花样流水灯(无规律)u#include uunsigned char code sz1=0 x7e,0 xbd,0 xdb,0 xe7,0 xdb,0 xbd,0 x7e,0 x00,0 xff;uvoid delay(unsigned int a)uuunsigned char i;uwhile(-a!=0)uufor(i=0;i125;i+);uuuvoid main()uuunsigned char i;u while(1)u u fo
29、r(i=0;i9;i+)u P1=sz1i;u delay(1000);uu u u信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u5.交通灯交通灯u6.蜂鸣器蜂鸣器信息电子信息电子信息电子信息电子 工程学院工程学院工程学院工程学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院徐州建筑职业技术学院u学生分组讨论以下问题,:学生分组讨论以下问题,:1.带负载能力小,会怎样?(数码管,发光二极管)2.增加负载能力的方法u提出问题:画出流水灯电路提出问题:画出流水灯电路u总结总结u布置作业布置作业u实验实验3:编程、仿真编程、仿真8个流水灯从上到下逐个点亮个流水灯从上到下逐个点亮u实验实验4:熟悉开发板,学会使用开发板:熟悉开发板,学会使用开发板 K1按下,按下,8个流水灯从上到下逐个点亮,若个流水灯从上到下逐个点亮,若K1断开,断开,8个个 流水灯从下到上逐个点亮,然后依次循环。流水灯从下到上逐个点亮,然后依次循环。
限制150内