16×32点阵电路设计

16×32点阵电路设计
16×32点阵电路设计

16×32点阵数字钟及汉字显示

一.电路原理框架设计

实现功能:点阵显示的实时时钟以及汉字等字符的左移显示

实用特征:采用双电源供电,断电后时钟由电池供电还能继续运行,而且精确性较高

实现原理:

1.时钟显示是由DS1302精确的时钟芯片产生时钟信号并将其送至单片机,经过单片机处理后再输送到点阵显示模块。

2.汉字显示并左移原理是先写入与本点阵驱动相应的代码进单片机,通过单片机控制程序取表进行处理后送点阵模块显示

电路主要模块及原理图:

1.单片机最小系统及控制按键电路

2.DS1302与单片机接口电路

DS1302除了系统上电时由系统供电外,如果主电源断电还有一电池给DS1302供电,防止断电后DS1302数据消失。

4.点阵行驱动模块电路

行驱动采用74LS154(4-16线译码器)及PNP三极管,由于是16×32点阵显示功率较大故采用8550NP三极管。

5.点阵列驱动电路

列驱动采用74HC595移位寄存器将控制位级连接入单片机,每个74HC595数据输入端单独接单片机。16×32点阵模块由8块小的8×8点阵模块通过级连而拼成,共16行,32列。

二:主要元器件选择:

单片机:AT89S51采用市场上比较常用的AT89S51

三极管:点阵的行驱动电路用,这里采用PNP管,具体型号用8550

点阵块:为了电路简单,采用双色8×8点阵

晶振:采用的是12MHZ的晶振

电源部分:采用5V电压供电,采用的是L7805稳压芯片供电

电阻:大部分是限流电阻,阻值为4.7K或10K,1K

译码器:4-16线采用市场上较为常用的74LS154,用来作行驱动

移位寄存器:采用74HC595移位寄存器作列驱动,驱动列

端口分配及连接:

P1.0-P1.2:DS1302与单片机接口

P1.3-P1.4:K0,K1按键,用来调整时间,按下为0

P0:P0口接点阵行驱动电路接译码器

P2:P2口点阵列驱动电路接74HC595

最后是做好之后的图

附:点阵时间显示源程序

//=================================================================== ================//

//*标题:16*32点阵数字钟显示程序

//*说明:时钟信号产生采用DS1302,列采用74HC595驱动(共4个),行驱动采用4 -16线译码器74LS154

//*功能:通过动态扫描显示时钟,可显示时,分,秒,日期中的月和日

//*作者:HEY

//*日期:2006-05-29

//*邮箱:billy3416@https://www.360docs.net/doc/9914529654.html,

//*备注:此是我刚接触单片机时的一个小制作程序和电路设计上难免有不足之处请谅解

//=================================================================== ================//

#include

#include

#define uchar unsigned char

//=================================================================== ================//

//用到的引脚及端口定义

//=================================================================== ================//

sbit SERIALIN_0=P2^0; //定义P2.0为列向第1个74HC595的DATA输入

sbit SERIALIN_1=P2^1; //定义P2.1为列向第2个74HC595的DATA输入

sbit SERIALIN_2=P2^2; //定义P2.2为列向第2个74HC595的DATA输入

sbit SERIALIN_3=P2^3; //定义P2.3为列向第2个74HC595的DATA输入

sbit CLOCK_DATA=P1^0; //定义P1.0为DS1302的D ATA端口

sbit CLOCK_RST=P1^1; //定义P1.1为DS1302的复位输出端口

sbit CLOCK_SCLK=P1^2; //定义P1.2为DS1302的时钟信号状态控制

sbit K0=P1^3; //K0为按键1,用来选择要调整时间的选项(时和分)

sbit K1=P1^4; //K1为按键2,执行加1 sbit CLOCK=P2^4; //74HC595的移位时钟控制

sbit LATCH=P2^5; //74HC595的锁存输出时钟控制

void control(); //调整时间控制函数

void time();

uchar CLOCK_TIME[3]={0,0,0}; //定义时钟时间数据存储区,分别为(时,分,秒)

uchar BUFFER[8]={0,0,0,0,0,0,0,0}; //显示缓冲区

uchar YEAR[3]={0,0,0}; //定义时钟年月日数据存储区

uchar temp[4]={0,0,0,0}; //定义74HC595的移位缓冲区

uchar FLASH_STOP; //显示小时和分钟之间的两点控制位

uchar sec_flash; //用单片机定时器模拟的一秒(用来控制小时和分中之间的两点)

//=================================================================== ================//

//定义0-9的点阵显示代码段 8*8

//=================================================================== ================//

uchar code bmp[10][8]={

{0xe3,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xe3}, //0

{0xf7,0xc7,0xf7,0xf7,0xf7,0xf7,0xf7,0xc1}, //1

{0xe3,0xdd,0xdd,0xfd,0xfb,0xf7,0xef,0xc1}, //2

{0xe3,0xdd,0xfd,0xe3,0xfd,0xfd,0xdd,0xe3}, //3

{0xfb,0xf3,0xeb,0xdb,0xdb,0xc1,0xfb,0xf1}, //4

{0xc1,0xdf,0xdf,0xc3,0xfd,0xfd,0xdd,0xe3}, //5

{0xe3,0xdd,0xdf,0xc3,0xdd,0xdd,0xdd,0xe3}, //6

{0xc1,0xdd,0xfd,0xfb,0xf7,0xf7,0xf7,0xf7}, //7

{0xe3,0xdd,0xdd,0xe3,0xdd,0xdd,0xdd,0xe3}, //8

{0xe3,0xdd,0xdd,0xdd,0xe1,0xfd,0xdd,0xe3}, //9

};

//=================================================================== ================//

//定义0-9的点阵显示代码段 8*8 与上面不同的是多了小时和分钟之间的两点

//=================================================================== ================//

uchar code bmp_1[10][8]={

{0xe3,0xdd,0x5d,0xdd,0xdd,0x5d,0xdd,0xe3}, //:0

{0xf7,0xc7,0x77,0xf7,0xf7,0x77,0xf7,0xc1}, //:1

{0xe3,0xdd,0x5d,0xfd,0xfb,0x77,0xef,0xc1}, //:2

{0xe3,0xdd,0x7d,0xe3,0xfd,0x7d,0xdd,0xe3}, //:3

{0xfb,0xf3,0x6b,0xdb,0xdb,0x41,0xfb,0xf1}, //:4

{0xc1,0xdf,0x5f,0xc3,0xfd,0x7d,0xdd,0xe3}, //:4

{0xe3,0xdd,0x5f,0xc3,0xdd,0x5d,0xdd,0xe3}, //:5

{0xc1,0xdd,0x7d,0xfb,0xf7,0x77,0xf7,0xf7}, //:6

{0xe3,0xdd,0x5d,0xe3,0xdd,0x5d,0xdd,0xe3}, //:7

{0xe3,0xdd,0x5d,0xdd,0xe1,0x7d,0xdd,0xe3}, //:8

};

//=================================================================== ================//

//定义0-9的点阵显示代码段数码似的字模 8*8 显示数据前有一横杠将月和日格开

//=================================================================== ================//

uchar code bmp_2[10][8]={

{0xff,0xff,0xf8,0xfa,0x8a,0xfa,0xf8,0xff}, //-0

{0xff,0xff,0xfe,0xfe,0x8e,0xfe,0xfe,0xff}, //-1

{0xff,0xff,0xf8,0xfe,0x88,0xfb,0xf8,0xff}, //-2

{0xff,0xff,0xf8,0xfe,0x88,0xfe,0xf8,0xff}, //-3

{0xff,0xff,0xfa,0xfa,0x88,0xfe,0xfe,0xff}, //-4

{0xff,0xff,0xf8,0xfb,0x88,0xfe,0xf8,0xff}, //-5

{0xff,0xff,0xf8,0xfb,0x88,0xfa,0xf8,0xff}, //-6

{0xff,0xff,0xf8,0xfe,0x8e,0xfe,0xfe,0xff}, //-7

{0xff,0xff,0xf8,0xfa,0x88,0xfa,0xf8,0xff}, //-8

{0xff,0xff,0xf8,0xfa,0x88,0xfe,0xf8,0xff}, //-9

};

//=================================================================== ================//

//定义0-9的点阵显示代码段模拟数码似的字模 8*8

//=================================================================== ================//

