中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 谷歌商城 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管 | 二极管 |  C语言汇编语言SCADA元器件模拟电子 |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·单片机实现数据远程监控
·单片机控制的模拟开关灯实验
·最常应用的流水闪烁灯实验
·第二章   Keil C软件使用…
·第一章  AT89S51单片机实验及实践…
·运算放大器的噪声分析
·RS-232C接口标准详解
·利用串口对 89S 系列单片机编程…
点击TOP(10)  
  • 此栏目下没有热点文章
  • 图片文章  

    单片机实现数据远程…

    单片机控制的模拟开…

    最常应用的流水闪烁…

    第二章   Keil C软…
     
    您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 行业动态 >> 正文

    最常应用的流水闪烁灯实验
    文章来源:不详 点击数: 更新时间:2008-5-7 【字体:
    (欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


    相关文章:

    没有相关文章

  • 上一个文章:

  • 下一个文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖最常应用的流水闪烁灯实验〗的最新评论:

    初学单片机最常应用的流水闪烁灯实验:

    1.  实验任务

    如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

    2.  电路原理图

    图4.1.1

    3.  系统板上硬件连线

    把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

    4.  程序设计内容

    (1). 延时程序的设计方法

    作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:

     

    如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒

    机器周期 微秒

    MOV R6,#20 2个  2

    D1: MOV R7,#248 2个  2       2+2×248=498 20×

    DJNZ R7,$ 2个  2×248             (498

    DJNZ R6,D1 2个   2×20=40           10002

    因此,上面的延时程序时间为10.002ms。

    由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:

    DELAY: MOV R5,#20
    D1: MOV R6,#20
    D2: MOV R7,#248
    DJNZ R7,$
    DJNZ R6,D2
    DJNZ R5,D1
    RET

    (2). 输出控制

    如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

    5. 程序框图

       如图4.1.2所示

     

     

     

     

     

     

     

     图4.1.2

    6. 汇编源程序
    ORG 0
    START: CLR P1.0
    LCALL DELAY
    SETB P1.0
    LCALL DELAY
    LJMP START
    DELAY: MOV R5,#20 ;延时子程序,延时0.2秒
    D1: MOV R6,#20
    D2: MOV R7,#248
    DJNZ R7,$
    DJNZ R6,D2
    DJNZ R5,D1
    RET
    END

    7. C语言源程序
    #include <AT89X51.H>
    sbit L1=P1^0;

    void delay02s(void) //延时0.2秒子程序
    {
    unsigned char i,j,k;
    for(i=20;i>0;i--)
    for(j=20;j>0;j--)
    for(k=248;k>0;k--);
    }


    void main(void)
    {
    while(1)
    {
    L1=0;
    delay02s();
    L1=1;
    delay02s();
    }
    }

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵犯您的权利,我们将予以删除  鲁ICP备08006092号
    本站欢迎同类网站做友情链接,QQ留言
    中国IEEE 中国电气电子工程师网 版权所有