標題: 16*64雙色點陣屏與控制卡制作說明資料(單片機源碼+電路圖) [打印本頁]
作者: 云海悠悠 時間: 2018-2-20 15:52
標題: 16*64雙色點陣屏與控制卡制作說明資料(單片機源碼+電路圖)
喜歡研究點陣的朋友可以看下
DIY 16*64雙色點陣,采用3.75MM的雙色點陣模塊設計,模塊與模塊的距離合適,間隔不大,不會影響顯示效果,PCB做工好,長303MM,寬75MM。
提供多種學習程序,足夠玩轉(zhuǎn)16*64雙色點陣,從初級到中級到高級程序設計學習。從設計到整理完資料,幾個人花了一個多月的時間,認真做好教程,絕非網(wǎng)上亂抄襲,都是經(jīng)過我們測試好,注釋好以及說明好接口讓每一位愛好者都能輕松學習控制點陣,從中學到知識。

16X64點陣屏與控制卡的電路原理圖:
0.jpg (102.68 KB, 下載次數(shù): 122)
下載附件
2018-2-20 16:07 上傳
壓縮包里面有清晰大圖(ad格式):
0.png (8.49 KB, 下載次數(shù): 120)
下載附件
2018-2-20 16:08 上傳
整套材料有:
下面介紹制作過程中的順序以及常見問題分析:
焊接順序
一.先焊接PCB背面的輸入 輸出雙列8P排針,不然焊了點陣模塊,排針就不好焊接了。背面的1K*4電阻4個無需焊接。如果需要上螺絲也在此時放螺絲。
二.然后放置8*8雙色點陣模塊,如下圖這樣放置,有字的朝下,或者看中間的缺口,突出的朝下。這模塊不是很容易放置,注意每個管腳都不要彎曲,且管腳的距離要合適,這樣放置起來不會這么吃力。
三.焊接PCB正面的芯片了,這個比較容易,雖然是貼片的,但是管腳間距都比較大,容易焊接,初學者都不必擔心,另外板上的電容也不需要焊接。焊接上去就是電源濾波 芯片工作穩(wěn)定一點。芯片的第一腳注意就可以了,芯片上有個點的就是第一個腳,焊盤上也是如此,焊接時看清楚,芯片都朝一個方向,比較容易看出。
四.東西都焊接好后,檢查下芯片有無虛焊,點陣管腳有無虛焊,這個錯誤很容易犯。也可用測試程序看出來。PCB上的元件名稱都標的非常清楚,很容易對號入座。
常見問題分析
1.焊接完成后,與控制卡連接,或者用自己的單片機實驗板,連接方法見程序說明。每個程序都有接口說明,方便大家學習測試用。
2.如果發(fā)現(xiàn)哪行不亮 或者列 不亮 一般是芯片虛焊,芯片焊接正常一般不會有問題。
恭喜制作成功后,好好玩轉(zhuǎn)提供的源程序吧,里面的程序注視比較多,我們花了很多心血去整理調(diào)試加注視的,相信對你學習控制點陣有幫助,如果有能力整理出來可以做一個商業(yè)化的程序了。
最后祝大家制作成功,享受DIY帶來的樂趣。


