寫在前面的話
希望所有發(fā)貼求助的新人朋友們, 請先在論壇搜索, 論壇有很多老師們發(fā)的貼子, 雖然有很多描述得不清不楚, 但總是有能用的
8X8點陣我也參考了好多, 發(fā)代碼的確實不少, 但在硬件方面配套的原理圖, 連接圖都不太清楚, 于是就瞎子摸象, 總算是搞清楚了
特發(fā)此貼跟大家分享
照樣, 先上原理圖, 接線圖
程序有附仿真程序, 方便調(diào)試
由于是測試, 所以用排針+杜邦線
單片機源程序如下:
- /*********************************************************************************
- 接線方式請看main.h說明
- 二片74HC595 + 一個8*8點陣(1088AS共陰)
- 實現(xiàn)文字靜態(tài)顯示+移動顯示(左移/右移/上移/下移)
- 代碼精簡,方便理解
- **********************************************************************************/
- #include "main.h"
- //定義變量
- uchar temp = 0xfe;
- /*取模說明:
- 菜單選項:
- "點陣格式" : 根據(jù)你的點陣是共陰還是共陽, 我的是共陰, 所以選擇的是陰碼
- "取模走向" : 根據(jù)你的需求, 選擇逆向或順向, 我這里選擇的是逆向
- "取模方式" : 請看下面示例說明, 根據(jù)移動方向選擇
- "每行顯示數(shù)據(jù)" : 點陣=8, 索引=8
- "液晶面板仿真" : 像素大小=8
- "輸出數(shù)制" : 選擇"十六進制數(shù)"
- "輸出選項" : 選擇"輸出精簡格式"和"輸出緊湊格式"
- "自定義格式" : 選擇"C51格式", 其它默認
- 主界面選項:
- 字體: 幼圓
- 字寬: 8 字高: 8
- 點陣寬: 8 點陣高: 8
- */
- //動態(tài)顯示數(shù)組
- uchar Display_word1[48] = { //數(shù)組個數(shù)(這里的40代表有40個十六進制,因為是8*8點陣,所以每個字有8個十六進制)
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白(前面放一個空白屏,實現(xiàn)移動出字效果)
- //0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10, //箭頭
- //逆向+逐列式或列行式 (左移/右移)
- 0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08, //"一",0
- 0x80,0x80,0x80,0xFE,0x90,0x90,0x80,0x80, //"上",1
- 0x00,0x40,0x44,0x44,0x44,0x44,0x40,0x00, //"二",2
- 0x00,0x02,0x02,0xFE,0x0A,0x12,0x02,0x00, //"下",3
- //逆向+行列式或逐行式 (上移/下移)
- /*0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00, //"一",0
- 0x00,0x08,0x08,0x08,0x38,0x08,0x08,0xFF, //"上",1
- 0x00,0x00,0x3C,0x00,0x00,0x00,0x7E,0x00, //"二",2
- 0x00,0x7E,0x08,0x18,0x28,0x08,0x08,0x08, //"下",3
- */
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白(最后放一個空白屏,以免出現(xiàn)亂碼)
- };
- //靜態(tài)顯示數(shù)組(第1個參數(shù)為幾個字,第2個參數(shù)為每字多少字節(jié))
- uchar Display_word2[3][8] = {
- 0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C, //心
- 0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10, //箭頭
- 0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C, //心
- };
- //****************************************************
- //主函數(shù)
- //****************************************************
- void main()
- {
- uint i;
- uchar j,k;
- while(1)
- {
- ///////////////////////////////////////////////////////////////////////////
- //靜態(tài)顯示
- for(j = 0 ; j < 3 ; j++) { //共需顯示3個字
- for(i = 0 ; i < 1000 ; i++) { //靜態(tài)顯示時間
- temp = 0x7f;
- for(k = 0 ; k < 8 ; k++) { //顯示1-8列(8為顯示8列)如果改成4則有4列顯示,另4列黑屏
- Send_Data(Display_word2[j][k]);
- }
- }
- }
- ///////////////////////////////////////////////////////////////////////////
- //移動方式(想要不同的移動方式,就按以下說明修改)
- //for(j = 0 ; j < 40 ; j++) //左移(逐列式)/上移(逐行式)
- //for(j = 39 ; j-1 > 0 ; j--) //右移(逐列式)/下移(逐行式)
- for(j = 0 ; j < 40 ; j++) { //要顯示的字數(shù)(每個字8位,這里是顯示一屏空白+4個字,所以是8+4*8=40)
- for(i = 0 ; i < 50 ; i++) { //控制移動的速度(數(shù)字越小移動速度越快,越大越慢)
- temp = 0x7f;
- //移動方式(想要不同的移動方式,就按以下說明修改)
- //for(k = 0 ; k < 8 ; k++) //左移(逐列式)/右移(逐列式)
- //for(k = 8 ; k-1 > 0 ; k--) //上移(逐行式)/下移(逐行式)
- for(k = 0 ; k < 8 ; k++) { //(每個字取8次數(shù)組, 不要修改)
- Send_Data(Display_word1[j+k]);
- }
- }
- }
- }
- }
復(fù)制代碼
壓縮包內(nèi), 附了仿真程序, 點陣程序和取模說明和工具
全部資料51hei下載地址:
STC89C52+74HC595+8X8點陣移動程序.zip
(2.65 MB, 下載次數(shù): 427)
2019-4-24 21:22 上傳
點擊文件名下載附件
|