51单片机驱动16×16LED点阵显示动画汉字汇编程序

51单片机驱动16×16LED点阵显示动画汉字汇编程序
51单片机驱动16×16LED点阵显示动画汉字汇编程序

51单片机驱动16×16LED点阵显示动画汉字汇编程序

这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.

ORG 0000H

ST: MOV A,#0FFH ;初始化

MOV P1,A

MOV P2,A

MOV P3,A

MOV P0,A

CLR A

MOV R0,#50H ;显示缓存清0

MOV R1,#20H ;控制清0的次数

ST0: MOV @R0,A

INC R0

DJNZ R1,ST0

;正文显示

CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1

LCALL HZ

;结束动画

SCREE:

MOV DPTR,#TAB2;查表指针指向TAB2

ACALL DD

MOV DPTR,#TAB3;查表指针指向TAB3

ACALL DD

MOV DPTR,#TAB4;查表指针指向TAB4

ACALL DD

LJMP CHINESE

;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)

DD: MOV B,#00H

MOV R0,#08H ;显示8幅画面

AJMP CC

CC0: MOV A,B

ADD A,#20H ;指向下一幅画面

MOV B,A

CC: MOV R7,#08H ;画面停留时间

MOV R3,B

MOV 37H,R0

LCALL ENTER

DIS00: LCALL DISPLAY

DJNZ R7,DIS00

MOV R0,37H

DJNZ R0,CC0

RET

;汉字上移子程序,可显示8个汉字,(表必须深256字节)

HZ: MOV R3,#00H ;查表偏移量

MOV R5,#81H ;查表128次

MOVBACK: MOV R4,#10H ;使显示完一个汉字

MOVBACK0: MOV R7,#02H ;一桢画面显示时间

MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOV R2,#10H ;内存后移的次数

DJNZ R5,MOVBACK1

RET ;显示完该表,返回

MOVBACK1: MOV A,@R0 ;低8位被后移的内存单元数据暂存入A

INC R0 ;后移两字节

INC R0

MOV @R0,A ;放入要移的低8位数据

MOV A,R0 ;R0指向下一个要后移的内存单元

SUBB A,#04H

MOV A,@R1 ;高8位被后移的内存单元数据暂存入A INC R1 ;后移两字节

INC R1

MOV @R1,A ;放入要移高8位的数据

MOV A,R1 ;R1指向下一个要后移的内存单元

SUBB A,#04H

MOV R1,A ;R1指向下一个要后移的内存单元

DJNZ R2,MOVBACK1 ;显示缓存数据依次后移

MOV A,R3 ;从表TAB1读入要移进50H,51H的数据MOVC A,@A+DPTR;先给50H读数据

MOV 50H,A

MOV A,R3 ;指向下一字节

INC A

MOV R3,A

MOVC A,@A+DPTR;再给51H读数据

MOV 51H,A

MOV A,R3 ;指向下一字节

INC A

MOV R3,A

MOV 30H,R3 ;保护数据

MOV 31H,R4

MOV 32H,R5

DISMOV: LCALL DISPLAY ;显示当前数据

DJNZ R7,DISMOV

MOV R3,30H

MOV R4,31H

MOV R5,32H

DJNZ R4,MOVBACK0

MOV 30H,R3 ;保护数据

MOV R7,#24H ;显示当前数据延时

DISMOV0: LCALL DISPLAY

DJNZ R7,DISMOV0

MOV R3,30H

MOV R5,32H

LJMP MOVBACK

;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R3,影响R1,R2,R3 ENTER: MOV R1,#50H ;从50H单元起把表存入

MOV R2,#20H ;查表次数

MOV A,R3

CLLOOP_: MOVC A,@A+DPTR ;查表

MOV @R1,A ;将表放进5X,6X单元

INC R1 ;R1指向下一个地址空间

MOV A,R3 ;查表指针后移

INC A

MOV R3,A ;将指针修改结果存入R3

DJNZ R2,CLLOOP_;没查完转CLLOOP_

RET

;15MS,显示子程序,一桢32个字节,影响A,R0,R1,R3,R4,R5,R6;

;https://www.360docs.net/doc/0c5084906.html,/单片机网提供汉字取模工具,可显示任意汉字DISPLAY: MOV A,#0FFH

MOV P0,A

MOV P1,A

MOV P2,A

MOV P3,A

SETB C

MOV R6,#7FH ;赋扫描字初值,左移后初值为0FEH

MOV R5,#00H ;列扫描低8位控制

MOV R0,#50H ;行的高8(p1)位要显示的数据起始地址

MOV R1,#10H ;扫描次数

DISLOOP: MOV A,@R0 ;从内存读数据

MOV P2,#0FFH ;装入数据时不显示任何东西MOV P3,#0FFH

CPL A ;数据取反以适合显示

MOV P1,A ;送入行的高8(p1)位要显示的数据INC R0 ;修改R0指向低8位要显示的数据MOV A,@R0 ;读低8位要显示的数据

CPL A ;数据取反以适合显示

MOV P0,A ;送入行的低8(p0)位要显示的数据INC R0 ;R0指向下一个高8(p0)位要显示的数据LCALL NEXT ;调用列扫描程序

LCALL DELAY1MS ;显示延时

DJNZ R1,DISLOOP;一桢显示完返回

MOV P3,#0FFH ;全灭

RET

;列扫描子程序DISLOOP专用

