久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5152|回復: 0
打印 上一主題 下一主題
收起左側

點陣電子顯示屏制作

[復制鏈接]
跳轉到指定樓層
樓主
ID:155769 發表于 2016-12-18 23:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
編號:A乙0301
點陣電子顯示屏制作
   
摘要………………………………………………………………………………2
前言 ……………………………………………………………………………4
一、設計要求……………………………………………………………………4
二、方案論證與比較……………………………………………………5
1、掃描方式的選擇 ………………………………………………………5
2、行列控制方式的方案論證與選擇 ………………………………………5
3、數字時鐘顯示模塊的設計方案論證與選擇 ……………………………6
三、系統硬件電路設計…………………………………………………………6
1、系統總體框圖………………………………………………………………6
2、各單元電路設計  …………………………………………………………6
2.1、LED點陣的選擇………………………………………………………6
2.2、行列控制和驅動電路設計 ……………………………………………7
2.3、實時時間控制電路的設計……………………………………………11
2.4、系統電源參數的核算…………………………………………………13
2.5、單片機與PC機通信單元設計………………………………………13
2.6、鍵盤控制電路設計 …………………………………………………14
三、 軟件設計……………………………………………………………………15
1、主程序設計…………………………………………………………………15
2、基于CPLD的行列控制邏輯電路的程序設計……………………………16
3. PC機串口通信子程序設計…………………………………………………16
四、 系統測試……………………………………………………………………16
五、設計總結 ……………………………………………………………………17
六、參考文獻 ……………………………………………………………………17
點陣電子顯示屏制作
摘要:
本設計是以AT-89S52單片機為控制核心,基于CPLD獨立掃描的實用、高效的智能型LED大屏幕顯示屏系統,該系統實現了按鍵切換、顯示屏亮度連續可調、信息上下左右滾屏顯示、預存信息定時循環顯示,利用DS1302實現實時時間顯示等功能,并能通過PC機串口直接對顯示信息進行控制更新,具有刷新速度快、亮度高、功耗低等特點。
關鍵字點陣LED  CPLD  MAX232  DS1302
AbstractThe Design of Graph Matrix Display Screen Based on MCS-51Microprocessor,consistsof Micro Control Unit (MCU) as its core, Base on CPLD carry out self-help scan, this system carry out follow function: using key-press shift the display content, adjust the time , continuum adjustthe lightness, roll screen display ,timing circle display the pre-storeinformation , using DS1302 carry out real timedisplay, etc.  utilize PC , via serialinterface , directly control the display content.  This Graph Matrix Display Screen display screen with quick refurbish,high luminance, and Low power consumption , and so on peculiarity.
Keywords: MCU, Graph MatrixDisplay Screen,CPLD,
MAX232,  DS1302
   
