8*8點陣移動仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (17.78 KB, 下載次數: 67)
下載附件
2017-8-2 23:14 上傳
0.png (14.42 KB, 下載次數: 40)
下載附件
2017-8-2 23:05 上傳
0.png (44.43 KB, 下載次數: 52)
下載附件
2017-8-2 23:05 上傳
單片機源程序如下:
- /************************************************************
- 名稱: 四個8*8點陣移動實驗
- ************************************************************/
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar i,j,k,a,b;
- char kk;
- uchar code tabwe[]={ //0~9的字模(每個數字高8點,寬5點,下面一點為高位,一個數字用5個字節表示)
- 0x7E, 0x91, 0x89, 0x85, 0x7E,//0
- 0x00, 0x82, 0xFF, 0x80, 0x00,//1
- 0x86, 0xC1, 0xA1, 0x91, 0x8E,//2
- 0x41, 0x89, 0x8D, 0x8B, 0x71,//3
- 0x38, 0x24, 0x22, 0xFF, 0x20,//4
- 0x4F, 0x89, 0x89, 0x89, 0x71,//5
- 0x7E, 0x89, 0x89, 0x89, 0x72,//6
- 0x01, 0x01, 0xF9, 0x05, 0x03,//7
- 0x76, 0x89, 0x89, 0x89, 0x76,//8
- 0x4E, 0x91, 0x91, 0x91, 0x7E, //9
- 0//空位
- };
- uchar table[]={ //顯存8*4=32個字節,一個字節8位,四個8*8點陣的分辨率就是32*8
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0
- };
- void delay(uint ms) //延時500us
- {
- uchar a,b;
- while(ms--)
- {
- for(b=71;b>0;b--)
- for(a=2;a>0;a--);
- }
- }
- void xh1(kk)//左移子程序
- {
- for(k=0;k<32;k++)
- {
- a=kk+k-32;
- if(a>50||a<0){a=50;}
- table[k]=tabwe[a];
- }
- }
- void xh2(kk)//右移子程序
- {
- for(k=0;k<32;k++)
- {
- a=50-kk+k;
- if(a>50||a<0){a=50;}
- table[k]=tabwe[a];
- }
- }
- void xh3(kk)//向下移進,向上移出
- {
- for(k=0;k<32;k++)
- {
- table[k]=(tabwe[k]>>kk);
- }
- }
- void xh4(kk)//向上移進,向下移出
- {
- for(k=0;k<32;k++)
- {
- table[k]=(tabwe[k]<<kk);
- }
- }
- void dsplay()
- {
- for(j=0;j<5;j++) //j是每幅圖象顯示的次數,j越小移動得越快;j越大移動得越慢。
- {
- for(i=0;i<16;i++)//一幅圖象32個字節,因為分P1和P2口同時顯示,所以只要16次。
- {
- P0=i;
- P1=table[i];
- P2=table[i+16];
- delay(2);
- }
- }
- }
- void main()
- {
- while (1)
- {
- for(kk=0;kk<82;kk++)//左移(從32位空屏,到0-9進入,再到全部移出共要32+50次)
- {
- dsplay();
- xh1(kk);
- }
- for(kk=0;kk<82;kk++)//右移(從32位空屏,到9-0進入,再到全部移出共要32+50次)
- {
- dsplay();
- xh2(kk);
- }
- for(kk=8;kk>=0;kk--)//向下移進
- {
- dsplay();
- xh3(kk);
- }
- for(kk=0;kk<8;kk++)//向下移出
- {
- dsplay();
- xh4(kk);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
88點陣上下左右移動.rar
(19.34 KB, 下載次數: 116)
2017-8-2 20:58 上傳
點擊文件名下載附件
點陣移動 下載積分: 黑幣 -5
|