NEXT: JNC NEXT1 ;C=0转扫描高8(p3)位行MOV A,R6 ;修改扫描字

RL A

MOV R6,A

INC R5

CJNE R5,#09H,NEXT0 ;R6=#0FEH时C=0 AJMP NEXT1

BACK: RET

NEXT0: MOV P2,R6 ;扫描低8(p2)位行

AJMP BACK

NEXT1: MOV P2,#0FFH

MOV P3,R6 ;扫描高8(p3)位行

MOV A,R6 ;修改扫描字

RL A

MOV R6,A

AJMP BACK

;延时1MS子程序

DELAY1MS: MOV R3,#10

D0: MOV R4,#50

D1: DJNZ R4,D1

DJNZ R3,D0

RET

TAB1:

DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,000H,000H DB 01FH,0F0H,011H,010H,01FH,0F0H,011H,010H,01FH,0F2H,001H,002H,001H,002H,000H,0FEH;電DB 000H,000H,03FH,0F0H,000H,020H,000H,040H,000H,080H,001H,000H,001H,000H,001H,004H

DB 0FFH,0FEH,001H,000H,001H,000H,001H,000H,001H,000H,001H,000H,005H,000H,002H,000H;子DB 008H,000H,008H,0FCH,07EH,084H,008H,084H,0FFH,094H,041H,088H,022H,080H,014H,0FEH DB 07EH,0A4H,008H,0A4H,008H,098H,0FFH,098H,008H,0A4H,008H,0A6H,008H,0C4H,008H,080H;報DB 000H,000H,000H,010H,03FH,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

DB 000H,000H,000H,000H,000H,000H,000H,004H,07FH,0FEH,000H,000H,000H,000H,000H,000H;二DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,002H,080H DB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040H,002H,080H,001H,000H,001H,000H;零DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,002H,080H DB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040H,002H,080H,001H,000H,001H,000H;零DB 004H,000H,003H,000H,001H,080H,001H,000H,0FFH,0FEH,000H,000H,000H,000H,004H,080H

DB 006H,040H,004H,020H,008H,010H,008H,018H,010H,00CH,020H,00CH,040H,008H,000H,000H;六DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;(空) ;结束动画

;-- 水纹-- ** 宋体, 12 **

; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16

TAB2:DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,080H

DB 001H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,080H,003H,0C0H

DB 003H,0C0H,001H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,080H,002H,040H,004H,020H,008H,010H

DB 008H,010H,004H,020H,002H,040H,001H,080H,000H,000H,000H,000H,000H,000H,000H,000H

DB 000H,000H,001H,0C0H,006H,030H,008H,008H,008H,008H,010H,004H,020H,002H,020H,002H

DB 020H,002H,010H,004H,008H,008H,008H,008H,006H,030H,001H,0C0H,000H,000H,000H,000H

DB 003H,0C0H,00CH,030H,010H,008H,010H,008H,060H,006H,040H,002H,080H,001H,080H,001H

DB 080H,001H,080H,001H,040H,002H,060H,006H,010H,008H,010H,008H,00CH,030H,003H,0C0H

DB 000H,000H,038H,01CH,046H,062H,081H,081H,080H,001H,040H,002H,040H,002H,020H,004H

DB 020H,004H,040H,002H,040H,002H,080H,001H,081H,081H,046H,062H,038H,01CH,000H,000H

DB 0C0H,003H,0A0H,005H,058H,01EH,024H,024H,024H,024H,01EH,078H,005H,0A0H,002H,040H

DB 002H,040H,005H,0A0H,01AH,078H,024H,024H,024H,024H,058H,01AH,0A0H,005H,0C0H,003H

DB 000H,000H,0C0H,003H,0B0H,00DH,088H,011H,044H,022H,025H,0A4H,012H,048H,00DH,0B0H

DB 00DH,0B0H,012H,048H,025H,0A4H,044H,022H,088H,011H,0B0H,00DH,0C0H,003H,000H,000H

;--福-- ** 宋体, 12 **

; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16

TAB3:DB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0A AH

DB 055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H DB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,054H,02AH,0A8H,015H,050H,00AH DB 050H,00AH,0A8H,015H,054H,02AH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H DB 0AAH,055H,054H,02AH,0A8H,015H,050H,00AH,0A0H,005H,040H,002H,080H,001H,000H,000H

DB 000H,000H,080H,001H,040H,002H,0A0H,005H,050H,00AH,0A8H,015H,054H,02AH,0AAH,055H

DB 0A0H,005H,040H,002H,091H,0F9H,000H,000H,074H,0F0H,019H,008H,031H,008H,058H,0F0H

DB 014H,000H,011H,0F8H,012H,044H,013H,0FCH,012H,044H,091H,0F9H,040H,002H,0A0H,005H

DB 020H,000H,013H,0FEH,010H,000H,0FDH,0FCH,005H,004H,009H,004H,011H,0FCH,030H,000H

DB 05BH,0FEH,096H,022H,012H,022H,013H,0FEH,012H,022H,012H,022H,013H,0FEH,012H,002H

DB 000H,004H,07FH,0C8H,000H,008H,03FH,0BFH,020H,0A0H,020H,090H,03FH,088H,000H,00CH

DB 07FH,0DAH,044H,069H,044H,048H,07FH,0C8H,044H,048H,044H,048H,07FH,0C8H,040H,048H

