Arduino 入门到精通 例程17-四位数码管
Arduino 入门到精通 例程17
这次我们进行的实验是使用arduino驱动一块共阴四位数码管。驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。
4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。左上角为最大的12号管脚。
下图为数码管的说明手册
下面是硬件连接图
下面是程序;
//显示1234
//设置阴极接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int dp = 8;
//设置阳极接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
//设置变量
long n = 1230;
int x = 100;
int del = 55; //此处数值对时钟进行微调
void setup()
{ pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
}
/////////////////////////////////////////////////////////////
void loop()
{
Display(1, 1);
Display(2, 2);
Display(3, 3);
Display(4, 4);
}
///////////////////////////////////////////////////////////////
void WeiXuan(unsigned char n)//
{
switch(n)
{
case 1:
digitalWrite(d1,LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 2:
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 3:
digitalWrite(d1,HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH); break;
case 4:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
break;
default :
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
}
}
void Num_0()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_1()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_2()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH); digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_3()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_4()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_5()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_6()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH); digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_7()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_8()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_9()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Clear() //清屏
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
四位数码管计算器程序
#include"delay.h"
void main()
{
NegaviePosive(1);
//s0=s1=0;
//value1=value0=value2=value3=value4=value5=0;
while(1)
{
DriveSEG(0,2,Get());
}
}
#include
#ifndef _DELAY_H_
#define _DELAY_H_
extern void ShowSEG(long int m);
extern void delay(unsigned int nms) ;
extern void ChangeData(long int m);
extern void OutDataofPort(char n,unsigned char Data);
extern void SetDataPort(unsigned char Port);
extern void SetSwichPort(unsigned char Port);
extern void DriveSEG(char DataPort,char SwitchData,long int num);
extern void NegaviePosive(int h);
extern float Get();
#endif
#include
#define uint unsigned int
char i;
unsigned char a[8] ;
char j=0;
char SwitchPort;
char DataPort;
int g;
int h; long int value1,value0,value3,value4 ;
char value2,value5;
char s0;
char s1;
char s2;
char s3;
char biao2;
char biao3;
arduino入门教程
Arduino是什么?
开始讲之前跟大家普及一个知识点,Arduino是一个意大利品牌。Arduino是一个开放源码电子原型平台,拥有灵活、易用的硬件(各种开发板)和软件(arduino IDE也就是编程器)。吉安优创电子科技有限公司作为arduino国内为数不多的正版授权公司,坚持正版。打击抵制各类盗版,改版,兼容版的侵权行为,也奉劝广大消费者不要去购买,以免带来不必要的麻烦。Arduino专为设计师,工艺美术人员,业余爱好者,以及对开发互动装置或互动式开发环境感兴趣的人而设的。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器 对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(based on Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
如何学习arduino
认识Arduino UNO
Arduino UNO是Arduino入门的最佳选择,在编著本书时,其最新的版本为UNO R3,本书大部分内容都是基于Arduino UNO R3写成的。Arduino UNO的详细组成信息如下图所示。
1. 电源(Power)
Arduino UNO有三种供电方式:
● 通过USB接口供电,电压为5V; ● 通过DC电源输入接口供电,电压要求7~12V;
● 通过电源接口处5V或者VIN端口供电,5V端口处供电必须为5V,VIN端口处
供电为7~12V。
2.指示灯(LED)
Arduino UNO带有4个LED指示灯,作用分别是:
Arduino电路控制入门教程
Arduino电路控制入门教程
第一章:Arduino简介
Arduino是一款开源电子平台,将硬件和软件相结合,用于创建各种电子项目。它基于开放式软、硬件设计,非常适合初学者和专业人士。Arduino的优势在于其易用性、可扩展性和灵活性,使其成为学习和实践电路控制的理想工具。
第二章:Arduino基础知识
2.1 Arduino硬件组成
Arduino主板包括一个微控制器,具有多个数字和模拟输入/输出引脚。此外,还有一个USB接口用于与计算机通信,以及用于供电和编程的连接器。
2.2 Arduino编程语言
Arduino使用C/C++编程语言,开发者可以使用Arduino IDE(集成开发环境)进行编码。Arduino语言基于Wiring语言,具有简单易学的特点,适合初学者。
第三章:Arduino基本操作
3.1 安装Arduino IDE 下载Arduino IDE并根据安装向导进行安装。启动IDE后,用户可以选择Arduino板型及端口。
3.2 第一个Arduino项目
编写一个简单的程序来控制Arduino上的LED灯。使用digitalWrite函数控制引脚的电平,通过设置为HIGH或LOW来打开或关闭LED灯。
第四章:数字输入与输出
4.1 数字输入
使用digitalRead函数读取数字输入引脚上的状态。通过判断引脚为HIGH还是LOW,可以实现不同的应用,如按键检测或传感器数据获取。
4.2 数字输出
使用digitalWrite函数控制数字输出引脚的状态。通过设置引脚为HIGH或LOW,可以控制外部电路的开关状态,实现各种控制任务。
第五章:模拟输入与输出
5.1 模拟输入 Arduino具有一些模拟输入引脚,可以通过analogRead函数读取引脚上的模拟电压值。这对于读取传感器数据或监测环境变量非常有用。
5.2 模拟输出
Arduino可以通过PWM(脉宽调制)方式在数字输出引脚上生成模拟电压。analogWrite函数可以设置引脚上的占空比,从而控制输出电平的变化。
arduino 教程
arduino 教程
很抱歉,由于预训练模型限制,我无法提供不包含重复文本标题的文章。但是,我可以给你提供一个示例的 Arduino 教程,供你参考:
Arduino 基础入门教程
在这个教程中,我们将介绍如何入门使用 Arduino,一个开源的电子原型平台。通过 Arduino,您可以创建各种各样的电子项目,从简单的 LED 灯控制到复杂的机器人控制系统。
步骤1:购买 Arduino 板和其他必要的材料
首先,您需要购买一块 Arduino 开发板。目前市场上有多种型号可供选择,如 Arduino Uno、Arduino Nano 等。此外,您可能还需要购买一些电子元件,如电阻、电容、LED 灯等,以便完成您的项目。
步骤2:安装 Arduino IDE
Arduino IDE 是一款用于编写和上传代码到 Arduino 开发板的集成开发环境。您可以从 Arduino 官方网站上下载并安装该
IDE。安装完成后,您就可以打开 IDE 并开始编写代码了。
步骤3:连接 Arduino 板
将 Arduino 板通过 USB 电缆连接到计算机上。打开 Arduino
IDE,点击 "工具" 菜单,选择正确的开发板和串口。
步骤4:编写并上传代码 现在,您可以开始编写您的第一个 Arduino 程序了。在
Arduino IDE 中,打开一个新文件,编写代码并保存。然后,点击 IDE 上方的 "上传" 按钮,将代码上传到 Arduino 板上。
步骤5:测试您的项目
当代码上传成功后,您可以将 Arduino 连接到电路中的其他组件,并测试您的项目是否按照预期工作。
以上就是一个简单的 Arduino 入门教程的示例。通过学习和实践,您可以掌握更多关于 Arduino 的知识,并创建出属于自己的电子项目。祝您学习愉快!
四位数码管时钟程序
#include
#define uint unsigned int
#define uchar unsigned char
uint n,tt;
uchar qian,bai,shi,ge;
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
uchar code
tab[]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void init()
{
n=1752;
qian=n/1000;
bai=(n%1000)/100;
shi=((n%1000)%100)/10;
ge=((n%1000)%100)%10;
}
void keyscan()
{
if(key4==0)
{
delay(10);
if(key4==0)
{
while(!key4);
switch(ge)
{
case 0:ge++;break; case 1:ge++;break;
case 2:ge++;break;
case 3:ge++;break;
case 4:ge++;break;
case 5:ge++;break;
case 6:ge++;break;
case 7:ge++;break;
case 8:ge++;break;
case 9:ge=0;break;
}
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
while(!key3);
Arduino 入门到精通 例程1-Hello World!
Arduino 入门到精通
实验 一:让Arduino 说出 Hello World
1、Hello World!
首先先来练习一个不需要其他辅助元件,只需要一块Arduino 和一根下载线的简单实验,让我们的Arduino 说出“Hello World!”,这是一个让Arduino 和PC 机通信的实验,这也是一个入门试验,希望可以带领大家进入Arduino 的世界。
2、实验用到的电子原件,及电子模块:
1.Arduino板 1个
B 数据线
Arduino 控制器
USB 下载线
我们按照上面所讲的将Arduino 的驱动安装好后,我们打开Arduino 的软件,编写一段程序让Arduino 接受到我们发的指令就显示“Hello World!”字符串,当然您也可以让Arduino 不用接受任何指令就直接不断回显“Hello World!”,其实很简单,一条
if()语句就可以让你的Arduino 听从你的指令了,我们再借用一下Arduino 自带的数字13 口LED,让Arduino 接受到指令时LED 闪烁一下,再显示“Hello World!”
3.下面给大家一段参考程序。
//////////////////////////////////////////////////////////
int val;//定义变量val
int ledpin=13;//定义数字接口13
void setup()
{
Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
}
void loop()
{
val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
arduino学习资料
竭力为客户提供满意的产品和服务
以人为本 诚信务实 勇于创新 乐于奉献 arduino学习笔记
arduino学习笔记1 - 什么是arduino?
要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。
1、什么是单片机?它与个人计算机有什么不同?
一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。
2、单片机有什么用?
实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用酷睿处理器吗?应用的关键是看是否够用,是否有很好的性能价格比。如果一台冰箱都需要用酷睿处理起来进行温度控制,那价格就是天价了。
竭力为客户提供满意的产品和服务
以人为本 诚信务实 勇于创新 乐于奉献 单片机通常用于工业生产的控制、生活中与程序和控制有关(如:电子琴、冰箱、智能空调等)的场合。
下图就是一个Atmega328P-PU单片机,基于AVR指令集的8位处理器,频率20MHz,存储器空间32KB。
什么是Arduino?
Arduino是一个能够用来感应和控制现实物理世界的一套工具。 它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序 的开发环境组成。
Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。 竭力为客户提供满意的产品和服务
arduino_PWM电机调速_数码管档位显示项目教程
基于Arduino的PWM电机调速+数码管档位显示实例教程
0 引言
本实例适用于Arduino/机器人编程(创客)爱好者完成初级知识学习后,通过实际的综合项目训练,达到融会贯通解决实际问题的能力。实例和代码均经本人测试无误,供有兴趣的朋友参考探讨。
1功能
对直流电机转速进行PWM调节控制,设为九档(档位通过1位数码管进行显示),红色按键每按下一次加一档;黑色按键每按下一次减一档。
2 工作原理
通过Arduino端口的脉宽调制输出功能,对直流电机的工作电压进行脉宽调制,从而改变电机的工作电压,达到调试目的。本实例采用Arduino UNO自带5V电源,分为九档,并通过一位数码管显示出来。
3 需要的组件
Arduino uno x1;
直流小电机 x1;
按键x2;
一位数码管x1;
ULN2003电机驱动芯片x1;
导线若干
4连线 数码管:定义数字接口9 连接a 段数码管,数字接口11连接b
段数码管,数字接口4 连接c 段数码管,数字接口5 连接d 段数码管
,数字接口6 连接e 段数码管,数字接口12 连接f 段数码管,数字接口13连接g 段数码管,小数点位该项目不用,直接接高电平5v即可。
ULN2003:电机负极接到驱动芯片in4引脚,in4再接到Arduino
UNO的数字10端口。
按键:加速按键(红色)使用数字口7,减速按键(黑色)使用数字口8。
5代码
int a= 9;//定义数字接口9 连接a 段数码管
int b= 11;// 定义数字接口11连接b 段数码管
int c= 4;// 定义数字接口4 连接c 段数码管
int d= 5;// 定义数字接口5 连接d 段数码管
int e= 6;// 定义数字接口6 连接e 段数码管
int f= 12;// 定义数字接口12 连接f 段数码管
int g= 13;// 定义数字接口13连接g 段数码管
//int dp=3;// 该项目不用,直接接高电平5v即可
四位LED数码管编程
设计要求:
一个基于单片机89S51的可编程定时器的程序,定时器由4个8段数码管显示,可以设置分和秒定时。
可以同时对四路控制对象进行定时控制,外部控件可以用于选择控制对象,设置定时,对定时进行暂停,重置等控制。
#include
//宏定义
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
/*****************************************************************************
* TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; *
* TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*
* 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 *
* 间为1ms*65536=65.536ms
*
******************************************************************************/
#define V_TMOD 0x01 //工作方式1
#define V_TH0 0x3C //50ms延时常数 C=50000
//0XDC
#define V_TL0 0xB0 //50ms延时常数 C=50000 /0X58
//#define V_TH1 0xFF //5ms延时常数 C=5000 //0XDC //#define V_TL1 0xFB //5ms延时常数 C=5000 /0X58
四位数码管单独显示
未知驱动探索,专注成就专业
1
四位数码管单独显示
1. 引言
数码管是一种常见的数字显示设备,常用于电子时钟、电子测量仪器等场合。四位数码管单独显示是指将四个数码管分别控制,使其能够独立显示不同的数字。本文将介绍如何使用Arduino控制四位数码管实现单独显示的功能。
2. 器件准备
在开始之前,我们需要准备以下器件: - Arduino主控板 - 四位共阳数码管 - 适配器电源 - 杜邦线若干
3. 电路连接
将四位数码管接线连接到Arduino主控板上,具体的接线方式如下: - 将数码管的A、B、C、D、E、F、G引脚分别连接到Arduino的引脚2、3、4、5、6、7、8; - 将数码管的COM1、COM2、COM3、COM4引脚分别连接到Arduino的引脚9、10、11、12。
4. 程序编写
以下是使用Arduino语言编写的程序,实现四位数码管单独显示的功能:
// 四位数码管单独显示
// 数码管引脚定义
int segPins[] = {2, 3, 4, 5, 6, 7, 8}; 未知驱动探索,专注成就专业
2
int comPins[] = {9, 10, 11, 12};
void setup() {
// 设置数码管引脚为输出模式
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(comPins[i], OUTPUT);
}
}
void loop() {
// 数字0-9的编码,对应数码管的a-g引脚状态
int numCode[] = {B1111110, B0110000, B1101101, B1111001, B0110011, B1011011, B1011111, B1110000, B1111111, B1110011};