社會的信息化,促進了顯示技術的發展,LED大屏幕點陣顯示系統作為一項高科技產品已經漸漸融入了人們的生活。與傳統的顯示媒體相比,由于其亮度高、動態影像顯示效果好、耗能少、使用壽命長、顯示內容多樣、顯示方式靈活、性價比高等優勢,已經開始廣泛應用于各行各業。采用單片機控制的LED點陣顯示屏顯示形式美觀大方,顯示內容靈活可變,具有低功耗,結構簡單,操作方便等優點,已廣泛應用于銀行,證券,影視,體育和公路交通等各個方面,顯示了其良好的市場前景。
一、    設計要求
1 基本要求:設計并制作LED電子顯示屏和控制器。
(1)自制一臺簡易16行*32列點陣顯示的LED電子顯示屏;
(2)自制顯示屏控制器,擴展鍵盤和相應的接口實現多功能顯示控制,顯示屏顯示數字和字母亮度適中,應無閃爍。
(3)顯示屏通過按鍵切換顯示數字和字母;
(4)顯示屏能顯示4組特定數字或者英文字母組成的句子,通過按鍵切換顯示內容;
(5)能顯示4組特定漢字組成的句子,通過按鍵切換顯示內容。
2、 發揮部分
1)       自制一臺簡易16行*64列點陣顯示的LED電子顯示屏;
2)       LED顯示屏亮度連續可調。
3)       實現信息的左右滾屏顯示,預存信息的定時循環顯示;
4)       實現實時時間的顯示,顯示屏數字顯示: 時∶分∶秒(例如 18∶38∶59);
5)       增大到10組(每組漢字8個或16個數字和字符)預存信息,信息具有掉電保護;
6)       實現和PC機通訊,通過PC機串口直接對顯示信息進行更新(須做PC機客戶程序);
7)       其他發揮功能。
二、方案論證與比較
1、掃描方式的選擇
方案一:靜態顯示,所謂的靜態顯示就是對LED電子顯示屏中的每一像素點都通過硬件單獨控制,整個LED顯示屏所有的LED的同時顯示。此方式最大優點是程序設計簡單,且畫面無閃爍。但這種設計存在致命的缺點:電路復雜,硬件利用率低,成本巨大。所以此方式一般不被采用。
方案二:采用動態掃描法并行輸出數據,所謂的動態掃描法是利用人眼的視覺暫留特點而實現的一種顯示方法,即當刷新速率足夠高時,人眼就察覺不出顯示屏畫面更迭的閃爍。若要顯示一幀畫面,先送出第一行的數據,然后選通并點亮第一行,延時;此后送出第二行的數據,同樣選通、點亮并延時;依次將所有行掃描完,即給出了一幀的畫面。
方案三:采用動態掃描法串行輸出數據,方案二和方案三同樣采用動態掃描實現顯示過程。但方案二的缺點也是明顯的,比較而言,方案二的譯碼電路比較復雜,相對硬件開銷大一些;方案三電路構成簡單,譯碼電路簡潔。
為使電路設計簡潔易行,我們采用方案三
2、行列控制方式的方案論證與選擇
方案一:采用傳統方案,應用行掃描和列送數據的方式,橫向取模,從AT89C52串口發送出來的數據通過74LS595進行串-并行數據轉換輸出給LEDMATRIX UINT的各個列,從AT89C52出來的輸出口的數據通過一級總線驅動器74LS245后進入4-16線譯碼器74LS154,譯碼以后通過限流電阻進入驅動管陣列放大,直接驅動LED點陣的各行。但要組成16×64的點陣顯示電路,必須采用多片芯片,硬件電路復雜。
方案二:采用超大規?删幊踢壿嬯嚵衅鰿PL構成行掃描和列控制模塊,利用VHDL語言設計控制邏輯,可充分發揮CPLD和數字電路EDA設計的優勢,只用一片CPLD芯片,通過簡單的編程模擬8片74LS595和一片74LS154,就可以代替方案一中利用多塊芯片實現的功能,硬件電路設計簡單可靠,具有極高的穩定性。本設計采用Altera公司的EPM7128SQC160-10芯片。
3、數字時鐘顯示模塊的設計方案論證與選擇
方案一:因為題目中只要求顯示時、分、秒,因此可以用門電路組合構成時鐘發生器,但此方案硬件復雜,穩定性低,且不易控制。
方案二:本方案完全用軟件定時、計數功能實現數字時鐘。該方案具有硬件電路簡單的特點。但由于每次執行程序時,定時器都要重新賦初值,所以該時鐘精度不高。而且,由于是軟件實現,當單片機不上電、程序不執行時,時鐘將不工作。
方案三:本方案采用實時時鐘芯片DS1302,它可以對年、月、日、周、時、分、秒進行計時,且具有閏年補償功能,采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據,時鐘芯片自備電池,只需要設置初始時間即可。
基于上述分析,本設計采用方案三完成數字時鐘部分的功能。
三、系統硬件電路設計
1、系統總體框圖
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
圖1   系統總體框圖
整個顯示系統可以分為①CPU主控電路部分②串行數據的傳送和時序控制部分 ③CPLD行列譯碼掃描部分④實時時鐘控制電路部分⑤與PC機串口通訊部分⑥按鍵控制電路部分⑦三極管驅動電路部分⑧點陣顯示部分。
2、各單元電路設計
2.1  LED點陣的選擇
LED基本陣列選用6寸的8×8點陣, 16片8×8點陣組成整個顯示屏。該種點陣的規格為雙列直插,標準引腳距(2.54mm),LED規格為Ф5,單色紅色。
8×8點陣LED結構如下圖所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
圖2  8×8點陣LED外觀及等效電路圖
2.2掃描控制和驅動電路設計
1.EPM7128SQC160-10簡述
EPM7128SQC160-10是Altera公司推出的MAX7000S系列CPLD(ComplexProgrammable Logic Device);采用CMOSE2PROM工藝,傳輸延遲僅為5ns;內部具有豐富的資源--128個觸發器、2500個用戶可編程門;而且具有102個用戶可編程的I/O口,為系統定義輸入、輸出和雙向口提供了極大的方便;為了比較適合混合電壓系統,通過配置,輸入引腳可以兼容3.3V/5V邏輯電平,輸出可以配置為3.3V/5V邏輯電平輸出。EPM7128同時還提供了JTAG接口,可進行ISP編程,極大地方便了用戶。
2、行列掃描電路的設計
對大型LED點陣顯示屏而言,由于其數據量大,必須有很快的刷新頻率,如刷新速度跟不上,會造成點陣屏畫面晃動和閃爍。解決這個問題有很多方法,例如,采用PC機的DMA控制器來提高數據傳輸速率,采用并行數據傳輸方式,分單元多CPU控制方式等等。我們采用CPU控制,利用CPLD(EPM7128SQC160-10)設計掃描邏輯,串行列數據分時傳輸,行掃描的方式,從而使整個顯示屏可以順序工作,并利用CPU控制掃描頻率,實現了屏幕無閃爍顯示。
該部分控制電路原理如圖3、圖4、圖5所示,采用行掃描的方式,行掃描與列送數據電路均采用CPLD 芯片編程構成的通用數字電路來控制,在16×64點陣顯示時,掃描輸出需要大量的I/O端口,因此我們采用具有160個I/O端口的EPM7128SQC160-10芯片,僅用一片即可滿足設計要求。
列數據傳輸控制電路如圖3所示,由單片機輸出的顯示信息串行輸入到CPLD,用VHDL語言編寫其總線讀邏輯,在CPLD芯片中實現八片8位3態串行輸入、并行輸出,帶鎖存功能的移位寄存器,完成數據的串并轉換,由CPLD的64列數據輸出控制LED點陣的64列。圖3為由CPLD實現的八片74LS595的示意圖,其中,L1-L64為列選通控制信號輸出,RCK、SCK、SCLR是由單片機送來得控制信號,RCK為鎖存控制信號,SCK為時鐘控制信號,SCLR為清零信號,各片的RCK、SCK、SCLR均接在一起, Si接單片機的掃描數據輸出,第一片74LS595(由CPLD實現)移位輸出端接第二片74LS595的數據輸入Si2,八片進行級連,實現一次掃描一個字節即:八位并行輸出和串行移位功能。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
3 用CPLD實現的64列數據傳輸邏輯示意圖
行掃描的控制是利用CPLD編程實現四線十六線譯碼器74LS154的功能,如圖4所示,AA、BB、CC、DD接單片機行控制數據輸出,H1-H16為CPLD輸出的行掃描控制信號,接行三極管驅動電路。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
圖4   用CPLD實現的行掃描邏輯示意圖
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg
5  CPLD內部邏輯電路圖
3、行驅動電路設計
該系統顯示部分的點陣采用單色LED共陰點陣模塊,16 塊8×8點陣模塊連接成16×64點陣。因為一個行掃描管同時控制著一行中多個LED的通斷,所以它承載較大電流。以每個發光二極管流過的電流為10mA計算,一個64列的點陣屏中,每個行掃描管所承受的電流是10mA×64=0.64A,為此我們選用高速中功率三極管8550,保證了行的驅動能力。由于顯示點陣的每一行都需要用一個三極管來控制,所以16×64點陣共需要16個8550。驅動電路如圖6所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg
                    圖6   行驅動電路圖
