led 08 接口单元板试验成功
2013-01-31 11:36
281 查看
一直想搞搞LED屏玩玩,呵,正好捡了块单元板,顺手玩了一把:
用arduino驱动的,程序如下:
接线图:
用arduino驱动的,程序如下:
/* 显示流程: 1:传送595数据 2:关闭EN 1,关闭显示 3:切换行信息 4:刷新595,STB 5:开EN 0 6:延时 (刷新率调整) */ #define RowA 2 //行信号,驱动138 #define RowB 3 #define RowC 4 #define RowD 5 int hc138en=6; //138 使能 //使用了硬件SPI,以下脚不能更改 #define R1 11 //数据出 MOSI #define CLK 13 //时钟 SCK #define STB 10 //595 刷新显示 SS #define DATAIN 12 //数据入,读FLASH时有用 MISO byte row=0; byte hz[] = {//智[16*16]横排 0x20,0x00,0x22,0x04,0x3F,0x7E,0x48,0x44, 0x08,0x44,0xFF,0xC4,0x10,0x44,0x14,0x7C, 0x22,0x44,0x42,0x10,0x9F,0xF8,0x10,0x10, 0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10, //和[16*16]横排 0x02,0x00,0x07,0x00,0x78,0x00,0x08,0x04, 0x0A,0xFE,0xFF,0x84,0x08,0x84,0x18,0x84, 0x1C,0x84,0x2A,0x84,0x2A,0x84,0x48,0x84, 0x88,0xFC,0x08,0x84,0x08,0x00,0x08,0x00, //科[16*16]横排 0x04,0x10,0x0E,0x10,0xF8,0x90,0x08,0x50, 0x08,0x10,0xFE,0x90,0x08,0x50,0x1C,0x14, 0x1A,0x1E,0x29,0xF0,0x28,0x10,0x48,0x10, 0x88,0x10,0x08,0x10,0x08,0x10,0x08,0x10, //技[16*16]横排 0x10,0x40,0x10,0x40,0x10,0x48,0x13,0xFC, 0xFC,0x40,0x10,0x40,0x10,0x40,0x13,0xF8, 0x1A,0x08,0x31,0x10,0xD1,0x10,0x10,0xA0, 0x10,0x40,0x10,0xB0,0x51,0x0E,0x26,0x04}; void spi_transfer(volatile char data) { SPDR = data; // Start the transmission while (!(SPSR & (1<<SPIF))) // Wait the end of the transmission { }; //return SPDR; // return the received byte } void hc138sacn(byte r){ //输出行线状态ABCD (A低,D高) digitalWrite(RowA,(r & 0x01)); digitalWrite(RowB,(r & 0x02)); digitalWrite(RowC,(r & 0x04)); digitalWrite(RowD,(r & 0x08)); } void hc595senddata(byte data){// 高位在前 反相(1亮0灭) for (byte i=0; i<8;i++) { digitalWrite(CLK,0); if (data & 0x80) { digitalWrite(R1, 0); } else { digitalWrite(R1, 1); } data=data<<1; digitalWrite(CLK,1); } } void setup () { pinMode(RowA, OUTPUT); pinMode(RowB, OUTPUT); pinMode(RowC, OUTPUT); pinMode(RowD, OUTPUT); //138片选 pinMode(hc138en, OUTPUT); //138 使能 pinMode(R1, OUTPUT);//595 数据 pinMode(CLK, OUTPUT); //595 时钟 pinMode(STB, OUTPUT); //595 使能 pinMode(DATAIN, INPUT); //595 使能 //digitalWrite(hc138d, HIGH); Serial.begin(19200); //SPI硬件设置 // SPCR = 01010000 //interrupt disabled,spi enabled,msb 1st,master,clk low when idle, //sample on leading edge of clk,system clock/4 rate (fastest) SPCR = (1<<SPE)|(1<<MSTR); delay(10); } void loop () { if (Serial.available() > 0) { // read the incoming byte: row = Serial.read(); // say what you got: Serial.print("I received: "); Serial.println(row, DEC); } for(row=0;row<16;row++){ for (int i=0;i<4;i++){//8片595 //硬件SPI 发送8字节耗时:22US spi_transfer(~(hz[i*32+row*2])); //硬件SPI spi_transfer(~(hz[i*32+row*2+1])); //硬件SPI //软件SPI 发送8字节耗时:770US // hc595senddata(hz[i*32+row*2]); // hc595senddata(hz[i*32+row*2+1]); } digitalWrite(hc138en, 1); //关闭显示 hc138sacn(row); //换行 digitalWrite(STB, 0); //595刷新 digitalWrite(STB, 1); delayMicroseconds(500) ; //节电用, digitalWrite(hc138en, 0); //开启显示 delayMicroseconds(500) ; //刷新频率调,差不多60HZ,1/16间隔 } }
接线图:
相关文章推荐
- 解决Silverlight5_tools无法安装问题(试验已成功)
- 笔记本电脑U盘安装win7和win10教程(本地试验成功)
- 判断网络状态,成功吐司网络可用,没有网络弹框设置网络,判断网络可用请求数据,接口回调
- 北斗导航试验卫星故障成功排除
- TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系
- 深度学习(caffe+VS2013+WIN10)使用GPU编译——调用python接口并且成功运行mnist
- SAP接口编程-RFC系列08 : 获取SAP DDIC的数据字段
- EasyNVR流媒体服务器网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据
- 微信模板消息接口-给用户发送订单成功信息/支付成功等等
- CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置 推荐
- 为了给自己开发一个支持 fastcgi 的 http server 做准备。剥离了 nanoweb 的 fastcgi 接口部分代码。测试了下。 成功了
- 08.集合框架(一)【集合概述】【接口Collection,Iterator,List,ListIterator】【类LinkedList,ArrayList】
- 成功搭建 Jenkins+ant+jmeter 进行接口自动化测试分享
- 模拟测试微信接口暨微信开发试验代码
- 用ipp2p在Linux上封杀bt等p2p传输(已试验成功)
- arm接口1之LED--S3C2440
- 用STC12C5A60S2的P4接口点亮LED
- 4步win7下简单FTP服务器搭建(试验成功)
- EasyNVR流媒体服务器网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据
- ArcGIS Engine开发之旅08--和查询相关的对象和接口