51单片机入门。

简单介绍

1.单片机简称MCU,内部集成cpu,存储器(ROM,RAM),定时器,中断系统,通讯接口等。其中,ROM掉电数据丢失。

2.单片机依靠传感器采集信息,依靠cpu处理信息,控制硬件设备。

3.优点:体积小,成本低。

4.51单片机为8位机,字长八位

LED的闪烁。

1.c51常用数据类型。

使用方法:

2.c51基本语句。

3.以1s为周期控制LED灯的闪烁。

#include <REGX52.H>
#include<INTRINS.H>//_nop_();的头文件
void Delay500ms()    //@12.000MHz
{
    unsigned char data i, j, k;

    _nop_();
    i = 4;
    j = 205;
    k = 187;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}//延时函数

void main()
{
    
    while(1)
    {
    P2=0xFE;
    
        Delay500ms();
        
    P2=0xFF;
        
        Delay500ms();
    }


}

4.自定义延时函数,用左移函数_crol_()实现流水灯。

#include <REGX52.H>
#include<intrins.h>//_crol_()函数的头文件一定要写

void Delay1ms(unsigned int x)    //@12.000MHz
{
    unsigned char data i, j;
while(x--)//自定义延时函数,循环x次1ms的延时
{
    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
}
}
unsigned int LED=0XFE;//unsigned int 为2个字节大小,unsigned char为1个字节大小
unsigned  int  time=1000;

void main()


{
    while(1)
    {
        P2=LED;
        LED=_crol_(LED,1);//不要对P2口直接操作,右移函数为_cror(a,b)_,a为操作对象,b为移动步长
 
       Delay1ms(time);
        time=time-200;//使流水灯速度逐渐加快
        
    }
    
}

5.独立按键实现流水灯。

#include <REGX52.H>
#include<intrins.h>
void Delay1ms(unsigned int x)    //@12.000MHz
{
    unsigned char data i, j;
while(x--)
{
    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
}
}

void main()
{
    unsigned int led=0xfe;//一定要定义在while循环外面,要不然只能移位一次又从头开始了
    while(1)
    {
        
        if(P3_1==0)//当开关按下时,开关的接口电平为0
        {
           P2=led;
            led=_crol_(led,1);
            Delay1ms(200);
        }

         else(P2=0XFF);
     }
}

6.独立按键控制LED的状态

按键按下和松开会有抖动

#include <REGX52.H>
#include<intrins.h>
void Delay1ms(unsigned int x)    //@12.000MHz
{
    unsigned char data i, j;
while(x--)
{
    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
}
}

void main()
{
    
    while(1)
    {
        if(P3_1==0)
        {
            Delay1ms(20);//利用延时,屏蔽掉按下到平稳时的抖动
            while(P3_1==0);//代表着开关按下到松开之间开关稳定的时候
            Delay1ms(20);//当P3_1不等于0时,即松开开关的过程,利用延时,屏蔽掉平稳到松开时的抖动
            P2_0=~P2_0;//取反
   
        }
        
    }
    

7.独立按键控制LED显示二进制数(从0开始)

#include <REGX52.H>
#include<intrins.h>
void Delay1ms(unsigned int x)    //@12.000MHz
{
    unsigned char data i, j;
while(x--)
{
    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
}
}
void main()
{
    unsigned char a=0;
    while(1)
    {
        if(P3_1==0)
        {
            Delay1ms(20);
            while(P3_1==0);
            Delay1ms(20);//消除开关的抖动


            P2=~a;//因为LED灯1灭0亮,要让LED灯从0开始显示二进制数,就要让P2=0xFF,即全灭,所以取反(11111111,11111110,11111101,11111011,…………)
            a++;//(00000001,00000010,00000100…………)
            
            
        }

相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机,具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候,我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出,或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似,编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲的全是C方面的,完全在浪费你的时间! 呵呵 ^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概念还是比较模糊,现作如下说明:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值