标签:
数码管一般是用来显示数字和字符的
一位数码管
该图是一个8段数码管,该数码管中包含了8个LED发光二极管,因此称为8段数码管。该数码管共有10个引脚,有2个引脚是公共的负极或者正极,另外8个引脚分别按顺时针控制LED的亮片。
数码管的连接图,下面是两种连接方式
一种是将所有的正极连接到一起,另外的一种是将所有的负极连接到一起
我们可以在连接的时候进行测试,3脚接GND,4脚接高电平,如果有LED被点亮则为共阴,不亮则为共阳
四位数码管
原理:
四位数码管有12个引脚,我们将这12个引脚分为2组,一组是上面的12 、9、8、6,这些引脚是用来选择的,哪个引脚是低电平,那么该数码管就被选中。第二组引脚的高低电平是用来决定该数码管中显示的数字
下面的连接方式是共阴:
1.int numData[8]={1,0,1,1,1,1,1,0};
2.void setup(){
3. for(int pinIndex=2;pinIndex<=9;pinIndex++)
4. {
5. pinMode(pinIndex,OUTPUT);
6. }
7.}
8.void loop()
9.{
10. for(int index=0;index<9;index++)
11. {
12. digitalWrite(2+index,numData[index]);
13. }
14.}
下载运行,显示数字0
1.int numData[10][8]={{1,0,1,1,1,1,1,0},
2. {1,0,0,0,0,1,0,0},
3. {0,0,1,1,1,1,0,1},
4. {1,0,1,0,1,1,0,1},
5. {1,0,0,0,0,1,1,1},
6. {1,0,1,0,1,0,1,1},
7. {1,0,1,1,1,0,1,1},
8. {1,0,0,0,1,1,0,0},
9. {1,0,1,1,1,1,1,1},
10. {1,0,1,0,1,1,1,1}};
11.void setup(){
12. for(int pinIndex=2;pinIndex<=9;pinIndex++)
13. {
14. pinMode(pinIndex,OUTPUT);
15. }
16.}
17.void loop()
18.{
19. DisplayNumber(1);
20.}
21.
22.void DisplayNumber(int num)
23.{
24. for(int index=0;index<9;index++)
25. {
26. digitalWrite(2+index,numData[num][index]);
27. }
28.}
运行,数码管显示1(可通过DisplayNumber(1);
改变)
如果我们想要每秒循环显示0~9这几个数字,只需要修改loop类
1.void loop(){
2. for(int num=0;num<10;num++)
3. {
4. DisplayNumber(num);
5. delay(1000);
6. }
7.}
LCD1602是一种工业字符型液晶显示器
LCD表示该器件的类型是液晶显示器
1602表示该器件的型号可以显示2行每行16个字符
HD44780:控制芯片,与微控制器进行通信,并控制字符的显示
CGROM:存储字库
CGRAM:存储用户自定义字库
DDRAM:存储显示的数据
tips:ROM与RAM
ROM:Read-only Memory(只读存储器),存储不可变的数据,断电后数据不消失。
RAM:Random Access Memory(随机存取存储器),存储易变的数据,断电后数据消失。
LCD1602中的CGROM存储可显示字符的点阵数据
LCD每个字符点阵大小为5*8
LCD1602中的DDRAM用于存储显示的数据。与显示屏上的数据一一对应
LCD1602中的CGRAM用于存储用户自定义的图形。自定义图形大小为5*8,在程序中使用字节数组来进行数据的存储
1.LiquidCrystal lcd(12,11,5,4,3,2);
2.byte heart[8]={
3. B00000,
4. B01010,
5. B11111,
6. B11111,
7. B01110,
8. B00100,
9. B00000,
10. B00000
11.};
12.void setup()
13.{
14. lcd.createChar(2,heart);
15. lcd.write(2);
16.}
引脚号 | 引脚名 | 电平 | 输入/输出 | 作用 |
---|---|---|---|---|
1 | VSS | 电源地 | ||
2 | VDD | 电源(+5V) | ||
3 | V0 | 对比度调整电压 | ||
4 | RS | 0/1 | 输入 | 0=输入指令 1=输入数据 |
5 | R/W | 0/1 | 输入 | 0=向LCD写入指令或者数据 1=从LCD读取数据 |
6 | E | 1,1→0 | 输入 | 使能信号,1时读取信息。1→0(下降沿)执行指令 |
7 | D0 | 0/1 | 输入/输出 | 数据总线line0(最低位) |
8 | D1 | 0/1 | 输入/输出 | 数据总线line1 |
9 | D2 | 0/1 | 输入/输出 | 数据总线line2 |
10 | D3 | 0/1 | 输入/输出 | 数据总线line3 |
11 | D4 | 0/1 | 输入/输出 | 数据总线line4 |
12 | D5 | 0/1 | 输入/输出 | 数据总线line5 |
13 | D6 | 0/1 | 输入/输出 | 数据总线line6 |
14 | D7 | 0/1 | 输入/输出 | 数据总线line7 |
15 | A | +VCC | LCD背光电源正极 | |
16 | K | 接地 | LCD背光电源负极 |
函数库是一组预先写好的函数,可以直接用在自己的程序中,我们可以在Arduino的编程参考中找到
Help->Reference->Library
我们能够看到几个库函数的分类:
其中的标准库(Standard Libraries)和贡献库(Contributed Libraries)
其中标准库是由arduino的核心团队进行建设和维护的,包含arduino常用外设以及总线的功能,比如以太网接口、液晶显示屏、SD存储卡、SPI总线等等
由于arduino的软硬件开发环境是开源的,所以会有很多arduino的爱好者向arduino核心团队推送了他们自己写的库函数,这些库函数能操纵更多的外设,并为arduino提供更加强大的功能。这就是贡献库。
点击Sketch->Import Library->LiquidCrystal
然后就会将我们选中的库函数的头文件插入到我们自己写的程序中
1.#include <LiquidCrystal.h>
1.void setup()
2.{}
3.void loop()
4.{}
整体代码如下
1.#include <LiquidCrystal.h>
2.LiquidCrystal lcd(12,11,5,4,3,2);//我们使用4位接线法,其中12,11,5,4,3,2为引脚编号
3.void setup()
4.{
5. lcd.begin(16,2);//对lcd 这个对象的高度和宽度进行设置,高度为2,宽度为16
6. lcd.print("hello world!");//进行文本输出
7.}
8.void loop()
9.{}
点击下载按钮即可显示
1.#include <LiquidCrystal.h>
2.LiquidCrystal lcd(12,11,5,4,3,2);
3.void setup()
4.{
5. lcd.begin(16,2);
6. lcd.print("hello");
7. lcd.setCursor(0,1);//将光标移到下一行
8. lcd.print("world!");
9.}
10.void loop()
11.{}
1.#include <LiquidCrystal.h>
2.LiquidCrystal lcd(12,11,5,4,3,2);
3.void setup()
4.{
5. lcd.begin(16,2);
6. lcd.setCursor(5,0);//将光标平移5个字符位
7. lcd.print("hello");
8. lcd.setCursor(0,1);
9. lcd.print("world!");
10.}
11.void loop()
12.{}
这样简单的LCD1602的演示就完成了
标签:
原文地址:http://www.cnblogs.com/XBlack/p/5132889.html