仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源程序如下:
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define SPEED 1 //移動(dòng)速度,數(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, //空白屏
- 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, //空白屏
- 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, //空白屏
- 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,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, //空白屏
- 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, //空白屏
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白屏
- };
- void senddata(uchar,uchar,uchar,uchar);
- void delay(uint);
- void main()
- {
- uchar i,j,k,m,n=0;
- while(1)
- {
- for(i=0;i<112;i++) //要顯示的字?jǐn)?shù),值=字?jǐn)?shù)*16+32, 最后的這個(gè)32是顯示二個(gè)空白屏
- {
- for(j=0;j<SPEED;j++) //移動(dòng)速度
- {
- for(k=0;k<16;k++) //顯示列數(shù)(勿修改)
- {
- m=i+k;
- P1=k;
- senddata(table1[m+16],table2[m+16],table1[m],table2[m]); //傳送第上部屏和下部屏
- //delay(100); //延時(shí),去掉,會(huì)閃爍
- senddata(0,0,0,0); //消隱,全滅
- }
- }
- }
- }
-
- }
- /* 將每行數(shù)據(jù)送至74HC595
- * m為高8位,n為低8位
- * SH為移位時(shí)鐘,ST為鎖存時(shí)鐘 */
- void senddata(uchar m,uchar n, uchar m1, uchar n1)
- {
- uchar i;
- ST=0;
- for(i=0;i<32;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));
- } else if(i>=16 && i<24) { //17-24行
- DS=0X80&(m1<<(i-16));
- } else if(i>=24 && i<32) { //24-32行
- DS=0X80&(n1<<(i-24));
- }
-
- SH=1;
- }
- ST=1;
- }
- void delay(uint m)
- {
- uint j;
- for(j=m;j>0;j--);
- }
復(fù)制代碼
所有資料51hei提供下載:
_16X16點(diǎn)陣擴(kuò)展16X32.zip
(633.65 KB, 下載次數(shù): 85)
2020-6-15 13:16 上傳
點(diǎn)擊文件名下載附件
16X16
|