點陣屏的單片機源程序如下:
- /***************************************************************
- 16*64 雙色點陣 移動顯示時間+靜態(tài)切換時間 程序
- /***************************************************************
- 如果有控制卡,下載此程序插上排線即可測試
- 如果沒有控制卡,自己根據(jù)下面的接口用杜邦線與點陣連接即可測試
- 單片機:STC12C5A32S2 或者其他12系列型號都可以
- 晶振18.432M
- 功能簡介:上電顯示“精品制”
- 然后切換顯示時間 星期 月日 年 再移動顯示時間信息
- 4個按鍵 分別進行調(diào)時設置
- 程序用中斷掃描法 驅(qū)動點陣 程序參考價值較好!
- /*
- 點陣屏管腳定義
- SHCP GND
- STCP GND
- R1 GND
- G1 GND
- VCC GND
- A GND
- B GND
- C D
- */
- /*
- 控制卡
- P0.0~P0.3 A B C D
- P16 SCK
- P17 STR
- R1 P04
- G1 P05
- R2 P06
- G2 P07
- ********************************************************/
- #include "Type.H"
- #define KG 0 //定義空格數(shù)
- #define RI 10 //定義日數(shù)
- #define JI 25 //定義節(jié)數(shù)
- #define GT 163 //定! 數(shù)
- #define XI 109 //定★ 數(shù)
- /*******鍵盤***********************************************************************/
- sbit KEY1 = P2^0;
- sbit KEY2 = P2^1;
- sbit KEY3 = P2^2;
- sbit KEY4 = P2^3;
- sbit ADCIO =P1^5; //AD
- /*************************************************************************************/
- #define H_PORT P0 //行138信號 scan
- sbit CK =P1^6; //時鐘OUT
- sbit STR =P1^7; //鎖存上升沿輸出鎖存
- sbit R1 =P0^4; //屏紅數(shù)據(jù)
- sbit G1 =P0^5; //屏綠數(shù)據(jù)
- sbit OE =P1^0; //全屏使能
- sbit IA =P0^0; //行控制線A
- sbit IB =P0^1; //行控制線B
- sbit IC =P0^2; //行控制線C
- sbit ID =P0^3; //行控制線D
- /*********************************************************************************/
- #define scan0 {IA=0;IB=0;IC=0;ID=0;}
- #define scan1 {IA=1;IB=0;IC=0;ID=0;}
- #define scan2 {IA=0;IB=1;IC=0;ID=0;}
- #define scan3 {IA=1;IB=1;IC=0;ID=0;}
- #define scan4 {IA=0;IB=0;IC=1;ID=0;}
- #define scan5 {IA=1;IB=0;IC=1;ID=0;}
- #define scan6 {IA=0;IB=1;IC=1;ID=0;}
- #define scan7 {IA=1;IB=1;IC=1;ID=0;}
- #define scan8 {IA=0;IB=0;IC=0;ID=1;}
- #define scan9 {IA=1;IB=0;IC=0;ID=1;}
- #define scan10 {IA=0;IB=1;IC=0;ID=1;}
- #define scan11 {IA=1;IB=1;IC=0;ID=1;}
- #define scan12 {IA=0;IB=0;IC=1;ID=1;}
- #define scan13 {IA=1;IB=0;IC=1;ID=1;}
- #define scan14 {IA=0;IB=1;IC=1;ID=1;}
- #define scan15 {IA=1;IB=1;IC=1;ID=1;}
- /*定義接口****************************************************************************/
- #define HC595_LOCK_H {STR =1;}
- #define HC595_LOCK_L {STR =0;}
- #define HC595_CLK_H {CK =1;}
- #define HC595_CLK_L {CK =0;}
- #define LS138_A_H {IA =1;}
- #define LS138_A_L {IA =0;}
- #define LS138_B_H {IB =1;}
- #define LS138_B_L {IB =0;}
- #define LS138_C_H {IC =1;}
- #define LS138_C_L {IC =0;}
- #define LS138_D_H {ID =1;}
- #define LS138_D_L {ID =0;}
- #define LS138_OE_H {OE =1;}
- #define LS138_OE_L {OE =0;}
- #define HC595_G_H {G1 =1;}
- #define HC595_G_L {G1 =0;}
- #define HC595_R_H {R1 =1;}
- #define HC595_R_L {R1 =0;}
- #define FESTIVAL_MAX 69 //定義陽歷節(jié)日數(shù)(0----68)
- uchar disp_mode=0xFF;
- /************************************************************
- //DS1302時鐘定義全局變量
- /**********公歷年,月,日,星期,小時,分鐘,秒********************************/
- uchar xdata yy, mo, dd, week, hh, mm, ss;
- /*************農(nóng)歷年, 月, 日,*************************************/
- uchar xdata year_moon,month_moon,day_moon;
- /*************************************************************************************/
- /*涵數(shù)聲明****************************************************************************/
- void LEDinit(); /*************************************清屏*/
- void DELAY_US(int num); /*************************************延時函數(shù)*/
- void Beep_key(void); /*************************************喇叭函數(shù)*/
- void DS1302_TimeStop(bit flag); /*************************************喇叭函數(shù)*/
- void PWM_LIGHT(uint p); /*************************************亮度控制*/
- void intmcu( ); /*************************************中斷和定時器初始化*/
- //void Lintmcu(void); /*************************************廣告一*/
- //void Lintmcu2(void); /*************************************廣告一*/
- void LED16X64_write(uchar *str,uchar yanse,bit color);/*******************直寫漢字*/
- void LED_rectangle_erasure(uchar x1,uchar y1,uchar x2,uchar y2,uchar model);/*搽除距形*/
- void Conver_week(void); /***************************************星計算*/
- //void Conversion(void); /******************************************歷計算*/
- BYTE ManageButton(BYTE Vale); /**************************************按鍵處理*/
- uchar xdata LED_RAM[LED_byte]; /**************************************顯示緩沖區(qū)*/
- //*********************************************************************************
- INxdata naozhongtime; //鬧鐘記時
- Uxdata MOVingDAT[]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,12,12,12}; //(游動的字)時段設置
- Uxdata ShowDAT[6]; //固定顯示
- //Uxdata SHENGRI_DATA[18]; //六組生日數(shù)據(jù)
- Uxdata shengRi; //生日
- //***************************************
- uint xdata HalfCount; //半秒記數(shù)
- uint xdata b; //閃爍控制
- uint xdata Light; //亮度
- uchar disrow=0 ; //當前掃描行
- uchar e; //操作變量
- uchar ADJ; //按鍵變量
- uchar switc; //畫面切換變量
- uchar windw; //顯示允許變量
- uchar flow; //邊框流動變量
- uchar menu; //當前菜單0自動1調(diào)年月日2調(diào)時分秒星期
- uchar LED_X,LED_Y; //LED橫豎坐標變量(用于顛倒顯示)
- uchar Menmu; //顯示控制
- //***************************************
- BIT LEDup_dow; //LED顛倒顯示標記1正顯示0倒顯示
- BIT twinkle; //調(diào)整閃爍標記
- BIT Run_flay; //潤年標記
- BIT IR_OK=0; //紅外線接收標記
- BIT Set_bit=0; //設置時間標記
- BIT GUn_bit=0; //滾動標記
- BIT CKTIME_1=0; //校時標記
- BIT jieqi_bit=0; //有無節(jié)氣標記
- BIT NO_flow; // 取消邊框
- bit stop_bit=0; // (流動停止標志)
- /**********自定義頭文件*****************************/
- #include "LED_drive.h" //加載LED掃描驅(qū)動
- #include "ASCII.h" //加載自定義字模
- #include "DS1302.h" //加載DS1302驅(qū)動
- //#include "DHT11.h" //溫濕度傳感器
- //#include "nongli.h" //加載農(nóng)歷計算程序
- #include "LED_display.h" //加載顯示控制程序
- #include "NEC+RC5_IR.h" //遙控頭文件(HT6621或TC9012)
- #include "key_adjust.h" //加載按鍵輸入調(diào)節(jié)程序
- //***********************************************************************
- void write_sec(void)
- {
- uchar aa;
- read_clockS();//讀出DS1302所有時間數(shù)據(jù)
- if((Menmu>= 0)&&(Menmu<= 50))
- switc=0; //0-50顯示//年月
- if((Menmu>= 50)&&(Menmu<= 60))
- switc=1; //50-60顯示月日
- if((Menmu>= 60)&&(Menmu<= 70))
- switc=2; //60-70顯示時分秒
- if((Menmu>= 70)&&(Menmu<= 100))
- switc=3; //70-80顯示星期
- // if((Menmu>= 80)&&(Menmu<= 90))
- // switc=4; //40-59顯示農(nóng)歷
- // if((Menmu>= 90)&&(Menmu<=100))
- // switc=5; //40-59顯示生宵
- // if((Menmu>=110)&&(Menmu<=120))
- // switc=6; //40-59顯示溫度
- // if((Menmu>=120)&&(Menmu<=130))
- // switc=7; //40-59顯示濕度
- // if((Menmu>=130)&&(Menmu<=140))
- // switc=8; //40-59顯示生日滾動
- // if((Menmu>=140)&&(Menmu<=160))
- // switc=9; //40-59顯示//溫度
- if((aa!=ss)&&(switc==0))//在時分秒星期界面時每秒顯示刷新一次秒值
- {
- aa=ss;
- // if(LEDup_dow) //***************************正向顯示
- // {
- LED_8X16_write(17,16,ss/10+48,Red,1);//刷新秒十位顯示
- LED_8X16_write( 9,16,ss%10+48,Red,1);//刷新秒個位顯示
- LED_write_english_string(47,16,":" ,Red,Noml);//寫8X16字符冒號
- LED_write_english_string(24,16,":", Red,Noml);//寫8X16字符冒號
- // }
- // else
- // {
- // LED_8X16_write(47,1,ss/10+48,Orgen,1);//刷新秒十位顯示
- // LED_8X16_write(55,1,ss%10+48,Orgen,1);//刷新秒個位顯示
- // }
- }
- if((ss=59)&&(switc==0))//在時分秒星期界面時每秒顯示刷新一次秒值
- {
- // if(LEDup_dow)
- //{
- LED_8X16_write(40,16,mm/10+48, Red,Noml);//寫8X16字符分鐘十位
- LED_8X16_write(32,16,mm%10+48, Red,Noml);//寫8X16字符分鐘個位
- LED_8X16_write(63,16,hh/10+48, Red,Noml);//寫8X16字符小時十位
- LED_8X16_write(55,16,hh%10+48, Red,Noml);//寫8X16字符小時個位
- // }
- // else
- // {
- // LED_8X16_write(24,1,mm/10+48, Green,Noml);//寫8X16字符分鐘十位
- // LED_8X16_write(32,1,mm%10+48, Green,Noml);//寫8X16字符分鐘個位
- // LED_8X16_write(1, 1,hh/10+48, Red,Noml);//寫8X16字符小時十位
- // LED_8X16_write(9, 1,hh%10+48, Red,Noml);//寫8X16字符小時個位
- // }
- }
- }
- /*********************************************************************************************
- 函數(shù)名:intmcu()
- 調(diào) 用:定時和外中斷初始化涵數(shù)
- 參 數(shù):無
- 返回值:無
- 結 果:
- 備 注:
- /**********************************************************************************************/
- void intmcu()
- {
- TH1=TH; //16位計數(shù)寄存器T1高8位定時器T1初值
- TL1=TL; //16位計數(shù)寄存器T1低8位定時器T1初值
- //**************************************
- //IP-x x pt2 ps pt1 px1 pt0 px0*/
- IP =B(00000011); //外中斷0優(yōu)先用于紅外遙控
- //**************************************
- //TCON-TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0*/
- TCON=B(01010001);//IT0下降沿觸發(fā)INT0.(IT0=0為低電平觸發(fā))TR1掃描點陣
- //**************************************
- //TMOD-GATE1 C/T M1 M0 GATE0 C/T M1 M0
- TMOD=B(00010010);//定時器01模式1(16位)
- //**************************************
- //IE-EA X ET2 ES ET1 EX1 ET0 EX0
- IE =B(10001011); //總中斷定時中斷01和外中斷0
- //**************************************
- }
- void Play_show(void) {
- switch(switc) {
- case 0:if(windw==0)four_min_sec ();windw=1;break;//時分秒
- case 1:if(windw==1)year_month ();windw=2;break;//年月
- case 2:if(windw==2)month_day ();windw=3;break;//月日
- case 3:if(windw==3){LEDinit ();NYRLoad();Hz_LeftDispla(0);}windw=0;break; //漢字左移動程序w//星期
- // case 4:if(windw==4)nongli_display();windw=5;break;//農(nóng)歷
- }
- write_sec ();//----------------------------------顯示切換和秒更新
- //flow_frame();//----------------------------------流水邊框
- }
- void Play_INT(void) {
- LED_rectangle_erasure(1,1,64,16,0);//空白填充矩形框
- intmcu ();//初始化單片機中斷和定時器中斷初始化
- Light=BCD2DEC(read_clock(10,TempCH_NumLIGHT))*13;
- if(Light<80)
- write_1302clock(TempCH_NumLIGHT,15);
- Light=BCD2DEC(read_clock(10,TempCH_NumLIGHT))*13;
- typewrite ();//打字效果"精品制作“
- //任意按鍵跳過LOGO進入頻譜=========================
- /*-----頻譜顯示--------*/
- // NYRLoad (); //漢字加載今天是2012年01月08日星期三
- //Hz_LeftDispla(1); //漢字左移動程序
- //Picture16X64(Pic64X16Y3IN); //--------------------------圖片
-
- LEDinit ();//***************************************內(nèi)存清屏
- }
- /**********************************************************************************************/
- void main(void)
- {
- DS1302_Initial ();//1302初始化
- //Read_temperature();//讀溫度
- read_clockS ();//讀1302時間
- Beep_set ();//測試喇叭
- Beep_key ();//測試喇叭
- intmcu();
- LEDinit ();//開中斷前先清屏防止亂顯
- Play_INT ();//初始化數(shù)據(jù)
- //Lintmcu(); Lintmcu2();
- while(1)
- {
- TimeCHck (); //--------------------------------時間補償
- KEY_Process (); //--------------------------------按鍵操作
- KEY_Manage (); //--------------------------------按鍵執(zhí)行
- if(menu==0)
- Play_show();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 包含以下源碼與資料:
16X64點陣屏與控制卡原理圖
PC2002取模軟件
中級--16x64點陣萬年歷c
中級--點陣多種移動模式
初級--匯編 點陣16X(16-32-64-128-256)asm
初級--靜態(tài)顯示程序
測試--左移測試程序
測試--逐行點亮測試
高級--16分頻與64分頻16X64雙色點陣頻譜程序
高級--點陣上位機軟件與下位機程序
高級--點陣多模式顯示時間程序
高級-移動顯示時間+靜態(tài)切換顯示時間
16X64雙色點陣制作說明V1.0.doc
芯片資料
0.png (56.01 KB, 下載次數(shù): 123)
下載附件
2018-2-20 16:11 上傳
所有資料51hei提供下載:
16X64點陣資料.rar
(7.95 MB, 下載次數(shù): 711)
2018-2-20 17:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: 937166474 時間: 2018-5-9 21:13
下載學習一波,
作者: ab560 時間: 2018-5-10 08:15
學習學習,謝謝樓主分享
作者: abin8888 時間: 2018-6-20 15:33
下載學習一下,謝謝樓主分享
作者: 23390052libin 時間: 2018-7-24 23:32
下載看了,非常有用,先學習一下,謝謝分享!
作者: lzhiaohiua 時間: 2018-8-1 11:19
謝謝樓主分享
作者: hacehi 時間: 2018-8-10 23:57
謝謝,非常感謝
作者: fixhk 時間: 2018-11-15 23:02
謝謝樓主分享
作者: 1900千九 時間: 2018-11-24 18:46
能不能分享一下樓主的資料
作者: 234qwazxcv 時間: 2018-11-28 10:53
下載了不會用
作者: 234qwazxcv 時間: 2018-11-28 10:54
下載了不會用
作者: zhoujilu 時間: 2018-12-4 00:40
為啥我的黑幣被扣了,卻沒有提示下載????
作者: yuren1984 時間: 2018-12-14 05:03
找這資料好辛苦,感謝樓主的分享,不知道資料是否有上位機軟件直接可以
作者: 快樂眼淚 時間: 2018-12-14 11:35
感謝樓主分享
作者: lifeng5478 時間: 2019-1-4 15:31
感謝樓主分享!必須贊一個。
作者: IMeng 時間: 2019-1-10 16:16
支持樓主的教程
作者: slaoliu 時間: 2019-1-21 15:15
十分感謝分享,
作者: qxdqx 時間: 2019-3-2 07:33
太好啦!謝謝分享。
作者: xchunfeng 時間: 2019-3-8 09:50
謝謝樓主。
作者: my6511 時間: 2019-4-21 18:23
先學習一下,謝謝分享!
作者: dringsing 時間: 2019-5-6 15:16
謝謝!學習一下
作者: 藍旗 時間: 2019-5-16 15:30
非常好!
作者: zqy1818 時間: 2019-7-2 16:38
感謝樓主分享
作者: wumingzhe123 時間: 2019-7-4 08:57
真的是很給力,學習一波
作者: wumingzhe123 時間: 2019-7-4 08:58
很不錯啊
作者: atl0402 時間: 2019-9-9 19:27
謝謝樓主分享
作者: 不要惹寶生氣 時間: 2019-10-22 16:04
它這個刷屏,又嚴格的時序要求嘛
作者: zxule 時間: 2020-2-20 09:22
有pcb嗎
作者: 新鄉(xiāng)家電維修 時間: 2020-2-27 19:54
好資料,我正在學習這個
作者: wsh791 時間: 2020-2-27 22:55
學習一下
作者: yaoyinzhi 時間: 2020-3-12 20:40
不錯,學習中。。。。
作者: Lprong 時間: 2020-3-13 17:45
謝謝樓主,很棒
作者: szqinyi 時間: 2020-3-13 22:25
好東西,感謝分享。收藏了
作者: wangjian319 時間: 2020-12-17 09:49
下載看了,非常有用,先學習一下,謝謝分享!
作者: dugunanahai 時間: 2021-5-16 16:20
找了好久,終于找到你了。
我的F3.75半板LED雙色顯示屏。顯示板(F3.75半板)好的,控制板(A352S14)也是好的,現(xiàn)在就是沒有軟件了,2008年5月27生產(chǎn)的顯示屏用的是串口,筆記本電腦沒有串口,用USB轉(zhuǎn)串口連接不上。
現(xiàn)在改用樓主的控制板,但問題又來,我用的單片機時40腳的STC89C51、STC889C52RC、STC12C5A60S的,樓主的STC12C5A3282是44腳的,不知道程序用原來的USB TO TIL可以燒嗎?
作者: f5037242211 時間: 2021-5-24 19:23
挺好的 學習了 不知樓主知不知道亮度控制原理 求指點 是不是pwm oe使能引腳 怎么實現(xiàn) 可否告知一下亮度控制的原理
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
日韩一区二区三区在线
|
国产乱码精品一区二区三区五月婷
|
国产精品视频久久
|
国产精品视频偷伦精品视频
|
国产精品久久久久久久久久尿
|
99精品久久
|
粉色午夜视频
|
久久精品欧美一区二区三区不卡
|
亚洲精品视频免费
|
国产欧美一区二区三区在线播放
|
精品欧美一区二区精品久久
|
免费观看的av毛片的网站
|
欧美成人久久
|
欧美女优在线观看
|
六月成人网
|
伊人久久精品一区二区三区
|
国产精品一区二区av
|
亚洲免费在线
|
亚洲一区免费
|
亚洲欧美aⅴ
|
成人免费在线播放视频
|
午夜视频免费在线观看
|
欧美黄色一级毛片
|
成人三级影院
|
av黄色国产
|
精品在线一区
|
h视频在线观看免费
|
欧美精品网站
|
欧美在线日韩
|
黄网免费
|
日韩在线日韩
|
亚洲午夜在线
|
国产精品美女久久久久aⅴ国产馆
|
免费播放一级片
|
黄色在线免费观看
|
一区精品国产欧美在线
|
欧美中文字幕一区二区三区亚洲
|
久久极品
|
神马九九|
国产精品日产欧美久久久久
|
欧美成人a∨高清免费观看
老司机午夜性大片
|