4、掃描頻率的控制
由于人眼的視覺暫留現象,一個LED發光管如果在一秒鐘內亮24次以上的話,人眼就感覺不到閃爍。由此,一屏畫面連續以每秒25次的頻率循環顯示時,給人的感覺是穩定的。為此只要利用CPU控制由CPLD實現的行譯碼器的譯碼速度,保證每秒內譯碼16×25=400次,就可以保證畫面的穩定性。設計時,我們使AT89C51的定時/計數器T0工作于方式2(自動重載方式AUTO-RELOAD MODEL)。此時設定M1M0為10,在方式2中16位計數器被拆為兩部分,其中TL0用作8bit Counter;TH0用于存放和保持計數初值。當TL0計數溢出時,在溢出標志TF0置1的同時,自動的將TH0的初值重載到TL0中,因此在初始化的過程中,用軟件只需一次賦初值。其周期為:
T=(2^8-TH0初值)×時鐘周期×12
采用11.0592MHZ的晶振時,計數速率約為1MHz,輸入脈沖的周期間隔為1uS,通過計算,TH0的初值為243,即為0XF3(OF3H)。采用中斷的方式控制行譯碼掃描頻率,就可以保證畫面的無閃爍顯示。
2.3實時時間控制電路的設計
1、DS1302的結構及工作原理
DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據,同時提供了對后背電源進行涓涓細流充電的能力。其引腳功能及結構如圖7所示
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg
   圖7  DS1302引腳功能及結構圖
