找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4597|回复: 0
打印 上一主题 下一主题
收起左侧

零基础学习C51单片机简明实用教程--第一课点亮LED

[复制链接]
跳转到指定楼层
楼主
ID:299360 发表于 2018-4-13 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下内容为我理解的单片机及程序。51单片机,简单的可以实现交通灯功能,一般的可以驱动机器人,打印机等,可以实现温度、压力自动控制。复杂的可以制成例如俄罗斯方块等游戏机。其他还有很多等待你改变世界......。

本课程以STC80C51系列芯片为基础(STC80C52,STC80C51RC,80C52RC均可),强调实用、简单为特点,适合没有基础的学生学习,后续课程陆续更新中。
适应范围:有一点电子基础,会用烙铁(当然不会也可以用面包板),万用表,这是一个硬件和软件结合的事业,这里主要讨论C程序部分.
学习前的准备工作:1.要有一块学习版(因为新手焊接技术也不一定过关)或最小系统板。
                           2.要有电脑并安装C程序编辑软件KEIL、和烧录芯片的软件stc-isp-v6.86L程序见附件
                           3.能上网查询相关资料,STC80C52资料见附件,相关软件安装及使用可搜索百度。
准备工作做完了我们来编程:
目标让一个LED灯亮:  打开vision4软件输入

#include <at89x52.h>   //斜杠就是注释的意思,第一行就是将at89x52的注册表加进来                                                                //也可以在程序里点右键打开看看都有啥。编程必备语句。
void main()                 //程序从这开始,编程必备语句。
{                               //程序包含内容的起点标记
   P2_0=0;                    //让芯片P2.0脚为低电平,如你的机器上P2.0脚连着LED,就可以点亮要注意学习板连接
  }                             //程序包含内容的终点标记

以上程序就写完了,虽然不太标准,但好用,编辑一下形成.hex文件,这就是点亮一个LED的C 程序,然后用STC-ISP-V6.86烧录
注意事项:
             1.  P一定要大写,后面一定要加分号,0是零不是英文字母O
             2.  vision4软件需设置HEX输出,在闪存---配置闪存工具---输出---选中产生HEX文件--确定,芯片ATMEL---AT89C51即可。
             3.  STC-ISP-V6.86软件,注意先点下载,然后再打开学习版电源才能烧录成功,芯片型号必须对
是不是很简单啊,实际编程也没那么难,不用学太多理论,先点亮一个灯再说这样比较有兴趣。那点亮两个呢三个呢学习版一般会配7个你都可点亮
扩展:
       #include <at89x52.h>
        void main()
      {
       P2_0=0;
       P2_2=0;
       }

这就是点亮两个的程序同样你可以同时点亮7个(一般学习版会有七个供直接点亮的LED),其实能点亮LED理论上你就可以点继电器模块、直流小电机、小风扇等等。
让我们再扩展一下让蜂鸣器响:

        #include <at89x52.h>
        void main()
       {
         
         P1_5=~P1_5; //假设你的学习版P1.5是蜂鸣器那就可以响了
       }

注意:输入程序一定要在纯英文输入状态输入这个~,它的意思是状态翻转从高电平到低电平再高电平循环,直接 P1_5=0是不行的,因为得震动,但发过来这个符号是可以点亮LED的,学不在多要会活用。

       #include <at89x52.h>
        void main()
      {
       P2_0=~P2_0;
        
       }

虽然是亮了只是有些暗,为什么呢?因为其实它是在快速闪,其实让灯亮还有正规写法
  
      #include "at89x52.h"   

      sbit led=P2^0;           //将单片机的P2.0端口定义为led

      void main()
     {
        while(1)     //后面括号里的程序循环
          {
          led=0;        //P2.0端口设置为低电平
          }               
     }

这又是一种写法也可以点亮LED,自己多试验一下吧。

学习板自带的烧录程序也可以烧录,好处就是可以开机直接烧不用关机,坏处是有些芯片烧不了所以建议一开始就用STC-ISP烧。再拓展一下点亮LED的方法:
#include "at89x52.h"        
void main()
{
P2=0xfe;    //这点亮的是P2.0口的灯,P2.1是0xfd,全亮是0x00
}

这是16进制的表示方法,以后学习复杂的程序必须用的,所以有时间看看背一下2进制、10进制、16进制的转换,有助于以后学习。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表