uchar code bmp_3[10][8]={

{0xff,0xff,0x8f,0xaf,0xaf,0xaf,0x8f,0xff}, //0

{0xff,0xff,0xef,0xef,0xef,0xef,0xef,0xff}, //1

{0xff,0xff,0x8f,0xef,0x8f,0xbf,0x8f,0xff}, //2

{0xff,0xff,0x8f,0xef,0x8f,0xef,0x8f,0xff}, //3

{0xff,0xff,0xaf,0xaf,0x8f,0xef,0xef,0xff}, //4

{0xff,0xff,0x8f,0xbf,0x8f,0xef,0x8f,0xff}, //5

{0xff,0xff,0x8f,0xbf,0x8f,0xaf,0x8f,0xff}, //6

{0xff,0xff,0x8f,0xef,0xef,0xef,0xef,0xff}, //7

{0xff,0xff,0x8f,0xaf,0x8f,0xaf,0x8f,0xff}, //8

{0xff,0xff,0x8f,0xaf,0x8f,0xef,0x8f,0xff}, //9

};

//=================================================================== ================//

//定义0-59模拟七段数码管显示 8*8

//=================================================================== ================//

uchar code bmp_4[60][8]={

{0xff,0xff,0x88,0xaa,0xaa,0xaa,0x88,0xff}, //00

{0xff,0xff,0x8e,0xae,0xae,0xae,0x8e,0xff}, //01

{0xff,0xff,0x88,0xae,0xa8,0xab,0x88,0xff}, //02

{0xff,0xff,0x88,0xae,0xa8,0xae,0x88,0xff}, //03

{0xff,0xff,0x8a,0xaa,0xa8,0xae,0x8e,0xff}, //04

{0xff,0xff,0x88,0xab,0xa8,0xae,0x88,0xff}, //05

{0xff,0xff,0x88,0xab,0xa8,0xaa,0x88,0xff}, //06

{0xff,0xff,0x88,0xae,0xae,0xae,0x8e,0xff}, //07

{0xff,0xff,0x88,0xaa,0xa8,0xaa,0x88,0xff}, //08

{0xff,0xff,0x88,0xaa,0xa8,0xae,0x88,0xff}, //09

{0xff,0xff,0xe8,0xea,0xea,0xea,0xe8,0xff}, //10

{0xff,0xff,0xee,0xee,0xee,0xee,0xee,0xff}, //11

{0xff,0xff,0xe8,0xee,0xe8,0xeb,0xe8,0xff}, //12

{0xff,0xff,0xe8,0xee,0xe8,0xee,0xe8,0xff}, //13

{0xff,0xff,0xea,0xea,0xe8,0xee,0xee,0xff}, //14

{0xff,0xff,0xe8,0xeb,0xe8,0xee,0xe8,0xff}, //15

{0xff,0xff,0xe8,0xeb,0xe8,0xea,0xe8,0xff}, //16

{0xff,0xff,0xe8,0xee,0xee,0xee,0xee,0xff}, //17

{0xff,0xff,0xe8,0xea,0xe8,0xea,0xe8,0xff}, //18

{0xff,0xff,0xe8,0xea,0xe8,0xee,0xe8,0xff}, //19

{0xff,0xff,0x88,0xea,0x8a,0xba,0x88,0xff}, //20

{0xff,0xff,0x8e,0xee,0x8e,0xbe,0x8e,0xff}, //21

{0xff,0xff,0x88,0xee,0x88,0xbb,0x88,0xff}, //22

{0xff,0xff,0x88,0xee,0x88,0xbe,0x88,0xff}, //23

{0xff,0xff,0x8a,0xea,0x88,0xbe,0x8e,0xff}, //24

{0xff,0xff,0x88,0xeb,0x88,0xbe,0x88,0xff}, //25

{0xff,0xff,0x88,0xeb,0x88,0xba,0x88,0xff}, //26

{0xff,0xff,0x88,0xee,0x8e,0xbe,0x8e,0xff}, //27

{0xff,0xff,0x88,0xea,0x88,0xba,0x88,0xff}, //28

{0xff,0xff,0x88,0xea,0x88,0xbe,0x88,0xff}, //29

{0xff,0xff,0x88,0xea,0x8a,0xea,0x88,0xff}, //30

{0xff,0xff,0x8e,0xee,0x8e,0xee,0x8e,0xff}, //31

{0xff,0xff,0x88,0xee,0x88,0xeb,0x88,0xff}, //32

{0xff,0xff,0x88,0xee,0x88,0xee,0x88,0xff}, //33

{0xff,0xff,0x8a,0xea,0x88,0xee,0x8e,0xff}, //34

{0xff,0xff,0x88,0xeb,0x88,0xee,0x88,0xff}, //35

{0xff,0xff,0x88,0xeb,0x88,0xea,0x88,0xff}, //36

{0xff,0xff,0x88,0xee,0x8e,0xee,0x8e,0xff}, //37

{0xff,0xff,0x88,0xea,0x88,0xea,0x88,0xff}, //38

{0xff,0xff,0x88,0xea,0x88,0xee,0x88,0xff}, //39

{0xff,0xff,0xa8,0xaa,0x8a,0xea,0xe8,0xff}, //40

{0xff,0xff,0xae,0xae,0x8e,0xee,0xee,0xff}, //41

{0xff,0xff,0xa8,0xae,0x88,0xeb,0xe8,0xff}, //42

{0xff,0xff,0xa8,0xae,0x88,0xee,0xe8,0xff}, //43

{0xff,0xff,0xaa,0xaa,0x88,0xee,0xee,0xff}, //44

{0xff,0xff,0xa8,0xab,0x88,0xee,0xe8,0xff}, //45

{0xff,0xff,0xa8,0xab,0x88,0xea,0xe8,0xff}, //46

{0xff,0xff,0xa8,0xae,0x8e,0xee,0xee,0xff}, //47

{0xff,0xff,0xa8,0xaa,0x88,0xea,0xe8,0xff}, //48

{0xff,0xff,0xa8,0xaa,0x88,0xee,0xe8,0xff}, //49

{0xff,0xff,0x88,0xba,0x8a,0xea,0x88,0xff}, //50

{0xff,0xff,0x8e,0xbe,0x8e,0xee,0x8e,0xff}, //51

{0xff,0xff,0x88,0xbe,0x88,0xeb,0x88,0xff}, //52

{0xff,0xff,0x88,0xbe,0x88,0xee,0x88,0xff}, //53

{0xff,0xff,0x8a,0xba,0x88,0xee,0x8e,0xff}, //54

{0xff,0xff,0x88,0xbb,0x88,0xee,0x88,0xff}, //55

{0xff,0xff,0x88,0xbb,0x88,0xea,0x88,0xff}, //56

{0xff,0xff,0x88,0xbe,0x8e,0xee,0x8e,0xff}, //57

{0xff,0xff,0x88,0xba,0x88,0xea,0x88,0xff}, //58

{0xff,0xff,0x88,0xba,0x88,0xee,0x88,0xff}, //59

};

//=================================================================== ================//

//名称:delay

//说明:延时函数

//功能:根据需要取不同的值,实现不同的延时效果

//=================================================================== ================//

void delay()

{

uchar n;

for(n=0;n<=125;n++);

}

void delay2(uchar m)

{

uchar n;

while(m--)

{

for(n=0;n<=200;n++);

}

}

//=================================================================== ================//

//名称:shift

//说明:74HC595左移程序

//功能:实现74HC595的移位输入

//=================================================================== ================//

void shift()

{

uchar j;

for(j=0;j<8;j++)

{

temp[0]=temp[0]<<1; //将temp[0]左移1位

SERIALIN_0=CY; //进位输出到移位寄存器

temp[1]=temp[1]<<1; //将temp[1]左移1位后

SERIALIN_1=CY; //进位输出到移位寄存器

temp[2]=temp[2]<<1; //将temp[2]左移1位后

SERIALIN_2=CY; //进位输出到移位寄存器

temp[3]=temp[3]<<1; //将temp[0]左移1位后的进位输出到移位寄存器

SERIALIN_3=CY; //进位输出到移位寄存器

CLOCK=1; //移位时钟控制移位

CLOCK=0;

}

}

//=================================================================== ================//

//名称:display

//说明:显示函数

//功能:将要显示的数据通过74HC595和74LS154用LED点阵显示出来

//实现方法:该16X32点阵为8块小点阵,显示时将上下分开,上面显示时间。下面显示日期和秒

//=================================================================== ================//

void display(void)

