登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 第一章:IO口与LED

[复制链接]
发表于 2017-1-29 21:21:17 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C51
学习安排: 详见:http://bbs.hpuedd.com/forum.php?mod=viewthread&tid=837&fromuid=385
开始时间: 2017-01-22
结束时间: 2017-01-22
先说一下IO口

IO(Input/Output)

也就是说它可以输出高电平或低电平

并且它所使用的电平为TTL

逻辑1为5v

逻辑0为0v

可上下波动,具体请看附连

(附连:TTL电平

单片机是一种可编程设备

也就是可以用程序进行控制

我们所用的12系列一共有40引脚

如图:

1-2.PNG

除了某些特定功能引脚以外,大都可以用程序操控

(PS:因为本帖不涉及IO口模式变更,所以不在此赘述)

先看一下IO口的通常用法

(在此之前先声明一下,因为IO口驱动能力有限通常使用低电平导通器件(外设))

1-3.PNG

用IO口控制三极管,以此来驱动外设

如我们板子上的LED与数码管

1-1.PNG

用的全是低电平导通(9012)

并且为了防止IO口驱动能力不够,使用了74HC245驱动芯片

(附连:74HC245

(PS:为了防止电流过大烧坏器件,图中都加了限流电阻)

至此,IO口就了解这么多

接下来是LED

首先找出LED与单片机的物理链路

1-4.PNG 1-5.PNG

P0口(P0.0-0.7,一共8个口)与74HC245输入口相连

并且,要想74HC245输出,应将OE置低

那么OE连在哪里?

1-6.PNG

P1.1引脚

此时,还要打开LED的输入端

1-7.PNG

也就是38译码器的Y6

6换算成二进制110

也就是P2.0=0;P2.1=1;P2.2=1;

综上,要想让LED亮,需要

P0,P1.1,P2.0-2

这12个引脚

先添加头文件

#include<stc12c5a60s2.h>//单片机的头文件

如果是89系列也可以使用此文件(但部分功能不支持)

(如果添加失败,请参照序章)

然后再用sbit声明这些引脚

如:

1-8.PNG

(不一定非要用大写,笔者为了便于后期整合所以使用大写)

然而,对于P0口来说,这种声明方法非常麻烦

我们可以再不需要声明的情况下进行整体赋值

如:

1-9.PNG

此时使用16进制给P0口赋值

则从高位到低为依次为

1010 1010//0xaa

我们将LED使能打开,将245驱动打开

则:

2-1.PNG

使用KEIL软件,生成HEX文件(详见序章)

使用STC-ISP先导入程序然后进行下载

(PS:提示和单片机握手时,需进行断电再上电一次,也就是按开关)

最后效果

2-2.jpg

LED灯隔一个亮一个

若要进行流水

可以写如下程式

(此时我使用下载器自带软件延时功能,也可以自己编写,建议先自己编写后对照使用)

2-2.PNG

关于如何编写软件延时函数

基本方法是让机器执行一些无用的循环

如:

unsigned int a;

for(a=0;a<60000;a++);(这里不能使其大于某一数值,否则会发生错误,应该是数据位宽不够造成的)

之类的,并不精确,并且浪费MCU资源

这就是这篇的内容-LED与IO

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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