/*****************************EC實(shí)驗(yàn)室********************************/
/*********************************************************************
名稱:595控制4漢字點(diǎn)陣屏
內(nèi)容:屏+5V、GND連接電源5V
P40-P43分別連接A、B、C、D,用于控制16行,通過2路HC138控制
SCK時鐘連接P53
LATCH鎖存連接P54
R1紅色數(shù)據(jù)信號連接至P55
G1綠色數(shù)據(jù)信號連接至P56,如果使用單紅色屏此信號無需連接
OE使能端一般接GND,可以用IO引腳PWM控制亮度
或者使用此引腳控制拖尾現(xiàn)象。
現(xiàn)象:使用普通速度51系列單片機(jī)。1個漢字顯示屏,向左流動顯示多句話,重復(fù)循環(huán)顯示。
**********************************************************************/
#include #define T_STR_H P5OUT |= BIT4 #define T_STR_L P5OUT &= ~BIT4 #define R1_H P5OUT |= BIT5 #define R1_L P5OUT &= ~BIT5 #define G1_H P5OUT |= BIT6 #define G1_L P5OUT &= ~BIT6 #define T_CLK_H P5OUT |= BIT3 #define T_CLK_L P5OUT &= ~BIT3 #define OE_H P5OUT |= BIT7 #define OE_L P5OUT &= ~BIT7 void InputByte( unsigned char DataR1); void Input2Byte( unsigned char DataR1,unsigned char DataG1); void Delay(unsigned int t); void Led_init(); void display(); unsigned char MoveBitNum,MoveBitNumtemp,IncNum;//移動位數(shù),臨時移動位數(shù),大于一個字節(jié)增加字節(jié)數(shù) unsigned int HzNum;//漢字個數(shù) unsigned char buff[10]; /*----------------------------------------------- 16x16漢字取模數(shù)據(jù) ------------------------------------------------*/ unsigned char hztest[][32]= //取模選擇字節(jié)倒序 ,正序得出的字是反的,可以在軟件中設(shè)置自動倒敘 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //前面一屏大小的空字符,不顯示,這里根據(jù)屏的大小修改,這個是1個漢字屏 //所以寫入1個漢字 /*-- 文字: 請 --*/ /*-- 新宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x02,0x02,0x02,0xE4,0x3F,0x04,0x02,0xC0,0x1F,0x00,0x02,0xE7,0x7F,0x04,0x00, 0xC4,0x1F,0x44,0x10,0xC4,0x1F,0x44,0x10,0xD4,0x1F,0x4C,0x10,0x44,0x14,0x40,0x08, /*-- 文字: 關(guān) --*/ /*-- 新宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x08,0x08,0x10,0x08,0x10,0x04,0x00,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00, 0xFF,0x7F,0x80,0x00,0x40,0x01,0x40,0x01,0x20,0x02,0x10,0x04,0x0C,0x18,0x03,0x60, /*-- 文字: 大 --*/ /*-- 新宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x80,0x00,0x80,0x00, 0x40,0x01,0x40,0x01,0x20,0x02,0x20,0x02,0x10,0x04,0x08,0x08,0x04,0x10,0x03,0x60, /*-- 文字: 燈 --*/ /*-- 新宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x08,0x00,0x08,0x00,0xC8,0x7F,0x08,0x04,0x2A,0x04,0x1A,0x04,0x0A,0x04,0x09,0x04, 0x08,0x04,0x08,0x04,0x08,0x04,0x14,0x04,0x24,0x04,0x22,0x04,0x02,0x05,0x01,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //尾部的一屏的空字符,用于清屏,參數(shù)和屏大小有關(guān)。 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; /******************************警示程序*********************************/ void WARNING_START() { Led_init(); } void WARNING_STOP() { P5SEL=0X00; P5DIR=0X00; // CCR0 interrupt enabled OE_H; } /*******************************LED相關(guān)接口初始化*********************************/ void Led_init() { P5SEL=0X00; P5DIR=0XFF; P4SEL=0X00; P4DIR=0XFF; MoveBitNum=0; MoveBitNumtemp=0; IncNum=0; HzNum=0; for(int i=0;i<10;i++) { buff[i]=0; } } /*----------------------------------------------- 向595寫入一個字節(jié) 單紅色 ------------------------------------------------*/ void InputByte( unsigned char DataR1) //寫一個字節(jié) { unsigned char i; for(i=8; i>0; i--) { if(!(DataR1&0x01)==1) R1_H; else R1_L; T_CLK_L; T_CLK_H; DataR1 = DataR1 >> 1; } } /*----------------------------------------------- 延時程序 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } /*----------------------------------------------- 主程序 ------------------------------------------------*/ void display() { static unsigned char count;//16行掃描數(shù)據(jù),范圍0-15 static unsigned int i, j; static unsigned char temp; i++; if(i==15)//更改流動速度,1T單片機(jī)和12T單片機(jī)速度大約5-8倍,注意更改參數(shù) { i=0; MoveBitNum++; if(MoveBitNum==16)//每次移動完一個漢字大小后循環(huán) { MoveBitNum=0; HzNum+=1; //調(diào)用下一個漢字 if(HzNum>=5)//需要顯示的漢字個數(shù),包括前面的一屏空字符的個數(shù),后面清屏的空字符不包含在內(nèi),這里是(漢字個數(shù)+1) HzNum=0; //完全顯示完后循環(huán)調(diào)用 } } Delay(1);//控制掃描頻率 for(j=0;j<2;j++) //取每個漢字的前2個字節(jié), { //漢字個數(shù)+1 buff[j+j]=hztest[HzNum+j][count+count]; //每次移動完一個漢字后,選擇下一個漢字 buff[j+j+1]=hztest[HzNum+j][count+count+1]; } if(MoveBitNum<8) // 判讀移動距離是大于一個字節(jié)還是小于一個字節(jié),因?yàn)橐粋€字節(jié)左移右移最大只能8位 { IncNum=0; MoveBitNumtemp=MoveBitNum; } else { IncNum=1; MoveBitNumtemp=MoveBitNum-8;}//大于8就減去8得到的數(shù)值還是小于8 T_STR_L; //鎖存無效 for(j=0;j<2;j++) //按bit的方式移動緩沖區(qū)的內(nèi)容,然后輸出到595,即取出的數(shù)值每個字節(jié)左移一定的位數(shù), { //后面左移出的數(shù)據(jù)整合到前面的字節(jié)中,保持?jǐn)?shù)據(jù)的連續(xù)性 temp=(buff[j+IncNum]>>MoveBitNumtemp)|(buff[j+1+IncNum]<<(8-MoveBitNumtemp));//這句比較重要,需要自行拿出2個字節(jié)的數(shù)據(jù)模擬分析 InputByte(temp);//輸出到595 }//8個字節(jié)傳輸完鎖存輸出 OE_H; P4OUT=15-count;//用P0口的前4位控制16行,屏內(nèi)部通過4-16譯碼器工作,循環(huán)掃描16行 T_STR_H; //鎖存有效,此時一行的數(shù)據(jù)顯示到屏上 OE_L; count++; if(count==16) count=0; }
上一篇:MSP430:輸入捕獲
下一篇:低功耗模式下如何用看門狗監(jiān)控程序跑飛
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 蜂巢能源2025年試產(chǎn)半固態(tài)電池,2027年大批量供貨
- 激光雷達(dá)進(jìn)化論:RoboSense如何持續(xù)領(lǐng)跑?
- 法雷奧-全景顯示技術(shù) Panovision | 申報(bào)2025第七屆金輯獎中國汽車新供應(yīng)鏈百強(qiáng)
- 公安部:目前我國市售汽車搭載的“智駕”系統(tǒng),都不具備“自動駕駛”功能
- 德賽西威-旗艦級AI智能座艙域控制器 | 申報(bào)2025第七屆金輯獎中國汽車新供應(yīng)鏈百強(qiáng)
- Mobileye推出駕駛員監(jiān)測系統(tǒng)(DMS)技術(shù) ,實(shí)現(xiàn)人與車輛協(xié)同駕駛
- 第三屆安富利汽車生態(tài)圈峰會盛大啟幕,雙城聯(lián)動激發(fā)智慧出行產(chǎn)業(yè)新動能
- Vicor Corporation 2025年第二季度財(cái)報(bào):專利訴訟和解推動強(qiáng)勁增長
- 智能底盤2.0競賽,這家外資巨頭按下加速鍵
- GaN技術(shù)如何應(yīng)用到人形機(jī)器人執(zhí)行關(guān)節(jié)?
- 邀你參加2018年論壇體驗(yàn)問卷調(diào)查
- 嵌入式Rust修煉營第一場直播:Rust入門基礎(chǔ)知識和三個動手實(shí)戰(zhàn)Rust任務(wù)解析
- Microchip喊你探索dsPIC33A 芯片,70份好禮等你贏!
- 【EEWORLD第三十八屆】2012年05月社區(qū)明星人物揭曉!
- ST有獎直播 | 75V降壓控制器和隔離降壓方案
- 西門子直播:IGBT PLM(產(chǎn)品生命周期管理) 解決方案,鋪就 IGBT 研發(fā)坦途
- TI汽車方案拼圖,你敢挑戰(zhàn)嗎?
- 安森美電動汽車充電白皮書,看碳化硅如何緩解“里程焦慮”!
- 你有原創(chuàng),我有豪禮?。ㄔ瓌?chuàng)精選評選第7期)
- Keysight感恩月:每天送出一臺示波器,一次注冊即可參與
- 以stm32的TIM2作為實(shí)例一步步配置成為定時器
- STM32的通用定時器的配置
- STM32移植STemWin后使用四點(diǎn)或兩點(diǎn)觸摸校準(zhǔn)
- STM32F407外擴(kuò)SRAM配置
- 使用J-link+J-Flash給STM32芯片燒寫序列號
- 智能電視易被黑客入侵:你看電視時有人在看著你
- AI和VR等科技將改革教育面貌 并與真人教師相輔相成
- 博通敦促高通:最好是在本周末與我們見面
- 科技部:中國基礎(chǔ)科學(xué)研究“三步走”發(fā)展目標(biāo)明確
- 基于G.729語音壓縮編譯碼算法的嵌入式語音存儲系統(tǒng)設(shè)計(jì)