{

uchar i,sec;

sec=CLOCK_TIME[0];

BUFFER[0]=CLOCK_TIME[1]%10; //显示时钟分钟个位

BUFFER[1]=CLOCK_TIME[1]/10; //显示时钟分钟十位

BUFFER[2]=CLOCK_TIME[2]%10; //显示时钟小时个位

BUFFER[3]=CLOCK_TIME[2]/10; //显示时钟小时十位

BUFFER[4]=YEAR[1]; //显示月,从00-12

BUFFER[5]=YEAR[2]/10; //显示日十位

BUFFER[6]=YEAR[2]%10; //显示日个位

BUFFER[7]=CLOCK_TIME[0]; //显示秒从00-59

for(i=0;i<16;i++) //逐行扫描

{

if(i<8) //上面的8行显示时间 {

temp[0]=bmp[BUFFER[3]][i]; //取表显示时钟十位

temp[1]=bmp[BUFFER[2]][i]; //取表显示时钟个位

if(FLASH_STOP==0) //小时和分钟之间的两点闪标志位

{

temp[2]=bmp_1[BUFFER[1]][i]; //标志位为0时,两点亮

}

else

{

temp[2]=bmp[BUFFER[1]][i]; //相反不亮

}

temp[3]=bmp[BUFFER[0]][i]; //取表显示分钟个位

}

else

{

temp[0]=bmp_4[BUFFER[4]][i-8]; //通过取表显示月

temp[1]=bmp_2[BUFFER[5]][i-8]; //通过取表显示日

temp[2]=bmp_3[BUFFER[6]][i-8];

temp[3]=bmp_4[BUFFER[7]][i-8]; //通过取表显示秒

}

shift(); //调用移位函数处理

LATCH=0;LATCH=1; //输出

P0=i; //逐行显示,扫描

delay(); //延时

P0=0xff; //显示完一行清显示

}

}

//=================================================================== ================//

//单字节写子程序 RC0(SCLK),RC1(I/O),RC2(RST)

//名称:inputdata

//说明:先写地址,后写数据

//功能: 往DS1302写入时钟数据

//=================================================================== ================//

void inputdata(unsigned char tmaddr,unsigned char tmdata)

{

uchar loop;

CLOCK_DATA=0; //设置为输出;

CLOCK_RST=0;

CLOCK_SCLK=0;

CLOCK_RST=1;

for(loop=0;loop<8;loop++) //送地址

{

tmaddr=tmaddr>>1; //右移一位

CLOCK_DATA=CY; //输出移位标志位

CLOCK_SCLK=1;

CLOCK_SCLK=0;

}

for(loop=0;loop<8;loop++) //送数据

{

tmdata=tmdata>>1; //右移一位

CLOCK_DATA=CY; //输出移位标志

CLOCK_SCLK=1;

CLOCK_SCLK=0;

}

CLOCK_SCLK=1;

CLOCK_RST=0;

CLOCK_DATA=1; //设置为输出;

}

//=================================================================== ================//

//单字节读子程序 RC0(SCLK),RC1(I/O),RC2(RST)

//名称:outputdata

//说明:读数据

//功能: 从DS1302读取1Byte数据

//=================================================================== ================//

unsigned char outputdata(unsigned char tmaddr)

{

uchar loop;

uchar tmdata=0;

inputdata(0x8F,0x00);

CLOCK_DATA=0; //设置为

CLOCK_RST=0;

CLOCK_SCLK=0;

CLOCK_RST=1;

for(loop=8;loop>0;loop--) //送地址

{

tmaddr=tmaddr>>1;

CLOCK_DATA=CY;

CLOCK_SCLK=1;

CLOCK_SCLK=0;

}

CLOCK_DATA=1; //设置为输入;

CLOCK_DATA=1;

CLOCK_SCLK=1;

CLOCK_SCLK=0;

for(loop=8;loop>0;loop--) // 读数据

{

tmdata=tmdata>>1;

if(CLOCK_DATA==1)

tmdata=tmdata|0x80;

CLOCK_SCLK=1;

CLOCK_SCLK=0;

}

tmdata=tmdata<<1; //由于在开始读是已经是第二个时钟下降延所以要进行左移处理

if(CY==1)

tmdata=tmdata|0x01;

CLOCK_SCLK=1;

CLOCK_RST=0;

return(tmdata);

}

//=================================================================== ================//

//函数:调整时间子程序

//名称:control

//说明:调整时间控制

//功能: 通过两个按键调整时间,其中一个选择要调整的分钟或时钟,另一个加1功能

//=================================================================== ================//

void control()

{

uchar min16,hour16;

inputdata(0x80,0x80); //时钟停止运行

CLOCK_TIME[0]=0; //秒初始化位0

FLASH_STOP=0; //时钟分钟之间两点状态位为0

TR0=0; //开启T0定时器

while(1)

{

if(K1==0) //当K1按下时

{

delay2(50); //延时

if(K1==0) //K1按下

{

CLOCK_TIME[1]=CLOCK_TIME[1]+1; //分钟加1

if(CLOCK_TIME[1]==60) //当分钟加到60时初始化为0

CLOCK_TIME[1]=0;

}

}

if(K0==0) //K0键再次按下,小时调整

{

delay2(100);

if(K0==0)

{

while(1)

{

if(K0==1) //K0键按下加1 {

while(1)

{

if(K1==0)

{

delay2(50);

if(K1==0)

{

CLOCK_TIME[2]=CLOCK_TIME[2]+1; //小时加

1

if(CLOCK_TIME[2]==24) //当变成24时初始化为0

CLOCK_TIME[2]=0;

}

}

if(K0==0) //当K0再次按下时返回

{

delay2(100);

if(K0==0)

{

while(1)

{

if(K0==1) //按下的键弹起时 {

min16=CLOCK_TIME[1]/10*16+CLOCK_TIME[1]%10; //将所得的分钟数据转变成16进制数据

hour16=CLOCK_TIME[2]/10*16+CLOCK_TIME[2]%10; //将所得的小时数据转变成16进制数据

inputdata(0x84,hour16); //将调整后的小时数据写入DS1302

inputdata(0x82,min1

6); //将调整后的分钟数据写入DS1302

inputdata(0x80,0x00); //启动时钟

time(); //回到time函数

}

}

}

}

display(); //显示函数

}

}

}

}

}

display(); //显示函数

}

}

//=================================================================== ================//

//函数:T0中断服务子程序

//名称:time0

//说明:控制时钟和分钟之间的两点显示

//功能: 利用单片机内部定时器造成0.5秒时钟和分钟之间两点闪动

//=================================================================== ================//

void time0(void) interrupt 1 using 1 //T0中断函数

{

TH0=-10100/256; //填入计数器初值高位 TL0=-10100%256; //填入计数器初值低位 sec_flash=sec_flash+1;

if(sec_flash==50) //0.5S到

{

FLASH_STOP=0;

}

if(sec_flash==100) //1S

{

FLASH_STOP=1;

sec_flash=0;

}

}

//=================================================================== ================//

//函数:时间控制函数

//说明:统一时钟显示于调整

//功能:

//=================================================================== ================//

void time()

{

uchar sec,min,hour,year,month,day;

FLASH_STOP=1;

EA=1;ET0=1; //开总中断源,开T0中断

TMOD=0x61; //T1方式2计数,T0方式1计时

TH0=-10000/256;TL0=-10000%256; //初始化计数器初值

ET0=1,TR0=1; //开中断

inputdata(0x8E,0x00); //控制命令,WP=0,写操

inputdata(0x90,0x06);

while(1)

{

K0=1; //K0=1

if(K0==0)

{

delay2(100); //延时

if(K0==0) //K0按下时

{

while(1)

{

if(K0==1)

{

control(); //进入调时子程序

}

}

}

}

sec=outputdata(0x81); //读取秒

min=outputdata(0x83); //读取分

hour=outputdata(0x85); //读取时

year=outputdata(0x8d); //读取年

month=outputdata(0x89); //读取月

day=outputdata(0x87); //读取日

CLOCK_TIME[0]=sec/16*10+sec%16; //将读取到的16进制数转化为10进制

CLOCK_TIME[1]=min/16*10+min%16; //将读取到的16进制数转化为10进制

CLOCK_TIME[2]=hour/16*10+hour%16; //将读取到的16进制数转化为10进制

YEAR[0]=year/16*10+year%16; //将读取到的16进制数转化为10进制

YEAR[1]=month/16*10+month%16;

YEAR[2]=day/16*10+day%16;

display(); //调用显示子函数

}

}

//=================================================================== ================//

//函数:主程序

//说明:

//功能:

//=================================================================== ================//

void main()

{

time();

}

附:点阵汉字显示程序

//=================================================================== ================//

//*标题:16*32点阵汉字显示程序

