本帖最后由 電子黑 于 2016-6-27 01:28 編輯

嗯,也算是此次暑假留校在科協學習的一個小小的結束成果了。其實本來是聽創新基地指導員的建議做倒車雷達的,但是那超聲波的探頭太貴,被迫放棄了。
另外為了讓點陣恒流驅動,我用了三極管驅動(其實不用三極管也能顯示的,不過亮度不均勻,不好看)我自己靠僅有的一點模電三極管知識自己把電路圖給設計出來了。因為網上很難找到電路,不知道為啥16×16點陣的資料特少。



74HC595驅動電路。用的四塊74HC595級聯。我問過很多比較專業的人,也找過很多資料,他們都說行掃描和列掃描都用595的話不好。可是我理論分析可行,于是做出來,事實證明也行!!

這是沒加三極管驅動的一樣能顯示,只是效果差一點

這個自己比較自豪的板子,三極管恒流驅動模塊(自個設計的)。呵呵因為科協上面沒有8050了。自己買3毛一個,買16個..。。也花了不少錢啊。。挺心痛


整體連接

網上的資料很少出現完整配套的16×16點陣的原理圖和程序,而且這是經過橋哥實踐驗證了的,因此在此含淚托出。。呵呵。
成品整體照

原理圖(由于圖太大縮小了看不清,因此分塊來發)

下面是驅動模塊電路圖
1、三極管部分

2、74HC595部分

3、引出接到點陣的排針

