51單片機16X32LED點陣顯示屏由單片機最小系統、行驅動電路74HC154、列驅運電路74HC595組成,實現漢字、數字的顯示。電路簡單。程序中以20個漢字作為顯示示例。資料含51單片機C語言源程序、PROTEUS7.8仿真源文件。附送取模軟件及取模說明文檔,方便你自己更換顯示內容。顯示移動速度可在程序中進行設置。
基于51單片機16X32點陣顯示屏程序設計與仿真.jpg (142.36 KB, 下載次數: 126)
下載附件
基于51單片機16X32LED點陣顯示屏程序設計
2019-5-14 06:21 上傳
附件.jpg (58.01 KB, 下載次數: 102)
下載附件
附件
2019-5-14 06:29 上傳
#include <REG51.H>
#define FOSC 12 //定義晶振頻率
#define INIT_TH0 0x3C //定時器T0初始值
#define INIT_TL0 0xB0
#define TMOD_T00 0x00 //定義T0為方式0,GATE=0,C/T=0,13位計數器
#define TMOD_T01 0x01 //定義T0為方式1,GATE=0,C/T=0,16位計數器
#define TMOD_T02 0x02 //定義T0為方式2,GATE=0,C/T=0,自動裝入8位計數器
#define TMOD_T03 0x03 //定義T0為方式3,GATE=0,C/T=0,定時器0分成兩個8位計數器,定時器1停止計數
/*縮定定義*/
#define uchar unsigned char
#define uint unsigned int
/************位定義***************/
sbit STTP = P2^7;
/************函數聲明*************/
void delay(uint c); //延時函數
void out_rxd(uchar *d); //漢字輸出
/************漢字點陣*************/
char code hanzi[32][32]={
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,
/*-- 文字: 基 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x88,0x20,0x88,0x20,0x91,0x20,0xA1,0xFF,0xC9,0x2A,0x89,0x2A,0x89,0x2A,0xBF,
0x2A,0x89,0x2A,0x89,0xFF,0xC9,0x20,0xA1,0x20,0x91,0x20,0x88,0x00,0x88,0x00,0x00,
/*-- 文字: 于 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x02,0x00,0x02,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x02,0x42,0x01,0x7F,0xFE,
0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x02,0x00,0x02,0x00,0x00,0x00,
/*-- 文字: 5 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00,
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,
/*-- 文字: 單 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x08,0x00,0x08,0x1F,0xC8,0x92,0x48,0x52,0x48,0x32,0x48,0x12,0x48,0x1F,0xFF,
0x12,0x48,0x32,0x48,0x52,0x48,0x92,0x48,0x1F,0xC8,0x00,0x08,0x00,0x08,0x00,0x00,
/*-- 文字: 片 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x00,0x00,0x01,0x00,0x06,0x7F,0xF8,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,
0x04,0x40,0xFC,0x40,0x04,0x7F,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 機 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x08,0x20,0x08,0xC0,0x0B,0x00,0xFF,0xFF,0x09,0x00,0x08,0xC1,0x00,0x06,0x7F,0xF8,
0x40,0x00,0x40,0x00,0x40,0x00,0x7F,0xFC,0x00,0x02,0x00,0x02,0x00,0x1E,0x00,0x00,
/*-- 文字: 的 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x00,0x1F,0xFE,0x30,0x84,0xD0,0x84,0x10,0x84,0x10,0x84,0x1F,0xFE,0x02,0x00,
0x0C,0x00,0xF1,0x00,0x10,0xC2,0x10,0x01,0x10,0x02,0x1F,0xFC,0x00,0x00,0x00,0x00,
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,
/*-- 文字: 6 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x18,0x88,0x00,0x70,0x00,0x00,
/*-- 文字: × --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,
0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 3 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x0C,0x18,0x10,0x04,0x11,0x04,0x11,0x04,0x12,0x88,0x0C,0x70,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00,
/*-- 文字: 點 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x01,0x00,0x02,0x03,0xEC,0x02,0x20,0x02,0x20,0x02,0x28,0xFE,0x26,0x12,0x20,
0x12,0x28,0x12,0x26,0x12,0x20,0x13,0xE0,0x10,0x08,0x10,0x07,0x00,0x00,0x00,0x00,
/*-- 文字: 陣 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x00,0x7F,0xFF,0x40,0x10,0x44,0x08,0x5B,0x10,0x60,0xE0,0x10,0x10,0x13,0x10,
0x1D,0x10,0xF1,0x10,0x17,0xFF,0x11,0x10,0x11,0x10,0x11,0x10,0x10,0x10,0x00,0x00,
/*-- 文字: 顯 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x02,0x00,0x42,0x00,0x22,0x7F,0x1A,0x49,0x02,0x49,0xFE,0x49,0x02,0x49,0x02,
0x49,0x02,0x49,0xFE,0x49,0x02,0x7F,0x0A,0x00,0x12,0x00,0x62,0x00,0x02,0x00,0x00,
/*-- 文字: 示 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x02,0x04,0x02,0x08,0x42,0x10,0x42,0x60,0x42,0x00,0x42,0x02,0x42,0x01,0x43,0xFE,
0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x40,0x42,0x20,0x02,0x10,0x02,0x0C,0x00,0x00,
/*-- 文字: 屏 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x02,0x00,0x0C,0x7F,0xF0,0x48,0x20,0x49,0x21,0x4D,0x26,0x4B,0xF8,0x49,0x20,
0x49,0x20,0x49,0x20,0x4B,0xFF,0x4D,0x20,0x79,0x20,0x00,0x20,0x00,0x00,0x00,0x00,
/*-- 文字: 程 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x24,0x10,0x24,0x60,0x25,0x80,0x7F,0xFF,0xC4,0x80,0x44,0x60,0x00,0x02,0x7C,0x92,
0x44,0x92,0x44,0x92,0x44,0xFE,0x44,0x92,0x44,0x92,0x7C,0x92,0x00,0x82,0x00,0x00,
/*-- 文字: 序 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x02,0x00,0x0C,0x3F,0xF0,0x20,0x00,0x20,0x80,0x20,0x80,0x28,0x80,0xA8,0x82,
0x6A,0x81,0x29,0xFE,0x2A,0x80,0x2C,0x80,0x28,0x80,0x20,0xA0,0x20,0xC0,0x00,0x00,
/*-- 文字: 設 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x02,0x00,0x02,0x00,0x42,0x00,0x33,0xFC,0x00,0x09,0x02,0x11,0x05,0x02,0x79,0xC2,
0x41,0x34,0x41,0x08,0x41,0x14,0x79,0x62,0x05,0x82,0x04,0x01,0x04,0x01,0x00,0x00,
/*-- 文字: 計 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x02,0x00,0x02,0x00,0x42,0x00,0x33,0xFE,0x00,0x04,0x02,0x08,0x02,0x00,0x02,0x00,
0x02,0x00,0xFF,0xFF,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,
/*-- 文字: 與 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x10,0x00,0x10,0x07,0x10,0xF9,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,
0x11,0x10,0x11,0x12,0x11,0x01,0x11,0x02,0x11,0xFC,0x10,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 仿 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x01,0x10,0x02,0x10,0x0C,0x1F,0xF0,
0x91,0x00,0x71,0x02,0x11,0x01,0x11,0x02,0x11,0xFC,0x10,0x00,0x10,0x00,0x00,0x00,
/*-- 文字: 真 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0x00,0x08,0x20,0x08,0x20,0x09,0x2F,0xFA,0x2A,0xAC,0x2A,0xA8,0x2A,0xA8,0xFA,0xA8,
0x2A,0xA8,0x2A,0xA8,0x2A,0xAC,0x2F,0xFA,0x20,0x09,0x20,0x08,0x00,0x08,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 main()
{
uchar i,j,k; //i:每個字的顯示循環;j每個字的顯示碼除以2;k每列刷新次數
uint b=0; //顯示偏移控制,char類型最多只能顯示14個漢字+一個空白位字符
uchar a; //控制移動間隔時間
SCON = 0x00;
while(1)
{
j=0;
if(a>6) //移動間隔時間;取值0-20
{
a=0;
b+=2;
if(b>=700) //顯示到最后一個字,回頭顯示,判斷值=字數*32
{
b=0;
}
}
for(i=0;i<16;i++)
{
P1=i;
for(k=0;k<1;k++)
{
STTP = 0;
out_rxd(&hanzi[3][j+b+1]);
out_rxd(&hanzi[3][j+b]);
out_rxd(&hanzi[2][j+b+1]);
out_rxd(&hanzi[2][j+b]);
out_rxd(&hanzi[1][j+b+1]);
out_rxd(&hanzi[1][j+b]);
out_rxd(&hanzi[0][j+b+1]);
out_rxd(&hanzi[0][j+b]);
STTP = 1;
delay(15);
}
j=j+2;
}
a++;
}
}
/************子函數**************/
void delay(uint c)
{
int i,j;
for(i=0;i<c;i++)
for(j=0;j<10;j++)
;
.......................................................................完整程序請自行下載附件
全部資料51hei下載地址:
_基于51單片機16X32點陣顯示屏程序設計與仿真.rar
(434.46 KB, 下載次數: 357)
2019-5-14 06:20 上傳
點擊文件名下載附件
基于51單片機16X32LED點陣顯示屏程序設計 下載積分: 黑幣 -5
|