//*说明:采用89s51或52单片机,12M晶震,列采用74HC595驱动(共4个),行驱动采用4-16线译码器74LS154

//*功能:通过动态扫描显示汉字,并实现左移功能

//*作者:HEY

//*日期:2006-06-01

//*邮箱:billy3416@https://www.360docs.net/doc/9914529654.html,

//*声明:以下源程序均通过keil调试与硬件实现均无问题

//=================================================================== ================//

#include

#include

#define uchar unsigned char

//=================================================================== ================//

//用到的引脚及端口定义及全局变量

//=================================================================== ================//

sbit SERIALIN_0=P2^0; //定义P2.0为列向第1个74HC595的DATA输入

sbit SERIALIN_1=P2^1; //定义P2.1为列向第1个74HC595的DATA输入

sbit SERIALIN_2=P2^2; //定义P2.2为列向第1个74HC595的DATA输入

sbit SERIALIN_3=P2^3; //定义P2.3为列向第1个74HC595的DATA输入

sbit CLOCK=P2^4; //74HC595的移位时钟控制

sbit LATCH=P2^5; //74HC595的锁存输出时钟控制

uchar temp[4]={0,0,0,0}; //用到的74HC595显示缓冲区变量

uchar disp[4][16]; //用到的显示缓冲区//=================================================================== ================//

//定义要显示的汉字代码段 16*16,分别是左上-左下-右上-右下

//=================================================================== ================//

uchar code word[52][16]={

/*****点*****/

{0xfe,0xfe,0xfe,0xfe,0xfe,0xe0,0xef,0xef,0xef,0xe0,0xef,0xfe,0xd7,0xd b,0xbb,0xff},

{0xff,0xff,0x07,0xff,0xef,0x07,0xef,0xef,0xef,0x0f,0xef,0xef,0x77,0xb b,0xbb,0xff},

/*****阵*****/

{0xff,0x07,0x77,0x68,0x5e,0x6e,0x75,0x70,0x77,0x57,0x68,0x7f,0x7f,0x7 f,0x7f,0x7f},

{0x7f,0x7f,0x7f,0x03,0xff,0xbf,0xbf,0x03,0xbf,0xbf,0x01,0xbf,0xbf,0xb f,0xbf,0xbf},

/*****显*****/

{0xff,0xe0,0xef,0xe0,0xef,0xe0,0xfb,0xfb,0xbb,0xdb,0xeb,0xeb,0xfb,0x0 0,0xff,0xff},

{0xff,0x0f,0xef,0x0f,0xef,0x0f,0xbf,0xbf,0xb7,0xb7,0xaf,0x9f,0xbf,0x0 1,0xff,0xff},

/*****示*****/

{0xff,0xe0,0xff,0xff,0xff,0x80,0xfe,0xfe,0xee,0xee,0xde,0xbe,0x7e,0xf e,0xfa,0xfd},

{0xff,0x07,0xff,0xff,0xff,0x01,0xff,0xff,0xdf,0xef,0xf7,0xf3,0xfb,0xf f,0xff,0xff},

/*****由*****/

{0xfe,0xfe,0xfe,0xfe,0xc0,0xde,0xde,0xde,0xc0,0xde,0xde,0xde,0xde,0xc 0,0xdf,0xff},

{0xff,0xff,0xff,0xff,0x07,0xf7,0xf7,0xf7,0x07,0xf7,0xf7,0xf7,0xf7,0x0 7,0xf7,0xff},

/*****信*****/

{0xf7,0xf3,0xe7,0xe8,0xcf,0xcc,0xaf,0x6c,0xef,0xec,0xed,0xed,0xed,0xe c,0xed,0xff},

{0x7f,0x9f,0xbf,0x01,0xff,0x07,0xff,0x07,0xff,0x07,0xf7,0xf7,0xf7,0x0 7,0xf7,0xff},

/*****息*****/

{0xfe,0xfd,0xe0,0xef,0xe0,0xef,0xe0,0xef,0xe0,0xff,0xf6,0xd7,0xd7,0x9 7,0xf8,0xff},

{0xff,0xff,0x0f,0xef,0x0f,0xef,0x0f,0xef,0x0f,0xff,0xff,0x7b,0x6d,0xe d,0x0f,0xff},

/*****工*****/

{0xff,0xc0,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x0 0,0xff,0xff},

{0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0 1,0xff,0xff},

/*****程*****/

{0xf2,0x8e,0xee,0xee,0x02,0xee,0xcf,0xc4,0xab,0xaf,0x6c,0xef,0xef,0xe f,0xe8,0xef},

{0x07,0xf7,0xf7,0xf7,0xf7,0x07,0xff,0x03,0xbf,0xbf,0x03,0xbf,0xbf,0xb f,0x01,0xff},

/*****学*****/

{0xfe,0xef,0xf3,0xf7,0x80,0xbf,0x70,0xff,0xff,0x80,0xff,0xff,0xff,0xf f,0xfd,0xfe},

{0xf7,0x73,0x37,0x6f,0x01,0xfb,0x17,0xbf,0x7f,0x01,0x7f,0x7f,0x7f,0x7 f,0x7f,0xff},

/*****院*****/

{0xff,0x07,0x70,0x6b,0x5f,0x5c,0x6f,0x77,0x70,0x56,0x6e,0x7e,0x7d,0x7 d,0x7b,0x77},

{0x7f,0xbf,0x01,0xfb,0xff,0x07,0xff,0xff,0x01,0xdf,0xdf,0xdf,0xdd,0xd d,0xdd,0xe1},

{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff},

{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff},

{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff},

{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff}

};

//=================================================================== ================//

//名称:delay

//说明:延时函数

//功能:根据需要取不同的值,实现不同的延时效果

//=================================================================== ================//

void delay()

{

uchar i;

《16×16点阵LED字符显示器设计毕业论文初稿》

引言 LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。 LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。 本文设计的是一个室内用16x16的点阵LED图文显示屏,图形或文字显示有逐字显示、向上滚动、向左滚动等显示方式。 它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。

第一章设计要求与方案论证 1.1 设计要求 设计一个16×16点阵LED字符显示器,要求如下: 显示器采用AT89S52单片机作控制器,12MHz晶振,16×16点阵共阳LED显示器。16×16点阵LED字符显示器能显示“电气自动化”五个文字。显示方式可由S1、S2和S3选择,S1为逐字显示,S2为向上滚动显示,和S3为向左滚动显示。 1.2 系统基本方案的选择和论证 1.2.1 核心电路的选择 方案一:采用89C51单片机 采用89C51作为硬件核心,内部具有4KB Flash ROM存储空间,能运用于3V 的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具有ISP在线编程技术,当在对电路进行调试时,由于程序的过错修正或对程序的新增功能需要烧入程序时,对芯片的多次插拔会对芯片造成必定的损坏。 方案二:采用8051单片机: 8051单片机最早由Intel公司推出,内部具有4KB ROM存储空间。其后多家公司购买了8051的内核,使得以8051为内核的MCU系列单片机在世界上产量最大,应用也最广泛。有人推测8051可能最终形成事实上的标准MCU芯片。LG公司生产的GMS90系列单片机,与Intel MCS-51系列、Atmel 89C51/52,89C2051等单片机兼容,CMOS技术,高达40MHZ的时钟频率。应用于:多功能电话,智能传感器,电度表,工业控制,防盗报警装置,各种计费器,各种IC卡装置、DVD、VCD、CD-ROM。 方案三:采用AT89S52单片机 AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。该芯片且具备在线编程可擦除技术,当在对电路停止调试时,因为顺序的过错修正或对步伐的新删功能

大功率LED的驱动电路设计(PT4115应用)

大功率LED 的驱动电路设计(PT4115应用) 摘要:LED (light emitting diode )即发光二极管,是一种用途非常广泛的固体发光光源,一种可以将电能转化为光能的电子器件。由于LED 具有节能、环保、使用寿命非常长,LED 元件的体积非常小,LED 的发出的光线能量集中度很高,LED 的发光指向性非常强,LED 使用低压直流电即可驱动,显色性高(不会对人的眼睛造成伤害)等优点,LED 被广泛应用在背光源、照明、电子设备、显示屏、汽车等五大领域。而且随着LED 研发技术的不断突破,高亮度、超高亮度、大功率的LED 相继问世,特别是白光LED 的发光效率已经超过了常用的白炽灯,正朝着常照明应用的方向发展,大有取代传统的白炽灯甚至节能灯的趋势。 本论文主要介绍采用恒流驱动方式实现驱动电路,并且提出一种基于恒流驱动芯片PT4115的高效率的大功率LED 恒流驱动解决方案。该种驱动电路简单、高效、成本低,适合当今太阳能产品的市场化发展。。 关键词:大功率LED ;驱动电路;恒流驱动芯片PT4115 一、LED 主要性能指标: 1)LED 的颜色:目前LED 的颜色主要有红色,绿色,蓝色,青色,黄色,白色,暖白,琥珀色等其它的颜色; 2)LED 的电流:一般小功率的LED 的正向极限电流多在20mA 。但大功率LED 的功率至少在1W 以上,目前比较常见的有1W 、3W 、5W 、8W 和10W 。1W LED 的额定电流为350mA,3W LED 的750mA 。 3)LED 的正向电压:LED 的正极接电源正极,负极接电源负极。一般1W 的大功率LED 的正向电压为3.5V~3.8V 。 4)LED 的反向电压:所允许加的最大反向电压。超过此值,发光二极管可能被击穿损坏 LED 发光强度:光源在给定方向的单位立体角中发射的光通量定义为光源在该方向的(发)光强(度),单位为坎德拉(cd )。 5)LED 光通量:光源在单位时间内发射出的光量称为光源的发光通量。单位为流明(lm)。如1W 大功率LED 的光通量一般为60~80LM 。 6)LED 光照度:1流明的光通量均匀分布在1平方米表面上所产生的光照度.,单位为勒克斯(lx)。 7)LED 显色性:光源对物体本身颜色呈现的程度称为显色性,也就是颜色逼真的程度。 8)LED 的使用寿命:LED 一般可以使用50,000小时以上。 9)LED 发光角度:二极管发光角度也就是其光线散射角度,主要靠二极管生产时加散射剂来控制。 二、大功率LED 的驱动方式: LED 驱动简单的来讲就是给LED 提供正常工作条件(包括电压,电流等条件)的一种电路,也是LED 能工作必不可少的条件,好的驱动电路还能随时保护LED ,避免LED 被损坏。 LED 驱动通常分为以下三种方式: (1) 镇流电阻驱动:就是简单的的在LED 变LED 的驱动电流.。 LED 的工作电流为: R U U I L -= 所以I 与镇流电阻R 成反比;当电源电压U 时,R 能限制I 的过量增长,使I 不超出LED

