4个16×16点阵LED电子显示屏的设计
- 格式:pdf
- 大小:4.84 MB
- 文档页数:52
单片机原理及应用课程设计报告书题目:姓名:学号:专业:电气工程及其自动化指导老师:设计时间:2010年 6 月目录1. 引言 (1)1.1. 设计意义 (1)1.2. 系统功能要求 (1)1.3. 本组成员所做的工作 (1)2. 方案设计 (2)3. 硬件设计 (3)4. 软件设计 (6)5. 系统调试 (8)6. 设计总结 (9)7. 附录A;源程序 (9)8. 附录B;作品实物图片................ 错误!未定义书签。
9. 参考文献 (16)16×16点阵LED室内电子显示屏的设计摘要:LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息。
本设计是基于ATS52单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外、该设计只需简单的级联就能实现显示屏的拓展,但级联时要注意不要超过驱动负载范围。
关键词:Ats52;LED;单片机1引言1.1. 设计意义LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
1.2. 系统功能要求设计一个能显示16X16点阵图文LED显示屏,要求能显示图文或文字,显示图文或文字应稳定、清晰,图文或文字显示,以卷帘形式向上滚动显示。
1.3. 本组成员所做的工作方案原理论证:汪航,李如发,杜绍飞焊接:汪航调试:李如发设计报告:杜绍飞2方案设计2.1 总体设计2.2图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
单片机课程设计16×16点阵LED电子显示屏的设计题目:16×16点阵LED电子显示屏的设计姓名:学号:专业班级:指导老师:摘要:LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息。
本设计是基于MCS-51单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外、该设计只需简单的级联就能实现显示屏的拓展,但级联时要注意不要超过驱动负载范围。
关键词:MCS-51;LED;单片机一、概述当今社会在飞速发展无疑能源、健康、空间的利用,成了人们着重关注的对象。
而在这个信息传递极速的社会,LED的出现给人们带来了希望之光。
LED的特色之处一是节能(直接功耗,间接耗能),二是基本无电离辐射,三提高空间利用率。
而这些特色又恰好解决了上述的三种问题。
然而LED点阵显示屏的特点不仅仅于此LED点阵显示屏用的是数码管,而数码管具有实用,便宜等优点。
做出来的LED点阵显示很耐用。
LED点阵显示屏之所以受到广泛重视而得到迅速发展,是与LED显示屏本身所具有的优点分不开的。
LED点阵显示屏的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
二、简介组合型led点阵显示器以发光二极体为图素,它用高亮度LED晶粒进行阵列组合后,再透过环氧树脂和塑模封装而成。
具有高亮度、功耗低、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。
点阵显示器有单色和双色两类,可显示红,黄,绿,橙等。
LED点阵有4×4、4×8、5×7、5×8、8×8、16×16、24×24、40×40等多种;根据图素的数目分为等,双原色、三原色等,根据图素顏色的不同所显示的文字、图像等内容的顏色也不同,单原色点阵只能显示固定色彩如红、绿、黄等单色,双原色和三原色点阵显示内容的顏色由图素内不同顏色发光二极体点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极体的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。
安阳师范学院本科学生毕业论文4个16X16点阵LED电子显示屏作者谭倩系(院)物理与电气工程学院专业电气工程及其自动化日期 2015.6.1学生诚信承诺书本人郑重承诺:所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
签名:谭倩日期: 2011-6-4论文使用授权说明本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。
签名:谭倩导师签名:日期:2011-6-44个16X16点阵LED电子显示屏摘要:为设计4个16X16的LED显示屏,本文在详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等的基础上,研究了以40引脚单片机AT89C51为核心,设计控制一个行驱动器 74LS154和八个列驱动器74LS595来驱动16块8×8点阵LED显示模块来组成4个16×16点阵显示模式。
这里设计的电子显示屏可实现动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
关键词:AT89C51; LED;点阵显示;动态显示1 LED显示屏简介1.1 LED显示屏的发展及应用LED电子显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。
它是集微电子技术、光电子技术、计算机技术、信息处理技术于一体的显示系统,是目前国际上极为先进的显示媒体。
LED显示屏的发展可分为以下几个阶段:第一阶段为1990年到1995年,主要是单色和16级双色图文屏。
用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。
#include<reg51.h>#define uint unsigned int#define uchar unsigned char //宏定义sbit shcp=P0^0; // 74HC595芯片的引脚sbit ds1=P0^1;sbit ds2=P0^2;sbit stcp=P0^3;sbit oe=P0^4;sbit zdxh=P1^0; // 控制循环按钮(控制左右上下自动循环)sbit zdzy=P1^1; // 控制自动循环坐移sbit zdyy=P1^2; // 控制自动循环右移sbit zdsy=P1^3; // 控制自动循环上移sbit zdxy=P1^4; // 控制自动循环下移unsigned char t;//用于同步扫的数据uchar code sz[1][32]={{0xff,0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff}};//要显示的汉字字码(高位在下,低位在上)uchar code hz[10][32]={{0x00,0x40,0x00,0x40,0x00,0x42,0x7F,0xCC,0x20,0x00,0x10,0x20,0x00,0x10,0xFF,0xFC,0x22,0x4B,0x22,0x48,0x22,0x4A,0x3F,0xFC,0x22,0x48,0x32,0x4C,0x20,0x08,0x00,0x00}, // 谁{0x00,0x04,0x00,0x04,0x00,0x04,0xFC,0xA4,0x44,0xA4,0x44,0xA4,0x44,0xA5,0x44,0xA6,0x44,0xA4,0x44,0xA4,0x44,0xB4,0xFE,0xA4,0x04,0x04,0x00,0x06,0x00,0x04,0x00,0x00}, // 言{0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x90,0x03,0x10,0x00,0x10,0x40,0x10,0x80,0x10,0x7F,0xFF,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x10,0x00,0x00}, // 寸{0x08,0x00,0x08,0x04,0x08,0x04,0x0B,0xE4,0x0A,0xAF,0x0A,0xA4,0x0A,0xA4,0xFE,0xA4,0x0A,0xA4,0x0A,0xA4,0x0A,0xAF,0x0B,0xF4,0x08,0x26,0x0C,0x04,0x08,0x00,0x00,0x00}, // 草{0x04,0x00,0x02,0x00,0x01,0xC0,0x00,0x00,0x3F,0xF0,0x40,0x00,0x40,0x01,0x40,0x02,0x40,0x1C,0x40,0x08,0x40,0x00,0x70,0x00,0x00,0x40,0x00,0x80,0x07,0x00,0x00,0x00},// 心{0x02,0x10,0x42,0x10,0x81,0x10,0x7F,0xFF,0x00,0x90,0x00,0x50,0x00,0x00,0xFF,0xFE,0x22,0x82,0x14,0x82,0x08,0x92,0x16,0xA2,0x21,0x9F,0x60,0x02,0x20,0x00,0x00,0x00}, // 报{0x04,0x40,0x02,0x20,0x01,0x10,0xFF,0x8C,0x04,0x63,0x04,0x80,0x0C,0xBE,0x34,0xAA,0x04,0xAA,0x44,0xAA,0x84,0xAA,0x7F,0xAA,0x04,0xBF,0x06,0x82,0x04,0x00,0x00,0x00}, // 得{0x20,0x00,0x20,0x04,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0xC4,0x20,0x86,0x30,0x04,0x20,0x00,0x00,0x00}, // 三{0x04,0x20,0x04,0x22,0x02,0x2A,0x01,0x2A,0xFF,0xAA,0x49,0x6A,0x49,0x3A,0x49,0x2F,0x49,0x2A,0x49,0x6A,0xFF,0xAA,0x01,0x2A,0x02,0x2A,0x06,0x22,0x02,0x20,0x00,0x00}, // 春{0x00,0x00,0x3F,0xFC,0x10,0x84,0x10,0x84,0x3F,0xFC,0x00,0x00,0x09,0x2E,0x09,0xA2,0x09,0x62,0x09,0x3A,0xFF,0xA2,0x09,0x22,0x09,0xA2,0x0D,0x2A,0x08,0x06,0x00,0x00} // 晖};uchar code m[10][32]={{0x00,0x00,0x3F,0xFC,0x10,0x84,0x10,0x84,0x3F,0xFC,0x00,0x00,0x09,0x2E,0x09,0xA2,0x09,0x62,0x09,0x3A,0xFF,0xA2,0x09,0x22,0x09,0xA2,0x0D,0x2A,0x08,0x06,0x00,0x00}, // 晖{0x04,0x20,0x04,0x22,0x02,0x2A,0x01,0x2A,0xFF,0xAA,0x49,0x6A,0x49,0x3A,0x49,0x2F,0x49,0x2A,0x49,0x6A,0xFF,0xAA,0x01,0x2A,0x02,0x2A,0x06,0x22,0x02,0x20,0x00,0x00}, // 春{0x20,0x00,0x20,0x04,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0xC4,0x20,0x86,0x30,0x04,0x20,0x00,0x00,0x00}, // 三{0x04,0x40,0x02,0x20,0x01,0x10,0xFF,0x8C,0x04,0x63,0x04,0x80,0x0C,0xBE,0x34,0xAA,0x04,0xAA,0x44,0xAA,0x84,0xAA,0x7F,0xAA,0x04,0xBF,0x06,0x82,0x04,0x00,0x00,0x00}, // 得{0x02,0x10,0x42,0x10,0x81,0x10,0x7F,0xFF,0x00,0x90,0x00,0x50,0x00,0x00,0xFF,0xFE,0x22,0x82,0x14,0x82,0x08,0x92,0x16,0xA2,0x21,0x9F,0x60,0x02,0x20,0x00,0x00,0x00}, // 报{0x04,0x00,0x02,0x00,0x01,0xC0,0x00,0x00,0x3F,0xF0,0x40,0x00,0x40,0x01,0x40,0x02,0x40,0x1C,0x40,0x08,0x40,0x00,0x70,0x00,0x00,0x40,0x00,0x80,0x07,0x00,0x00,0x00},// 心{0x08,0x00,0x08,0x04,0x08,0x04,0x0B,0xE4,0x0A,0xAF,0x0A,0xA4,0x0A,0xA4,0xFE,0xA4,0x0A,0xA4,0x0A,0xA4,0x0A,0xAF,0x0B,0xF4,0x08,0x26,0x0C,0x04,0x08,0x00,0x00,0x00}, // 草{0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x90,0x03,0x10,0x00,0x10,0x40,0x10,0x80,0x10,0x7F,0xFF,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x10,0x00,0x00}, // 寸{0x00,0x04,0x00,0x04,0x00,0x04,0xFC,0xA4,0x44,0xA4,0x44,0xA4,0x44,0xA5,0x44,0xA6,0x44,0xA4,0x44,0xA4,0x44,0xB4,0xFE,0xA4,0x04,0x04,0x00,0x06,0x00,0x04,0x00,0x00}, // 言{0x00,0x40,0x00,0x40,0x00,0x42,0x7F,0xCC,0x20,0x00,0x10,0x20,0x00,0x10,0xFF,0xFC,0x22,0x4B,0x22,0x48,0x22,0x4A,0x3F,0xFC,0x22,0x48,0x32,0x4C,0x20,0x08,0x00,0x00}, // 谁} ;//用于点阵的上移显示;void senddata1(uint k,uchar *str1) //k用于接收传入16位数据,str1接收用于列同步扫描的数据地址(即用于选通哪列,为0即选通){uint h;uchar i, j=0;for(i=0;i<16;i++) //将16位数据通过ds1(用于行选)串行输出(为1则选通该行){ h=k; //用于保存kif(((h=h<<i)&0x8000)==0) ds1=0; //取最高位else ds1=1;if(i<8) //每个数据有八位,通过串行口ds2逐位输入{if(((str1[j]=str1[j]<<i)&0x80)==0) ds2=0;else ds2=1;}if(i==8)j++; // 取下一数据if(i>=8) // 通过串行口输入{if(((str1[j]=str1[j]<<(i-8))&0x80)==0) ds2=0; //str1[][]的数据为8位(所以要i-8)else ds2=1;}shcp=0; //74hc595移位寄存器上升沿移入准备好的数据到寄存器shcp=1;}stcp=0; //存储寄存器上升沿,将移位后的数据放到输出到Q0—Q7并口stcp=1;}//行发送数据程序3:用于上移程序中void sendbanzi(uint g,uint k) //g用于调节上移速度,k为汉字数据在数组的行数;{uchar j,h,x,l;uint m,n;for(l=0;l<10;l++) //一个字扫10次,改变其数值可改变字的显示时间(即可以调节速度){for(j=0;j<32;j++,j++){h=hz[k][j]; //将前一个字的每两个数据组合,m=(uint)h;m=m<<8;x=hz[k][j+1];m=m|(uint)x;h=hz[k+1][j]; //将后一个字对应前一个字列的两个数据组合n=(uint)h;n=n<<8;x=hz[k+1][j+1];n=n|(uint)x;m=m>>g; //将前后两个字移位后的数据组合为新数据n=n<<(16-g);m=m|n;senddata1(m,&sz[0][j]);}}}//上移程序void sy(uchar m){uchar k,i; //k为汉字数据在数组的行数,即第k个数for(k=0;k<m;k++){//if(k+1==m) {sendbanzi(0,i); break;}for(i=0;i<16;i=i+4) //每次上移的行数为i;{sendbanzi(i, k);if(k+1==m) break;}if(k+1==m) break;}}//行发送数据程序4:用于下移程序中void xsendbanzi(uint g,uint k) //g用于调节上移速度,k为汉字数据在数组的行数; {uchar j,h,x,l;uint m,n;for(l=0;l<10;l++) //一个字扫10次,改变其数值可改变字的显示时间{for(j=0;j<32;j++,j++){h=hz[k][j]; //将前一个字的每两位数据组合m=(uint)h;m=m<<8;x=hz[k][j+1];m=m|(uint)x;h=hz[k+1][j]; //将后一个字对应前一个字列的两位数据组合n=(uint)h;n=n<<8;x=hz[k+1][j+1];n=n|(uint)x;m=m<<g; //将前后两个字移位后的数据组合为新数据n=n>>(16-g);m=m|n;senddata1(m,&sz[0][j]);}}}//下移程序void xy(uchar m){uchar k,i; //k为汉字数据在数组的行数for(k=0;k<m;k++){for(i=0;i<16;i=i+4) //上移的行数为i;{xsendbanzi(i, k);if(k+1==m) break;}if(k+1==m) break;}}//行发送数据程序2:str接收汉字数据存放地址,str1用于列同步扫描(用于左右移动)void senddata2(uchar*str,uchar *str1){uchar i, k,j=0,l,g;for(l=0;l<10;l++) //一个字扫10次,改变其数值可改变字的显示时间{for(g=0;g<16;g++) //扫描的列数{for(k=0;k<2;k++) //二维数组一行为32个数据,每两个数据转换为16二进制放在行线上,高位在下,低位在上{for(i=0;i<8;i++){if(((str[j]=str[j]<<i)&0x80)==0) //ROM数据不会改变,ds1=0;else ds1=1;if(((str1[j]=str1[j]<<i)&0x80)==0) ds2=0;else ds2=1;shcp=0;shcp=1;}j++;if(j==32) j=0;//防越界}stcp=0;stcp=1;}}}//左移程序void zy(uchar k) //k设置显示的字数{uchar i,j,e=0,z=0;for(i=0;i<k;i++){for(j=0;j<32;j=j+8) //每2位数据构成行线数据,j每次应加2的倍数,设置j自加的步数可调节每次移动的列数{senddata2(&hz[i][j],sz[0]);if(i==(k-1)) break;}}}//右移void yy(uchar n){ uchar i,j;for(i=0;i<n;i++){for(j=0;j<32;j=j+4){if(i==(n-1)){if(j==0)senddata2(&m[n-i-1][0],sz[0]);break;}else{if(j==0) senddata2(&m[n-1-i][0],sz[0]);else senddata2(&m[n-2-i][32-j],sz[0]);}}}}//void clear() //清屏//{// en//}//主程序void main(){oe=0;/*if (zdxh==0&&zdzy==1&&zdyy==1&&zdsy==1&&zdxy==1) t=1;if (zdxh==1&&zdzy==0&&zdyy==1&&zdsy==1&&zdxy==1) t=2;if (zdxh==1&&zdzy==1&&zdyy==0&&zdsy==1&&zdxy==1) t=3;if (zdxh==1&&zdzy==1&&zdyy==1&&zdsy==0&&zdxy==1) t=4;if (zdxh==1&&zdzy==1&&zdyy==1&&zdsy==1&&zdxy==0) t=5;switch(t){case 1: { zy(10); yy(10); sy(10);xy(10);} break;case 2: { zy(10);} break;case 3: { yy(10);} break;case 4: { sy(10);} break;case 5: { xy(10);} break;} */while(1){ if(zdxh==0)//while(1){zy(10);yy(10);sy(10);xy(10);}if(zdzy==0)//while(1)zy(10);if(zdyy==0)//while(1)yy(10);if(zdsy==0)//while(1)sy(10);if(zdxy==0) // while(1)xy(10);}}电路图:。
16乘16点阵LED电子显示屏的设计概述本文将讨论16乘16点阵LED电子显示屏的设计。
这是一个可以显示图形和文字的电子屏幕,使用16列和16行LED灯来组成一个点阵,可以显示256个像素。
这样的屏幕可以广泛应用于科技展示、娱乐游戏和家庭电子设备等领域。
设计硬件LED灯基本的LED操作和驱动电路在这里不再赘述。
需要注意的是,对于16行LED 灯和16列LED灯,需要使用合适的电流控制电路并且保证它们可以受到足够的电流。
此外,将需要16个NPN晶体管来控制16列LED灯,和16个PNP晶体管来控制16行LED灯。
控制器在控制器的选择上推荐使用ATmega328p微控制器。
这个控制器也是Arduino Uno的基础。
软件代码结构代码文件应当按照以下结构进行组织:Libraries/SevSeg/SevSeg.hLedControl/LedControl.hLedControl.cppMAX7219.hMAX7219.cppSPI.hSPI.cpp16x16LEDMatrix/16x16LEDMatrix.inoREADME.md这里我们使用SevSeg和LedControl库。
打包由于ATmega328p微控制器的内存限制,将需要对代码进行压缩,以减小程序的尺寸,使它适合在所预算的存储设备中运行。
可以通过使用压缩工具完成这个任务。
推荐使用zip或tar。
结论在这篇文档中,我们讨论了16乘16点阵LED电子显示屏的设计。
我们详细介绍了硬件和软件方面的设计需求以及代码结构的组织。
通过对这些内容的了解,你可以开始创建你自己的16乘16点阵LED电子显示屏!。
天津理工大学中环信息学院电子系单片机课程设计报告题目:16×16点阵LED电子显示屏的设计班级 10信科一指导教师田野设计成员陈诗静林樟侯成飞电子系2013年07月 05日三、课程设计进度计划及检查情况记录表四、成绩评定与评语目录一.课程设计意义 (2)二.课程设计任务书 (3)三、课程设计进度计划及检查情况记录表 (4)四、成绩评定与评语 (4)一、总体设计方案 (6)1.1 总体设计 (6)1.2 硬件设计 (7)1.3 软件设计 (14)二、设计内容 (16)2.1 系统硬件原理图与仿真 (16)2.2 程序清单 (18)三.结论、建议及课程设计体会 (22)四.参考文献 (22)一、总体设计方案1.1 总体设计1.1.1 工作原根据功能要求,应采用动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式。
(1)熟悉AT89S51单片机系统的使用方法。
(2)掌握动态显示原理及实现方法。
(3)初步掌握AT89S51单片机编程方法。
(4)掌握串行数据传输方式的应用。
(5)实现利用AT89S51单片机控制的LED图文屏正常工作。
1.1.2 硬件部分总体设计根据功能要求,采用AT89C51单片机,动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式,列扫描地址用P1口控制,总体结构框图如下:图1-1 系统总体结构框图1.2 硬件设计系统的组成,硬件的选用,芯片的特点1.2.1 8051系列的单片机AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图片见下图:图 1-2 89C51管脚图(1).管脚说明VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。