共阳数码管怎么用?共阳数码管怎么连接下面是共阳数码管连接经验与体会,为大家提供参考。
1用数字万用表,二极管测量档位,找出4个共阳引脚。
用红表笔一个一个碰每个引脚,然后用黑表笔刮其他引脚,当看到数码管有闪烁,说明红表笔碰到的就是闪烁的那一位数码管的共阳脚。以此类推,找出其他三个,并记录。
2用4个PNP三极管连接扫描。
4个E极全部并联接在电源5V,
4个B极分别用4个1K的电阻串联接在P0口以外的四个I/O口,
为了编程方便可以接在P10,P11,P12,P13
4个C极分别接第一步找到的4个共阳引脚。
当P10,P11,P12,P13,分别为0(低电平)时 对应的共阳引脚被供电,数码管对应的位会显示。
3数码管的`8个字段引脚
abcdef 每个引脚串联一个200欧姆的电阻,直接接到P0口的8个I/O口,当P0口引脚为0(低电平)相应字段发光,前提是该位数码管对应当共阳口要供电,就是P10,P11,P12,P13 其中一个要为0,若P10,P11,P12,P13全为0 ,四个数码管显示相同的字段,其中一个为0,数码管其中一个现实P0口输出的字段。
4扫描程序:
a。P10,P11,P12,P13 全输出1 四个数码管不被供电。
b。对P0口输出数码管字段要显示的数据(先接好电路,至于该输出什么,试试你就知道了。)
c。对P10,输出0 第一个数码管显示相应字段。
d。对P10,P11,P12,P13 输出1 隐藏显示 并且对P0口输出第二个数码管的数据
e。对PP11,输出0 第二个数码管显示 相应字段。
f。对P10,P11,P12,P13输出1 隐藏显示,并对P0口输出第三个数码管的数据
g。对P12,输出0 (后面的和前面一样,直到第四个显示完毕,如此循环)
TG462系列工业级物联网网关是一款采用ARM架构高能效处理器作为主控、采用Linux作为 *** 作系统的嵌入式工业计算机。
主要应用以下行业
电力:电压电流数据实时监控报警、城市电网、路灯控制;
环保:实时数据采集自来水、污水管道、泵站与水厂实时监控维护;
交通:机动车辆、车牌抓拍监控系统、车辆违章监控、交通灯控制;
安防:远程门禁系统监控、防盗装置报警;
能源:煤矿、石油、天然气、油田数据采集、供暖系统监控;
步骤如下:1关闭62783所有输出,关闭2803所有端口
2向62783发送数码管a~g的显示数据
3打开对应的2803控制端口
注意:扫描时,显示频率必须高于50Hz,否则会出现闪烁现象因为是四位片选数码管,所以只能采用动态扫描方式点亮数码管,利用人体视觉延迟效应,整体让人感觉是同时点亮四个数码管
2依次点亮四个数码管:千位点亮3毫秒后关闭,紧接着点亮百位3毫秒,再是分别点亮十位和各位(3毫秒只是习惯参数,也可以2毫秒过意4毫秒,太长会出现数码管闪烁的情况)
3四位数码管依次点亮后,检测按钮,如果无信号,再次循环点亮四位数码管;
4如果检测按钮有信号,设定标志位,并且关闭数码管1秒钟,之后再点亮四位数码管1秒钟,如此循环
5如此过程中依然检测按钮,如果再次有信号,清除标志位,循环点亮四位数码管这个就业还是很好的,建议你把单片机技术好好学习下。
一、多动手实践:可以跟着吴鉴鹰单片机开发板学习,先掌握基础知识,然后结合开发板和物联网的知识自己设计一些东西出来;
二、51单片机架构及基本资源的使用:包括单片机工作原理介绍、51单片机架构介绍、单片机最小系统介绍、51单片机基本资源如并口、中断、时钟与复位、串口等的熟练使用等;
三、单片机基本资源扩展设计:包括存储器扩展设计、可编程和不可编程I/O接口扩展设计、I2C总线的模拟设计等;
四、输入输出设备的设计:包括独立式按键和矩阵键盘的各种输入方法、数码管及液晶显示器的接口设计、蜂鸣器的设计;
五、输入通道和输出通道的设计:包括一定模拟和数字信号量的输入、频率量的输入方法、A/D转换原理与器件选型及其与单片机的接口设计、数字与模拟量的输出方法、功率驱动相关知识、D/A转换原理与器件选型及其与单片机的接口设计等;
六、单片机软硬件设计和调试经验:各种软件开发和设计技巧、调试经验等;
七、开发环境和开发工具介绍:Keil uVision2集成开发环境的使用与软调试等;
八、软硬件系统集成和调试方法,技术文档的编写规范数组是一组有序数据的集合,数组中每一个数据都是同一数据类型。数组中的元素可以用数组名和下标来唯一确定。
数组的一般格式定义如下:
数据类型 数组名[常量表达式] = {元素表};
例如:
unsigned char tabel[3] = [0x3F, 0x06, 0x5B,];
P0 = tabel[0]; // P0此时的值为0x3F
数码管动态显示数字 123
#include <reg52h>
#include <intrinsh>
#define uint unsigned int
#define uchar unsigned char
sbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选
// 毫秒级延时函数定义
void delay(uint z){ // 毫秒级延时函数定义
uint x, y;
for (x = z; x > 0; x--){
for (y = 114; y > 0; y--){
}
}
}
void main(){ // main函数自身会循环
while(1){
/第一位显示 数字 1/
P0 = 0XFF; // 清除断码 如果没有为P0 初始化赋值 0XFF,那么 P0的值会是上一个打开段选锁存器过程中赋予的值,执行到这里 会把段选值赋给锁存器中P0,导致数码管显示错误。
WE = 1; // 打开位选锁存器
P0 = 0XFE; // 1111 1110 选通第一位数码管
// P0 = 0X00; // 0000 0000 表示选通所有位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = 0X06; // 0000 0110 显示“1”
DU = 0; // 锁存段选数据
delay(5); // 对每次数码管的切换进行 5毫秒延时 *** 作
/第二位显示 数字 2/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0XFD; // 1111 1101 选通第二位数码管
// P0 = 0X00; // 0000 0000 表示选通所有位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = 0X5B; // 0101 1011 显示“2”
DU = 0; // 锁存段选数据
delay(5);
/第三位显示 数字 3/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0XFB; // 1111 1011 选通第三位数码管
// P0 = 0X00; // 0000 0000 表示选通所有位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = 0X4F; // 0100 1111 显示“3”
DU = 0; // 锁存段选数据
delay(5);
}
}
数码管动态显示数字 123 (代码优化)
#include <reg52h>//包含51头文件
#include <intrinsh>//包含移位标准库函数头文件
#define uint unsigned int
#define uchar unsigned char
sbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选
//共阴数码管段选表0-9
uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
/====================================
函数 : delay(uint z)
参数 :z 延时毫秒设定,取值范围0-65535
返回值 :无
描述 :12T/Fosc110592M毫秒级延时
====================================/
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
/====================================
函数 :display(uchar i)
参数 :i 显示数值,取值范围0-255
返回值 :无
描述 :三位共阴数码管动态显示
====================================/
void display(uchar i)
{
uchar bai, shi, ge;
bai = i / 100; //236 / 100 = 2
shi = i % 100 / 10; //236 % 100 / 10 = 3
ge = i % 10;//236 % 10 =6
//第一位数码管
P0 = 0XFF;//清除断码
WE = 1;//打开位选锁存器
P0 = 0XFE; //1111 1110
WE = 0;//锁存位选数据
DU = 1;//打开段选锁存器
P0 = tabel[bai];//
DU = 0;//锁存段选数据
delay(5);
//第二位数码管
P0 = 0XFF;//清除断码
WE = 1;//打开位选锁存器
P0 = 0XFD; //1111 1101
WE = 0;//锁存位选数据
DU = 1;//打开段选锁存器
P0 = tabel[shi];//
DU = 0;//锁存段选数据
delay(5);
//第三位数码管
P0 = 0XFF;//清除断码
WE = 1;//打开位选锁存器
P0 = 0XFB; //1111 1011
WE = 0;//锁存位选数据
DU = 1;//打开段选锁存器
P0 = tabel[ge];//
DU = 0;//锁存段选数据
delay(5);
}
void main()//main函数自身会循环
{
while(1)
{
display(123); //数码管显示函数
}
}
数码管动态显示数字 12345678 (代码优化)
#include <reg52h>//包含51头文件
#include <intrinsh>//包含移位标准库函数头文件
#define uint unsigned int
#define uchar unsigned char
sbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选
//共阴数码管段选表0-9
uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
/====================================
函数 : delay(uint z)
参数 :z 延时毫秒设定,取值范围0-65535
返回值 :无
描述 :12T/Fosc110592M毫秒级延时
====================================/
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
/====================================
描述 :八位共阴数码管动态显示
====================================/
void display(uchar num1, uchar num2, uchar num3, uchar num4, uchar num5, uchar num6, uchar num7, uchar num8)
{
/第一位显示/
P0 = 0XFF;//清除断码
WE = 1;//打开位选锁存器
P0 = 0XFE; //1111 1110
WE = 0;//锁存位选数据
DU = 1;//打开段选锁存器
P0 = tabel[num1];//
DU = 0;//锁存段选数据
delay(1);
/第二位显示/
P0 = 0XFF;//清除断码
WE = 1;//打开位选锁存器
P0 = 0XFD; //1111 1101
WE = 0;//锁存位选数据
DU = 1;//打开段选锁存器
P0 = tabel[num2];//
DU = 0;//锁存段选数据
delay(1);
/第三位显示/
P0 = 0XFF;//清除断码
WE = 1;//打开位选锁存器
P0 = 0XFB; //1111 1011
WE = 0;//锁存位选数据
DU = 1;//打开段选锁存器
P0 = tabel[num3];//
DU = 0;//锁存段选数据
delay(1);
/第四位显示/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0XF7; // 1111 0111 选通第四位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = tabel[num4];//
DU = 0; // 锁存段选数据
delay(1);
/第五位显示/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0XEF; // 1110 1111 选通第五位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = tabel[num5];//
DU = 0; // 锁存段选数据
delay(1);
/第六位显示/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0XDF; // 1101 1111 选通第六位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = tabel[num6];//
DU = 0; // 锁存段选数据
delay(1);
/第七位显示/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0XBF; // 1011 1111 选通第七位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = tabel[num7];//
DU = 0; // 锁存段选数据
delay(1);
/第八位显示/
P0 = 0XFF; // 清除断码
WE = 1; // 打开位选锁存器
P0 = 0X7F; // 0111 1111 选通第八位数码管
WE = 0; // 锁存位选数据
DU = 1; // 打开段选锁存器
P0 = tabel[num8];
DU = 0; // 锁存段选数据
delay(1);
}
void main()//main函数自身会循环
{
while(1)
{
display(1, 2, 3, 4, 5, 6, 7, 8); //数码管显示函数
}
}
更多相关内容
0832+STC89C52RC数码管电压表
采用ADC0832、STC89C52RC制作了数码管显示的数字电压表,电路简洁,初学者容易制作成功。
stc89c52单片机数码管动态显示
在单片机开发板上,通过单片机控制数码管动态显示5201314,并闪烁显示
单片机学习
STC89C52驱动数码管
1硬件设计数码管实验硬件设计中使用到的数码管是共阳极类型的。因为数码管的片选引脚“1/2/3/4”都通过PNP 三极管来提供高电平,为什么要选用PNP 三极管和共阳极数码管的组合因为共阳极数码管共阳端直接接电源, 展开全文
c语言c52数码管
STC89C52单片机数码管介绍以及代码示例
LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件数码管分为共阳极连接和共阴极连接两种:1,共阴极连接就是说3,8这一头连得是负极,所以在下面的那头给上高电平(即置 展开全文
STC89C52单片机 数码管静态显示
数码管显示原理 数码管根据内部连接不同分为共阴极和共阳极。八段数码管内部有8颗LED组成,如果想要显示特定字形只需控制相应的LED亮起,其他LED熄灭即可。 静态与动态显示 静态显示: LED显示器工作方式有两种:
STC89C52RC - 12 - 静、动数码管显示
这里的 静态 动态 指的是 数码管 发光的时候 控制它的io口 状态 或者 数码管 发光段的状态 1、硬件介绍 1数码管 分为 共阴或者共阳 数码管里面封装的都是 LED小灯珠 共阳 阳极都连在一起 阳极接正 负极都是分开
8051单片机实战分析(以STC89C52RC为例) | 06 - 动态数码管驱动
#include "reg52h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u8 code
动态扫描
延时函数液晶时钟_数码管_时钟_STC89C52_
基于stc89c52的数码管时钟按键修改时间晶振频率110592
STC89C52与数码管的详细接线图
适合静态显示,共阳数码管或共阴数码管都可以
stc89c52单片机开发板电路原理图
stc89c52单片机开发板电路原理图。主要包括模拟量采集ADC,AD/DA转换。485传输,点阵模块接口,红外发送,温湿度传感器,蜂鸣器,超声波模块,按键,指示灯,最小系统,外扩接口,USB供电以及串口传输,4位七段
Dan_数码管_STC89C52_
基于stc89c52单片机,在数码管上左右移动显示字符
STC89C52单片机 数码管动态显示_ʚVVcatɞ的博客_单片机数
WE = 1; // 打开位选锁存器 P0 = 0XFE; // 1111 1110 选通第一位数码管 // P0 = 0X00; // 0000 0000 表示选通所有位数码管 WE = 0; // 锁存位选数据 DU = 1; // 打开段选锁存器 P0 = 0X06; // 0000
Keil5 C51AT89C52 数码管的动态显示_Lisiluan的博客_keil
数码管的动态显示原理第一个数码管显示0,1s后第二个数码管显示1,直到第六个数码管显示5后又重新开始#include <reg52h>#define uint unsigned int#define uchar unsigned char sbit LE_D = P2^6;sbit LE_W = P2^7;u
(单片机作业一)STC89C52动态数码管显示520
设计背景 单片机老师要求在520当天,利用手上的单片机,实现一个专属计算机专业的浪漫。 设计基础目的 stc89c52做个基础表白 #include<reg51h> #include<intrinsh> typedef unsign
STC89C52RC单片机学习板PDF原理图+配套试验例程KEIL源码程序(105例)
STC89C52RC单片机学习板PDF原理图+配套试验例程KEIL源码程序(105例): 10 LED循环左移 10012864液晶基础显示 1011602动态显示 102红外解码1602液晶显示 103红外解码数码管显示 105 NRF24L01开发板一 11 LED循环
51单片机STC89C52 数码管动态_昵称90天可改的博客
DELAY3 DJNZ R1,DELAY4 CLR RS1 RET TABLEK: ;共阴数码管 DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H TABLEW: ;位选控制 DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH
单片机STC89C52实验 DAY 2 数码管_马踏飞燕&lin_li的博客
动态数码管显示 #include<reg51h>#include<intrinsh>typedefunsignedcharu8;typedefunsignedintu16;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;voiddelay(inti){while(i--);}//段选u8 code smgduan[]={0x3f,0x06,0x5b,
基于stc89c52的44矩阵键盘输入数码管
本系统以STC89C52单片机为核心,使用4×4矩阵键盘作为数据输入方式,完成独立按键的测试,含有电路图及语言程序设计。
小白上路之51单片机(STC89C52)--数码管
目录数码管介绍显示器及其接口(本文主要针对LED显示器来介绍)开发板原理图数码管是如何显示出字符的静态数码管工作原理数码管静态显示原理74HC573芯片的使用源程序--静态数码管动态数码管工作原理数码管动态显示
8051单片机(STC89C52)八段数码管轮流显示0~7_好梦成真Kevin的博客-CS
在8个数码管上自右开始, 轮流显示 0 ~ 7 #include<STC89C5xRCH> voiddelay()//提供时延 { inti, j; for(i =0; i <300; i++) for(j =0; j <300; j++) ; }
51单片机STC89C52 数码管静态_昵称90天可改的博客
51单片机STC89C52数码管静态显示实验,含c代码(5) 1参考教程:清翔51单片机教程2基本原理 : 1)数码管位数:几个数码管连在一起,就是几位。 2)数码管共级:共阴极-数码管中间的线是GND。共阳极-数码管中间的线是VCC。用万用
基于 STC89C52 单片机 DS1302 时钟芯片定时开关的设计
绍一种以STC89C52单片机、DS1302,1602液晶显示为核心,具备调节时间,设置开启时间与关闭时间的定时开关的实现过程。采用C语言编写,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能,并通过Protues
基于STC89C52单片机跆拳道比赛计时计分系统设计与实现
采用STC89C52单片机进行控制,设计并实现了一套跆拳道比赛计时计分系统。在进行跆拳道比赛时,可以在计分器上同步显示参赛队伍双方实时得分。该计时计分系统的特点是在比赛进行到一半需要交换场地停止计时,以及在每
8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动
我们看一下数码管内部结构的示意图: 数码管分为共阳和共阴两种: 共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的,阴极是公共端,由阳极来控制单个小灯的亮灭。 同理共阳数码管就是阳极接在一起。 看到这里我们就不难猜出,
STC 89C52 单片机引脚对应的功能以及实例讲解_Gorit的博客_s
二、数码管的使用 三、矩阵键盘的使用 四、液晶显示补充 先附上一张stc89C52引脚图 光看引脚是不够的,下面我们看看实物图是什么样子的 一、P1^0~7 对应八个二极管 二级管的实物图如下 从上往下 分别对应引脚中的 P1^0 ~ P1^7
单片机课设stc89c52zip
由stc89c52控制的四位倒计时秒表,里边有c语言代码和仿真, 实现的功能如下: 1通过按键设定倒计时时间; 2逐秒倒计时; 3使用4位一体数码管显示时间; 4时间到数码管闪烁显示0000
基于单片机STC89C52的LED数码管温度显示及报警器的实现
基于单片机STC89C52的LED数码管温度显示及报警器的实现,资源不错,希望对您有用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)