基于单片机的16乘16的点阵屏设计小彬

电子技术课程设计基于单片机的16×16点阵滚动屏设计 院(系)名称信息工程学院 专业班级 学号 学生姓名小彬 指导教师 2014年5月30日

基于单片机的16×16点阵滚动屏的设计 摘要 随着LED点阵屏显的技术日趋成熟,精致低功耗的点阵成为发展的一种趋势······本设计以单片机最小系统为核心,作为主控芯片。采用经济实惠的STC89C52系列单片机,来控制LED点阵电子显示屏的动态设计。16×16完全可以满足各种文字或单色图像,采用4块8×8点阵(SM421988共阴),采用阳码实现行输入(74hc595驱动),阴码实现列扫(74hc154列扫)。采用动态显示,使图像或文字能够实现静止、移入移出等多种显示方式。 基于C语言易植入,容易开发特点,采用C语言编程,文字图像取模用PCtoLCD2002取模软件。LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低等特点在车站、证券所、运动场馆、交通干道及各种室内、室外显示场合的信息发布,公益宣传,环境参数实时等等得到广范应用。 关键词:STC89C52,SM421988, 74hc595,74hc154, 点阵动态显示。 目录 1 绪论 ......................................................................................................................................... I 1.1课题描述 ......................................................................................................................... I 1.2基本工作原理及框图 ..................................................................................................... I 2 相关芯片及硬件电路设计 ..................................................................................................... I 2.1STC89C52芯片 .............................................................................................................. I 2.1.1 STC89C52的功能特性 ........................................................ 错误!未定义书签。 2.1.2 STC89C52的主要性能参数................................................................................. II 2.1.3 STC89C52最小系统电路 .................................................... 错误!未定义书签。 2.2点阵显示 ...................................................................................................................... I II 2.2.1 SM421988的功能特性.......................................................................................... I II

LED驱动电路的设计与制作

自动化学院 电子基础课程设计任务书 系班学生: 课题名称:LED驱动电路的设计与制作 课题要求:一、1、工作电源:交流220伏 2、LED功率为3W 二、完成原理图、PCB图设计 三、完成安装及调试。 四、写出设计报告。 课题内容: 第一周:查找相关资料;方案设计。 第一周:设计原理图、PCB图。 第二周:完成安装及调试。撰写报告 主要参考资料: [1].王庆主编. Protel99SE & DXP 电路设计教程. 电子工业出版, 2006.6 [2].康华光等. 电子技术基础(模拟部分第五版).高等教育出版社, 1999.6 [3].康华光等. 电子技术基础(数字部分第五版).高等教育出版社, 1999.6 时间:2009年1月5日

自动化学院 电子基础课程设计评分标准 平时表现评分:(20%) 优秀:(90-100) 遵守纪律,尊敬老师,爱护设备,工作量饱满,动手能力强,无缺勤,很好按课题进度进行。 良好:(80-89) 遵守纪律,爱护设备,工作量饱满,动手能力较强,考勤情况良好,较好按课题进度进行。 中等:(70-79) 遵守纪律,爱护设备一般,工作量一般,动手能力一般,偶尔缺勤,基本按课题进度进行。 及格:(60-69) 遵守纪律一般,人为因素损坏设备,工作量一般,动手能力差,偶尔缺勤,能按课题进度进行。 不及格:(59以下) 不遵守纪律,人为因素损坏设备,有技术安全事故,工作量不饱满,动手能力很差,经常迟到,早退,缺勤。 课题完成情况评分:(50%) 优秀:(90-100) 全部完成任务书要求,完成质量优良、结果正确,所完成的设计有一定的独立见解。 良好:(80-89) 全部完成任务书要求,完成情况良好,所完成的设计正确,解决了一些实际问题,结果正确。 中等:(70-79) 基本完成任务书要求,完成质量尚好,所完成的设计基本正确,但存在一些不足。 及格:(60-69) 基本完成任务书要求,完成质量尚好,所完成的设计基本正确,但有小错误。 不及格:(59以下) 未完成任务书要求,所作的设计有严重错误,基本概念不清。 电子基础课程设计报告质量评分(30%) 1、文献资料收集、整理、分析;对课题研究意义的阐述;文字精练、流畅、绘图整洁、符合标准规范、字体工整; 2、基本概念、基本理论及专业知识掌握扎实,运用灵活;设计思路、设计内容、计算方法及结果、计算机运用正确无误; 3、试验数据的获取(软件调试方法及过程)试验过程(调试过程)的正确性; 4、电子基础课程设计的结论,存在的问题,研究结果的创新性;

基于FPGA的LED16×16点阵汉字显示设计(VHDL版)

毕业设计(论文)开题报告 设计(论文)题目基于FPGA的LED 16×16点阵汉字显示设计 一、选题的背景和意义: LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国LED 显示屏应用逐步增多。目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。而随着奥运会、世博会的临近,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。 因此,本设计是很有必要的,之所以基于FPGA设计是因为现场可编程门阵列(FPGA)设计周期小,灵活度高,适合用于小批量系统,提高系统的可靠性和集成度。并且采用编写灵活的VHDL 语言编写主程序。本设计可以方便的应用到各类广告宣传中。 二、课题研究的主要内容: 1. 实现16×16点阵的汉字显示; 2. 实现有限汉字显示; 4. 实现汉字的滚动显示; 5. 完成方案论证。 三、主要研究(设计)方法论述: 通过去图书馆查阅书籍收集资料,同时在搜索引擎上检索资料,分析借鉴已有类似产品、设计方案与成功经验,选择几种可行方案比对,最后确定最切实可行的方案展开设计。 通过Multisim或Quartus软件对系统进行模拟仿真,对电路功能进行改进与完善。 在EDA试验箱上进行调试。 四、设计(论文)进度安排:

时间(迄止日期)工作内容 2010.5.17-5.23 理解并确认毕业设计任务书,撰写完成毕业设计开题报告(第1周) 2010.5.24-5.30 完成调研与资料收集、整理 (第2周) 2010.5.31-6.6 设计方案及原理框图确定 (第3周) 2010.6.7-7.4 电路资料收集,单元电路设计 (第4、5、6、7周) 2010.7.5-7.18 电路仿真与改进、完善 (第8、9周) 2010.19-8.1 资料整理 (第10、11周) 2010..8.2-8.8 书写毕业设计报告 (第12周) 2010.8.9-8.16 (第13周)修改毕业设计报告并整理装订 五、指导教师意见: 指导教师签名:年月日六、系部意见: 系主任签名:年月日 目录