DS1302 的控制字如圖8所示?刂谱止澋淖罡哂行(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果為0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節總是從最低位開始輸出。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
圖8 DS1302的控制字
在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。
DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式,其日歷、時間寄存器及其控制字見表1。
表1
  
寄存器
  
命令字
取值范圍
各位內容
名稱
寫操作  讀操作
7      6     5   4   3    2   1   0
秒寄存器
80H
81H
00—59
CH       10SFC           SEC
分寄存器
82H
83H
00—59
0         10MIN           MIN
時寄存器
84H
85H
01—12或00—13
12/24  0     10  HR        HR
日寄存器
86H
87H
00—28.29.30.31
0      0      10DATA       DATA
月寄存器
88H
89H
01—12
0      0    0   10M        MONTH
周寄存器
8AH
8BH
01—07
0      0    0   0    0      DAY
年寄存器
8CH
8DH
00—99
    10YEAR              YEAR
     此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發寄存器及與RAM相關的寄存器等。時鐘突發寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。
2、利用 DS1302的實時時間顯示電路硬件設計
    DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。圖9示出DS1302與89C51的連接圖,利用單片機控制,采用顯示屏分屏顯示年、月、日與時、分、秒,并能進行按鍵調時。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg
圖9   DS1302與89C52的連接圖
    實際上,在調試程序時可以不加電容器,只加一個32.768kHz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要占用CPU一個口線即可。
2.4  系統電源參數的核算
對大型LED點陣顯示屏而言,由于其發光二極管數量多,在16×64點陣中,以每個發光二極管流過的電流為10mA計算,一個64列的點陣屏中,每個行掃描管所承受的電流是10mA×64=0.64A,16行并聯的總電流為0.64×16=10.24 A,要求電源輸出大電流,一般的集成穩壓芯片均不能滿足要求,因此本設計中采用電壓為5V,電流為10A的開關穩壓電源。
2.5 單片機與PC機通信單元設計
1、 通信單元電路組成
本單元主要有兩部分組成:上位機、下位機與電纜的接口,中間為電平轉換電路。該系統采用三線制,獨占 CPU串口方式。RS-232信號的電平和單片機串口信號的電平不一致,必須進行二者之間的電平轉換,在此使用的集成電平轉換芯片MAX232為RS-232C/TTL電平轉換芯片。它只使用單+5V電源,配接4個1μF電解電容即可完成RS-232電平與TTL電平之間的轉換。其電路原理如圖10所示。轉換完畢的串口信號TXD、RXD直接和89C51的串行口連接。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
圖10   電平轉換電路
2、 通信協議
本系統中PC機承擔主控任務,單片機接受PC機指令,并根據指令控制顯示信息,修改顯示內容。我們采用RS-232串口異步通信,1位起始位,8位數據位,1位停止位,無奇偶校驗,波特率9600b/s,傳輸數據采用ASCII模式。PC機傳送控制信息和數據,控制信息包括修改顯示參數、修改顯示方式。同時PC機能向單片機傳送顯示內容。下位機按接收到的指令工作。如果主控機發出錯誤的指令,將不做任何控制,并顯示Error提示,1秒鐘后自動返回。
2.6、鍵盤控制電路設計
本系統設置三個按鍵(k1、k2、k3)分別來控制時間、日期、滾屏顯示以及時間的調整,系統默認的狀態是顯示時間。首先進行鍵盤掃描判斷k1鍵是否按下,如果k1鍵按下并且只按一下則進入日期顯示狀態,當按兩下則進入信息的順序滾屏顯示狀態,如果沒有按下則判斷k2鍵是否按下,當k2鍵按下則進入時間、日期的設置狀態。K3鍵的作用是當調整時間時,完成時間和日期的累加,直到調整到需要的時間和日期為止。
三、 軟件設計
1.主程序設計
軟件設計采用了模塊化設計,全部用C51編程。整個軟件系統簡潔明了,而且具有良好的擴展性。整個軟件系統包括主程序、行列控制邏輯CPLD程序時鐘控制子程序和PC機串行通信子程序四大模塊。主程序負責鍵盤處理、顯示刷新、信息調用與傳輸控制。主程序流程如圖11所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg
圖11  主程序流程圖
2、基于CPLD的行列控制邏輯電路的程序設計
行譯碼掃描和列數據的串并傳輸控制的功能較主控電路來講相對簡單,它是將主控電路輸出的四位二進制數據譯成16行的行選通信號,去控制行驅動管驅動行輸出,將主控電路串行輸出的數據經CPLD完成數據的串并轉換,輸出控制64列,完成列數據的傳送。這是一個純組合邏輯電路,使用VerilogHDL 語言描述的always語句和case多分支語句即可實現此功能。
3PC機串口通信子程序設計
在與PC機進行通信時,單片機的功能主要是負責通信與數據處理。單片機接收來自PC機的信息,分析后回傳信息或數據到PC機,采用串口中斷程序,不定時處理與PC機的通信信息。
四、 系統測試
經過系統的測試與分析,得到以下結果:
1、按鍵切換顯示數字、字母與時間:
上電時,系統顯示當前時間,按一下k1鍵,即進入日期顯示狀態,系統顯示當前的日期,按兩下k1鍵,系統進入順序滾屏顯示狀態,依次顯示“歡迎光臨濟鐵職院”、“happyteacher day”等10組漢字與英文字符,按下k2鍵則進入時間設置狀態,與K3鍵配合實現了對年、月、日、以及時、分、秒的調整。
2、掉電保護功能測試
為使單片機內部RAM中的數據在電源掉電時不丟失,單片機外部中斷0平時是高電平,當掉電時,外部中斷口0變為低電平,產生中斷,單片機檢測到這個中斷信號時,轉入中斷處理程序,及時把有用信息保存起來,因為系統接入470uF的電容,電容的放電時間完全能夠保證單片機執行完保護數據的程序,這樣就可以避免斷電時預存信息的丟失,實現掉電保護功能。經測試,我們設計的系統做到了信息的掉電保護。
3、亮度的調節測試
通過連續調節限流電阻,改變加在LED顯示屏上的驅動電流,達到亮度連續可調的目的。經測試,本系統實現了顯示亮度的連續可調。
4、結論
經過小組成員的一致努力,完成了本次課題的任務,達到了預期的目的。設計制作的具有多種功能的16×64的點陣LED顯示屏,顯示畫面清晰,無閃爍,很好的完成了基本要求部分和發揮部分的功能。
五、設計總結
通過這次競賽,我們在硬件設計、軟件編程方面得到了極大的提高。同時我們小組的三個成員團結一心,通力合作,體現了很好的團隊合作精神。為以后走向工作崗位從事科研或管理工作積累了不可多得的經驗。在競賽中碰到了一個接一個的難題,我們經過不屈不撓的刻苦攻關,一一得到了化解,這種體驗為我們走好今后的人生路增添了極大的信心。
六、參考文獻
[1] 全國大學生電子設計競賽組委會.第六屆全國大學生電子設計競賽獲獎作品選編(2003).北京:北京理工大學出版社,2005年
[2] 黃智偉,王彥,陳文光,朱衛華.全國大學生電子設計競賽訓練教程.北京:電子工業出版社,2005年
[3] 王松武,于鑫,武思軍.電子創新設計與實踐.北京:國防工業出版社,2005
[4]林明權、馬維旻:VHDL數字控制系統設計范例[M],北京,
電子工業出版社,2003
[5] 楊恒、盧飛成:FPGA/VHDL快速工程實踐入門與提高[M],北京,北京航空航天大學出版社,2003
[6] 顧斌、趙明中:數字電路EDA設計,西安電子科技大學出版社,2005
[7] 趙亮、侯國銳:單片機C語言編程與實例,人民郵電出版社,2003
部分源程序清單:
sbitCLK=P2^0;
sbitDAT=P2^1;
sbitRCLK=P2^2;
//sbitCS=P2^3;
sbitAA=P3^0;
sbitBB=P3^1;
sbitCC=P3^2;
sbitDD=P3^3;
sbitG1=P3^4;
sbitdat=P1^1;
sbitclk=P1^0;
sbitrst=P1^2;
ucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全滅
ucharcode huan[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x9F,0xFF,0xBB,0x81,0x01,0xF9,0x7B,0xDA,0x97,
                   0xE9,0x9F,0xE3,0x1F,0xF3,0x2F,0xEB,0x6F,0xD8,0xE7,0xBD,0xF1,0xF3,0xFB,0xFF,0xFF};/*"歡",0*/
ucharcode ying[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0x3F,0xE4,0xC1,0xED,0xDD,0xED,0xDD,0x85,0xDD,
         0xED,0xDD,0xEC,0x5D,0xE9,0xC1,0xEF,0xDF,0xEF,0xDF,0x90,0x61,0xFE,0x03,0xFF,0xFF};/*"迎",1*/
ucharcodeguang[]={0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xEF,0xE6,0xE7,0xF2,0xCF,0xFA,0xDF,0xFE,0xBB,
                   0x80,0x01,0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xF3,0xBB,0xF7,0xBB,0x8F,0x81,0xFF,0xFF};/*"光",2*/
ucharcode lin[]= {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x3F,0xDB,0x7B,0xDB,0x01,0xDA,0x5F,0xDA,0xEB,
                   0xD9,0x03,0xDB,0x5B,0xDB,0x5B,0xDB,0x5B,0xDB,0x5B,0xFB,0x03,0xFB,0x7B,0xFF,0xFF};/*"臨",3*/
ucharcode Dshuzi[]={0xFF,0xFF,0xFF,0xE1,0xDE,0xDE,0xBF,0xBF,0xBF,0xBF,0xBF,0xDE,0xE1,0xFF,0xFF,0xFF,/*"0",0*/
                 0xFF,0xFF,0xFF,0xF3,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xE0,0xFF,0xFF,0xFF,/*"1",1*/
                 0xFF,0xFF,0xFF,0xE1,0xDC,0xBE,0xBE,0xFE,0xFC,0xF9,0xF7,0xCF,0x80,0xFF,0xFF,0xFF,/*"2",2*/
                 0xFF,0xFF,0xFF,0xE1,0xDE,0xFE,0xFE,0xFD,0xF0,0xFE,0x9F,0xDE,0xE1,0xFF,0xFF,0xFF,/*"3",3*/
                 0xFF,0xFF,0xFF,0xFC,0xF8,0xF4,0xF4,0xEC,0xDC,0xC0,0xFC,0xFC,0xF8,0xFF,0xFF,0xFF,/*"4",4*/
                  0xFF,0xFF,0xFF,0xC0,0xDF,0xDF,0xDF,0xC1,0xFE,0xFF,0xFF,0x9F,0xC0,0xFF,0xFF,0xFF,/*"5",5*/
                 0xFF,0xFF,0xFF,0xF8,0xE7,0xCF,0x9F,0x80,0x9F,0x9F,0x9F,0xDF,0xE0,0xFF,0xFF,0xFF,/*"6",6*/
                 0xFF,0xFF,0xFF,0x80,0xBF,0xFE,0xFD,0xF9,0xFB,0xF3,0xF7,0xE7,0xE7,0xFF,0xFF,0xFF,/*"7",7*/
                 0xFF,0xFF,0xFF,0xE1,0xDE,0xDE,0xDE,0xE1,0xDC,0xBF,0xBF,0x9E,0xE1,0xFF,0xFF,0xFF,/*"8",8*/
                  0xFF,0xFF,0xFF,0xE3,0x9C,0xBE,0xBE,0xBE,0x9C,0xE2,0xFE,0xFC,0xE3,0xFF,0xFF,0xFF,/*"9",9*/                              
                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xDF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFF,0xFF,0xFF};/*冒號*/
ucharcode ji[] ={0xFF,0xF7,0x60,0xCB,0xD1,0xAB,0x8B,0xFF};/*"濟",0*/
ucharcode nan[] ={0xFF,0xED,0x01,0x81,0xA1,0xB5,0xB1,0xFF};/*"南",1*/
ucharcode tie[] ={0xFF,0xDB,0xC3,0x80,0x8B,0xD5,0xCE,0xFF};/*"鐵",2*/
ucharcode dao[] ={0xFF,0xB3,0xC0,0x21,0xA1,0xA1,0x41,0xFF};/*"道",3*/
ucharcode zhi[] ={0xFF,0x01,0xA5,0x81,0xA5,0x81,0xEE,0xFF};/*"職",4*/
ucharcode ye[]  ={0xFF,0xE7,0xE5,0xA5,0xE3,0xE7,0x80,0xFF};/*"業",5*/
ucharcode jiji[]={0xFF,0xD7,0x81,0xC3,0x93,0xD7,0x89,0xFF};/*"技",6*/
ucharcode shu[] ={0xFF,0xF3,0xF6,0x80,0xE3,0xD3,0xB4,0xFF}; /*"術",7*/
ucharcode xue[] ={0xFF,0xC5,0xFB,0x80,0x80,0xF7,0xE7,0xFF}; /*"學",8*/
ucharcode yuan[]={0xFF,0x9B,0x80,0xA0,0x93,0x91,0x89,0xFF};/*"院",9*/
//定時4ms程序
voiddingshi(void)
{
         TMOD=0x01;           
         TL0=(65536-4000)%256;
         TH0=(65536-4000)/256;
         EA=1;
         ET0=1;
         TR0=1;      
         while(!TF0);
         TR0=0;
  }
       void delay(uint a)         
        {
        uint j=255;
        for(;a>0;a--)
        for(;j>0;j--);
        }
voidsendH(uchar *k)
{   
        uchar num1,num2,c,i;
        G1=0;
  for(i=0;i<16;i++)           
{
   num1=k[2*i];num2=k[2*i+1];
   for(c=0;c<8;c++)
        {
         CLK=0;
         DAT=num1&0x80;
         num1=num1<<1;        
         CLK=1;
         }
   
   for(c=0;c<8;c++)
        {
         CLK=0;
         DAT=num2&0x80;
         num1=num2<<1;        
         CLK=1;
         }
    }
         RCLK=0;        
         RCLK=1;
              ACC=i;
         AA=ACC^0;BB=ACC^1;CC=ACC^2,DD=ACC^3;
         dingshi();   
         
}
voidsendH1(uchar n,uchar *k)
{   
        uchar num1,c,i;
        G1=0;
  for(i=n;i<8+n;i++)           
{
   num1=k;                 
   for(c=0;c<8;c++)
        {
         CLK=0;
         DAT=num1&0x80;
         num1=num1<<1;        
         CLK=1;
         }
         RCLK=0;         
         RCLK=1;
              ACC=i;            
         AA=ACC^0;BB=ACC^1;CC=ACC^2,DD=ACC^3;
         dingshi();     
           }
}
voidsendD(uchar n)  
{   
        uchar num1,c,i;
        G1=0;
  for(i=0;i<16;i++)         
{
   num1=Dshuzi[n*16+i];   
   for(c=0;c<8;c++)
        {
         CLK=0;
         DAT=num1&0x80;
         num1=num1<<1;        
         CLK=1;
         }
         RCLK=0;         
         RCLK=1;
              ACC=i;
         AA=ACC^0;BB=ACC^1;CC=ACC^2,DD=ACC^3;
         dingshi();   
         }
}
voidInputByte(uchar dd)     
   {
     uchar i;
     ACC=dd;
     for(i=8;i>0;i--)
      {
       dat=A0;
       clk=1;
       clk=0;
       ACC=ACC>>=1;
        }
     }  
//-------------------------------------------------------
ucharOutputByte(void)   
   {
     uchar i;
     dat=1;     
     for(i=8;i>0;i--)
      {
        ACC=ACC>>1;
        A7=dat;
        clk=1;
        clk=0;
        }     
      return(ACC);
     }
//--------------------------------------------------
voidWrite(uchar addr,uchar num)   
  {
    rst=0;
    clk=0;
    rst=1;
    InputByte(addr);
    InputByte(num);   
    clk=1;
    rst=0;
    }
//-------------------------------------------------
ucharRead(uchar addr)      
  {
    uchar dd=0;
    rst=0;
    clk=0;
    rst=1;
    InputByte(addr);
    dd=OutputByte();
    clk=1;
    rst=0;
    return(dd);
   }
//--------------------------------------------------------------
ucharReadSec()               
  {
   uchar dd;
   dd=Read(0x81);
   return(dd);
   }
//--------------------------------------------------------------
ucharReadMin()              
  {
   uchar dd;
   dd=Read(0x83);
   return(dd);
    }      
//--------------------------------------------------------------
ucharReadHr()               
  {
    uchar dd;
    dd=Read(0x85);
    return(dd);
   }
//------------------------------------------------------------   
ucharReadWe()              
  {
    uchar dd;
    dd=Read(0x8b);
    return(dd);
    }
//------------------------------------------------------------
ucharReadDay()           
  {
    uchar dd;
    dd=Read(0x87);
    return(dd);
   }
//------------------------------------------------------------
ucharReadMn()         
  {
    uchar dd;
    dd=Read(0x89);
    return(dd);
   }
//------------------------------------------------------------
ucharReadYs()            
  {
    uchar dd;
    dd=Read(0x8d);
    return(dd);
   }
//------------------------------------------------------------
voidWriteSec(uchar num)   
      {
       Write(0x80,num);
       }
//-----------------------------------------------------------
voidWriteMin(uchar num)     
  {
    Write(0x82,num);
   }
//-----------------------------------------------------------
voidWriteHr(uchar num)      
  {
    Write(0x84,num);
   }
//-----------------------------------------------------------
voidWriteDay(uchar num)   
{
   Write(0x86,num);
  }
//-----------------------------------------------------------
voidWriteMn(uchar num)      
  {
    Write(0x88,num);
   }
//-----------------------------------------------------------
voidWriteWe(uchar num)        
{
   Write(0x8a,num);
   }
//-----------------------------------------------------------
voidWriteYs(uchar num)        
  {
    Write(0x8c,num);
   }
//-----------------------------------------------------------
voidDisableWP(void)      
{
   Write(0x8e,0x00);
   }
//----------------------------------------------------------
voidEnableWP(void)            
{
   Write(0x85,0x80);
   }
  
unsignedchar Key_Scan(void)
{
unsignedchar key_temp=0,i,j;
unsignedchar scan_code_row=0x01,scan_code_colum=0x80;
      for(i=0;i<4;i++)
       {
              KEY_PORT=scan_code_row;
              if(KEY_PORT==0)
              {
           for(j=0;j<4;j++)
                     {
                     KEY_PORT=scan_code_colum;
                     if(KEY_PORT==0&&key_temp!=0)
                     {KEY_PORT=0xff;  return key_temp=0;}
                     else
                     if(KEY_PORT==0)
                     key_temp=scan_code_row|scan_code_colum;
               scan_code_colum>>=1;
                     }
              }
              scan_code_row<<=1;
       }
  KEY_PORT=0xff;
  return key_temp;
}
voidshiy(void)
{
do{
  for (a=0;a<64;)
{
  for(b=0;b<300;b++)
  {c=0xfe;
  for(d=0;d<8;d++)
  { for(e=0;e<500;e++);
  P1=design[a+d];
  P2=c;
  c=((c<<1)|0x01);
  }
  }
  a=a+8;
}
for(a=0;a<56;)
{
  for(b=0;b<40;b++)
  {c=0xfe;
  for(d=0;d<8;d++)
  { for(e=0;e<500;e++);
    P1=design[a+d];
    P2=c;
    c=((c<<1)|0x01);
   }
  }
  a=a+1;
}
for(a=0;a<64;a++)
  {design1[a]=design[a];}
   for(b=0;b<80;b++)
   {c=0xfe;
   for(d=0;d<8;d++)
  { for(e=0;e<500;e++);
    P1=design1[d];
    P2=c;
    c=((c<<1)|0x01);
  }
}
for(a=0;a<64;a+=8)
  {
    for (b=0;b<8;b++)
    {
     for (d=0;d<8;d++)
     {
      if ((a+b+8)<64)
      { design1[d]=(design1[d])<<1;
      g=design1[a+d+8];
      design2[d]=g>>7;
      design1[d]=(design1[d]|design2[d]);
      design1[a+d+8]=(design1[a+d+8])<<1;
     }
   }
for(f=0;f<40;f++)
   { c=0xfe;
     for(d=0;d<8;d++)
   { for(e=0;e<500;e++);
     P1=design1[d];
     P2=c;
     c=((c<<1)|0x01);
     }
    }
   }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91素人| 日韩影音 | 国产精品资源在线 | 亚洲日本一区二区三区四区 | 免费看91 | caoporon| 久在线| 日韩免费福利视频 | 亚洲国产情侣 | 日韩日韩日韩日韩日韩日韩日韩 | 亚洲成人毛片 | 在线看av的网址 | 精品久久久久久中文字幕 | 亚洲国产精品一区二区三区 | 九九激情视频 | 国产视频第一页 | 色一情一乱一伦一区二区三区 | 欧美综合精品 | 亚洲视频在线观看免费 | 久久夜视频 | 欧美久久一级特黄毛片 | 国产aⅴ | 欧美久| 国产精品网址 | 91视频一88av | 狠狠狠 | 成人h视频在线 | 亚洲一区成人 | 中文精品久久 | 天堂在线免费视频 | 欧美精品日韩精品 | 精品亚洲一区二区三区 | 五月婷婷激情网 | 欧美韩一区二区 | 国产色婷婷精品综合在线手机播放 | 欧美日韩免费一区二区三区 | 欧美中文一区 | 在线欧美一区二区 | 日本精品一区二区三区视频 | 成人深夜福利网站 | 欧美一级高潮片免费的 |