欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機8*8LED點陣翻頁 閃爍 靜止 平移顯示(仿真+程序)有模式切換按鈕
[打印本頁]
作者:
高山
時間:
2020-6-11 15:41
標題:
51單片機8*8LED點陣翻頁 閃爍 靜止 平移顯示(仿真+程序)有模式切換按鈕
基于單片機的LED點陣設計
基本要求:利用單片機AT89C51設計LED點陣,顯示器能顯示不同的字符、圖形,能夠用獨立鍵控制不同字符的切換效果。
創新:顯示效果可以是閃爍;靜止;平移等。
任務區分:A——每隔1s閃爍1次
B——循環平移,速度自定
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(40.51 KB, 下載次數: 52)
下載附件
2020-6-11 18:41 上傳
單片機源程序如下:
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit KEY = P3^5;
unsigned int cnt,m,stage,sec=1000;
unsigned char code image[][8] = {
{0xFF,0xE7,0xDB,0xDB,0xDB,0xDB,0xE7,0xFF}, //0
{0xFF,0xE7,0xEF,0xEF,0xEF,0xEF,0xC3,0xFF}, //1
{0xFF,0xE3,0xDF,0xDF,0xE7,0xFB,0xC3,0xFF}, //2
{0xE3,0xDF,0xDF,0xE7,0xDF,0xDF,0xE3,0xFF}, //3
{0xFF,0xEF,0xE7,0xEB,0xC3,0xEF,0xEF,0xFF}, //4
{0xFB,0xC3,0xFB,0xE3,0xDF,0xDF,0xE3,0xFF}, //5
{0xE7,0xFB,0xFB,0xE3,0xDB,0xDB,0xE7,0xFF}, //6
{0xFF,0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xFF}, //7
{0xE7,0xDB,0xDB,0xE7,0xDB,0xDB,0xE7,0xFF}, //8
{0xE7,0xDB,0xDB,0xC7,0xDF,0xDF,0xE7,0xFF} //9
};
unsigned char code image1[][8] = { //心跳
{0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7}, //大心
{0xFF,0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF}, //中心
{0xFF,0xFF,0xFF,0xDB,0xC3,0xE7,0xFF,0xFF}, //小心
};
unsigned char code image3[][8] = { //小坦克
{0xFE,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF,0xFF},
{0xFE,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xF3,0xE3,0xF3,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xE7,0xC7,0xE7,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xCF,0x8F,0xCF,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF},
{0xFE,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF},
{0xFE,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF},
{0xFE,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},
};
unsigned char code image2[] = { //0-->9平移
0xFF,0xE7,0xDB,0x5A,0x5A,0xDB,0xE7,0xFF,0xFF,0xE7,0xEF,0x6E,0x6E,0xEF,0xC3,0xFF,
0xFF,0xE3,0xDF,0x5E,0x66,0xFB,0xC3,0xFF,0xE3,0xDF,0xDF,0x66,0x5E,0xDF,0xE3,0xFF,
0xFF,0xEF,0xE7,0x6A,0x42,0xEF,0xEF,0xFF,0xFB,0xC3,0xFB,0x62,0x5E,0xDF,0xE3,0xFF,
0xE7,0xFB,0xFB,0x62,0x5A,0xDB,0xE7,0xFF,0xFF,0xC3,0xDF,0x5E,0x5E,0xDF,0xDF,0xFF,
0xE7,0xDB,0xDB,0x66,0x5A,0xDB,0xE7,0xFF,0xE7,0xDB,0xDB,0x46,0x5E,0xDF,0xE7,0xFF,
};
void Delay10ms()
{
unsigned char i, j;
i = 20;
j = 113;
do
{
while (--j);
} while (--i);
}
void main()
{
EA = 1; //使能總中斷
ADDR3 = 0;
TMOD = 0x01; //設置T0為模式1
TH0 = 0xFC; //為T0賦初值0xFC67,定時1ms
TL0 = 0x67;
ET0 = 1; //使能T0中斷
TR0 = 1; //啟動T0
while (1)
{
if(stage>3)stage=0;
if(KEY==0)
{
Delay10ms();
if(KEY==1)stage++;
}
if(cnt >= sec)
{
cnt = 0;
m++;
}
}
}
/* 定時器0中斷服務函數 */
void InterruptTimer0() interrupt 1
{
static unsigned char i = 0; //動態掃描的索引
static unsigned char tmr = 0; //250ms軟件定時器
static unsigned char index = 0; //圖片刷新索引
TH0 = 0xFC; //重新加載初值
TL0 = 0x67;
P0 = 0xFF; //顯示消隱
cnt++;
/***********************模式一:數字閃出***********************************/
if(stage==0)
{
sec = 1000;
if(m>=10)m=0;
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[m][0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[m][1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[m][2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[m][3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[m][4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[m][5]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[m][6]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[m][7]; break;
default: break;
}
}
/**********************模式二:動態愛心************************************/
else if(stage==1)
{
sec = 150;
if(m>=3)m=0;
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image1[m][0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image1[m][1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image1[m][2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image1[m][3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image1[m][4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image1[m][5]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image1[m][6]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image1[m][7]; break;
default: break;
}
}
/**********************模式三:坦克走動**************************************/
else if(stage==2)
{
sec = 800;
if(m>=10)m=0;
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image3[m][0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image3[m][1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image3[m][2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image3[m][3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image3[m][4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image3[m][5]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image3[m][6]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image3[m][7]; break;
default: break;
}
}
/**********************模式四:數字平移****************************************/
else if(stage==3)
{
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image2[index+0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image2[index+1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image2[index+2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image2[index+3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image2[index+4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image2[index+5]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image2[index+6]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image2[index+7]; break;
default: break;
}
//以下代碼完成每250ms改變一幀圖像
tmr++;
if (tmr >= 250) //達到250ms時改變一次圖片索引
{
tmr = 0;
index++;
if (index >= 72) //圖片索引達到32后歸零
{
index = 0;
}
}
}
}
復制代碼
所有資料51hei提供下載:
點陣顯示.zip
(112.3 KB, 下載次數: 155)
2020-6-11 15:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
黑天科技
時間:
2020-6-27 21:51
樓主電路圖好像不全哦
作者:
hhdsdy
時間:
2020-12-3 21:53
自己寫的一個翻頁感覺不是滿意,下載一個參考一下思路,謝謝了!
作者:
電子電子小宅神
時間:
2021-10-23 15:50
取模格式是咋樣的吖
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1