Lesson02:八位LED发光管操作(旧博客迁移)

LED发光二极管是最常用的输出指示设备,具有操作简单、价格低廉的优点。相应的电路原理图如图2.1所示:

一、电路分析

由上图可知,如果要LED点亮需保证总开关三极管Q7处于饱和导通状态,同时对应的LED端口P0.0~P0.7为低电平(0V)。三极管Q7为PNP型中功率管S8550,只要在三极管的基极B(2脚)施加一个高电平(5V),则三极管发射极E(1脚)和集电极C(3脚)为饱和导通状态,Vce≈0.3V。当Ve=5V时,Vc=4.7V,串接在基极上的4.7K的电阻R16起到保护三极管的作用。实验板上的LED为红光LED,其导通电压约为1.7V左右,导通电流为1~10mA。电阻R17~R24为LED的限流电阻,保护LED防止流经LED的电流太大损坏LED。限流电阻的选取计算为R=(Vcc-Vled)/I=300~3K,这里选取的是470Ω。不同颜色的LED其导通电压不同,一般其导通电流不超过10mA。

常用的三极管分为NPN和PNP型,实验室提供901x系列和8050、8550,三极管引脚定义:有字符一面从左至右依次为E、B、C。LED引脚定义:长正短负,或用万用表二极管档位测量。三极管和LED的外观如图2.2所示:

二、软件编程

根据前文分析,可知点亮LED的步骤为:打开LED总开关Q7,执行P3.7=1;设置P0.0~0.7=0。

为了规范编程,我们对实验板所有的外设进行了端口定义(WA51.h)和编写外设驱动函数(WA51.c),在主函数(main.c)中进行函数调用。

1、编写用户库文件WA51.h

2、编写外设驱动源文件WA51.c

3、在主函数中进行LED驱动函数调用

实现了LED0~LED3依次亮灭500ms,LED4~LED7依次点亮500ms,周而复始。

原文地址:https://www.cnblogs.com/wuq-hz-zj/p/10168530.html

时间: 2024-11-09 06:03:12

Lesson02:八位LED发光管操作(旧博客迁移)的相关文章

Lesson01:W-A_51单片机实训板介绍(旧博客迁移)

一.开发板介绍 单片机实训板是以Atmel公司的AT89S52单片机为核心的实验板,主要资源包括以下部分: 1.输入单元--四个独立按键/十六个矩阵按键(通过短路帽跳线选择),一个PS2键盘/鼠标接口 2.输出单元--八位LED发光管/四位动态扫描数码管/1602液晶(共用P0口),蜂鸣器,继电器 3.存储单元--SPI串行存储器AT93C46,I2C串行存储器AT24C02 4.实时时钟--DS1302(SPI接口) 5.数字温度传感器--DS18B20(单总线接口) 6.串行ADC--TLC

测试MCU I/O和CPLD的通信(旧博客迁移)

一.硬件连接 STC89LE52RC的P0[7:0].P2[7:0].P3[7:2].P1[2:0]和ALE共26个信号与EPM1270相连: 另外利用CPLD外接的四位拨码开关和八个LED灯进行控制及指示: 二.测试流程 根据四位拨码开关的状态,选择P0~P3的端口值输出到LED上,用ALE作时钟同步: 三.C51 Code #include "STC89C5xRC.h" void main(void) { P0 = 0xff; P1 = 0xff; P2 = 0xff; P3 =

TFT液晶研究2(旧博客迁移)

今天抽空把3.2寸的TFT驱动板加工了一下,并完成焊接.可惜其中一块的TFT软排线搞断了,另一块完美实现功能. 1.雕刻机加工好的单面覆铜板 2.焊接完成后并上电工作(请忽略图像文字细节,仅验证显示功能) 原文地址:https://www.cnblogs.com/wuq-hz-zj/p/10168492.html

线路人生EP2C5/8启蒙板检测(旧博客迁移)

闲鱼是个好东西,两套CycloneⅡ的开发板只要40,关键还是包邮.虽然说产品升级了N代了,不过这个价格就算拆件也值了.板子框图.实拍图如下: 下午收了快递.晚饭前后马上动手进行测试,卖家原来说的有一块检测不到的,人品爆发两块板子的fpga都可以检测到! 从外观上看板子有缺件见下,周一回实验室补齐.1.需要补焊或更换的有 U2: EPCS4 C35: 104 U4A: M29LV320D C48: 220uF/25V P4-1CAP2.可要可不要,强迫症患者请看 D1:   SMBJ5-170C

LED发光管实验报告

/******************************************** 实验名称:Led发光管实验一 实验目的:用位操作和总线操作点亮第一个发光管 ********************************************/ #include<reg52.h> //sbit P10 = P1^0; //void delay_1ms(int); void main() { while(1)         //进入大循环 { //P10 = 0; P1 = 0x

VMCloud见面礼&mdash;&mdash;VMCloud博客迁移全记录

微信号 VMCloud 大家好,为了避免在愚人节再公开本订阅号(其实为了避免被误会成是愚人节玩笑),所以选在今天,三月份的最后一天,VMCloud订阅号正式开张.如果说再说多的话也没办法去解释VMCloud订阅号的作用,那么就让我用实际行动来为各位了解关注本VMCloud订阅号的意义所在吧:P --------------------------------------------------------------------------------------------------- 正文

博客迁移-爱T-blog

从2012.8月后 博客迁移到http://blog.itiwin.cn  爱T-blog php技术博客 magento博客 版权声明:本文为博主原创文章,未经博主允许不得转载.

Hexo博客迁移到Coding

Coding是一个面向开发者的云端开发平台,目前提供代码托管,运行空间,质量控制,项目管理等功能. Coding提供社会化协作功能,包含了社交元素,为开发者提供技术讨论和协作平台. 一.创建项目 注:选择公开 点击创建之后 获取页面HTTPS或SSH地址 二.Clone项目到本地 $ git clone https://coding.net/itmyhome/blog.git blog 三.推送代码 如果已有hexo博客代码 放在blog目录下(.deploy .git除外),其他不变 修改根目

博客迁移至个人技术博客

个人博客地址 个人博客地址: http://mrljdx.com 迁移原因: 为由于维护个人博客和51cto博客比较麻烦,故将博客迁移至个人博客.今后新的博客内容仅在个人博客中更新.感谢51cto平台多年的陪伴! ~ Mrljdx