51单片机16X16LED点阵式汉字电子显示屏设计_毕业设计(论文)

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

小型LCD背光的LED驱动电路设计

小型LCD背光的LED驱动电路设计 过去几年来,小型彩色LCD 显示屏已经被集成到范围越来越宽广的 产品之中。彩色显示屏曾被视为手机的豪华配置,但如今,即便在入门级手机 中,彩屏已成为一项标配。幸好,手机产业的经济规模性(全球手机年出货量接 近10 亿部)降低了LCD 彩色显示屏的成本,并使它们集成在无论是便携医疗设备、通用娱乐遥控器、数字相框/彩色LCD 显示屏需要白色背光,以便用户在 任何光照环境下都能正常地观看。这个背光子系统包括1 个高亮度白光发光二 极管(LED)阵列、1 个扩散器(diffuser)以扩散光线和1 个背光驱动器将可用电能 稳压为恒定电流以驱动LED.一块1 到1.5 英寸的显示屏可能包含2 到4 个LED,而一块3.5 英寸显示屏则可能轻易地就包含6 到10 个LED.对于LED 而言,其光 输出与电流成正比,而且由于LED 具有非常陡峭的电流-电压(I-V)曲线,流过LED 的电流紧密匹配是非常重要,这样才能确保均衡背光,因为LED 通常分 布在LCD 显示屏的一边。此外,也需要软件控制让用户调节亮度,以及针对 周围光照环境作出补偿。根据流经LED 电流的不同,LED 的色点(color point) 可能会漂移。因此,将LED 电流设定为固定值并对LED 进行脉宽调制以降低 平均光输出就很普遍。要在手持产品设计中集成小型彩色LCD 显示屏并进而 实现成本、性能和电池寿命的恰当平衡,存在着一系列需要考虑的因素。 电池供电产品需要优化的LED 驱动电路架构,这些架构要处理并存的 多项挑战,如空间受限、需要高能效,以及电池电压变化-既可能比LED 的正 向电压高,也可能低。常用的拓扑结构有两种,分别是LED 采用并联配置的 电荷泵架构/恒流源架构和LED 采用串联配置的电感升压型架构。这两种方案 都有需要考虑的折衷因素,如升压架构能够确保所有LED 所流经的电流大小 相同但需要采用电感进行能量转换,而电荷泵架构使用小型电容进行能量转换,

基于单片机的16×16LED点阵显示屏设计

编号 毕业设计(论文) 题目基于单片机的16×16LED点阵显示屏设计 二级学院电子信息与自动化学院 专业测控技术与仪器 班级测控一班 学生姓名丁徽徽 学号 11107030106 指导教师米曾真职称副教授 时间 2015年6月6日

目录 摘要 ................................................................................................................................................... I Abstract ............................................................................................................................................ II 第一章绪论. (1) 1.1 单片机的发展阶段 (1) 1.2 单片机的发展趋势 (1) 1.3 单片机的特点 (3) 1.4 LED简介 (4) 1.5 LED的特点 (5) 第二章功能要求及方案论证 (6) 2.1 功能要求 (6) 2.2 显示模块方案论证 (6) 第三章系统电路的硬件设计 (9) 3.1 设计框图 (9) 3.2 单片机的选择 (9) 3.3 AT89C51芯片简介 (10) 3.4 系统硬件电路的设计 (13) 第四章系统的程序设计 (22) 4.1程序的编写过程 (22) 4.2 程序设计流程图 (24) 第五章软件调试及硬件制作 (25) 5.1 软件调试及仿真 (25) 5.2 硬件制作 (28) 结束语 (29) 致谢 (30) 附录 (37) 附录A:16*16点阵显示屏设计程序 (37) 附录B:proteus ISIS 软件仿真图 (48) 附录C:供电以后16*16点阵实物效果图 (49) 附录D:元器件清单列表 (50)

16乘16点阵显示实验报告

实验报告 实验名称: [16×16点阵显示实验] 姓名: [] 学号: [201] 指导教师: [解*] 实验时间: [2013年4月25日] 信息与通信工程学院

16×16点阵显示实验 1实验要求 任务1:将所给程序改正使结果为正显示; 任务2:使显示四个字、八个字。 2实验原理 2.1 LED显示器结构和原理 1>8*8LED点阵的结构 图1 8*8LED点阵结构图 从图1中可以看出,8*8LED点阵共由64个发光二极管组成,每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1高电平,且某一列置0低电平,则相应的发光二极管就亮;因此要用8*8LED点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。但要显示信息量大的图形,则需要n个多个8*8LED点阵,拼装成一个大屏幕才行。

LED点阵显示器最大的特点是亮度高、功耗较低、寿命长、容易控制等,因此它的应用很广,常用在广场、车站、商业广告等室外的显示。 2>8*8LED点阵的封装和引脚规律 64个发光二极管按照行共阳、列共阴4个一组的方式封装成一个模块,这样8*8LED 点阵模块就有8行、8列共16个引脚。其实物图如图2,电路模块符号图如图3。 图2 8*8LED点阵实物图图3 8*8LED点阵符号图但8*8LED点阵的16个引脚并不是很有规律,千万不要想象成1~8个引脚是行,9~16个引脚是列。而且不同产品的点阵外部引脚排列规律还可能不一样。以下是NLB1388SRA 和LDM1388SRA两个型号点阵引脚对应行、列的关系表: 行号H0 H1 H2 H3 H4 H5 H6 H7 引脚号9 14 8 12 1 7 2 5 列号L0 L1 L2 L3 L4 L5 L6 L7 引脚号13 3 4 10 6 11 15 16 假如你买到一块新的8*8LED点阵,又没有关于它的相关资料,那你只有自己用万用表或通过VCC电源串接一个510欧姆的电阻来检测了。 2.2 LPM_ROM的应用 该模块为逻辑宏模块存储器。其应用过程如下。 1选择模块

LED点阵驱动电路设计

电子技术基础课程设计说明书题目:8x8 LED点阵驱动电路设计 学生姓名:王涉华 学号: 201306050122 院(系):理学院 专业:电子科学与技术 指导教师:戴庆瑜 2015 年 12 月 28日

目录 1 选题背景 (1) 1.1 基本设计任务 (1) 1.2 发挥设计任务 (1) 1.3 设计原理 (1) 1.4 方案论证 (1) 2 电路设计 (2) 2.1 电路设计框图 (2) 2.2 工作原理 (3) 3 各主要电路及部件工作原理 (3) 3.1 555多谐振荡电路 (3) 3.2 74HC161引脚图及工作原理 (5) 3.3 74HC138引脚图及工作原理 (6) 3.4 74HC573引脚图及工作原理 (7) 3.5 AT28C16引脚图及相关参数 (7) 3.6 上电复位及开关手动复位电路设计 (8) 3.7 8x8共阴点阵 (9) 3.8 74HC04引脚图及功能 (10) 4 原理总图 (12) 5 元件清单 (13) 6 调试过程及测试数据(采用分模块调试) (13) 6.1 通电前检查 (13) 6.2 复位电路及手动开关复位电路的调试 (13) 6.3 NE55的调试 (14) 6.4 AT28C16的调试 (14) 6.5 结果观察调试 (15) 7 电路实物 (15) 7.1 整体实物电路展示 (15) 7.2 电路功能部分展示 (16) 8 小结 (19) 9 设计体会及改进意见 (19) 9.1 设计体会 (19) 9.2 设计不足 (19) 9.3 设计改进意见 (19) 参考文献 (20)

1 选题背景 LED 点阵显示是利用发光二极管点阵模块或像素单元组成的平面式显示方式。目前,由于成本及实用性的优势,以LED半导体发光器件为显示介质的大型显示屏在公共场合的广告宣传、通告发布等方面已得到广泛的应用,其驱动方式也随着技术的逐渐成熟而变得丰富多样,且各具特色。一个大型LED显示屏由上万个甚至更多的LED单元构成,而如何控制这些单一的单元按照我们的预期呈现显示内容,即LED的单元驱动电路的设计便显得尤为重要。如何设计一个既能满足显示要求又能尽量节省成本的LED驱动电路呢?在这里,我以8x8点阵为例进行研究。 1.1 基本设计任务 (1)能够显示0~9、a~z或A~Z,显示字符数量不少于8个; (2)能手动或自动循环显示字符。 1.2 发挥设计任务 可实现显示内容的左右移动。 1.3 设计原理 通过控制555单稳态触发器输入脉冲频率信号,再通过计数器作为存储器的输入,以存储器和译码器作为高低电平的输入,进而控制加在点阵 LED灯两端的电压,这样就可以实现LED的亮灭控制。 1.4 方案论证 方案一:以74HC161和74HC138构成顺序脉冲发生器,输出作为共阴8x8点阵的横向驱动,纵向驱动由三态门74HC244控制存储器AT28C16的输出来进行调节,三态门控制存储器的八位输出只有一位有效,其它处于高阻状态,依次循环。用两组8输出计数器74HC161作为AT28C16的地址输入,其中一组为另一组置位,每次可点亮一个灯,需要八分之一个字节,只需设置64个灯的总的点亮时间小于人眼的分辨时间(大概为0.02s),利用人眼

