工具/原料
- 單片機(jī)開發(fā)板
- keil C IDE開發(fā)工具
- 8*8字模取模軟件
下載:
(121)8x8點(diǎn)陣顯示滾動(dòng)廣告.zip
(16.47 KB, 下載次數(shù): 127)
2016-11-5 10:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
部分源碼預(yù)覽:
- /*=======================================================================
- 程序名 : 8x8點(diǎn)陣顯示滾動(dòng)廣告
- 編寫人 : 李鎮(zhèn)
- 編寫時(shí)間: 2015年5月22日
- 硬件支持: STC89C52(QFC51開發(fā)板聯(lián)系旺旺ID:qq763187758)
- 系統(tǒng)時(shí)鐘: 12MHZ
- 程序目的: 在試驗(yàn)開發(fā)板的點(diǎn)陣上顯示滾動(dòng)廣告.
- 試驗(yàn)工具: QFC51開發(fā)板,記得把顯示切換到點(diǎn)陣顯示4的位置
- 程序說明: 本程序的取模方式是縱向取模,0電平點(diǎn)亮,所以用軟件取的模還要反白,
- 點(diǎn)陣掃描原理是:先選通第最左邊的一列,再發(fā)送取模數(shù)據(jù),一直掃描到最后一列
- 點(diǎn)陣掃描每次只掃描前8列,滾動(dòng)的效果的原理是,每隔一定時(shí)間,就把所有取模向前移一位,就達(dá)到滾動(dòng)效果.
- 當(dāng)然也可以向后移一位,或者多位.
- ========================================================================*/
- #include <reg52.h> //包含頭文件
- /*===把點(diǎn)陣的列選放在這個(gè)數(shù)組里===*/
- unsigned char big[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- //0111 1111 = 0x7f 選通第7列.從右至左,與數(shù)據(jù)的位相對(duì),數(shù)據(jù)的0位在最右邊,點(diǎn)陣的第0列也在最右邊
- //1011 1111 = 0xbf
- //1101 1111 = 0xdf
- //1110 1111 = 0xef
- //1111 0111 = 0xf7
- //1111 1011 = 0xfb
- //1111 1101 = 0xfd
- //1111 1110 = 0xfe 選通第0列,從右至左,與數(shù)據(jù)的位相對(duì),數(shù)據(jù)的0位在最右邊,點(diǎn)陣的第0列也在最右邊
- /*===/www.qq763187758.com(縱向取模)===*/
- xdata unsigned char LedFai[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xB7,0xBB,0xDD,0xBB,0xB7,0xCF,0xFF,
- 0xF1,0xFE,0xF9,0xFE,0xF1,0xFF,0xF1,0xFE,0xF9,0xFE,0xF1,0xFF,0xF1,0xFE,0xF9,0xFE,
- 0xF1,0xFF,0xFE,0xFF,0xC7,0xBB,0xBB,0xDB,0x80,0xFF,0xC7,0xBB,0xBB,0xDB,0x80,0xFF,
- 0x9F,0xBF,0xB8,0xB7,0x8F,0xFF,0xE1,0xD6,0xB6,0xB6,0xF9,0xFF,0xBD,0xBE,0xAE,0x96,
- 0xB9,0xFF,0xFF,0xDE,0x80,0xFE,0xFF,0xFF,0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,0x9F,0xBF,
- 0xB8,0xB7,0x8F,0xFF,0x9F,0xBF,0xB8,0xB7,0x8F,0xFF,0x8D,0xAE,0xAE,0xAE,0xB1,0xFF,
- 0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,0xFE,0xFF,0xE3,0xDD,0xDD,0xDD,0xFB,0xFF,0xE3,0xDD,
- 0xDD,0xDD,0xE3,0xFF,0xC1,0xEF,0xDF,0xDF,0xE1};
- /*===點(diǎn)陣掃描===*/
- void led_out(void)
- {
- unsigned char i,j; //聲明1個(gè)變量用來循環(huán)用,1個(gè)變量用來循環(huán)延時(shí)用
- for(i = 0;i < 8;i++) //for循環(huán)8次,i從0到7循環(huán)8次
- {
- P0 = LedFai[i]; //P0口輸出縱向取模,P1口輸出列選,在哪1列上顯示.從列選表里與i配合輸出.
- P1 = big[i]; //P1口輸出列掃描,分別掃描點(diǎn)陣的8個(gè)列,從左到右一列一列掃描.
- for(j = 0;j < 140;j++); //延時(shí)一段時(shí)間.
- P1 = 0xff; //關(guān)閉列選.
- }
- }
- /*===把字模數(shù)組里的元素整體向左移一位===*/
- //sizeof(LedFai)的作用是獲得LedFai數(shù)組的元素的個(gè)數(shù)。減1就得到此數(shù)組的最大元素下標(biāo)。
- void LedLeft()
- {
- unsigned char i;
- unsigned char j = LedFai[0]; //先把字模數(shù)組的第0個(gè)元素暫存,因?yàn)槿∧W笠茣r(shí),這個(gè)字模要被移出.
-
- for(i = 0;i < sizeof(LedFai)-1;i++)
- {
- LedFai[i] = LedFai[i+1]; //把字模數(shù)組里的后一個(gè)字模向前移動(dòng)一位.
- }
- LedFai[sizeof(LedFai)-1] = j; //把字模數(shù)組的最前面字模放在這個(gè)數(shù)組的最后.
- }
- /*===主函數(shù)===*/
- void main(void)
- {
- unsigned char j = 0; //聲明1個(gè)變量用來控制滾動(dòng)時(shí)間
- while(1) //主循環(huán).
- {
- j++; //循環(huán)延時(shí)變量自增
- if(j == 100) //如果時(shí)間到,滾動(dòng)一次.
- {
- j = 0; //清循環(huán)延時(shí)計(jì)數(shù)為0,重新開始計(jì)數(shù)
- LedLeft(); //取模移整體移一位
- }
- led_out(); //點(diǎn)陣掃描.
- }
- }
復(fù)制代碼 |