登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 用单片机点亮一个小灯并使其闪烁

[复制链接]
发表于 2018-1-26 09:38:11 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 在寒假将《手把手教你学单片机》所教内容学完
开始时间: 2018-01-26
结束时间:
点亮一个小灯并使其闪烁
在新建过一个工程后,要学会去看开发板原理图,观察怎样才能点亮一个小灯。
流程如下:
1.      要找到led电路图所在位置
5.PNG
2.观察怎样点亮一个led
1.PNG
(1)      首先需要使三极管导通(此处三极管相当于一个总开关),
由于三极管发射极已有5V电压,若要使其导通只需基极的LEDS6引脚是低电平。
3.PNG
可以看到LEDS6引脚是受芯片74HC138控制的,然后去看这个芯片的数据手册
6.PNG
可知若要使LEDS6是低电平则E1,E2,E3引脚需是L,L,H,
结合电路图可知这三个引脚已经预置好。而A0,A1,A2引脚应该设置为L,H,H,
由图可知P20,P21,P22分别对应A0,A1,A2.。再看单片机电路图。
4.PNG
可知只需使P20=0,P21=1,P22=1即可。
(2)      假如点亮最右边LED,只需使DB7为低电平。
2.PNG
DB7引脚受74HC245控制,再看74HC245芯片的数据手册:
7.PNG
若要使DB7为低电平,则OE引脚(ENLED引脚)应设置为低电平,输入引脚An(DB n引脚)设置为低电平。
再看单片机电路图
可知应该设置P1.1引脚(ENLED 引脚)为低电平,P0.7引脚为低电平。
然后开始写程序。
2.      程序:
#include<STC12C5A60S2.H>
sbitENLED = P1^1;               //定义ENLED表示P1.1引脚
voidmain()
{
    ENLED = 0;
    P20 = 0;
    P21 = 1;
    P22 = 1;
    P07 = 0;
    while(1);
}
3.      使小灯闪烁
要让小灯闪烁需要用到延时,在原先程序中加一个非精确延时就行了。
程序如下:
#include<STC12C5A60S2.H>
sbitENLED = P1^1;
voidmain()
{
    unsigned int i = 0;   
    ENLED= 0;
    P20 = 0;
    P21 = 1;
    P22 = 1;
   
    while(1)
    {
        P07 = 0;                          //LED亮
        for(i=0;i<60000;i++);     //延时
        P07 = 1;                         //LED灭
        for(i=0;i<60000;i++);    //延时
    }
}



好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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