【Arduino】8地点LED数码管(3461BS)
2015-07-07 21:10
399 查看
淘宝买了一块3461BS的8地点LED数码管,婴儿就迫不及待地尝试,结果看到了文件,好家伙无Arduino测试程序。
莫急~莫急~无论如何串行操作,大不了呗瞎蒙!
以下几点是在更有趣的点瞎蒙:
1、须要了解什么是“上升沿”、“下降沿”。否则看參考代码(文档仅仅提供51单片机的DEMO)会认为非常迷糊
2、怎样显示小数点?这个文档中提都没提到,经研究发现每一个字符(如0用0xC0表示)的最高位(即左数第一位)都是1(两进制表示)。于是我试探性的将其与上0x7f(即0xC0 & 0X7F),结果惊喜的发现苦苦寻觅的小数点出现啦!
其他应该问题不大,直接贴出代码:
莫急~莫急~无论如何串行操作,大不了呗瞎蒙!
以下几点是在更有趣的点瞎蒙:
1、须要了解什么是“上升沿”、“下降沿”。否则看參考代码(文档仅仅提供51单片机的DEMO)会认为非常迷糊
2、怎样显示小数点?这个文档中提都没提到,经研究发现每一个字符(如0用0xC0表示)的最高位(即左数第一位)都是1(两进制表示)。于是我试探性的将其与上0x7f(即0xC0 & 0X7F),结果惊喜的发现苦苦寻觅的小数点出现啦!
其他应该问题不大,直接贴出代码:
#include <string.h> int DIO = 2; int RCLK = 3; int SCLK = 4; unsigned char CHAR_MAP[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x8C, 0xBF, 0xC6, 0xA1, 0x86, 0xFF, 0xbf }; char CHAR_INDEX_MAP[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', '-' }; void ledout(unsigned char chr) { unsigned char i; for (i = 8; i >= 1; i--) { if (chr & 0x80) digitalWrite(DIO, 1); else digitalWrite(DIO, 0); chr <<= 1; digitalWrite(SCLK, 0); digitalWrite(SCLK, 1); } } void ledshow(const char* str) { int len = strlen(str); int hasDot = 0; for (int i = len - 1, m = 0; i >= 0; i--) { char chr = str[i]; if (chr == '.') { hasDot = 1; continue; } int n = 0; for (; n < 17; n++) { if (chr == CHAR_INDEX_MAP ) break; } if (n != 17) { unsigned char chr1 = CHAR_MAP ; if (hasDot) chr1 &= 0x7f; // 全部字符的最高位(左数第一位)都是1,代表小数点为暗 // 因此仅仅要将最高位改为0小数点就能够点亮啦 ledout(chr1); // 显示字符 ledout((int)ceil(pow(2, m))); // 位置 digitalWrite(RCLK, 0); digitalWrite(RCLK, 1); } m++; hasDot = 0; } } void setup() { pinMode(DIO, OUTPUT); pinMode(RCLK, OUTPUT); pinMode(SCLK, OUTPUT); } void loop() { ledshow("3.1415926"); }
相关文章推荐
- 关于Uedit上传图片和文件的问题
- UVALive Proving Equivalences (强连通分量,常规)
- LeetCode Implement Queue using Stacks
- sql中常用到的GUID
- poj2299 Ultra-QuickSort (树状数组+离散化)
- RequireJS 和 SeaJS
- leetcode :Implement Queue using Stacks
- iOS UITableView插入删除行
- lc面试准备:Implement Stack using Queues
- LeetCode 232: Implement Queue using Stacks
- String,StringBuffer,StringBuild的区别
- hdu 4198 Quick out of the Harbour
- 建造者模式 Builder Mode
- 【Mark】如何阅读一本好书:APUE
- JAVA UUID 生成
- while循环中return、break、continue的区别
- java枚举类Enum方法简介(valueof,value,ordinal)
- 继承ActionBarActivity使用requestWindowFeature(Window.FEATURE_NO_TITLE)无效解决办法
- AndroidUI模板设计
- [leetcode]Unique Paths