首先, 上一張16X16點(diǎn)陣的仿真圖, 我已盡量備注詳細(xì)
16X16.png (236.16 KB, 下載次數(shù): 83)
下載附件
2019-5-2 10:17 上傳
下面是從上圖的仿真擴(kuò)展為16X32(相應(yīng)的程序也要修改)
16X32.png (329.86 KB, 下載次數(shù): 87)
下載附件
2019-5-2 10:19 上傳
這樣子應(yīng)該看明白了吧, 有想法的程友可以自己動手再擴(kuò)展
單片機(jī)源程序如下:
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define SPEED 2 //移動速度,數(shù)字越小越快,數(shù)字越大越慢
- sbit DS=P2^0; //接U2_74HC595的引腳14
- sbit ST=P2^2; //接U2_74HC595的引腳12
- sbit SH=P2^1; //接U2_74HC595的引腳11
- uchar code table1[]={ //點(diǎn)陣屏的上部(1屏和2屏)
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白屏
- 0x04,0x24,0x24,0x24,0x7F,0xC4,0x44,0x04,0x04,0xFF,0x04,0x44,0x34,0x05,0x04,0x00,/*"我"的上半部,0*/
- 0x01,0x26,0x34,0x2C,0x24,0x24,0x37,0x4C,0x44,0x44,0x4C,0x74,0xC4,0x45,0x06,0x00,/*"愛"的上半部,1*/
- 0x00,0x01,0x06,0x1F,0xE0,0x02,0x04,0x18,0xF0,0x10,0x13,0x10,0x10,0x14,0x18,0x00,/*"你"的上半部,2*/
- 0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,/*"中"的上半部,3*/
- 0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,/*"國"的上半部,4*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白屏
- };
- uchar code table2[]={ //點(diǎn)陣屏的下部(3屏和4屏)
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白屏
- 0x00,0x10,0x12,0x21,0xFE,0x40,0x82,0x02,0x04,0xC8,0x30,0x28,0x44,0x82,0x1F,0x00,/*"我"的下半部,0*/
- 0x00,0x82,0x84,0x89,0x91,0xE1,0xB2,0xAA,0xA4,0xA4,0xAA,0xB2,0x81,0x01,0x01,0x00,/*"愛"的下半部,1*/
- 0x80,0x00,0x00,0xFF,0x00,0x08,0x30,0xC0,0x02,0x01,0xFE,0x00,0x80,0x60,0x18,0x00,/*"你"的下半部,2*/
- 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00,/*"中"的下半部,3*/
- 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00,/*"國"的下半部,4*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白屏
- };
- void senddata(uchar,uchar);
- void delay(uint);
- void main()
- {
- uchar i,j,k,m,n=0;
- while(1)
- {
- for(i=0;i<96;i++) //要顯示的字?jǐn)?shù),值=字?jǐn)?shù)*16+16, 最后的這個16是顯示一個空白屏
- {
- for(j=0;j<SPEED;j++) //移動速度
- {
- for(k=0;k<16;k++) //顯示列數(shù)(勿修改)
- {
- m=i+k;
- P1=k;
- senddata(table1[m],table2[m]); //傳送第上部屏和下部屏
- delay(100); //延時
- senddata(0,0); //消隱,全滅
- }
- }
- }
- }
-
- }
- /* 將每行數(shù)據(jù)送至74HC595
- * m為高8位,n為低8位
- * SH為移位時鐘,ST為鎖存時鐘 */
- void senddata(uchar m,uchar n)
- {
- uchar i;
- ST=0;
- for(i=0;i<16;i++) //有多少行,就改多少
- {
- SH=0;
- if(i<8) { //1-8行
- DS=0X80&(m<<i);
- } else if(i>=8 && i<16) { //9-16行
- DS=0X80&(n<<(i-8));
- }
- SH=1;
- }
- ST=1;
- }
- void delay(uint m)
- {
- uint j;
- for(j=m;j>0;j--);
- }
復(fù)制代碼
取模方式
取模方式.png (210.39 KB, 下載次數(shù): 72)
下載附件
2019-5-2 10:21 上傳
附件內(nèi)容, 有些程友上傳的附件不全, 導(dǎo)致下載浪費(fèi)黑幣, 還有的程友發(fā)布的仿真程序只有hex, 但在內(nèi)容描述卻帶有源程序字樣, 在此BS一下
JD20190502101522.png (51.83 KB, 下載次數(shù): 62)
下載附件
2019-5-2 10:21 上傳
仿真打開后, 如果單片機(jī)指定的main.hex變動, 請手工重新指定
JD20190502101543.png (39.3 KB, 下載次數(shù): 71)
下載附件
2019-5-2 10:21 上傳
全部資料51hei下載地址:
16X16點(diǎn)陣擴(kuò)展16X32點(diǎn)陣示例(程序+仿真).zip
(633.65 KB, 下載次數(shù): 280)
2019-5-2 10:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|