您的位置:控制工程论坛网论坛 » 教程与手册 » 51单片机教程 第二课:跟我来编一个最简单的单片机程序

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

51单片机教程 第二课:跟我来编一个最简单的单片机程序

xilinxue  发表于 2008/10/11 13:34:48      789 查看 1 回复  [上一主题]  [下一主题]

手机阅读

在汇编语言中,让某个端口输出高电平或低电平都有专用的语句,以P1.0端口为例:

让该端口输出高电平的语句是:

SETB      P1.0

让该端口输出低电平的语句是:

CLR       P1.0

好了,现在我们将小灯接在单片机的P1.0端口上,如下图所示:

      6

由上图可知,当端口P1.0输出高电平时,小灯D不亮,因为小灯中不会有电流通过;当端口P1.0输出低电平时,小灯就亮,因为此时小灯中有电流通过。

要让小灯亮一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让小灯亮一会儿、灭一会儿,交替闪烁的程序:

MAIN:                        ;程序开始

          SETB     P1.0       ;P1.0输出高电平

          LCALL   DELAY    ;这一行是调用延时子程序

                              ;目的是让P1.0保持高电平

;多停留一段时间

          CLR       P1.0      ;让P1.0输出低电平

          LCALL   DELAY    ;这一行也是调用延时子程序

                              ;和刚才一样,让P1.0保持低

;电平停留一段时间,其实就

;是让它多亮一会儿再熄灭

          LJMP      MAIN      ;跳转到MAIN处执行(循环)

;以下是延时子程序,有关该延时程序的内容以后再学

          DELAY:    MOV     R7,#250

          D1:       MOV     R6,#250

          D2:      DJNZ     R6,D2

      DJNZ     R7,D1

                    RET

                    END

在以上汇编程序中,延时子程序每一行的具体含义先不管他,以后慢慢学到,上面的程序需要在一个名为“Keil uVision2”的软件中汇编完成,汇编后得到一个*.hex文件,这就是目标文件,然后用编程器将该文件“写”到单片机89s51中,这样该89s51就具有自动控制小灯闪烁的功能了。

在实验的时候,通常用发光二极管LED代替小灯,由于LED工作电压小,由此LED要串接一个小电阻,用220欧姆——1k之间的都行,我用的是510欧姆的。

   6

这样还不够,单片机工作还需要两个条件,一是需要加上一定的工作电压,AT89S51工作电压为5V,第20脚接负极,第40脚接正极;另外还要给单片机安装一个心脏起搏器,就是振荡器,通常叫做时钟,只要在18脚和19脚之间接一个石英晶体就行了,我用的是12MHz的,另外为了保证振荡器稳定工作,还要在18脚、19脚分别接一个27PF的小电容到地(就是接到负极),此外,89s51的第9脚为复位端,要接一个10uF电容到正极,再接一个10K电阻到负极,最后,第31脚也要和电源的正极接起来,关于31脚,以后再说,这样一台由单片机控制的会自动闪烁的小灯就做好了。下面是完整的电路图:

7

没有使用的管脚空着就行了,什么也不用接。一通上电,小灯就开始不停的闪烁了。大约1秒钟闪烁3——4次。

这个小产品,尽管简单的不能再简单了,但这的的确确是一个完整的开发过程,本人实在想不出比这个再简单的项目了,有关软件的使用今后慢慢说,如果大家有兴趣,今后我将陆续做一些大一些的工程,各位也可以提出课题,我来实施,当然有些可能出于技术保密不能完全公开代码,欢迎各位捧场。

1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2008/10/11 13:34:48

    我会在后面给大家解释清楚的,希望能对大家有帮助
    2楼 回复本楼

    引用 xilinxue 2008/10/11 13:34:48 发表于2楼的内容

总共 , 当前 /