本帖最后由 洛克王国专用号 于 2013-9-10 12:27 编辑
手头有一块16*16 双色点阵屏,其行是由16个C2500驱动,其列是由4片TPIC6B595N 来控制双色LED,现在用arduino 已经点亮了点阵屏,但发现行电压接9V,就不会出现显示汉字的横线条LED灯偏暗,但心里没有底,下图中三级管接9v电压是否太高,一般接多少伏范围电压,请高人回复下?
1.电路图
2.arduino 代码
chinese.h 文件代码:
unsigned char HZ[]=
{
/*-- 文字: 祝 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x00,0x11,0xF8,0x11,0x08,0xFD,0x08,0x05,0x08,0x09,0x08,0x11,0x08,0x39,0xF8,
0x54,0x90,0x94,0x90,0x10,0x90,0x10,0x90,0x11,0x12,0x11,0x12,0x12,0x12,0x14,0x0E,
/*-- 文字: 全 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x30,0x10,0x1C,0x3F,0xF8,0x41,0x00,
0x01,0x00,0x01,0x10,0x1F,0xF8,0x01,0x00,0x01,0x00,0x01,0x04,0x7F,0xFE,0x00,0x00,
/*-- 文字: 国 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x7F,0xFC,0x40,0x04,0x5F,0xF4,0x41,0x04,0x41,0x04,0x41,0x04,0x4F,0xE4,
0x41,0x44,0x41,0x24,0x41,0x24,0x5F,0xF4,0x40,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,
0x0A,0x00,0x09,0x00,0x11,0xBC,0x11,0x04,0x34,0x04,0x24,0x04,0x64,0x04,0xA4,0x04,
0x24,0x04,0x24,0x04,0x24,0x04,0x24,0x04,0x24,0x04,0x24,0x14,0x24,0x08,0x00,0x00,//们3
/*-- 文字: 教 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x20,0x08,0x20,0x7F,0x20,0x0A,0x7E,0xFF,0xC4,0x08,0x44,0x10,0xC4,0x3E,0x48,
0xC4,0x28,0x08,0x28,0x0F,0x10,0xF8,0x10,0x08,0x28,0x08,0xC8,0x2B,0x06,0x10,0x04,
/*-- 文字: 师 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x00,0x0B,0xFE,0x48,0x20,0x48,0x20,0x4B,0xFE,0x4A,0x22,0x4A,0x22,0x4A,0x22,
0x4A,0x22,0x52,0x22,0x52,0x2A,0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,0x00,0x20,
/*-- 文字: 节 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x20,0x04,0x20,0x00,0x00,0x3F,0xF8,0x02,0x08,
0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x28,0x02,0x10,0x02,0x00,0x02,0x00,0x02,0x00,
/*-- 文字: 日 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,
/*-- 文字: 快 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x80,0x20,0x80,0x20,0x80,0x37,0xF8,0xA8,0x88,0xA8,0x88,0xA0,0x88,0x2F,0xFE,
0x20,0x80,0x21,0x40,0x21,0x40,0x21,0x20,0x22,0x10,0x22,0x18,0x24,0x0E,0x28,0x04,
/*-- 文字: 乐 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x30,0x01,0xF8,0x1F,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x3F,0xFC,0x10,0x80,
0x08,0x80,0x0C,0x90,0x18,0x88,0x30,0x8C,0x24,0x86,0x42,0x84,0x01,0x00,0x00,0x00,
/*-- 文字: ! --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
/*-- 文字: 身 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x00,0x04,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x14,0x0F,0xF6,0x08,0x14,
0x08,0x18,0x7F,0xFE,0x00,0x70,0x01,0x90,0x06,0x10,0x18,0x10,0x60,0x50,0x00,0x20,
/*-- 文字: 体 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x40,0x18,0x40,0x10,0x40,0x20,0x40,0x37,0xFC,0x60,0xC0,0xA0,0xE0,0x21,0x60,
0x21,0x50,0x22,0x48,0x24,0x4E,0x2B,0xF4,0x20,0x40,0x20,0x40,0x20,0x40,0x00,0x00,
/*-- 文字: 健 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x20,0x10,0x20,0x2D,0xF8,0x24,0x28,0x65,0xFE,0xA8,0x28,0x2F,0xF8,0x22,0x20,
0x22,0xF8,0x32,0x20,0x2D,0xFC,0x24,0x20,0x2A,0x20,0x31,0xA0,0x20,0xFC,0x00,0x00,
/*-- 文字: 康 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x80,0x2F,0xF8,0x20,0x88,0x3F,0xFE,0x20,0x88,
0x2F,0xF8,0x28,0x80,0x24,0xC8,0x22,0xD8,0x24,0xA0,0x58,0x98,0x4A,0x8E,0x81,0x04,
/*-- 文字: ! --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
};
2. showChinese.ino 代码
/*
const int r_serPin = 11; //MOSI
const int rckPin = 10; //SS
const int srckPin = 13; //SCK
const int g_serPin = 12; //MISO
*/
const int u_rowPins[] ={2,3,4,5,6,7,8,9}; //A0 = 14 connect led anode +
const int d_rowPins[] ={A0,A1,A2,A3,A4,A5,0,1};
#include "chinese.h"
#include <SPI.h>
const int slaveSelectPin = 10;
void setup(){
for(int i = 0; i<8; i++){
pinMode(u_rowPins,OUTPUT);
pinMode(d_rowPins,OUTPUT);
// digitalWrite(u_rowPins,HIGH);
// digitalWrite(d_rowPins,HIGH);
}
pinMode(12, INPUT); //595 使能
pinMode (slaveSelectPin, OUTPUT);
//initialize SPI
SPI.begin();
}
void SPI_595_OUT(unsigned char i){
digitalWrite(slaveSelectPin,LOW);
SPI.transfer(i);
digitalWrite(slaveSelectPin,HIGH);
}
//======行扫描
//unsigned RU[] = { 0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0x00};
void loop(){
int a=0;
// unsigned char d=0;
for( a = 0;a<32*15;a=a+32){
for(char b =0; b<100;b++){
for(unsigned char i = 0;i<16;i++){
SPI_595_OUT(HZ[i*2+a]);
SPI_595_OUT(HZ[1+i*2+a]);
if(i<8)
for(int k = 0; k<8;k++){
if(k==i) {
digitalWrite(u_rowPins[k],HIGH);
delayMicroseconds(300);
}
else{
digitalWrite(u_rowPins[k],LOW);
}
}
else
{
for(int k = 0; k<8;k++){
if(k==(i-8)){
digitalWrite(d_rowPins[k],HIGH);
delayMicroseconds(300);
}
else{
digitalWrite(d_rowPins[k],LOW);
}
}
}
for(int m=0;m<8;m++){
digitalWrite(u_rowPins[m],LOW);
digitalWrite(d_rowPins[m],LOW);
}
}
}
}a=0; //d++;if(d>3)d=0;
}
3.成果
|