单片机晶体管显示_单片机数码晶体管显示原理 - CSDN
  • 这是关于在单片机实验箱上进行的晶体管动态显示程序,完整,只需稍作修改
  • 数码管显示字母

    2019-10-28 10:47:53
  • 很多电子产品上都有用到数码管来做指示作用,比如电子秤上使用数码管来显示体重,电饭锅上面使用数码管来显示煮饭时间等等。数码管显示的数字是通过单片机控制的,本篇文章为你讲述其中的原理。 文章涉及到的电路图...

    很多电子产品上都有用到数码管来做指示作用,比如电子秤上使用数码管来显示体重,电饭锅上面使用数码管来显示煮饭时间等等。数码管显示的数字是通过单片机控制的,本篇文章为你讲述其中的原理。
    文章涉及到的电路图和程序源码大家可以关注我的同名公众号,回复:“下载-单片机自学教程1”即可获取。仿真软件的安装以及破解教程,关注后会自动推送给你,欢迎大家前往下载。
    在这里插入图片描述想要使用单片机来控制数码管显示不同数字,那么我们先要了解数码管的内部结构以及器驱动原理。数码管可以看成是由8个发光二极管组成,我们分别给这8个数码管编号为a,b,c,d,e,f,g,SP(SP为小数点,七段数码管没有小数点),共阴极数码管就是这8个二极管的阴极连接在一起,共阳极数码管就是这8个二极管的阳极连接在一起。在控制过程中,我们把不同的二极管点亮,数码管就会给我们显示出不同的数字,例如我们把b,c两个二极管点亮,其他二极管熄灭,那么数码管显示的就是数字1;或者我们把a,b,c,d,e,f,6个数码点亮,数码管就给我们显示的是数字0.
    在这里插入图片描述
    接下来我们搭建控制电路图,添加一个7段共阴极数码管,a-g分别接单片机P2.0-P2.6.
    在这里插入图片描述
    看到电路图,我们应该就能想到,只要我们使单片机的P2口输出不同的高低电平,就可以让数码管显示不同的数字。假如我们要显示数字1,那么我们就想要点亮b,c二极管且熄灭其他二极管,所以我们需要将单片机P2.1和P2.2输出高电平,其他的输出低电平,如下图(红色代表高电平,蓝色代表低电平)。
    在这里插入图片描述
    以此类推,其他数字我们也可以显示出来,我们把P2.0-P2.7看成一个从低到高的8位数,其某一位为1则代表其对应的二极管亮,为0就代表其对应的二极管灭,那么我们就可以得到一个表格,该表格代表数码管显示0-F的值,其表格如下:
    SEG_ComAnodeTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    我们还是以1来分析,1对应表格中的数字为0x06,我们转换成二进制就是00000110(b),第2和第3位为1,其他位为0,也就是说b,c二极管会亮,其他二极管会灭,所以只要我们把这个数字赋值给P2,那么数码管就会给我显示数字1.
    到这里就把共阴极数码管显示原理给大家讲解了,大家可以以此类推,得到共阳极数码管的显示表格。如有不明白的地方,可以把疑惑的地方私信给我,演示程序设有一个按键,系统上电显示0,按键每按下一次,显示的数字加1,加到最大就又回到0开始。
    下面给大家讲解一下程序设计思路:定义一个变量u8SegNumber,当按键按下一次,u8SegNumber就+1,然后我们把u8SegNumber的值作为共阴数码管显示表格的下标值,最后把对应的值赋值给单片机的P2口,这样就达到了我们想要的结果。
    if(pTIM_Delay(0,200)) //200ms任务
    {
    if(SysDataVar.u8SegNumber > 15) //防止溢出
    SysDataVar.u8SegNumber = 0;
    LED = SEG_ComAnodeTable[SysDataVar.u8SegNumber]; //赋值
    }
    if(pTIM_Delay(1,5)) //5ms任务
    {
    Key_Sanf(); //按键检测
    }

    到这里单个数码管显示数字的原理都给大家讲解清楚了,大家可以尝试显示两个数码管,其原理和显示单个数码管不太一样,我也将在下一讲为你讲解,欢迎关注作者,及时获取更新信息。

    展开全文
  • 从电源、单片机晶体管、驱动电路、显示电路、有线通讯、无线通信、传感器、原理图设计、PCB设计、软件设计、上位机等,给新手综合学习的平台,给老司机交流的平台。所有文章来源于项目实战,属于原创。 一、原理...

    驱动篇 – BJT晶体管应用
    感谢阅读本文,在接下来很长的一段时间里,我将陆续分享项目实战经验。从电源、单片机、晶体管、驱动电路、显示电路、有线通讯、无线通信、传感器、原理图设计、PCB设计、软件设计、上位机等,给新手综合学习的平台,给老司机交流的平台。所有文章来源于项目实战,属于原创。

    一、原理介绍
    晶体三极管中有两种带有不同极性电荷的载流子参与导电,故称之为双极性晶体管(BJT),又称半导体三极管。
    以NPN为例进行说明:
    在这里插入图片描述
    1、截止区。其特征是发射结电压小于开启电压且集电结反向偏置,对于共射电路,Ube≤Uon且Uce>Bbe,此时,Ib=0,Ic≈0;
    2、饱和区。其特征是发射结电压大于开启电压且集电结正向偏置,对于共射电路,Ube>Uon且Uce<Bbe,此时,随着Ib的增大,Ic增大不多或基本不变;
    3、放大区。其特征是发射结电压大于开启电压且集电结反向偏置,对于共射电路,Ube>Uon且Uce≥Ube,此时,Ic=βIb。

    二、应用说明
    实际应用时,晶体管常作开关使用,放大电路使用集成电路。
    此时,晶体管工作在截止区与饱和区。
    截止区,Ic≈0,此时,P=IcUce很小;
    饱和区,Uce深度饱和电压很小,P=Ic
    Uce相对也很小。

    三、项目实战
    BJT晶体管是流控型器件,小电流控制大电流,与MOS管不同的是,晶体管的驱动电流Ib很小,对驱动源的要求很低,通常,单片机的IO口可以直接驱动。
    BJT晶体管工作在饱和区时,尽管Uce很小,如果Ic很大,发热还是蛮大,所以,常用作小功率器件驱动与大功率MOS管的前级驱动。
    1、驱动蜂鸣器
    在这里插入图片描述
    说明:BUZ为高电平,蜂鸣器工作。

    2、与PMOS组成电源开关
    在这里插入图片描述
    3、图腾柱驱动电路
    在这里插入图片描述
    工作说明:
    1、PWM为高电平,Q4导通,Q3截止,U8的寄生电容Cgs通过Q2与R6放电,U8关闭;
    2、PWM为低电平,Q4截止,Q2截止,12V电压通过Q3给U8的寄生电容Cgs充电,U8导通;
    3、R3为限流电阻,避免Cgs的充放电电流过大;
    4、R6的作用:Cgs放电时,通过Q2与放电,只能放到0.7V左右,加上R6,就可以放到0V,确保关闭MOS;
    5、此电路可以用于有刷直流电机的PWM调速;

    三、小结
    BJT晶体管是驱动电路常用的开关型器件,应用时需要让晶体管工作在截止与深度饱和区。
    BJT晶体管涉及的知识点很多,本文只是简要的介绍了下,仅仅起到抛砖引玉的作用,日后设计过程中,需要不断的总结经验,沟通交流,以达到真正的理解,灵活运用。

    欢迎加入硬件家园单片机学习群,群号925620931,别具一格的单片机免费教学,以产品为导向,一起做项目。
    开源项目,开发工具,技术资料以及更多原创技术文章,请关注微信公众号。
    硬件家园 yjjy168168168

    在这里插入图片描述

    作者:刘杰,软硬件技术10年,全职提供技术开发与技术服务、生产支持等。

    展开全文
  • 简单好使!已经成功DIY了.液晶显示的,用ATMEGA8做为单片机,很实用的。里面有图和HEX文件.
  • AVR单片机8位数码管显示的程序实现 转载:http://www.sohu.com/a/117255149_119709 2016-10-26 16:30 我们接着来完成数码管的显示实验。现在我们开始动手编写程序; 根据前面的介绍,我们应该已经能够知道...

    AVR单片机8位数码管显示的程序实现

    我们接着来完成 数码管的显示实验。现在我们开始动手编写程序;

    根据前面的介绍,我们应该已经能够知道编写一个 的C语言程序的基本步骤和方法了。

    下面给出这个程序的主程序文件,在这个程序中我们应该能够知道这个程序都包含了那几块,具体来说我们应该能够在这个程序中把以下几个部分找出来:预编译语句、 的定义、函数的声明、主函数、函数定义。如果你还不能够准确找出这几部分,那么需要把前面的内容再详细阅读一下。

    主程序代码

    #include < /io.h> //io端口寄存器配置文件,必须包含

    #include <util/delay.h> //GCC中的延时函数头文件

    #include "hc .h"

    //unsigned char Led_Disbuf[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共阴极

    unsigned char Led_Disbuf[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳极

    unsigned char ComBuf[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    //函数声明

    extern void Delayus(unsigned int lus); //us延时函数

    extern void Delayms(unsigned int lms); //ms延时函数

    int main(void) //GCC中main文件必须为返回整形值的函数,没有参数

    {

    unsigned char i;

    PORTB = 0xff; //PORTB输出低电平,使 熄灭

    DDRB = 0xFF; //配置端口PB全部为输出口

    HC595_port_init();

    while(1)

    {

    for(i = 0; i < 8;i++)

    {

    PORTB = Led_Disbuf; //送段码

    HC595_Send_Data(ComBuf); //选通位选端口

    Delayus(70); //延时

    HC595_Send_Data(0x00); //位选通关闭

    }

    }

    }

    //us级别的延时函数

    void Delayus(unsigned int lus)

    {

    while(lus--)

    {

    _delay_loop_2(4); //_delay_loop_2(1)是延时4个时钟周期,参数为4则延时16

    //个时钟周期,本实验用16M晶体,则16个时钟周期为16/16=1us

    }

    }

    //ms级别的延时函数

    void Delayms(unsigned int lms)

    {

    while(lms--)

    {

    Delayus(1000); //延时1ms

    }

    }

    在这个主程序文件中有人可能会注意到有一些我们前面没有介绍过的内容,比如extern这个单词,它在这里起什么作用?

    这就牵涉到C语言的关键字了,关于C语言的关键字,我们可以到相关的C语言教材中去做详细了解,在这里我们只针对extern这个关键字作出解释,我们注意到extern用在一个函数声明的地方,它的作用就是把这个函数声明为外部函数,这样我们在整个项目的所有文件中就都可以调用这个函数了。同理extern也可以用来声明一个变量为外部变量。

    我们可能还会有一个疑惑:#include "hc595.h"这个头文件包含语句中的hc595.h有什么作用,它是GCC提供的还是我们自己编写的?

    这里我们就要学习C语言中的一个重要的概念:模块化程序设计。何为模块化程序设计?它实现什么功能?如果要铺开来讲的话,可能需要一本书的内容。我们耗不起这个时间和精力。其实我们只需要知道,模块化程序设计是为了简化程序容量而采取的一种将一个程序分成不同的模块,然后通过特定的方法将这些模块组合起来共同完成同一个目标。通俗的说就是化整为零。

    在我们刚开始学习 的时候,我们编写的程序都很简单,程序量也不大,所以往往涉及不到模块化程序设计,但是这是一种很好的编程思路,我们有必要掌握。本实例就是采用的这种方法。

    模块化程序设计的思路是:将实现相同功能的程序单独编写,然后实现一个综合的功能,举个例子,我们想实现一个液晶显示的温度测量程序,那么我们可以把液晶显示相关的程序放在一个文件中,把温度测量的程序放在另一个文件中,最后在主程序中调用这两个文件来实现整体的功能。

    通常我们在进行模块化程序设计的时候,常常将 ,端口设置,函数声明等部分保存在一个.h文件中,而将函数定义部分放在一个.c文件中,在编写主程序文件的时候,用预处理命令#include将.h文件包含起来,而在编译的时候将所有用到的.c文件一起编译。这样就实现了模块化文件的整合。

    在本实例中,我们将74HC595相关的变量定义,端口定义,函数声明放在74HC595.h文件中,而主程序中的#include "hc595.h"这句话实现了将这个文件包含到主程序中的功能。

    下面是本实例中模块化程序设计的.h文件

    /*****************************

    .h

    ***********************************/

    /*74hc595与 的引脚连接

    /MR(10脚) VCC 低点平时将 的数据清零。通常将它接Vcc

    /OE(13脚) PG4 高电平时禁止输出(高阻态)。

    如果 的引脚不紧张,用一个引脚控制它,

    可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。

    ST_CP(12脚) PG1 上升沿时移位寄存器的数据进入数据存储寄存器,

    下降沿时存储寄存器数据不变。通常将RCK置为低电平,

    当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。

    通常都选微秒级),更新显示数据。

    SH_CP(11脚) PG0 上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;

    下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。

    通常都选微秒级)

    DS(14) PG2 串行数据输入端。

    */

    #ifndef __HC595_H__

    #define __HC595_H__

    #include <avr/io.h> //io端口寄存器配置文件,必须包含

    #include <util/delay.h> //GCC中的延时函数头文件

    #define HC595_latch (1 << PG1) //上升沿数据打入8位锁存器,下降沿锁存器数据不变

    #define HC595_sclk (1 << PG0) //上升沿数据移位,下降沿数据不变

    #define HC595_oe (1 << PG4) //低电平,8位数据锁存器输出,高电平输出高组态

    #define HC595_data (1 << PG2) //串行数据输入端

    #define SET_HC595_latch (PORTG |= (1 << PG1))

    #define CLR_HC595_latch (PORTG &= ~(1 << PG1))

    #define SET_HC595_sclk (PORTG |= (1 << PG0))

    #define CLR_HC595_sclk (PORTG &= ~(1 << PG0))

    #define SET_HC595_data (PORTG |= (1 << PG2))

    #define CLR_HC595_data (PORTG &= ~(1 << PG2))

    #define SET_HC595_oe (PORTG |= (1 << PG4))

    #define CLR_HC595_oe (PORTG &= ~(1 << PG4))

    void HC595_port_init(void); //595端口初始化

    void HC595_Send_Data(unsigned char byte); //发送一个字节

    void HC595_Output_Data(unsigned char data); //发送字符串

    #endif

    同时我们将与74HC595相关的函数定义部分放在74HC595.c文件中,如下

    /********************************

    74hc595.c

    **************************************/

    #include "hc595.h"

    //595端口初始化

    void HC595_port_init(void)

    {

    PORTG = 0x00;

    DDRG |= (1 << PG0) | (1 << PG1) | (1 << PG2) | (1 << PG4);

    }

    //发送一个字节

    void HC595_Send_Data(unsigned char byte)

    {

    unsigned char i;

    //CLR_HC595_latch;

    for(i = 0;i < 8;i++)

    {

    if(byte & 0x80)

    {

    SET_HC595_data;

    }

    else

    {

    CLR_HC595_data;

    }

    byte <<=1;

    SET_HC595_sclk; //上升沿数据移位

    CLR_HC595_sclk;

    }

    SET_HC595_latch;

    CLR_HC595_latch;

    }

    //发送字符串

    void HC595_Output_Data(unsigned char data)

    {

    CLR_HC595_latch; //下降沿锁存器数据不变

    HC595_Send_Data(data);

    SET_HC595_latch; //上升沿数据打入8位锁存器

    }

    在主程序中我们使用预定义语句将.h文件包含到了主程序文件中,那么我们怎样实现将.c文件编译到整个项目程序中呢?在这里我们只要在makefile文件中将这个.c文件加进去就可以了,如下图所示,在SRC = $(TARGET).C的后面空一格,然后输入我们所定义的.c文件的名称,然后保存makefile文件的更改。最后进行编译就可以了,编译的时候如果我们仔细观察编译器的输出信息,会发现不但编译了main.c文件,同时也编译了74hc595.c文件。

    转载于:https://www.cnblogs.com/pengwenzheng/p/9368040.html

    展开全文
  • 代码部分: #include &lt;STC15F2K60S2.H&gt; #include &lt;INTRINS.H&gt;...#define Y(n) P2=P2&...unsigned char digit[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};...
  • 之前学习的数码管的编程方法只能让数码管的六位数都显示相同的数字~非常不实用! 数字电路中学过,生活中的数码管显示数字都是采用动态扫描的方法。 简单说就是段选和位选以相同的频率变化,当变化速度很快的时候...
  • #include"reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit a=P2^2; sbit b=P2^3;...u8 code sumagd[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, ...0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,
  • 串口控制12路晶体管输出板JMDM-28DIOMT串口控制器rar,串口控制12路继电器(晶体管)输出板 28点工业级高可靠单片机控制板 RS232串口控制器 步进电机控制器 继电器气缸电磁阀控制器 精密转速控制 精密运动控制 精密...
  • 运用单片机AT89C51进行数据的分析和处理,为显示提供信号,显示部分采用8位数码管显示倒计时值。系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。 【关键词】AT89C51 8位数码管 发光...
  • 从电源、单片机晶体管、驱动电路、显示电路、有线通讯、无线通信、传感器、原理图设计、PCB设计、软件设计、上位机等,给新手综合学习的平台,给老司机交流的平台。所有文章来源于项目实战,属于原创。 阅读说明:...
  • 测量仪的工作原理为:利用振荡电路,将电阻、电容的测量转变为与之成一定函数关系频率的测量,再利用单片机对不同频率进行测量和处理,用数码管显示被测量的大小,可以利用按键对被测量类型进行选择。 测量电阻范围...
  • 基于STC89C51单片机的温湿度检测系统 摘 要:设计一种计算机教室温度、...通过给定的温湿度的上下限值并由1602 LCD显示器显示,传感器测量的信号由LCD显示出来,LCD显示实时的温、湿度值。当温、湿度超过限定值时...
  • 代码如下:       #include &lt;reg52.h&gt; #define uchar unsigned char #define uint unsigned int sbit we = P2^7; sbit du = P2^6; uchar code leddata[]={     0x3F, //"... 0...
  • 通过控制段选信号锁存器和位选信号锁存器,两个for循环点亮8个数码管和显示0-9数字
  • 51单片机通过一个按键实现暂停与恢复
  • TFT(ThinFilmTransistor)是指薄膜晶体管,意即每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比度显示屏幕信息,是目前最好的LCD彩色显示设备之一,其效果接近CRT...
  • 从电源、单片机晶体管、驱动电路、显示电路、有线通讯、无线通信、传感器、原理图设计、PCB设计、软件设计、上位机等,给新手综合学习的平台,给老司机交流的平台。所有文章来源于项目实战,属于原创。 阅读说明:...
  • 1971年11月英特尔公司首先设计出集成度为2000只晶体管/片的4位微处理器英特尔4004,并配有RAM、 ROM和移位寄存器, 构成了第一台MCS—4微处理器, 而后又推出了8位微处理器英特尔8008, 以及其它各公司相继推出
1 2 3 4 5 ... 20
收藏数 1,085
精华内容 434
关键字:

单片机晶体管显示