DB 010H,040H,010H,080H,091H,000H,073H,0FFH,014H,080H,018H,040H,040H,0FFH,05EH,092H

DB 052H,092H,052H,092H,052H,0FEH,052H,092H,052H,092H,05EH,092H,040H,0FFH,000H,000H

DB 012H,002H,013H,0FEH,012H,022H,012H,022H,013H,0FEH,012H,022H,096H,022H,05BH,0FEH

DB 030H,000H,011H,0FCH,009H,004H,005H,004H,0FDH,0FCH,010H,000H,013H,0FEH,020H,000H

TAB4:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0H DB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,0B0H,002H,0C8H,002H,048H,006H,030H,002H;STEP1 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0H

DB 0FEH,000H,0FEH,000H,0F6H,000H,0F9H,007H,089H,002H,086H,001H,000H,005H,000H,002H;STEP2 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0H

DB 0FEH,0C0H,0FFH,020H,0F1H,020H,0F0H,0C7H,080H,001H,080H,007H,000H,001H,000H,007H;STEP3 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0D8H,0FFH,0E4H

DB 0FEH,024H,0FEH,018H,0F0H,000H,0F0H,001H,080H,001H,080H,007H,000H,005H,000H,005H;STEP4 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FBH,0FFH,0FCH,0FFH,0C4H,0FFH,0C3H

DB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,080H,001H,080H,007H,000H,004H,000H,007H;STEP5 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H

DB 000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

DB 000H,000H,0F4H,058H,084H,0D4H,085H,052H,0F5H,052H,085H,052H,086H,054H,0F4H,058H

DB 000H,000H,022H,05EH,022H,050H,022H,050H,023H,0DEH,022H,050H,022H,050H,0FAH,05EH

END

咕哝了很多天终于成功了,发出来供大家交流,没准儿还能对别人有些帮助,总之百利无一害……点阵大小是16*32的。

#include

#define BLKN 2 //列锁存器

sbit G=P1^7; //P1.7为显示允许控制信号端口

sbit RRCLK=P1^6; //P1.6为输出锁存器时钟信号端

sbit SCLR=P1^5; //P1.5为移为寄存器清零端

void delay(unsigned int); //延时函数

unsigned char data dispram[32]; //显示缓存

unsigned char data huancun[32];

void main(void)

{ unsigned char code Cmp[][32]={

{0x08,0x04,0x08,0x04,0x08,0x04,0xBF,0x7F,0x08,0x04,0x28,0x04,0x98,0x3F,0x8C,0x10,

0x0B,0x11,0x08,0x09,0x08,0x06,0x08,0x06,0x08,0x09,0x88,0x70,0x6A,0x20,0x04,0x00},//我

{0xF8,0x1F,0x80,0x00,0xFE,0x7F,0x82,0x20,0xB8,0x0E,0x80,0x00,0xB8,0x0E,0x40,0x01, 0x20,0x06,0x58,0x78,0x87,0x10,0xF8,0x07,0x00,0x02,0x40,0x01,0x80,0x00,0x80,0x00},//爱 {0x00,0x00,0xFE,0x1F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x04,0xFC,0x0F, 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x24,0xFF,0x7F,0x00,0x00,0x00,0x00},//单

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFE,0x7F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//片 {0x80,0x00,0x9F,0x7E,0x84,0x08,0x84,0x08,0x84,0x08,0xA4,0x08,0xBF,0x7E,0xA4,0x08,

0x94,0x08,0x84,0x08,0x84,0x08,0x5C,0x08,0x43,0x08,0x20,0x7F,0x10,0x00,0x08,0x00},//片

{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10, 0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x40,0x80,0x40,0x00,0x7F,0x00,0x00},//笑脸

};

unsigned char code Bmp[][32]={

{0x08,0x04,0x08,0x04,0x08,0x04,0xBF,0x7F,0x08,0x04,0x28,0x04,0x98,0x3F,0x8C,0x10, 0x0B,0x11,0x08,0x09,0x08,0x06,0x08,0x06,0x08,0x09,0x88,0x70,0x6A,0x20,0x04,0x00},//我

{0xF8,0x1F,0x80,0x00,0xFE,0x7F,0x82,0x20,0xB8,0x0E,0x80,0x00,0xB8,0x0E,0x40,0x01, 0x20,0x06,0x58,0x78,0x87,0x10,0xF8,0x07,0x00,0x02,0x40,0x01,0x80,0x00,0x80,0x00},//爱

{0x00,0x00,0xFE,0x1F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x04,0xFC,0x0F, 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x24,0xFF,0x7F,0x00,0x00,0x00,0x00},//单

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFE,0x7F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//片 {0x80,0x00,0x9F,0x7E,0x84,0x08,0x84,0x08,0x84,0x08,0xA4,0x08,0xBF,0x7E,0xA4,0x08,

0x94,0x08,0x84,0x08,0x84,0x08,0x5C,0x08,0x43,0x08,0x20,0x7F,0x10,0x00,0x08,0x00},//片

{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10, 0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x40,0x80,0x40,0x00,0x7F,0x00,0x00},//笑脸

};

?2009-5-7 12:10

?回复

?

?肥肠炒饭

?

2楼

regist er un signe d cha r i,j, k,l;

SCO N=0 x0 0; //串口工作模式0,移位寄存器方式

TMO D=0 x0 1; //定时器T0

方式1;16位方式TR0 =1; //启动定时器T0

P1=0 x3f; / /P1端口初值,允许接收,缓存,显示

