设计单片机并行口和4-16译码器74HC154驱动(控制)的两个5×7点阵LED显示器的驱动电路,并编写程序实现在两个5×7点阵LED显示器上的字符显示。 电路方面主要包括以下3部分。(a)设计单片机的最小系统(包括复位电路和外接的晶振电路),并确定相关元器件参数。(b)采用动态驱动的方式,设计单片机并行端口和74HC154控制(驱动)两个5×7点阵LED显示器的驱动电路,包括控制点阵LED行和列的连线(由单片机并行端口和74HC154分别驱动)。(c)设计点阵LED的给电流电路(单片机并行端口接上拉电阻)。
编写单片机控制两个5×7点阵LED显示器字符显示程序,实现数字(0—9)或简单的英文字符的信息显示。显示方式和内容自定,如每隔一段时间循环显示数字0—9 或英文字符。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include <reg51.h>
- //字形码****按列取模
- unsigned char code table1[]={
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xE3,0xDD,0xDD,0xE3,0xFF,/*"0",0*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFF,0xDD,0xC1,0xDF,0xFF,/*"1",1*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xDB,0xCD,0xD5,0xDB,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xD9,0xCD,0xD5,0xD9,0xFF,/*"2",2*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFF,0xD5,0xD5,0xEB,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xDD,0xD9,0xD9,0xE5,0xFF,/*"3",3*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xE7,0xEB,0xC1,0xEF,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xF7,0xEB,0xEB,0xC1,0xFF,/*"4",4*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFF,0xD1,0xD5,0xC5,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xD1,0xD5,0xD5,0xC5,0xFF,/*"5",5*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xE3,0xD5,0xD5,0xC7,0xFF,/*"6",6*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFD,0xC5,0xF9,0xFD,0xFF,/*"7",7*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xC9,0xD5,0xD5,0xC9,0xFF,/*"8",8*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xF1,0xD5,0xD5,0xE3,0xFF,/*"9",9*//* (5 X 7 , 宋体 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- };
- void delay(int c)
- {
- int i,j;
- for(i=0;i<c;i++)
- for(j=0;j<10;j++);
- }
- void Display(void)
- {
- unsigned char i,j;
- unsigned int b=0; //显示偏移控制,
- unsigned char a; //控制移动间隔时间
- while(1)
- {
- j=0;
- if(a>20) //移动间隔时间;取值0--255
- {
- a=0;
- b+=1;
- if(b>=130) b=0; //显示到最后一个字,回头显示,
- }
- for(i=0;i<10;i++)
- {
- P1=i;
- P0=table1[j+b];
- delay(5);
- P0=0xff;
- j+=1;
- }
- a++;
- }
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
t.rar
(101.9 KB, 下载次数: 105)
|