2個74HC138芯片驅(qū)動的16*16led點陣顯示仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
制作出來的實物圖:
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define data1 P0
- #define data2 P2
- sbit s1=P3^6;
- sbit s2=P3^7;
- bit fangxiang;
- uint alt=0,net=0,sl=288;
- bit mode;
- uchar code tab[]={
- // (0) (1) 老(2) 師(3) ,(4) 你(5) 辛(6) 苦(7) 了(8) !
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
- 0x02,0x10,0x22,0x10,0x22,0x20,0x22,0x20,0x22,0x40,0x22,0x7C,0xFE,0x92,0x23,0x12,
- 0x23,0x22,0x22,0x22,0x26,0x42,0x2A,0x42,0x72,0x02,0x22,0x0E,0x02,0x00,0x00,0x00,/*"老",2*/
- 0x00,0x02,0x3F,0xE4,0x00,0x08,0x00,0x70,0xFF,0x80,0x00,0x00,0x4F,0xF0,0x48,0x00,
- 0x48,0x00,0x48,0x00,0x7F,0xFF,0x48,0x00,0x48,0x20,0x48,0x10,0x4F,0xE0,0x00,0x00,/*"師",3*/
- 0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",4*/
- 0x01,0x00,0x02,0x04,0x0C,0x1C,0x3F,0xC0,0xC0,0x1C,0x09,0x02,0x16,0x02,0x60,0x92,
- 0x20,0x4A,0x2F,0x82,0x20,0x02,0x24,0x0E,0x22,0x00,0x31,0x90,0x20,0x0C,0x00,0x00,/*"您",5*/
- 0x01,0x00,0x21,0x20,0x21,0x20,0x29,0x20,0x25,0x20,0x23,0x20,0xA1,0x20,0x61,0xFF,
- 0x21,0x20,0x23,0x20,0x25,0x20,0x29,0x20,0x21,0x20,0x21,0x00,0x01,0x00,0x00,0x00,/*"辛",6*/
- 0x02,0x00,0x22,0x00,0x22,0x00,0x22,0x7E,0x22,0x44,0xFA,0x44,0x22,0x44,0x2F,0xC4,
- 0x22,0x44,0x22,0x44,0xFA,0x44,0x22,0x7E,0x22,0x00,0x22,0x00,0x22,0x00,0x00,0x00,/*"苦",7*/
- 0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x01,0x4F,0xFE,
- 0x48,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,/*"了",8*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",9*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",14*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",15*/
- };
- void delay(uint z) //延時子函數(shù)
- {
- uchar x;
- for(;z>0;z--)
- for(x=110;x>0;x--);
- }
- void xianshi() //顯示
- {
- uchar aa,i;
- for(i=0;i<16;i++)
- {
- P1=i; //列掃描
- data1=tab[net+aa]; //取出上8行數(shù)據(jù)輸出
- aa++;
- data2=tab[net+aa]; //取出下8行數(shù)據(jù)輸出
- aa++;
- delay(5); //延時
- data1=0; //清屏
- data2=0; //清屏
- P1=0x00; //消除余輝
- if(aa>30) aa=0; //字模地址
- }
-
- }
- void main() //主函數(shù)
- {
- ET1=1; //使能定時器0
- EA=1; //開啟總中斷
- TR1=1; //開始計數(shù)
- while(1) //無限循環(huán)
- {
- xianshi(); //顯示
- if(s1==0) //檢測按鍵
- {
- delay(30); //延時消抖
- TR1=~TR1; //按下暫停 ,暫按繼續(xù)
- while(!s1)xianshi();
- delay(30);
- }
- if(s2==0) //檢測按鍵
- {
- delay(30); //延時消抖
- fangxiang=~fangxiang; //方向取反
- while(!s2)xianshi();
- delay(30);
- }
- }
- }
-
- void timer1() interrupt 3
- {
- alt++;
- if(alt==10) //到一定的時間加以實現(xiàn)左移
- {
- alt=0;
- if(fangxiang==0) //如果是正向 正向移動
- {
- net=net+2;
- if(net>sl) //字移動數(shù)量
- net=0;
- }
- else //否則反向移動
- {
- net=net-2;
- if(net<2)
- net=sl; //字移動數(shù)量
- }
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
71-138LED點陣.zip
(103.22 KB, 下載次數(shù): 224)
2018-7-4 21:22 上傳
點擊文件名下載附件
|