IE=0 x8 7; //允许定时器T0中断

IT0= 1;

IT1= 1; PT0= 1; while (1) { delay (100 0);

for(i

32;i+ +) //显示效果:卷帘出{ dispr am[i] =Bm p[5] [i]; huan cun [i]=C mp

[5]

[i]; if (i% 2)del ay(7 0); }

delay (10 0); for(i =0;i< 6;i+ +) //显示效果:上滚屏{ for(j =0;j< 16;j+

{

for(k =0;k <15; k++)

{ huan cun [k*B LK N]=h uanc un[(k +1)* BLK N]; huan cun [k*B LKN +1]= huan cun [(k+ 1)*B LKN +1]; dispr am[k *BL KN] =disp ram [(k+ 1)*B LK N]; dispr am[k *BL KN+

spra m[(k +1)* BLK N+ 1]; }

hu ancu n[30] =Bm p[i][j *BL KN];

huan cun [31]= Bmp [i][j* BLK N+ 1]; dispr am[3 0]=B mp[i] [j*B LK N]; dispr am[3 1]=B mp[i] [j*B LKN +1]; dela y(7 0); } }

dela y(10 00); for(i =0;i< 32;i+ +) //显示效

果半屏卷帘{

dispr am[i] =Bm p[5] [i]; huan cun [i]=C mp

[5]

[i]; if (i% 2)del ay(7 0); }

for(i =0;i< 6;i+ +) //显示效果,左跑马