嗯硬件電路就是這樣了,下面是程序。
#include<reg52.h>
#include<74HC595.h>
#define uchar unsigned char
#define uint unsigned int
//列掃描數組
uchar code table_L[]={0xff,0x7f, 0xff,0xbf, 0xff,0xdf, 0xff,0xef, 0xff,0xf7, 0xff,0xfb, 0xff,0xfd, 0xff,0xfe,
0x7f,0xff, 0xbf,0xff, 0xdf,0xff, 0xef,0xff, 0xf7,0xff, 0xfb,0xff, 0xfd,0xff, 0xfe,0xff};
//字模數組
uchar code table_H[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x08,0x40,0x04,0x40,0x02,0xFE,0x7F,0x20,0x01,0x20,0x02,0x00,0x40,0x20,0x49,
0x20,0x49,0xFE,0x3F,0x90,0x24,0x90,0x24,0x90,0x20,0x80,0x20,0x00,0x20,0x00,0x00,/*"桂",0*/
0x00,0x10,0x80,0x0C,0x80,0x02,0xF8,0x3F,0x40,0x01,0x40,0x0A,0x00,0x04,0x40,0x02,
0x40,0x01,0xFC,0x7F,0x20,0x01,0x20,0x02,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x00,/*"林",1*/
0x00,0x00,0x00,0x00,0xE0,0x01,0x20,0x06,0x20,0x05,0x20,0x05,0xFE,0x3F,0x90,0x42,
0x10,0x42,0x10,0x42,0xF0,0x41,0x00,0x40,0x00,0x40,0x00,0x38,0x00,0x00,0x00,0x00,/*"電",2*/
0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x88,0x00,0x88,0x20,0x88,0x20,0xE4,0x40,
0x94,0x3F,0x4C,0x00,0x44,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,/*"子",3*/
0x00,0x10,0x80,0x08,0x90,0x04,0x90,0x02,0xF0,0x7F,0x48,0x01,0x44,0x01,0x00,0x02,
0x50,0x02,0xA0,0x02,0x00,0x02,0xFE,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,/*"科",4*/
0x00,0x04,0x40,0x04,0x40,0x22,0xFE,0x7F,0x20,0x01,0x20,0x20,0x00,0x20,0x20,0x15,
0x20,0x09,0xFE,0x08,0x90,0x16,0x90,0x21,0x00,0x60,0x00,0x40,0x00,0x40,0x00,0x00,/*"技",5*/
0x00,0x00,0x00,0x40,0x80,0x20,0x80,0x10,0x80,0x08,0x80,0x06,0xFE,0x01,0x40,0x02,
0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x20,0x00,0x60,0x00,0x40,0x00,0x40,0x00,0x00,/*"大",6*/
0x00,0x00,0x80,0x09,0xE0,0x08,0x44,0x08,0x48,0x08,0x40,0x09,0xA4,0x48,0xA8,0x86,
0xA0,0x7D,0xB0,0x04,0x2E,0x04,0x20,0x04,0x60,0x04,0x20,0x00,0x00,0x00,0x00,0x00,/*"學",7*/
0x00,0x20,0x40,0x11,0x40,0x0A,0x20,0x04,0xE0,0x0B,0x00,0x40,0x80,0x20,0x70,0x18,
0x4E,0x07,0x20,0x08,0xA0,0x10,0x60,0x20,0x20,0x60,0x00,0x40,0x00,0x40,0x00,0x00,/*"歡",8*/
0x80,0x10,0x80,0x10,0x88,0x12,0x90,0x1D,0x00,0x10,0xF0,0x13,0x10,0x12,0x08,0x11,
0x0C,0x20,0xE0,0x2F,0x10,0x20,0x10,0x61,0xF0,0x61,0x00,0x20,0x00,0x20,0x00,0x00,/*"迎",9*/
0x00,0x00,0x40,0x20,0x20,0x30,0xF0,0x03,0x0C,0x18,0x40,0x20,0xA0,0x41,0x18,0x48,
0x16,0x52,0xF0,0x43,0x08,0x50,0xA8,0x60,0x18,0x45,0x00,0x08,0x00,0x00,0x00,0x00,/*"您",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x33,0xF8,0x33,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",11*/
0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x33,0xF8,0x33,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",12*/
0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,/*"-",13*/
0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,/*"-",14*/
0x00,0x00,0x00,0x06,0x80,0x03,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x40,0xFC,0x3F,
0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,/*"小",15*/
0x00,0x04,0x40,0x02,0x40,0x01,0xFE,0x7F,0x20,0x01,0x20,0x43,0x40,0x21,0xC8,0x1E,
0x78,0x00,0x28,0x00,0x64,0xFE,0xA4,0x00,0x20,0x01,0x00,0x02,0x00,0x02,0x00,0x00,/*"橋",16*/
0x00,0x00,0x40,0x00,0x88,0x30,0x10,0x0E,0x00,0x40,0x20,0x30,0xA0,0x0D,0x60,0x01,
0xA2,0x3E,0x94,0x00,0xD0,0x1E,0x90,0x20,0x10,0x20,0x00,0x20,0x00,0x38,0x00,0x00,/*"流",17*/
0x00,0x10,0x80,0x10,0x80,0x08,0x40,0x04,0x40,0x03,0xC0,0x20,0x00,0x40,0xFC,0x7F,
0x80,0x00,0x40,0x01,0x20,0x02,0x18,0x04,0x00,0x0C,0x00,0x08,0x00,0x08,0x00,0x00,/*"水",18*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
};
uchar L=0,H=0;
uint t=0,x=0;
#define h sizeof(table_H)
void main()
{
// extern uint h;
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-1000)/256;//1ms進一次中斷刷新顯示一列
TL0=(65536-1000)%256;
TR0=1;
// h=sizeof(table_H);
while(1)
{
if(L==32)
{
L=0;
H=0;
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
Input(table_L[L]);
Input(table_L[L+1]);
Input(table_H[H+x]);
Input(table_H[H+x+1]);
Output();
L=L+2;
// if(L==32)L=0;
H=H+2;
// if(H==32)H=0;
t++;
if(t==100)//移動
{
t=0;
x=x+2;
if(x>=h-32)x=0;
}
}
下面是上面程序用到的74HC595的頭文件
//SCK上升沿讀取數據(由高位送數據),RCK上升沿輸出鎖存數據 。沒有嚴格的時間要求
sbit SI=P2^4;//數據口
sbit SCK=P2^6;//數據輸入時鐘線
sbit RCK=P2^5;//數據輸出時鐘線
void Input(unsigned char dat)
{
char i;
for(i=0;i<8;i++)
{
dat=dat<<1;
SCK=0;
SI=CY;//取出最高位
SCK=1;//上升沿
}
}
void Output()
{
RCK=0;
RCK=1;//上升沿輸出鎖存數據
}
至此,點陣的完整資料已經給出來了,有不足和還需改進的地方或者錯誤還希望看到這篇文章的達人指出。。
看到了不,實驗室里唯一一臺顯像管顯示器(俗稱大屁股)。。。正是橋哥的。。很糾結。為啥他們都用液晶呢???我很疑惑,一直沒搞懂。。。

|