-
2021-12-22 17:05:23
直接上代码
int a = 2; int b = 3; int c = 4; int d = 5; int e = 6; int f = 7; int g = 8; int point = 9; void setup() { // put your setup code here, to run once: pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(point, OUTPUT); digitalWrite(point, HIGH); Serial.begin(9600); } int current = 0; void loop() { // put your main code here, to run repeatedly: Serial.println(current); switch (current) { case 0: print0(); break; case 1: print1(); break; case 2: print2(); break; case 3: print3(); break; case 4: print4(); break; case 5: print5(); break; case 6: print6(); break; case 7: print7(); break; case 8: print8(); break; case 9: print9(); break; default: print0(); break; } delay(1000); if (current >= 9) { current = 0; } else { current++; } } int o0[7] = {0, 0, 0, 0, 0, 0, 1}; int o1[7] = {1, 0, 0, 1, 1, 1, 1}; int o2[7] = {0, 0, 1, 0, 0, 1, 0}; int o3[7] = {0, 0, 0, 0, 1, 1, 0}; int o4[7] = {1, 0, 0, 1, 1, 0, 0}; int o5[7] = {1, 0, 0, 1, 1, 1, 1}; int o6[7] = {1, 0, 0, 1, 1, 1, 1}; int o7[7] = {1, 0, 0, 1, 1, 1, 1}; int o8[7] = {1, 0, 0, 1, 1, 1, 1}; int o9[7] = {1, 0, 0, 1, 1, 1, 1}; void print0() { int b = sizeof(o0) / sizeof(o0[0]); for (int i = 0; i < b; i++) { digitalWrite(a + i, o0[i]); } } void print1() { int b = sizeof(o1) / sizeof(o1[0]); for (int i = 0; i < b; i++) { digitalWrite(a + i, o1[i]); } } void print2() { int b = sizeof(o2) / sizeof(o2[0]); for (int i = 0; i < b; i++) { digitalWrite(a + i, o2[i]); } } void print3() { int b = sizeof(o3) / sizeof(o3[0]); for (int i = 0; i < b; i++) { digitalWrite(a + i, o3[i]); } } void print4() { int b = sizeof(o4) / sizeof(o4[0]); for (int i = 0; i < b; i++) { digitalWrite(a + i, o4[i]); } } void print5() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, LOW); } void print6() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); } void print7() { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); } void print8() { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); } void print9() { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, LOW); }
关于接线,其实非常简单,不同的针脚接入不用的引脚,共阳的设置LOW就会点亮单个LED管,共阴的设置为HIGH就会点亮。不过最好按照引脚图来接线
更多相关内容 -
基于STM32的四位数码管显示编程
2021-01-06 05:17:351、四位数码管的简单介绍 因为在学校做项目的时候使用到了数码管显示,所以就编写了一个基于SMT32的数码管显示程序。通过看手册知道这个四位数码管采用TM1637 驱动电路。内部有集成MCU数字电路接口,数据锁存器,LED... -
两位数码管循环显示00~99的实验
2020-08-11 06:29:44本设计主要介绍两位数码管循环显示00~99的实验、 -
一位数码管显示学号程序
2020-12-17 10:58:07/*****一位数码管显示学号要求:1.计算出共阳极和共阴数码管显示0-9对应的编码,拍照提交。2.绘制数码管仿真图,编程实现数码管循环显示学号。(2018123456)****/#include #define TIME 300/*****引脚定义*****//****.../*****一位数码管显示学号
要求:
1.计算出共阳极和共阴数码管显示0-9对应的编码,拍照提交。
2.绘制数码管仿真图,编程实现数码管循环显示学号。(2018123456)
****/
#include
#define TIME 300
/*****引脚定义*****/
/*****变量定义*****/
unsigned char seg_dat[10]={
0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/};//共阳极数码管0-9对应的编码
unsigned char XH[10]={2,0,1,8,1,2,3,4,5,6};
/*****函数声明*****/
void delay_ms(unsigned int x);
void shagua();
void shuzu();
void main(void)
{
while(1)
{
shuzu();//数组方式
shuzu();//傻瓜方式
}
}
void delay_ms(unsigned int x)
{
unsigned int i,j;
for(i=0;i
{
for(j=0;j<333;j++);
}
}
void shagua()
{
P1=seg_dat[2];delay_ms(TIME);
P1=seg_dat[0];delay_ms(TIME);
P1=seg_dat[2];delay_ms(TIME);
P1=seg_dat[0];delay_ms(TIME);
P1=seg_dat[1];delay_ms(TIME);
P1=seg_dat[2];delay_ms(TIME);
P1=seg_dat[3];delay_ms(TIME);
P1=seg_dat[4];delay_ms(TIME);
P1=seg_dat[5];delay_ms(TIME);
P1=seg_dat[6];delay_ms(TIME);
}
void shuzu()
{
unsigned char i;
for(i=0;i<10;i++)
{
P1=seg_dat[ XH[i] ];delay_ms(TIME);
}
}
-
基于arduino的一位数码管控制
2019-12-11 22:46:12基于arduino的一位数码管控制 (一)arduino是什么? (二)一位数码管是什么? (三)一位数码管的结构组成和分类 1、共阴极 2、共阳极 (四)一位数码管的控制逻辑 (五)一位数码管的三种控制方式(由浅入深) 1...基于Mixly的一位数码管控制
硬件: arduino编程板、一位数码管、220Ω电阻、杜邦线若干。
软件: Mixly图形化编程软件。
目标: 通过mixly软件对arduino编程, 实现一位数码管可以从0-9依次显示。(一)一位数码管是什么?
这里是引用“百度百科”
一位数码管也叫做led数码管,egment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
(二)一位数码管的结构组成和分类
一位数码管由8个led灯组成,他们公用一极,共阴极或者共阳极。
1、共阴极
2、共阳极
(三)电路连接
上图为共阳极一位数码管连接到arduino编程板上,在正极上,连接一个电阻,达到保护一位数码管的作用。每个数码管的型号可能不同,根据数码管上的标号,上网查找是否为共阴极或者共阳极。
我们数码管的八个led灯连接到了arduino编程板的6-13号端口上,通过控制以上的八个端口,控制一位数码管显示的数值。(五)一位数码管的三种控制方式(由浅入深)
1、通过规定8个端口的状态进行控制
首先,我们用最笨的办法,对八个端口分别编程,然后列出0-9号数字,写在函数中,然后调用函数,实现从0-9的依次显示。
我们通过规定8个端口上的高低电平,对一位数码管进行编程,然后再调用函数,实现循环点亮。上图为数字0和数字1的示例,数字2-9原理一致。
我们在编写主程序时,调用函数,对每个函数进行编程即可。2、通过一维数组进行控制
在编写上面的程序过程中,我们会发现依次编写每个端口的状态十分麻烦,我们能否通过一种简单的方法,对每个端口进行赋值?
此时,我们会用到一个新的工具:数组。
我们先把端口的数值放到一个数组里面,这样的话,在规定端口的时候,就可以直接调用“端口”数组的第1、2、3、4……8项。(下图)
然后我们再通过数组,把0-9的数字用0和1表述出来(0代表低,1代表高)。
以数字0为例,
端口数组的第一项,赋值为“数字0”数组的第一项,
端口数组的第二项,赋值为“数字0”数组的第二项,
……
端口数组的第九项,赋值为“数字0”数组的第九项。
程序如下:
数字1的程序如下:
依次类推,所有函数如下。
3、通过二维数组进行控制
在上述的控制方法时,我们会发现,一维数组在罗列过程中,也会非常麻烦,所以我们将一维数组转化为二维数组。二维数组就是将多个数组再组合为一个新的数组。所以,我们可以把上面的多个一维数组写进一个新的数组里面。
二维数字的内容如下:
{13,12,11,10,9,8,7,6},{1,0,0,0,0,0,0,1},{1,0,1,1,0,1,1,1},{1,1,0,0,0,0,1,0},{1,0,0,1,0,0,1,0},{1,0,1,1,0,1,0,0},{1,0,0,1,1,0,0,0},{1,0,0,0,1,0,0,0},{1,0,1,1,0,0,1,1},{1,0,0,0,0,0,0,0},{1,0,0,1,0,0,0,0}设置变量x,y,代表数组的某个位置
两个变量:管脚、状态;
管脚=二维数组第一行第一列,状态=第二行第一列,把管脚和状态给数字输出;
y增加1,重复执行8次,然后让j增加1,重复执行10次,实现从0到9的变化。
以上为一位数码管从0-9变化的三种方法。思想就是找到规律,通过数组和变量,把有简单麻烦的事情,通过有规律的变化,罗列出来。
-
PLC数码管显示
2018-12-13 12:30:52数码管显示代码,利用GX Works2进行编写程序,主要用梯形图编程 -
51单片机串口通信并用数码管显示接收数据
2020-12-10 18:00:24通过数码管将51单片机从电脑上接收来的数据进行转换并显示出来! 通过数码管将51单片机从电脑上接收来的数据进行转换并显示出来! -
ArduinoCode16-一位数码管.ino
2020-02-18 11:07:04此为Arduino基础教程,第十六节实验时所用代码。跟随教程进行自我学习的同学,若对代码和Arduino编程环境不够熟悉的同学,可采取直接下载编程代码的方式,进行实验的练习和探索。 -
按键控制数码管实现显示数值加减
2021-07-06 21:24:51基于普中51单片机开发板,运用定时器/计数器0。按键控制数码管,实现60秒计时,数值加减清零。 -
基于STM32F103的数码管显示编程
2021-07-14 01:11:21一、控制数码管的构成 在我手上的这块开发板(正点原子的nano板)控制数码管需要控制 38译码器 和 595锁存器。下面主要说明一下两块芯片的原理 以及 如何用STM32 keil的开发环境实现。 二、595锁存器 以及 38译码器 ...一、控制数码管的构成
在我手上的这块开发板(正点原子的nano板)控制数码管需要控制 38译码器 和 595锁存器。下面主要说明一下两块芯片的原理 以及 如何用STM32 keil的开发环境实现。
二、595锁存器 以及 38译码器
595锁存器功能简介:SCLK每来一个上升沿,DATA中的数据进入到595中,如此读八次之后,再有一个LCLK,就全部把八位数据并行输出,输出的端脚为QA~QH。
38译码器:将来自A0—A2中的三位数据转到CH1—CH8中的某一个高电平。
三、实现代码
(1)宏定义部分
//段选define #define DATA PBout(3) #define LCLK PBout(4) #define SCLK PBout(5) //段选define //位选define #define SISEL0 PCout(10) #define SISEL1 PCout(11) #define SISEL2 PCout(12) //位选define #define JTAG_SWD_DISABLE 0X02 #define SWD_ENABLE 0X01 #define JTAG_SWD_ENABLE 0X00
(2)定义一个给数码管显示的列表
u8 temp[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x01,0x00};
(3)关闭jtag,因为PB4正常是作为jtag使用,所以先关闭他的jtag功能。
void JTAG_Set(u8 mode) { u32 temp; temp=mode; temp<<=25; RCC->APB2ENR|=1<<0; //开启辅助时钟 AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24] AFIO->MAPR|=temp; //设置jtag模式 }
(4)使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE);
(5)对GPIO进行初始化
GPIO_InitTypeDef GPIO_InitStructre; GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructre.GPIO_Pin= GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_11 GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructre); GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructre.GPIO_Pin= GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructre);
(6)产生上升沿、下降沿使得数据能输出到数码管上
while(1){ SISEL0 = 1; SISEL1 = 1; SISEL2 = 1; SCLK = 0; LCLK = 0; tmp=temp[2]; for( j = 0 ; j < 8 ; j ++ ) { DATA = tmp & 0X01; SCLK =1; SCLK =0; tmp = tmp >> 1; } LCLK = 1; }
(7)总体代码
#include "sys.h" //数码管显示用 //段选define #define DATA PBout(3) #define LCLK PBout(4) #define SCLK PBout(5) //段选define //位选define #define SISEL0 PCout(10) #define SISEL1 PCout(11) #define SISEL2 PCout(12) //位选define #define JTAG_SWD_DISABLE 0X02 #define SWD_ENABLE 0X01 #define JTAG_SWD_ENABLE 0X00 u8 tmp,j; u8 temp[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x01,0x00}; void JTAG_Set(u8 mode) { u32 temp; temp=mode; temp<<=25; RCC->APB2ENR|=1<<0; //开启辅助时钟 AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24] AFIO->MAPR|=temp; //设置jtag模式 } int main(void){ //设置数码管PB4/5 PC10/11/12 GPIO_InitTypeDef GPIO_InitStructre; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructre.GPIO_Pin= GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_11; GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructre); GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructre.GPIO_Pin= GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructre); //设置数码管PB4/5 PC10/11/12 JTAG_Set(SWD_ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试 PB4做普通IO口使用,否则不能当IO使用 while(1){ SISEL0 = 1;//需要修改的参数,选择哪个数码管亮。 SISEL1 = 1;//需要修改的参数,选择哪个数码管亮。 SISEL2 = 1;//需要修改的参数,选择哪个数码管亮。 SCLK = 0; LCLK = 0; tmp=temp[2]; //里面的2是需要修改的参数,选择数码管显示哪个数字。 for( j = 0 ; j < 8 ; j ++ ) { DATA = tmp & 0X01; SCLK =1; SCLK =0; tmp = tmp >> 1; } LCLK = 1; } }
-
单片机怎么显示小数点?数码管小数点显示程序
2020-07-15 02:09:33本文主要讲了单片机怎么显示小数点?数码管小数点显示程序,下面一起来学习一下 -
四位一体共阳级数码管动态显示c语言编程
2020-12-19 10:37:32展开全部//满意请采纳//这是一个四位数码管动态显示c语言程e68a84e8a2ad62616964757a686964616f31333337386634序,每隔一秒加一,直至加到9999为止//使用时需采用锁存器#include#include"stdio.h... -
基于Proteus的一位数码管显示实验
2020-05-20 19:55:54通过程序的输入来控制P0口,逐个的给P0口赋值(1~9),使数码管逐个从1显示到9,然后循环往复,达到一位数码管显示的效果。 2Proteus仿真电路图 排阻一般应用在数字电路上,比如:作为某个并行口的上拉或者下拉电阻... -
单片机制作—两位数码管显示 c语言 汇编程序+电路图
2021-05-19 20:39:11程序清单(汇编):;2011 04 05 D:\DPJ\数码管段显\数码管段显2.asmS0 BIT P3.7ORG 00HAJMP MAINORG 0BHAJMP T0INTORG 30HMAIN:MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SETB TR0MOV R0,#10MOV DPTR,#... -
44一位数码管2E6.zip
2021-04-27 17:26:43PLC专为在工业环境下应用而设计,它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、...本人收集了些实例,用户可在三菱官网的下载中心下载三菱编程软件,安装好三菱编程软件GX-7C,以便参考。 -
51单片机使用8个数码管中的一个数码管,循环显示数字0~9,到9回0,数字变化的时间间隔为1s。
2022-01-08 21:42:20使用8个数码管中的一个数码管,循环显示数字0~9,到9回0,数字变化的时间间隔为1s。 -
【Arduino】四位数码管显示
2020-07-31 15:02:40程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /****************************************************************** * 程序名称:数码管静态显示 * ... -
4×4矩阵键盘数码管显示按键值程序
2020-07-19 07:08:43本文为4×4矩阵键盘数码管显示按键值程序,一起来学习一下 -
十天学会单片机和c语言编程数码管动态显示.pptx
2021-05-23 11:14:43十天学会单片机和c语言编程数码管动态显示MCS-51单片机的中断系统结构主程序中断响应执行主程序中断请求执行中断处理程序断点继续执行主程序中断返回3.1.3 80C51中断的控制 一、中断允许控制 CPU对中断系统所有中断... -
数码管显示函数
2021-05-20 15:52:281.代码选择有时我们需要6个数码管显示我们想要看到的数字,比如计算结果呈现在数码管上,然而当要显示的数为“520”时又不想前面的3个数码管亮(也就是高位为0不显示),我们把这部分功能代码封装为带参数的函数,传入... -
求一个共阳四位数码管滚动显示1234的程序
2021-05-22 11:30:46/******************************************************************************** 文件名: 数码管* 描述:* 功能:数码管的使用* 作者:大核桃* 版本号:1.0.1(2017.05.23)************************************... -
STC 51单片机 多位数码管动态显示方法
2022-05-12 17:57:26STC 51单片机 数码管动态显示 方法 -
基于stm32f1xx的四位数码管小数显示
2021-03-17 15:50:36文章目录基于stm32f1xx的四位数码管小数显示实验一、实验目的:1.1 IO分配1.2 GPIO相关1.2.1 GPIO初始化1.2.2 GPIO常用置高置低函数(以PB5为例)二、数四位码管实验主体2.1 实现单个任意数字的显示2.1.1 定义数字表... -
面向单片机编程(三)- 数码管显示
2022-06-13 16:29:05数码管显示的单片机的基础功能,数码管具有动态显示,和静态显示两种状态,其显示的原理就是利用人眼睛的视觉暂留现象,通过控制单片机IO快速刷新数码管的显示内容,达到人们眼中所见的稳定不变的显示。... -
两位数码管动态显示C语言程序+电路图
2021-05-19 17:47:53用c语言编写的 51单片机数码管驱动程序 下面是电路图:#include#define uint unsigned intvoid delay7ms(void) //误差 -0.217013888891us{unsigned char a,b;for(b=208;b>0;b--)for(a=14;a>0;a--);}void delay... -
如何制作数码管显示程序
2021-10-06 12:13:05数码管位选电路图: 74HC245 数码管片选电路图: 74LS138 74C245芯片介绍 74C595芯片介绍 百度:译码器管脚 软件 管脚定义: 38译码器管脚 74HC245 位选给定 片选给定 过程先片选... -
单片机 一位数码管静态显示控制电路及程序设计
2010-06-24 08:17:16T89C52单片机和一位数码管组成一个流水显示0-9数字。电路构成用Cepark单片机开发实验板上的四位动态数码管中的一位,做一位静态显示控制。 -
51单片机的数码管循环显示编程实例
2021-05-22 09:37:57要求在数码管上循环显示数字 1~5。范例分析:1.1硬件分析数码管采用共阳极结构。1.2软件设计设计中要求循环显示1~5,很显然应采用循环的方法来实现,最简单的方法是将1~5的段码依次由p0口送出。准备程序2、控制... -
AT89S52单片机,实现功能两位数码管显示数字,按下
2021-01-17 18:48:55话题:AT89S52单片机,实现功能两位数码管显示数字,按下K1数推荐回答:#includelt;reg52.hgt;#define uchar unsigned char#define uint unsigned int#define duan P0 //数码管段输出sbit jia=P1^0; //按键加sbit jan...