基于某FPGA的LED16×16点阵汉字显示设计(VHDL版)

毕业设计(论文)开题报告

目录摘要

ABSTRACT 第一章前言 (1) 1.1本设计的研究背景和研究目的 (1) 1.2LED点阵显示特点 (1) 1.3FPGA设计的特点 (1) 第二章系统设计 (3) 2.1设计任务与要求 (3) 2.1.1设计任务 (3) 2.1.2设计要求 (3) 2.2设计原理 (3) 2.2.1总体设计方案 (3) 2.2.2方案的比较 (4) 2.3扫描控制模块 (4) 2.3.1 LED的显示原理 (4) 2.3.2汉字的存储 (5) 2.4汉字显示 (5) 2.4.1列循环扫描 (5) 2.4.2字符样式设计 (6) 2.4.3字母循环扫描及期间的延时环节 (9) 2.5整个完整的程序 (9) 第三章系统调试与仿真 (14)

3.1开发环境介绍 (14) 3.2调试与仿真 (14) 3.2.1 创建工程 (14) 3.2.2 编译前设置 (14) 3.2.3 全程编译 (16) 3.2.4时序仿真 (17) 第四章结束语 (18) 答谢辞 (18) 参考文献 (18) 摘要 主要研究基于VHDL的Led点阵汉字滚动显示。首先描述了基于现场可编程门阵(FPGA)的硬件电路,以及点阵显示汉字的原理;然后在单个16X16 LED发光二极管点阵上滚动汉字的原理;最后给出了描述其功能的VHDL语言程序设计方法。通过编程、调试、仿真、下载正确地实现了汉字滚动显示扫描结果,其硬件系统的实验验证也获得了与软件模拟仿真结论相吻合的结果。 关键词:LED点阵;FPGA;VHDL语言;汉字滚动显示

Abstract Primary research is based on VHDL, Led Scrolling dot matrix characters. First described based on field programmable gate array (FPGA) hardware circuit, as well as the principle character dot matrix display; and then in a single 16X16 LED scrolling LED dot matrix on the principles of Chinese characters; Finally, the

LED可调驱动电路电源设计

LED可调驱动电源课程设计 院系: 年级专业: 姓名: 指导教师: 学号: 日期: LED驱动电源课程设计

一、设计规格 1、设计一个恒流LED驱动电路,电流值为350mA 2、设计一个调光电路,PWM波的占空比由20%~80%可调 3、整个驱动电路有9V供电 4、LED电压4-8V 5、电路效率90% 二、设计过程 1、画原理图

2、原理描述 A、555芯片构成的PWM脉宽调制电路 PWM称之为脉冲宽度调制信号,利用脉冲的宽度来调整亮度,也可用来控制DC马达。 PWM脉冲宽度调制信号的基本频率至少约400HZ-10KHZ,当调整LED的明或暗时,这个基本的频率不可变动,而是改变这个频率上方波的宽度,宽度越宽则越亮、宽度越窄则越暗。 PWM是控制LED的点亮时间,而不是改变输出的电压来控制亮度。 以下为PWM工作原理: Reset接脚被连接到+V,因此它对电路没有作用。当电路通电时,Pin 2 (触发点)接脚是低电位,因为电容器C2开始放电。这开始振荡器的周期,造成第3接脚到高电位。当第3接脚到高电位时,电容器C2开始通过R1和对二极管D2充电。当在C2的电压到达+V

的2/3时启动接脚6,造成输出接脚(Pin3)跟放电接脚(Pin7)成低电位。 当第3接脚到低电位,电容器C2起动通过R1和D1的放电。当在C2的电压下跌到+V的1/3以下,输出接脚(Pin3)和放电接脚(Pin7)接脚到高电位并使电路周期重复。 Pin 5并没有被外在电压作输入使用,因此它与0.01uF电容器相接。 电容器C2通过R1及二极管,二极管一边为放电一边为充电。充电和放电电阻总和是相同的,因此输出信号的周期是恒定的。工作区间仅随R1做变化。 PWM信号的整体频率在这电路上取决于R1和C2的数值。公式:频率(Hz)= 1.44/(R1 * C2) B、HV9910B构成的恒流驱动电路 HV9910B是PWM高效率LED驱动IC。它允许电压从8VDC一直到450VDC而对HBLED有效控制。HV9910B通过一个可升至300KHz的频率来控制外部的MOSFET,该频率可用一个电阻调整。LED串是受到恒定电流的控制而不是电压,如此可提供持续稳定的光输出和提高可靠度。输出电流调整范围可从MA级到 1.0A。HV9910B使用了一种高压隔离连接工艺,可经受高达450V的浪涌输入电压的冲击。对一个LED串的输出电流能被编程设定在0和他的最大值之间的任何值,它由输入到HV9910B的线性调光器的外部控制电压所控制。 调光: 有两种方式可实现调光,取决于不同的应用,可以单独调节也可

16×16 LED点阵设计-毕业设计

16×16 LED点阵设计 学生:指导教师: 内容摘要:LED点阵电子显示屏的发展越来越好广泛,它成为一个宣传信息的重要平台,已经得到了社会的普遍认同。LED点阵显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。 该设计是一个16×16LED点阵电子显示屏显示数字的设计。整块电子显示屏的控制核心是40引脚的单片机AT89S51,说明了LED点阵电子显示屏用AT89S51为控制系统的动态的设计和开发的具体过程。通过该芯片控制两个列驱动器74HC595来驱动显示屏显示,本设计就是使用4块8×8点阵显示模块来组成16×16点阵显示屏,采用动态扫描显示,程序编写的实现是使用简单流通性强的C语言,该设计的结果证明,系统显示清晰,结构合理,误差小,扩展能力强,性能稳定。 关键词:AT89S51 LED点阵数字显示

Design of 16*16 LED dot matrix Abstract:LED electronic display found the screen better and better.It has become an important platform of a promotional information,it has been widely accepted by the society,LED dot matrix display is the use of plane composition LED lattice module or pixel unit display screen ,It has the advantages of high light efficiency ,long. The designed is a digital design of a 16*16 LED dot matrix display ,control the core piece of electronic display is the 40 pin of the microcontroller AT89S51.Describes the specific process of the design and development of LED dot matrix display with AT89S51 as the control system dynamic.Through the control two columns drive chip 74HC595 are needed to drive the display shows that this design is to use 4 pieces of 8 x 8 dot matrix display module to form a 16 * 16 dot matrix display screen, a dynamic scans showed that the realization of the programming is simple to use strong liquidity of C language, and the design results show that the system shows clear, reasonable structure, little error and extension ability strong, stable performance. Keywords: AT89C51 dot matrix LED the digital display screen

LED电源驱动电路的基本设计详解