{

for(j =0;j< 2;j+

for(k =1;k <9;k ++) { for(l =0;l< 16;l+ +) { hu ancu n[l* BLK N]=h uanc un[l* BLK N]<< 1|hua ncun [l*B LKN + 1]>> 7;

huan cun[l *BL KN+ 1]=h uanc un[l* BLK N+1] <<1| Cmp [i][l* BLK N+ j]>> (8-k);

dispr am[l *BL KN] =disp ram[l *BL KN] <<1| dispr am[l *BL KN+ 1]>> 7;

dispr am[l *BL KN+ 1]=di spra m[l* BLK N+1] <<1| Bmp [i][l* BLK N+ j]>> (8-k); } delay (70);

} }

dela y(10 00); for(i

32;i+ +) //显示效果:半屏卷帘

{ dispr am[i] =Bm p[5] [i]; huan cun [i]=C mp

[0]

[i]; if (i% 2)del ay(7 0); }

for(i =1;i< 7;i+ +) //显示效果:向下滚屏

{

for(j =16; j>0;j-

{

for(k =15; k>0; k--) { hua ncun [k*B LK N]=h uanc un[(k -1)* BLK N]; huan cun [k*B LKN +1]= huan cun [(k-1)*B LKN +1]; dispr am[k *BL KN] =disp ram [(k-1)*B LK N]; dispr am[k *BL KN+ 1]=di spra

-1)* BLK N+ 1]; }

huan cun [0]= Bmp [i-1] [(j-1) *BL KN];

huan cun [1]= Bmp [i-1] [(j-1) *BL KN+ 1]; dispr am [0]= Bmp [i-1] [(j-1) *BL KN];

dispr am [1]= Bmp [i-1] [(j-1) *BL KN+ 1];

基于51单片机的led点阵显示

项目名称:基于51单片机的LED点阵显示器 目录 一、项目介绍 (2) 1.1 项目背景 1.2 功能介绍 二、电路结构 (3) 三、实现模块 (5) 四、运行程序 (7) 一、项目介绍 1.1项目背景 当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。目前,点阵式显示器件具体包括LED显示模块和LCD显示模块等。现在发展的LCD比较先进,LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工

作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。 1.2功能介绍 2本次设计的用单片机控制的显示电路使用比较简单,操作方便。它主要是通过一个8×8点阵来显示图案,通过不同的按键来选择控制图案的种类及显示方式。在通电以后,显示屏全亮,随后进入逐字显示状态。按下复位键K1,系统自动复位,显示diligent,随后进入待命状态。按键1、2、3、4分别控制不同的图案。另外,我们可以通k5键来控制字符移动速度的快慢。 二、电路结构 单片机最小系统设计 2.2.1 各部分具体电路 1 单片机的时钟电路 AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C52的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。 内部时钟方式:利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。

51单片机实例程100讲全集

目录 目录 (1) 函数的使用和熟悉 (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1 口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (15) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0 口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0 口8 位LED流水点亮 (20) 实例29:用P0 、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (22) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 实例40:宏定义应用举例2 (29) 实例41:宏定义应用举例3 (30)

基于51单片机的汉字点阵显示设计

湖南科技大学测控技术与仪器专业
单 片 机 课 程 设 计
题 姓 学 名 号

指导教师 成 绩 ____________________
湖南科技大学机电工程学院 二〇一五年十二月制

湖南科技大学课程设计
摘要
LED 显示屏在我们的周围随处可见,它的应用已经普及到社会中的方方面面。作为 一种新型的显示器件,在许多场合都可以见到它的身影,不仅是它的应用使呈现出来的 东西更加美观,更重要的是它的应用方便,成本很低,除了能给人视觉上的冲击外,更 能给人一种美的享受。LED 显示屏是由多个发光二极管按矩阵形式排列封装而成,通常 用来显示时间、图文等各种信息。本设计是基于 ATS52 单片机的 16*16 点阵式显示屏, 该 LED 显示屏能实现 16*16 个汉字,简单的显示图像, 然后一直循环着显示下去。该设 计包含了硬件、软件、调试等方案,只需简单的级联就能实现显示屏的拓展,但要注意 不要超过负载能力。本次设计的作品体积小、功能多、方便实用、花费小,电路具有结 构简单、操作方便、精度高、应用广泛的特点。 关键词: LED,ATS51 单片机,显示屏
-2-

湖南科技大学课程设计
目录
摘要…………………………………………………………………………i 第一章 系统功能要求 ……………………………………………………1 1.1 系统设计要求 ……………………………………………………1 第二章 方案论证 …………………………………………………………1 2.1 方案论证 …………………………………………………………1 第三章 系统硬件电路设计 ………………………………………………1 3.1 AT89S51 芯片的介绍 ………………………………………………1 3.1.1 系统单片机选型…………………………………………………1 3.1.2 AT89S51 引脚功能介绍 …………………………………………2 3.2 LED 点阵介绍………………………………………………………2 3.2.1LED 点阵……………………………………………………………2 3.3 系统各硬件电路介绍 ………………………………………………3
3.3.1 系统电源电路设计介绍……………………………………………3 3.3.2 复位电路……………………………………………………………4 3.3.3 晶振电路……………………………………………………………4 3.4 系统的总的原理图……………………………………………………5 第四章 系统程序设计 ………………………………………………………5 4.1 基于 PROTEUS 的电路仿真……………………………………………5 4.2 用 PROTEUS 绘制原理 ………………………………………………6
4.3PROTEUS 对单片机内核的仿真 ………………………………………6
-3-

51单片机驱动16×16LED点阵显示动画汉字汇编程序

51单片机驱动16×16LED点阵显示动画汉字汇编程序 这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子. ORG 0000H ST: MOV A,#0FFH ;初始化 MOV P1,A MOV P2,A MOV P3,A MOV P0,A CLR A MOV R0,#50H ;显示缓存清0 MOV R1,#20H ;控制清0的次数 ST0: MOV R0,A INC R0 DJNZ R1,ST0 ;正文显示 CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1 LCALL HZ ;结束动画 SCREE: MOV DPTR,#TAB2;查表指针指向TAB2 ACALL DD MOV DPTR,#TAB3;查表指针指向TAB3 ACALL DD MOV DPTR,#TAB4;查表指针指向TAB4 ACALL DD LJMP CHINESE ;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节) DD: MOV B,#00H

MOV R0,#08H ;显示8幅画面 AJMP CC CC0: MOV A,B ADD A,#20H ;指向下一幅画面 MOV B,A CC: MOV R7,#08H ;画面停留时间 MOV R3,B MOV 37H,R0 LCALL ENTER DIS00: LCALL DISPLAY DJNZ R7,DIS00 MOV R0,37H DJNZ R0,CC0 RET ;汉字上移子程序,可显示8个汉字,(表必须深256字节) HZ: MOV R3,#00H ;查表偏移量 MOV R5,#81H ;查表128次 MOVBACK: MOV R4,#10H ;使显示完一个汉字 MOVBACK0: MOV R7,#02H ;一桢画面显示时间 MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOV R2,#10H ;存后移的次数 DJNZ R5,MOVBACK1 RET ;显示完该表,返回 MOVBACK1: MOV A,R0 ;低8位被后移的存单元数据暂存入A INC R0 ;后移两字节 INC R0 MOV R0,A ;放入要移的低8位数据 MOV A,R0 ;R0指向下一个要后移的存单元 SUBB A,#04H

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

单片机LED点阵显示方法与程序代码

单片机LED点阵显示方法与程序代码 点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 以逐行扫描为例,从上图可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如下图所示。

一、行扫描静态显示, 用51单片机实现上图静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图显示效果的程序如下:

51单片机点阵设计

51单片机点阵设计 在做点阵之前先来了解下点阵的原理和点阵显示的 过程。 点阵实际上就是64个单独的led灯排列为8行8列 ROW1-8、COL1-8分别控制行和列的1-8led。ROWx高电平、COLy低电平,对应的第x行、第y列led灯亮。 电路图

简化了实际应用电路硬件根据要求自己加 P3口驱动ROW P2口驱动COL 如何让点阵显示字符?点阵显示字符都是动态的,和多位的数码管一样,并不是一次就显示行或列,而是一次只显示1行,在很短的时间内将8行分别显示出来。由于时间很短,我们的眼睛是看不出来是分开显示的。以字符'1'为例。 分别显示8行 ROW-0x01 COL-0xef ROW-0x02 COL-0xe7 ROW-0x04 COL-0xef ROW-0x08 COL-0xef ROW-0x10 COL-0xef ROW-0x20 COL-0xef

ROW-0x40 COL-0xef ROW-0x80 COL-0xc7 源程序: #include ; unsigned char code NUM[8]={0xef,0xe7,0xef,0xef,0xef,0xef,0xef,0xc7}; #define ROW P3 #define COL P2 void main(void) { unsigned char i,j,k; while(1) { k=0x01; for(i=0;i 电路图

源程序 #include ; #include ; unsigned char code NUM[8]={0x00,0x00,0xe00,0x82,0xff,0x80,0x00,0x00}; #define ROW P3 sbit SI=P2^0; sbit RCK=P2^2; sbit SCK=P2^1; void HC595SendData(unsigned char SendVal) { unsigned char i; for(i=0;i<8;i++) { if((SendVal<

单片机编程全集(含源代码)

前言 (2) 基础知识:单片机编程基础 (2) 第一节:单数码管按键显示 (4) 第二节:双数码管可调秒表 (6) 第三节:十字路口交通灯 (7) 第四节:数码管驱动 (9) 第五节:键盘驱动 (10) 第六节:低频频率计 (15) 第七节:电子表 (18) 第八节:串行口应用 (19)

前言 本文是本人上课的一个补充,完全自写,难免有错,请读者给予指正,可发邮件到ZYZ@https://www.360docs.net/doc/0c5084906.html,,或郑郁正@中国;以便相互学习。结合课堂的内容,课堂上的部分口述内容,没有写下来;有些具体内容与课堂不相同,但方法是相通的。https://www.360docs.net/doc/0c5084906.html, 针对当前的学生情况,尽可能考虑到学生水平的两端,希望通过本文都学会单片机应用。如果有不懂的内容,不管是不是本课的内容,都可以提出来,这些知识往往代表一大部分同学的情况,但本人通常认为大家对这些知识已精通,而在本文中没有给予描述,由此影响大家的学习。对于这些提出问题的读者,本人在此深表谢意。 想深入详细学习单片机的同学,可以参考其它有关单片机的书籍和资料,尤其是外文资料。如果有什么问题,我们可以相互探讨和研究,共同学习。 本文根据教学的情况,随时进行修改和完善,所以欢迎同学随时注意本文档在课件中的更新情况。 基础知识:单片机编程基础 单片机的外部结构: 1、DIP40双列直插; 2、P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3、电源VCC(PIN40)和地线GND(PIN20); 4、高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5、内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6、程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7、P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3、一个串行通信接口;(SCON,SBUF) 4、一个中断控制器;(IE,IP) https://www.360docs.net/doc/0c5084906.html, 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。 C语言编程基础: 1、十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2、如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3、++var表示对变量var先增一;var—表示对变量后减一。 4、x |= 0x0f;表示为 x = x | 0x0f; 5、TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6、While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)

基于51单片机的LED点阵设计

毕业设计(论文)题目: 院 (系): 专业: 姓名: 学号: 指导教师:

毕业设计(论文)任务书

近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,作为微型机的一个主要分支,单片机在结构上的最大特点是把CPU、RAM和ROM 存储器、定时器和多种I/O接口电路集成在一块超大规模集成电路芯片上。从它的组成和功能来看,一块单片机芯片其实就是一台计算机。 本次设计是采用MSC-51单片机来设计的四位数计算器, 采用C语言进行程序编写实现计算器功能。外接4X4的键盘,通过键盘扫描来完成输入数的控制,利用驱动电路使数值与结果在七段共阴极数码管上正常显示,并设有清零键可随时完成计算与显示的清零。计算器将完成的0至9999整数的一次加/减/乘/除运算。 执行过程如下: 开机即显示0,等待键入数值,当输入数字,将通过数码管显示出来,在输入+、-、*、/运算符之后,计算器在内部执行数值转换和存储,并等待再次输入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上显示运算结果。 关键字:单片机计算器键盘扫描程序

n recent years, as computer penetration in the social field and large-scale development of integrated circuits, microcontroller applications are continually deepening, because of its powerful function, small size, low power consumption, cheap, reliable, easy to use, etc. therefore particularly suitable for systems with control of more and more widely used in automatic control, intelligent instruments, meters, data acquisition, military products and home appliances fields, As one of the main branch of microcomputer, microcontroller in the structure of the biggest feature is the CPU, RAM and ROM memory, timer and multiple I / O interface circuit integrated on a VLSI chip. The composition and function from its point of view, a single chip is actually a computer. This design is the use of MSC-51 microcontroller to design the four-digit calculator, using C programming language to achieve calculator functions. 4X4 external keyboard, the keyboard scan to finish by the number of control values and make the drive circuit to the cathode results in a total of seven-segment digital tube display properly, and has cleared at any time to complete key calculation and display clear. Calculator to complete an integer from 0 to 9999 plus / minus / multiply / divide. Implementation of the process is as follows: Power is displayed 0, waiting type value, when the input numbers, will come out through the digital display, the input +,-,*,/ operator, the calculator in the internal implementation of the numerical conversion and storage, and wait for the re-enter the value, when Type the value in the type of value will be displayed by an equal sign will be displayed in the digital control operation results. Key words: SCM calculator keyboard scan C language

51单片机 8x8点阵显示程序参考

本程序用的是51单片机控制8*8点阵显示I(心形)U #include #define uint unsigned int #define uchar unsigned char //使用的IO口要根据自己接在单片机里的情况来更改 sbit RCK = P3^6; //声明串行输出存储锁存线RCK sbit SCK = P3^5; //声明串行数据输入时钟线SCK sbit SER = P3^4; //声明串行数据输入线SER sbit HC = P0^0; //声明C信号接口 sbit HB = P0^1; //声明B信号接口 sbit HA = P0^2; //声明A信号接口 #define ROW1 HC = 0; HB = 0; HA = 0; //定义使能第1行#define ROW2 HC = 0; HB = 0; HA = 1; //定义使能第2行#define ROW3 HC = 0; HB = 1; HA = 0; //定义使能第3行#define ROW4 HC = 0; HB = 1; HA = 1; //定义使能第4行#define ROW5 HC = 1; HB = 0; HA = 0; //定义使能第5行#define ROW6 HC = 1; HB = 0; HA = 1; //定义使能第6行#define ROW7 HC = 1; HB = 1; HA = 0; //定义使能第7行#define ROW8 HC = 1; HB = 1; HA = 1; //定义使能第8行

uchar h; //显示数据,可以用取模软件来获取 uchar iloveu[] = { 0x00,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00, 0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00, 0x00,0x22,0x22,0x22,0x22,0x22,0x1C,0x00, 0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00, 0x7C,0x08,0x10,0x08,0x04,0x44,0x38,0x00, 0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00, 0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x00}; void delay(uint z) //延时函数,单位ms { uint i, j; for(i = z; i > 0; i--) for(j = 110; j > 0; j--); } void ROW() //行驱动函数

基于单片机的Led点阵广告牌设计

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 基于单片机的LED广告牌设计 班级电子2班姓名秦地学号0902214075 成绩 一、设计背景 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED 显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 二、任务要求 设计一个简易的LED广告牌,用于显示自己的名字或其它个性信息。显示的字符用LED 发光二极管排列成固定形状,在控制电路驱动下各字符轮流循环点亮。或者用LED点阵显示,显示内容可更新。汉字一般是以点阵式方式存储的,如16×16,24×24点阵。汉字的字模其实是汉字字形的图形化。所谓16点阵字模,就是把汉字写在一个16×16的网格内,汉字的笔划通过某网格时该网格就对应1,否则该网格对应0,这样,每一网格均对应1或0,把对应1的网格连起来看,就是这个汉字。汉字就是这样通过字节表示其点阵存储在字形中的。为了方便查找所需要汉字的点阵,每个汉字都与一个双字节的内码相对应。通过汉字的内码可以计算出它的点阵起始字节。 三、整体设计方案 如图所示,本设计通过单片机来控制行列驱动器使LED显示屏显示出汉字,单片机选用AT89C52芯片,行驱动器采用74HC154的P0口,列驱动器选用74HC595芯片。该系统主要由AT89C52芯片、电源、行驱动器、列驱动器、16×64LED点阵5部分组成。

基于51单片机FAT32文件系统程序

基于51单片机FAT32文件系统程序 #ifndef __ZNFAT_H__ #define __ZNFAT_H__ #include "mytype.h" //类型重定义 /*******************************************************/ //znFAT的裁减宏--------------------------------------------------------- //#define ZNFAT_ENTER_DIR //有此宏,函数 znFAT_Enter_Dir() 参与编译 #define ZNFAT_OPEN_FILE //有此宏,函数 znFAT_Open_File() 参与编译 //#define ZNFAT_SEEK_FILE //有此宏,函数 znFAT_Seek_File() 参与编译 //#define ZNFAT_READ_FILE //有此宏,函数 znFAT_Read_File() 参与编译 //#define ZNFAT_READ_FILEX //有此宏,函数 znFAT_Read_FileX() 参与编译 //#define ZNFAT_ADD_DAT //有此宏,函数 znFAT_Add_Dat() 参与编译 //#define ZNFAT_CREATE_DIR //有此宏,函数 znFAT_Create_Dir() 参与编译 //#define ZNFAT_CREATE_FILE //有此宏,函数 znFAT_Create_File() 参与编译 //#define ZNFAT_DEL_FILE //有此宏,函数 znFAT_Del_File() 参与编译 //#define ZNFAT_XCOPY_FILE //有此宏,函数 znFAT_XCopy_File() 参与编译 //#define ZNFAT_RENAME_FILE //有此宏,函数 znFAT_Rename_File() 参与编译 //#define ZNFAT_GET_TOTAL_SIZE //有此宏,函数 znFAT_Get_Total_Size() 参与编译 //#define znFAT_GET_REMAIN_CAP //有此宏,函数 znFAT_Get_Remain_Cap() 参与编译 #include "cj.h" #include "cj.h" //---------------------------------------------------------------------- #define SOC(c) (((c-pArg->FirstDirClust)*(pArg->SectorsPerClust))+pArg->FirstDirSector) // 用于计算簇的开始扇区#define CONST const //设备表 #define SDCARD 0 //SD卡 #define UDISK 1 //U盘 #define CFCARD 2 //CF卡 #define OTHER 3 //其它 //这里的存储设备表,可以灵活扩充,以实现对更多存储设备的支持 //------------------------------------------- #define MAKE_FILE_TIME(h,m,s) ((((unsigned int)h)<<11)+(((unsigned int)m)<<5)+(((unsigned int)s)>>1)) /* 生成指定时分秒的文件时间数据 */ #define MAKE_FILE_DATE(y,m,d) (((((unsigned int)y)+20)<<9)+(((unsigned int)m)<<5)+((unsigned int)d)) /* 生成指定年月日的文件日期数据 */ //DPT:分区记录结构如下 struct PartRecord { UINT8 Active; //0x80表示此分区有效 UINT8 StartHead; //分区的开始磁头 UINT8 StartCylSect[2];//开始柱面与扇区 UINT8 PartType; //分区类型 UINT8 EndHead; //分区的结束头 UINT8 EndCylSect[2]; //结束柱面与扇区 UINT8 StartLBA[4]; //分区的第一个扇区 UINT8 Size[4]; //分区的大小

基于51单片机的88点阵

基于51单片机的8*8点阵 ——Mezer chen编辑整理 一、Protues仿真效果图 二、8*8点阵C程序 #include #define uchar unsigned char #define uint unsigned int uchar code wela[]={0x01,0x02,0x04,0x08}; uchar code dula[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; voiddelayms(uint c) { uinti,j; for(i=c;i>0;i--) for(j=11;j>0;j--); } uintt,u; uchar code table[]= { 0xFF,0xFD,0xEF,0x7D,0xEF,0xBD,0xEF,0xCD,0x00,0xF0,0xEF,0xFD,0xEF,0xFD,0xEF,0

xFD, 0xEF,0xFD,0xEF,0xFD,0x00,0x00,0xEF,0xFD,0xEF,0xFD,0xEF,0xFD,0xFF,0xFD,0xFF,0 xFF,/*"井",0*/ 0xFF,0xFF,0x01,0x00,0xFD,0xFF,0xFD,0xFF,0xDD,0xF7,0xBD,0xFB,0x7D,0xFD,0xFD,0 xFE, 0x7D,0xFD,0xBD,0xFB,0xDD,0xF7,0xFD,0xBF,0xFD,0x7F,0x01,0x80,0xFF,0xFF,0xFF,0 xFF,/*"冈",1*/ 0xFF,0xFF,0xFF,0xFF,0x0F,0xC0,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0x00,0 xC0, 0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0x0F,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0 xFF,/*"山",2*/ 0xDF,0x7F,0xDF,0x7F,0xDF,0xBF,0xDF,0xDF,0xDF,0xEF,0xDF,0xF3,0xDF,0xFC,0x00,0 xFF, 0xDF,0xFC,0xDF,0xF3,0xDF,0xEF,0xDF,0xDF,0xDF,0xBF,0xDF,0x7F,0xDF,0x7F,0xFF,0 xFF,/*"大",3*/ 0xBF,0xFB,0xCF,0xFB,0xEE,0xFB,0x69,0xFB,0x6F,0xFB,0x6F,0xBB,0x6E,0x7B,0x69,0 x81, 0x6F,0xF9,0x6F,0xFA,0x67,0xFB,0xEB,0xFB,0xEC,0xFB,0xAF,0xFB,0xCF,0xFB,0xFF,0 xFF,/*"学",4*/ 0xFF,0xFF,0xFF,0xFF,0xFF,0xA7,0xFF,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0 xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0 xFF,/*",",5*/ 0xFF,0x7F,0x01,0x80,0xDD,0xFD,0xDD,0x7D,0x01,0x00,0xD7,0xFE,0x56,0xDF,0x91,0 xD2, 0xD7,0xD6,0xC0,0xD6,0xD7,0xD6,0x93,0xB0,0x54,0x77,0xD7,0x86,0xDF,0xFE,0xFF,0 xFF,/*"腾",6*/ 0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0 xFF, 0xFD,0xFF,0x01,0xFC,0xBF,0xF3,0x5F,0xEF,0xEF,0xDE,0xF7,0xBD,0xFF,0x0F,0xFF,0 xFF,/*"飞",7*/ 0xFF,0xFF,0xFF,0xFF,0x07,0xE0,0x77,0xF7,0x77,0xF7,0x77,0xF7,0x77,0xF7,0x00,0 x80, 0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x07,0x60,0xFF,0x7F,0xFF,0x0F,0xFF,0

基于AT89C51单片机的LED16X16点阵显示屏系统的设计与实现毕业设计论文

中北大学毕业论文I 毕业设计(论文) 题目名称:基于51单片机的LED点阵显示屏系统 的设计与实现

中北大学毕业论文II 基于51单片机的LED点阵显示屏系统的设计与实现 摘要:本文介绍了一款以单片机AT89S51为控制器的LED点阵显示屏系统的设计。该系统可实现中英文字符的显示和动态特效显示。并且可以通过级连的方式来扩大显示屏幕的尺寸以达到增加显示内容的目的。系统采用PC机作为上位机,上位机向单片机发送控制命令和上位机所存储的显示代码,AT89S51单片机接收并处理PC 机的控制命令以及显示代码,由显示驱动模块驱动一个16×16分辨率的LED点阵显示屏的扫描显示。PC机与单片机之间的通信采用RS—232C通信标准来实现。所选用的AT89S51单片机具有价格低廉程序写入方便的特点使得整个系统方便维护和检修。除此之外,该系统只占用了单片机少量的I /O口和内存,为系统留下了功能扩展的空间。 关键字:AT89S51;LED点阵显示;串行通信

中北大学毕业论文III Desigen and Realization of the Lattice Screen of LED Based on MCS-51 Abstract: This paper introduces a design of the LED lattice display system base on MCU AT89S51. The system can display in both Chinese and English characters of the show and from top to bottom and move around the magic show. And can be cascaded to expand the screen size to achieve increased content purposes. The PC sends control commands and displays code to microcontroller, AT89S51 receives control commands from PC and shows the code, Driver module drives a 16×16-resolution LED lattice LED?s panel display scan showed. Commu nication between PC and the microcontroller using RS-232C communications standards. the characteristics that AT89S51 microcontroller is cheap and could be coded conveniently makes the whole system Convenient to Maintenance and Repair. In addition, the system will take up only a small amount of the MCU I/O and memory,so that the system has functional space for expansion. Key words: AT89S51,lattice LED?s panel display,serial communication

相关文档
最新文档