LED电源驱动电路的基本设计详解 LED电源驱动电路解析随着白光LED的诞生及其迅速发展,LED开始进入普通照明阶段。LED是一种固态冷光源,是继白炽灯、荧光灯和高强度放电灯(HID)之后出现的第四代电光源。现已普遍应用于建筑物照明、街道照明、景观照明、标识牌、信号灯、以及住宅内的照明等领域中。 LED 供电的原始电源目前主要有三种:即低压电池、太阳能电池和交流市电电源。无论是采用哪一种原始电源,都必须经过电源变换来满足LED 的工作条件。这种电源变换电路,一般来说就是指的LED 驱动电路。在LED 太阳能供电系统中,还需要蓄电池或超级电容器,用以储存太阳能。在夜晚需要照明时,蓄电池或超级电容器再通过控制电路放电,为LED驱动电路供电。 太阳能和风能与LED 的结合,是LED 应用的一大亮点,它将为第三世界的贫困和边远地区带来光明,让绿色照明的光辉照亮世界的每一个角落。 一、低压直流供电的LED驱动电路1.当输入电压高于LED电压时 当输入电压高于LED或LED串的电压降时,通常采用线性稳压器或开关型降压稳压器。(1)线性稳压器 线性稳压器是一种DC-DC 降压式变换器。LED 驱动电路所采用的线性稳压器大都为低压差稳压器(LDO),其优点是不需要电感元件,所需元件数量少,不产生EMI,自身电压降比较低。但是与开关型稳压器相比,LDO的功率损耗还是较大,效率较低。LDO在驱动350mA以上的大功率LED串时,往往需要加散热器。 (2)开关型降压(buck)稳压器 基于单片专用IC 的开关型降压稳压器需要一个电感元件。许多降压稳压器开关频率达1MHz以上,致使外部元件非常小,占据非常小的空间,效率达90%以上。但这种变换器会产生开关噪声,存在EMI问题。图1所示是基于Zetex 公司ZXSC300的3W LED 降压型驱动电路。其中的RCS为电流传感电阻,D1为1A的肖特基二极管。在6V的输入电压下,通过LED的电流达1.11A.ZXSC300 采用5 引脚SOT23 封装。

LM2734大功率LED恒流驱动电路的设计

大功率LED 恒流驱动电路的设计虽然大功率LED 现在还不能大规模取代传统的白炽灯,但它们在室内外装饰、特种照明方面有着越来越广泛的应用,因此掌握大功率LED 恒流驱动器的设计技术,对于开拓大功率LED 的新应用至关重要。LED 按照功率和发光亮度可以划分为大功率LED、高亮度LED 及普通LED。一般来说,大功率LED 的功率至少在1W 以上,目前比较常见的有1W、3W、5W、8W 和10W。已大批量应用的有1W 和3W LED,而5W、8W 和10W LED 的应用相对较少。预计大功率LED 灯会在2008年奥运会上大量应用,因此电子和照明行业都非关注LED 照明新技术的发展应用。 恒流驱动和提高LED 的光学效率是LED 应用设计的两个关键问题,本文首先介绍大功率LED 的应用及其恒流驱动方案的选择指南,然后以美国国家半导体(NS)的产品为例,重点讨论如何巧妙应用LED 恒流驱动电路的采样电阻提高大功率LED 的效率,并给出大功率LED 驱动器设计与散热设计的注意事项。 驱动芯片的选择 LED 驱动只占LED 照明系统成本的很小部分,但它关系到整个系统性能的可靠性。目前,美国国家半导体公司的LED 驱动方案主要定位在中高端LED 照明和灯饰等市场。灯饰分为室内和室外两种,由于室内LED 灯所应用的电源环境有AC/DC 和DC/DC 转换器两种方式,所以驱动芯片的选择 也要从这两方面考虑。 图1:利用DC/DC 稳压器FB 反馈端实现从恒压驱动(左图)到恒流驱动(右图)的转换。 1.AC/DC 转换器 AC/DC 分为220V 交流输入和12V 交流输入。12V 交流电是酒店中广泛应用的卤素灯的电源,现有的LED 可以在保留现有交流12V 的条件下进行设计。针对替代卤素灯的设计,美国国家半导体L M2734的主要优势是体积小、可靠性高、输出电流高达1A,恰好适合卤素灯灯口直径小的特点。2004.01.01研发部 paulzheng

16×16点阵显示设计

课程设计 课程名称嵌入式系统课程设计 课题名称16X16的点阵显示设计 专业 班级 学号 姓名 指导老师 2016年12月20日

电气信息学院 课程设计任务书 课题名称16×16的点阵显示设计 姓名专业班级学号 指导老师 课程设计时间2016年12月18日-2016年12月30日(17、18周) 教研室意见意见:同意审核人:刘望军 一、任务及要求 CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。并最终完成电路的编程调试。具体要求如下: 用一个16×16的点阵使用逐列循环扫描的方式不间断的显示你姓名的全部大写拼音字母。 二、进度安排 第一周: 周一:集中布置课程设计相关事宜。 周二~周三:子模块程序设计,顶层电路程序设计。 周四~周日:子模块,顶层电路仿真。 第二周: 周一~周三:编程下载,系统调试。 周四~周五:设计报告撰写。周五进行答辩和设计结果检查。 三、参考资料 1. 张原编著,可编程逻辑器件设计及应用,机械工业出版社。 2.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。 3. 刘洪喜,陆颖编著. VHDL电路设计实用教程清华大学出版社。

目录 1.总体设计思路与功能设计 (1) 1.1.基本原理 (1) 1.2.总体设计框图 (2) 1.3.顶层文件设计 (2) 2.单元电路设计 (3) 2.1列循环扫描模块 (3) 2.2字符样式设计模块 (3) 2.3循环扫描及延时模块 (4) 2.4整个程序 (5) 3.系统调试与仿真 (9) 3.1 开发环境介绍 (9) 3.2.1 创建工程 (9) 3.2.2 编译前设计 (9) 3.2.3 全程编译 (11) 3.2.4时序仿真 (12) 4.下载调试 (13) 5.心得体会 (14) 6.参考文献 (14)

基于单片机16_16的点阵显示毕业设计

基于单片机16*16的点阵显示 院系:机电工程学院 专业(班级):电子信息工程2班 姓名: 学号: 指导教师: 职称: 完成日期:

目录 1 引言 (1) 2 设计的任务与要求 (3) 3硬件电路设计 (4) 3.1 总体设计方案 (4) 3.2 元器件描述 (5) 3.2.1 STC89c52单片机 (5) 3.2.2 74hc595寄存器的概述 (7) 3.2.4 16*16点阵显示屏幕 (8) 3.2.5 点阵显示模块 (9) 3.3 89c52应用系统部分电路 (10) 3.3.1 晶体振电路原理和概述 (10) 3.3.2 上电复位电路 (11) 3.3.3 I/O口和扩展锁存器控制点阵显示 (12) 4系统软件设计 (12) 4.1 软件设计描述 (13) 4.2 16*16点阵显示程序 (13) 5调试以及性能分析 (19) 总结 (20) 参考文献 (21) 附录A 总电路图 (22) 附录B 实物图 (23)

基于单片机的16*16点阵显示 1 引言 现代信息产业的高速发展,在我们周围LED显示屏作为现代信息化社会的一个闪亮标志。其广泛的应用在室内外需要进行服务的地方,众人皆知在我们生活的领域如电信,邮政大厅,营业部,车站,机场,港口,体育场所等信息的发布,政府政策的发布,各类市场行情信息的发布和宣传等。信息广告在蓬勃发展的市场经济中起着越来越重要的作用。随着技术的不断进步,新产品层出不穷,市场竞争越来激烈,广告的重要性也就更加引发企业的关注。一个成功的企业隔离不开成功的广告,而成功的广告离不开成功的广告技术和发布手段。因此,广告的新颖性,广告的创意引起高层人士的高度重视。 在以前电子技术还不发达的时候,我们通常见到的是通过写大字报基挂横幅等来打广告,但那样很不方便,比如要更换内容则要整个都要换掉,而且到了晚上就看不清,非常麻烦。所以在现代信息技术发达的社会,仅仅这样肯定是没有竞争力的,而汉字显示屏的出现,不仅可以随时更改内容,而且到了晚上也特别的醒目,操作也非常的简便,成本低,从而很全有实用性,给人们带来了许多的用途与方便,基于PC 机控制的LED点阵式显示屏的发展技术也非常的快,不仅点阵数高,同时可以显示铁汉字或图形,而且清晰度非常高。还有许多的其它附加功能,又如,可以动态显示,不断的换颜色,可以翻转汉字或图形,还可以反色目前国内外还有更加先进的技术,就是利用液晶显示屏,则更加清晰,但成本比较高。 当今社会在飞速发展无疑能源,健康,空间的利用,成了人们着重关注的对象。而在这个信息传递极速的社会,LED的出现给人们带来了希望之光。LED的特色之处一是节能(直接功耗,间接耗能),二是基本无电离辐射,三提高空间利用率。而这些特色又恰好解决了上述的三种问题。然而LED点阵显示屏的特点不仅仅于此LED点阵显示屏用的是数码管,而数码管具有补助和,便宜等优点。做出来的LED点阵显示很耐用。LED点阵显示屏之所以受到广泛重视而得到迅速发展,是与LED显示屏本身所具有的优点分不开的。LED点阵显示屏的发展前景极为广阔,目前正朝着更高亮度。更高耐气候性,更高的发光密谋,武冈市的发光均匀性,可靠性,全色化方向发展。

相关文档
最新文档