595级联16行16列显示单个字点阵屏
- 格式:doc
- 大小:696.00 KB
- 文档页数:7
目录摘要 (1)Abstract (2)1设计原理 (3)1.1 MCS-51单片机的结构及编程方法 (3)1.2 16*16点阵LED原理 (5)1.3 3-8译码器原理 (6)2.设计方案介绍 (7)2.1 设计总体思路 (7)2.2 与题目相关的具体设计 (7)2.3程序设计流程图 (8)3.源程序,原理图和仿真图 (9)3.1程序清单(见附录) (9)3.2电路图 (9)3.2.1电路原理图 (9)3.2.2电路图分析 (9)3.3仿真图 (10)4性能分析 (11)5.总结和心得 (12)6.参考文献 (13)附录:程序代码 (14)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机AbstractAs a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system etc. This paper introduces a kind of simple 16x16 LED display screen design process based on MCS-51 single chip minicomputer . The detail hardware scheme, software flow and assemble language programmer design and so on is followed. The display part can be cascaded to meet the need. The practice proves the design is low-cost and effective.Key words: MCS-51;LED;MCU1设计原理1.1 MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。
16×16点阵汉字显示作者:吕宁钱璟来源:《教育界》2011年第04期点阵汉字显示以其组成方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点,在车站、证券所、运动场馆、交通干道及各种室内外场合得到广泛的应用。
本文介绍一种16×16 点阵汉字的显示方法,使用了256 个高量度发光二极管,组成了16 行16 列的发光点阵。
该显示屏可以显示各种文字或单色图像,全屏能显示1 个汉字。
一、汉字显示的原理:国标汉字库中的每一个字均由16 行×16 列组成的256点阵来表示。
我们可以把每一个点理解为一个像素,把每一个字的字形理解为一幅图像。
选用8 位的STC89C52 单片机作为控制芯片。
由于单片机的口线为8 位,所以将一个汉字拆分为2 个部分,即上部和下部,上部由8 16 点阵组成,下部也由8 16 点阵组成。
下面我们来显示汉字“大”。
(见图1)图1" 汉字“大” 的点阵显示本系统选用STC89C52 单片机作为控制芯片。
它共有32 个I/O 口。
如果将16×16 组成的256 点阵用到的16 行、16 列,全部接入STC89C52 单片机的32 个I/O 口,这会造成I/O 资源的耗尽,系统再使用I/O 口就无余地。
为此,我们设计了用4-16 译码器74LS154 来完成16 列方向的扫描。
行方向的1-8 线接在P0.0———P0.7 口,9-16 线接在P2.0———P2.7 口。
列的方向由P1.0———P1.3 口输出到4—16 译码器74LS154 的4 线输入端,再经过译码,输出16 列,完成列扫描。
(见图2)图2" 16×16 点阵系统方框图单片机首先显示的是左上角第一列的上半部分,即第0 列的P0.0———P0.7 口。
方向为P0.0 到P0.7,显示汉字“大” 时,P0.5 点亮,由上往下排列,为P0.0 灭, P0.1= 灭, P0.2 灭P0.3 灭, P0.4 灭, P0.5 亮, P0.6 灭, P0.7= 灭。
#include<reg51.h>sbit SET=P3^5;sbit ADD=P3^6;sbit SUB=P3^7;sbit LOCK=P3^2;sbit DAT=P3^0;sbit CLK=P3^1;unsigned char cnt,cnt2,line,*p,*old;char speed;bit sec,key_mark;unsigned char code Matrix001[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 临; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x08,0x80,0x08,0x80,0x08,0x80,0x49,0xFE,0x49,0x40,0x4A,0x20,0x4C,0x20 ,0x48,0x00,0x49,0xFC,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x09,0xFC,0x09,0x04 ,0x08,0x00};unsigned char code Matrix002[32]={/*------------------------------------------------------------------------------; 源文件 / 文字:沂; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x00,0x08,0x20,0x3C,0x13,0xC0,0x12,0x00,0x82,0x00,0x42,0x00,0x43,0xFE ,0x12,0x10,0x12,0x10,0x22,0x10,0xE2,0x10,0x22,0x10,0x22,0x10,0x24,0x10,0x24,0x10 ,0x08,0x10};unsigned char code Matrix003[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 大; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00 ,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08 ,0xC0,0x06};unsigned char code Matrix004[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 学; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04 ,0x1F,0xE0,0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00 ,0x02,0x00};unsigned char code Matrix005[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 信; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x08,0x40,0x08,0x20,0x0B,0xFE,0x10,0x00,0x10,0x00,0x31,0xFC,0x30,0x00 ,0x50,0x00,0x91,0xFC,0x10,0x00,0x10,0x00,0x11,0xFC,0x11,0x04,0x11,0x04,0x11,0xFC ,0x11,0x04};unsigned char code Matrix006[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 息; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x01,0x00,0x02,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0 ,0x10,0x10,0x1F,0xF0,0x10,0x10,0x01,0x00,0x08,0x84,0x48,0x92,0x48,0x12,0x87,0xF0 ,0x00,0x00};unsigned char code Matrix007[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 学; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04 ,0x1F,0xE0,0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00 ,0x02,0x00};unsigned char code Matrix008[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 院; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x00,0x40,0x78,0x20,0x4B,0xFE,0x52,0x02,0x54,0x04,0x61,0xF8,0x50,0x00 ,0x48,0x00,0x4B,0xFE,0x48,0x90,0x68,0x90,0x50,0x90,0x41,0x12,0x41,0x12,0x42,0x0E ,0x44,0x00};unsigned char code Matrix009[32]={/*------------------------------------------------------------------------------; 源文件 / 文字: 0; 宽×高(像素) : 16×16------------------------------------------------------------------------------*/0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x1C,0x38,0x38,0x1C,0x38,0x1C ,0x78,0x1E,0x78,0x1E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x38,0x07,0xE0,0x00,0x00 ,0x00,0x00};unsigned char code Matrix010[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x0F,0xC0,0x01,0xC0,0x01,0xC0 ,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0xF8,0x00,0x00 ,0x00,0x00}; //1unsigned char code Matrix011[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x18,0x18,0x38,0x1C,0x38,0x1C ,0x00,0x38,0x00,0x70,0x01,0xC0,0x07,0x00,0x0C,0x04,0x3F,0xFC,0x3F,0xFC,0x00,0x00 ,0x00,0x00}; //2unsigned char code Matrix012[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x38,0x38,0x38,0x18,0x00,0x38 ,0x03,0xF0,0x03,0xF0,0x00,0x18,0x00,0x1C,0x38,0x1C,0x38,0x18,0x1F,0xF0,0x00,0x00,0x00,0x00}; //3unsigned char code Matrix013[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0xF0,0x01,0xF0,0x02,0x70 ,0x0C,0x70,0x18,0x70,0x30,0x70,0x3F,0xFE,0x00,0x70,0x00,0x70,0x03,0xFE,0x00,0x00 ,0x00,0x00}; //4unsigned char code Matrix014[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x18,0x00,0x18,0x00,0x18,0xC0 ,0x1F,0xF8,0x18,0x1C,0x00,0x1C,0x10,0x1C,0x38,0x1C,0x38,0x18,0x0F,0xF0,0x00,0x00 ,0x00,0x00}; //5unsigned char code Matrix015[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x0C,0x38,0x18,0x10,0x38,0x00 ,0x3F,0xF8,0x7C,0x1C,0x78,0x0C,0x38,0x0E,0x38,0x0C,0x1C,0x18,0x0F,0xF0,0x00,0x00 ,0x00,0x00}; //6unsigned char code Matrix016[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFE,0x38,0x0C,0x30,0x10,0x00,0x30 ,0x00,0x60,0x00,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00 ,0x00,0x00}; //7unsigned char code Matrix017[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x38,0x1C,0x30,0x0C,0x3C,0x1C ,0x1F,0xF0,0x0F,0xF0,0x38,0x78,0x70,0x1C,0x70,0x0C,0x38,0x18,0x0F,0xF0,0x00,0x00 ,0x00,0x00}; //8unsigned char code Matrix018[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x38,0x18,0x30,0x1C,0x70,0x1C ,0x70,0x1C,0x38,0x3C,0x1F,0xDC,0x00,0x1C,0x18,0x38,0x3C,0x70,0x1F,0xE0,0x00,0x00 ,0x00,0x00};//9unsigned char code Matrix019[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};//kong geunsigned char code Matrix020[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x18,0x18,0x38,0x1C,0x38,0x1C ,0x00,0x38,0x00,0x70,0x01,0xC0,0x07,0x00,0x0C,0x04,0x3F,0xFC,0x3F,0xFC,0x00,0x00 ,0x00,0x00};//2unsigned char code Matrix021[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x1C,0x38,0x38,0x1C,0x38,0x1C ,0x78,0x1E,0x78,0x1E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x38,0x07,0xE0,0x00,0x00 ,0x00,0x00};//0unsigned char code Matrix022[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x0F,0xC0,0x01,0xC0,0x01,0xC0 ,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0xF8,0x00,0x00 ,0x00,0x00};//1unsigned char code Matrix023[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x0F,0xC0,0x01,0xC0,0x01,0xC0 ,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0xF8,0x00,0x00 ,0x00,0x00};//1unsigned char code Matrix024[32]={0x10,0x00,0x10,0x00,0x1F,0xFC,0x20,0x80,0x20,0x80,0x40,0x80,0x1F,0xF8 ,0x10,0x80,0x10,0x80,0x10,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80 ,0x00,0x80};//年unsigned char code Matrix025[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x38,0x1C,0x30,0x0C,0x3C,0x1C ,0x1F,0xF0,0x0F,0xF0,0x38,0x78,0x70,0x1C,0x70,0x0C,0x38,0x18,0x0F,0xF0,0x00,0x00 ,0x00,0x00};//8unsigned char code Matrix026[32]={0x00,0x00,0x1F,0xF8,0x10,0x08,0x10,0x08,0x10,0x08,0x1F,0xF8,0x10,0x08 ,0x10,0x08,0x10,0x08,0x1F,0xF8,0x10,0x08,0x10,0x08,0x20,0x08,0x20,0x08,0x40,0x28 ,0x80,0x10};//月unsigned char code Matrix027[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x0F,0xC0,0x01,0xC0,0x01,0xC0 ,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0xF8,0x00,0x00 ,0x00,0x00};//1unsigned char code Matrix028[32]={0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 ,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0 ,0x10,0x10};//日unsigned char code Matrix029[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};//kong geunsigned char code Matrix030[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x1C,0x38,0x38,0x1C,0x38,0x1C ,0x78,0x1E,0x78,0x1E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x38,0x07,0xE0,0x00,0x00 ,0x00,0x00};//0unsigned char code Matrix031[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x38,0x18,0x30,0x1C,0x70,0x1C ,0x70,0x1C,0x38,0x3C,0x1F,0xDC,0x00,0x1C,0x18,0x38,0x3C,0x70,0x1F,0xE0,0x00,0x00 ,0x00,0x00};//9unsigned char code Matrix032[32]={0x10,0x00,0x13,0xFC,0x20,0x84,0x20,0x88,0x48,0x88,0xF8,0x90,0x10,0x9C ,0x20,0x84,0x41,0x44,0xF9,0x44,0x41,0x28,0x01,0x28,0x1A,0x10,0xE2,0x28,0x44,0x44 ,0x01,0x82};//级unsigned char code Matrix033[32]={0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08 ,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02 ,0x00,0xFE};//电unsigned char code Matrix034[32]={0x00,0x00,0x7F,0xF8,0x00,0x10,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x00 ,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00 ,0x02,0x00};//子unsigned char code Matrix035[32]={0x08,0x40,0x08,0x20,0x0B,0xFE,0x10,0x00,0x10,0x00,0x31,0xFC,0x30,0x00 ,0x50,0x00,0x91,0xFC,0x10,0x00,0x10,0x00,0x11,0xFC,0x11,0x04,0x11,0x04,0x11,0xFC ,0x11,0x04};//x信unsigned char code Matrix036[32]={0x01,0x00,0x02,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0 ,0x10,0x10,0x1F,0xF0,0x10,0x10,0x01,0x00,0x08,0x84,0x48,0x92,0x48,0x12,0x87,0xF0 ,0x00,0x00};//息unsigned char code Matrix037[32]={0x00,0x00,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00 ,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00 ,0x00,0x00unsigned char code Matrix038[32]={0x08,0x00,0x1D,0xFC,0xF1,0x04,0x11,0x04,0x11,0x04,0xFD,0xFC,0x10,0x00 ,0x30,0x00,0x39,0xFE,0x54,0x20,0x54,0x20,0x91,0xFC,0x10,0x20,0x10,0x20,0x13,0xFE ,0x10,0x00};//程unsigned char code end;void SendData(unsigned char*q){unsigned char i,t;t=*q;for(i=0;i<16;i++){if(i==8)t=*(q+1);if(t&1)DAT=1;elseDAT=0;CLK=0;CLK=1;t>>=1;}LOCK=0;LOCK=1;}void t0() interrupt 1{TH0=-50000>>8;TL0=-50000;if(++cnt2>1)cnt2=0;sec=1;}}void t1() interrupt 3{TH1=-1000>>8;TL1=-1000;if(++cnt>=speed){cnt=0;if(++line>15)line=0;P1=P2=0xff;SendData(p+(line<<1));if(line<8)P1=~(1<<line);elseP2=~(1<<(line-8));}}void delay(){unsigned char i,j;for(i=0;i<4;i++)for(j=0;j<100;j++);}void key(){if(!SET){}else if(!ADD){speed+=4;}else if(!SUB){speed-=4;if(speed<=1)speed=1;}}void init_t0(){TH0=-50000>>8;TL0=-50000;TMOD|=0X01;IE|=0X82;}void init_t1(){TH1=-1000>>8;TL1=-1000;TMOD|=0X10;IE|=0X88;}void delay500ms(){char n;IE=0X88; //DISABLE T0 INTERRUPT for(n=0;n<10;n++){TH0=-50000>>8;TL0=-50000;while(!TF0);TF0=0;}IE=0X8A;}main(){old=p=Matrix001;init_t0();init_t1();speed=0;TR0=TR1=1;while(1){if((!SET ||!ADD ||!SUB) &&!key_mark){delay();if(!SET ||!ADD ||!SUB){key();key_mark=1;}}else if(SET && ADD && SUB )key_mark=0;if(sec){sec=0;p+=2;if(p>=old+32){old=p;delay500ms();}if(p>=&end)p=Matrix001;}}。
编号毕业设计(论文)题目基于单片机的16×16LED点阵显示屏设计二级学院电子信息与自动化学院专业测控技术与仪器班级测控一班学生姓名丁徽徽学号 11107030106指导教师米曾真职称副教授时间 2015年6月6日目录摘要 .................................................................................................................................................... Abstract . (I)第一章绪论 01.1 单片机的发展阶段 01.2 单片机的发展趋势 01.3 单片机的特点 (2)1.4 LED简介 (3)1.5 LED的特点 (4)第二章功能要求及方案论证 (5)2.1 功能要求 (5)2.2 显示模块方案论证 (5)第三章系统电路的硬件设计 (8)3.1 设计框图 (8)3.2 单片机的选择 (8)3.3 AT89C51芯片简介 (9)3.4 系统硬件电路的设计 (12)第四章系统的程序设计 (21)4.1程序的编写过程 (21)4.2 程序设计流程图 (23)第五章软件调试及硬件制作 (24)5.1 软件调试及仿真 (24)5.2 硬件制作 (27)结束语 (28)致谢 (29)附录 (36)附录A:16*16点阵显示屏设计程序 (36)附录B:proteus ISIS 软件仿真图 (47)附录C:供电以后16*16点阵实物效果图 (48)附录D:元器件清单列表 (49)摘要本设计是基于单片机AT89C51为核心的由4个8×8的点阵显示屏形成的16×16点阵显示屏设计。
系统的介绍了由AT89C51为控制系统的点阵显示屏动态设计过程。
通过该芯片AT89C51控制一个行驱动器4-16线74HC154译码器和两个列驱动器74HC595级联成串行输入并行输出的移位寄存器来驱动显示屏,该显示屏能显示汉子、字符和图形等。
LED16X16点阵显示课程设计报告学院专业班级学生姓名指导老师二0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。
二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED 点阵显示。
要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。
三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。
该电路可静态显示1个16*16位的汉字,也可循环显示。
1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。
可由程序来改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。
其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。
3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。
第二十四组第二阶段总结报告16*16点阵屏实现汉字跑马成员:李爽郝冠郭剑楠———————————————————————————基于单片机的16位点阵LED控制摘要:显示设备在设计中必不可少,点阵LED是显示设备中比较重要的一种。
本文的设计是基于单片机系统的基本模块的一部分。
LED 点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。
本次设计的点阵显示屏主要是通过单片机直接控制行扫描,然后用74LS138来控制列扫描。
这个设计的软硬件都成功通过了PROTEUS的仿真调试。
关键词:单片机;点阵;滚动显示1.系统方案设计与比较方案一:用两片74hc373和一片74hc154,如下图所示,其中74hc154控制列,两个锁存器控制行。
这样可以实现汉字跑马,但是,电路图过于复杂,有十六个三极管,增加了实验的难度方案二:使用四片74hc138,其中两片74HC138三八译码器实现点阵控制,用另外两个138控制点阵的行(列),用两个单片机I/O口控制点阵的列(行)实现扫描显示。
扫描点阵共用I/O口21个,并却只能实现上下跑马(138控制行),或左右跑马(138控制列)。
综上所述:从方便好用,功能实现上考虑采用第而种方案。
具体电路图如图:2.程序设计如下:#include <reg52.h>#define int8 unsigned char #define int16 unsigned int int8 n;int8 code table[][32]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00},/*显示一个空屏*/{/*大 CB4F3 */0x01,0x04,0x01,0x04,0x02,0x04,0x04,0x04,0x08,0x04,0x30,0x04,0xC0,0x04,0x00,0xFF,0xC0,0x04,0x30,0x04,0x08,0x04,0x04,0x04,0x02,0x04,0x01,0x04,0x01,0x04,0x00,0x00},{/*航 CBABD */0x01,0x01,0xFE,0x3F,0x40,0x69,0x32,0xA7,0x01,0x21,0xFE,0x3F,0x01,0x00,0x06,0x10,0xF8,0x13,0x00,0x92,0x00,0x52,0xFC,0x13,0x02,0x10,0x02,0x10,0x1E,0x00,0x00,0x00},{/*院 CD4BA */0x00,0x00,0xFF,0x7F,0x20,0x44,0x10,0x5A,0xE0,0x61,0x01,0x08,0x82,0x30,0x8C,0x24,0xF0,0x24,0x80,0xA4,0x80,0x64,0xFC,0x24,0x82,0x24,0x82,0x28,0x8E,0x30,0x00,0x00},{/*李 CC0EE */0x10,0x01,0x10,0x21,0x10,0x23,0x10,0x22,0x90,0x26,0x92,0x2C,0x91,0x38,0x9F,0xFF,0x10,0x22,0x10,0x23,0x10,0x21,0x10,0x01},{/*爽 CCBAC */0x01,0x00,0x01,0x20,0xA3,0x2A,0x42,0x24, 0xE6,0x2E,0x8C,0x2A,0x38,0x20,0xF0,0xFF, 0xF0,0xFF,0x08,0x20,0xAC,0x2A,0x46,0x24, 0xE2,0x2E,0xA3,0x2A,0x01,0x20,0x01,0x00},{/*郝 CBAC2 */0x11,0x02,0x73,0x22,0x0E,0x22,0xFC,0x23, 0xF2,0xFF,0x01,0xFE,0xFF,0x23,0x40,0x22, 0x70,0x22,0x00,0x00,0xFF,0x7F,0xFF,0x7F, 0x18,0x44,0x18,0x5F,0xF0,0x7B,0xE0,0x60},{/*冠 CB9DA */0x01,0x10,0x03,0x71,0x0E,0x69,0xFC,0x49, 0x00,0x49,0xFC,0x49,0xFE,0x49,0x02,0x49, 0x02,0x42,0x82,0x42,0xD2,0x42,0x0A,0x42, 0xFA,0x4F,0xF2,0x5F,0x1E,0x72,0x1E,0x62},{/*郭 CB9F9 */0x08,0x20,0x88,0x2E,0x8A,0x2E,0x89,0xAA, 0xBF,0xEA,0xFE,0x6A,0xD0,0x2E,0x90,0x2E, 0x00,0x00,0xFF,0x7F,0xFF,0x7F,0x18,0x44, 0x18,0x5F,0xF0,0x7B,0xE0,0x60,0x00,0x00},{/*剑 CBDA3 */0x00,0x02,0x22,0x04,0x3B,0x0E,0x9B,0x3A,0xE4,0x0C,0x04,0x00,0xF0,0x1F,0xF2,0x1F,0x01,0x00,0xFF,0xFF,0xFE,0xFF,0x00,0x00},{/*楠 CE9AA */0x20,0x08,0xE0,0x08,0x00,0x0B,0xFF,0xFF,0xFF,0xFF,0x80,0x09,0xFF,0x2F,0xFF,0x27,0x90,0x26,0x90,0x27,0xFE,0xFD,0xFE,0xFD,0x92,0x27,0x01,0x26,0xFF,0x27,0xFE,0x27},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,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,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00},//显示两个空屏};void delay(void);int16 offset;void main(void){int8 i;int8 *p;n=0;TMOD=0x01;TH0=0xc5;TL0=0x68;//10ms定时 ET0=1;EA=1;TR0=1;p=&table[0][0];while (1){for (i=0;i<8;i++) //显示左半屏{P0=*(p+offset+2*i);P2=i|0x08; //P2.4=0,P2.3=1 选中U2, 输出扫描码给U6 delay();P0=*(p+offset+2*i+1);P2=i|0x10; //P2.4=1,P2.3=0 选中U3, 输出扫描码给U7 delay();}for (i=8;i<16;i++) //显示右半边屏幕{P0=*(p+offset+2*i);P2=(i-8)|0x20; //P2.5=1 P2.4=0, P2.3=0 选中U4,输出扫描码U8 delay();P0=*(p+offset+2*i+1);P2=(i-8)|0x40; //P2.6=1 P2.5=0, P2.4=0 选中U5,输出扫描码U9 delay();} } }void delay(void){int16 i;for (i=0;i<50;i++);}void timer0() interrupt 1 using 3 {TH0=0xd8;TL0=0xf0;if (n<10){n++;}else{offset+=2;if (offset>360)offset=0;n=0;} }。
电子综合设计方案题目:16*16点阵汉字显示屏显示设计年级专业:电气学生姓名:2011年12 月10 日第一章课题简介1.1 LED显示简介LED显示屏:它是一种通过控制半导体发光二极管的显示方式,其大概的样子就是由很多个通常是红色的发光二极管组成,靠灯的亮灭来显示字符。
用来显示文字、图形等各种信息的显示屏幕。
LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券所、运动场馆、交通干道及各种室内/外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。
单片机控制系统程序采用单片机汇编语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
所显示字符的点阵数据可以自行编写,也可从标准字库中提取。
第二章课题系统整体方案2.1 需要实现的功能本设计是一16×16点阵LED电子显示屏的设计。
整机以40脚单片机AT89C51为核心,通过该芯片控制列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字。
显示可以采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
开关控制显示“矿大电气五班”、“电子综合设计”的字幕。
同时还要实现的功能:5V的电压输入,时钟电路的设置,复位电路的设置,单片机给74HC154芯片同时给E1和E2低电平,74LS154才能正常的工作。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y,16*16LED 点阵如图2.1.1所示。
图 2.1.116X16点阵LED 工作原理说明 : 16X16点阵共需要256个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
LED16×16点阵汉字显示屏LED 16 x 16 bitmap characters displayscreen目录第一章绪论 (1)第二章任务设计………………………………………………………2.1 设计依据 (40)2.2 要求及主要内容………………………………………………………2.3 途径和方法……………………………………………………………第三章AT89C51单片机概述 (52)3.1 AT89C51单片机的结构……………………………………………3.2 管脚说明 (60)3.3 振荡器特性……………………………………………………………第四章方案设计 (66)4.1 总体设计………………………………………………………………4.2 系统硬件选择…………………………………………………………4.3 硬件电路实现…………………………………………………………4.4 软件的程序实现………………………………………………………结论 (71)致谢 (74)参考文献 (75)LED16×16点阵汉字显示屏摘要 :LED点阵显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。
它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。
并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。
LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。
LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分C语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
邢台职业技术学校Xingtai Polytechnic Institute 毕业设计(论文)题目16×16点阵LED电子显示屏的设计班级应电081姓名杨艳德指导教师唐俊英16×16点阵LED电子显示屏的设计目录摘要 (3)关键词 (3)前言 (4)1.背景介绍 (5)1.1 LED及LED显示屏 (5)1.2 MCS-51系列单片机简介 (6)1.2.1 MCS-51系列单片机及其特点 (6)1.2.2 单片机的发展历史简介 (6)3.功能要求 (7)4.方案实现 (7)4.1 系统硬件电路的设计 (8)4.1.1单片机系统及外围电路 (9)4.1.2列驱动电路 (9)4.2.系统程序的设计 (11)4.2.1显示驱动程序 (11)4.2.2系统主程序 (12)5性能分析 (19)5.1 性能分析 (19)总结 (20)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机前言LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。
本文设计的是一个室内用16x16的点阵LED图文显示屏,图形或文字显示有静止、移入移出等显示方式。
LED显示屏分为数码显示屏、图文显示屏和视频显示屏,均由LED矩阵块组成。
LED数码显示屏的显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。
嵌入式系统原理课程设计目录一、课程设计的目的: ............................................ 错误!未定义书签。
二、课程设计的任务 (1)三:课程设计实验原理及步骤 (1)3.1系统硬件总体设计 (2)3.2系统的软件设计 (5)四、调试 (6)五、课程设计代码 (7)六、总结 (11)七、人员分配 (11)一、课程设计的目的:通过本次课程设计实践,熟悉和掌握嵌入式系统的软件、硬件设计方法,设计步骤,提高综合应用所学知识及动手和分析问题,解决问题的能力;同时还应达到以下目的:1、了解点阵LED显示的基本工作原理和工作过程;2、熟悉cortex-M3的GPIO使用及其相关API函数;3、熟悉混合总线通信编程方法及通信格式;4、学习HD7279键盘、显示接口芯片的工作方式及应用编程;5、学习16*16LED点阵显示汉字的控制方法及应用编程。
二、课程设计的任务:设计一个波形发生器电路,通过键盘的按键,控制产生不同的波形输出;1、采用DA转换器进行数/模转换,产生连续的正弦波和锯齿波输出。
2、通过键盘的按键控制输出的波形;如:按一下一个键,输出正弦波;再按一下另一个键,输出锯齿波,如此循环。
3、使用cortex-M3的SSI模块,通过SPI模式,控制DA转换器完成转换。
提示:1)、用LM3S9B96的SSI模块,通过SPI模式,控制DA转换器完成转换。
2)、由TLV5616DA转换器芯片,实现正弦波和锯齿波输出。
3)、由HD7929键盘、显示接口芯片,进行键盘按键值的输入。
三:课程设计实验原理及步骤3.1系统硬件部分设计系统硬件部分电路大致上可以分成电源电路、单片机最小系统电路及外围电路、列扫描电路、行扫描电路和LED显示屏电路五部分。
3.1.1整体模块设计本设计行、列驱动电路,显示屏电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如下图2.1所示:图2.1 系统结构设计总图总体硬件电路设计在整个电路设计中,用两片8位输出锁存移位寄存器74HC595作为列扫描,用两片74LS164芯片作为行扫描,用单片机AT89S52对74HC595和74HC164进行控制和驱动。
汉字显示屏16X16点阵制作汉字显示屏广泛应用与汽车报站器,广告屏等。
本文介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,没有使用8*8的点阵发光管模块,而是直接使用了256个高量度发光管,组成了16行16列的发光点阵。
同时为了降低制作难度,仅作了一个字的轮流显示,实际使用时可根据这个原理自行扩充显示的字数。
1、汉字显示的原理:我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素。
我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。
方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。
即二进制00000100,转换为16进制为 04h.。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h. 这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:04H,00H,04H,02H,04H,02H,04H,04H04H,08H,04H,30H,05H,0C0H,0FEH,00H05H,80H,04H,60H,04H,10H,04H,08H04H,04H,0CH,06H,04H,04H,00H,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
本科学生毕业论文(设计)题目用74HC595与74LS154设计的16*16点阵屏系别电子工程系专业电子信息工程学生姓名邓博学号 1271018指导教师张辉职称讲师完成日期 2016 年 02 月 20 日用74HC595与74LS154设计的16*16点阵屏邓博电子信息工程摘要:LED技术的日益发展,使其在日常生活和工业生产中的应用越来越广泛,LED与传统的光源相比,其功耗低,寿命长。
LED节能灯,LED广告牌在我们生活中已经非常常见。
LED广告牌与传统的广告牌相比,具有随时更改广告内容,节能,醒目等优点。
本次设计是16×16点阵LED电子显示屏的设计。
本LED显示屏主要以AT89S52为核心,选用两片74HC595级联,输出16行扫描信号。
选用一片74LS154输出16列驱动信号。
我们采用4块8×8的点阵进行拼接,组成一个16×16的点阵。
显示方式采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
本文给出了基于MCS-51单片机的16×16点阵显示屏的设计方案。
主要包括16×16点阵屏硬件原理图,程序设计,点阵系统仿真等设计思路。
利用此方案,可以动态显示多个汉字,字符,图案等。
从而达到了利用一块16×16点阵屏显示多个字符符的目的。
显示信息量大,价格低廉。
关键字:AT89S51 LED点阵显示动态显示The soft hardware of LED diagram text monitor carries outDengboDepartment of electronicengineering Summary:LED technique of develop day by day, make it produce in daily life and industry in of application more and more extensive, LED and traditional light source compare, it achievement consume low, life span long.LED economizes on energy a light, LED's advertising a card has been very familiar in our life.This design is 16 ×s at 16:00 the design of the LED electronics monitor.The this LED monitor mainly takes AT89 S52 as core and passes the actuator 74 LS154s of the chip's 74 HC595s and a line to drive a monitor to show.Adopt 4 pieces of 8 xeses 8:00 LED show mold piece to constitutes a 16 the ×s 16 points of monitors.Show a way adoption dynamic state suggests, make sketch or writing able to carry out static, move go into move a varieties like,etc to show a way.Key words:89s52 LED lattice display dynamic display目录第1章绪论 (5)1.1 LED点阵屏简介 (5)1.2 LED显示屏特点 (5)第2章方案选择 (6)2.1系统总体设计框图 (6)2.2系统设计方案简介 (6)第3章系统硬件设计 (8)3.1单片机主控电路设计 (8)3.1.1单片机最小系统 (9)3.2行扫描电路设计 (9)3.2.174HC595简介 (9)3.2.2行驱动电路设计 (11)3.3 列扫描电路设计 (12)3.3.1 74LS154简介 (12)3.3.2列驱动电路 (12)3.4点阵连接图 (13)3.4.1 8×8点阵简介 (13)3.4.2 16×16点阵连接图 (14)第4章系统软件设计 (16)4.1软件设计总体框图 (16)4.2 软件设计环境与思路 (16)4.2.1 主程序设计 (17)4.2.2 静态显示程序设计 (18)4.2.3动态显示程序设计 (20)第5章系统仿真与调试 (22)5.1 protues简介 (22)5.2 点阵仿真 (24)第6章结论 (26)参考文献 (27)第1章绪论1.1LED 点阵屏简介LED显示屏(LED panel):LED就是light emitting diode ,发光二极管的英文缩写,简称LED。
课程设计题目4个8x8点阵LED电子显示屏的设计学院物流学院专业物流工程班级物流ZY1001姓名宋金龙指导教师朱宏辉2013 年 6 月25 日摘要本设计是基于MCS-51的16x16点阵LED电子显示屏的设计,16x16的点阵共有256个发光二极管,我们采用动态扫描的显示方法,更节省锁存器也就节省了成本。
扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(即我们采用共阳极的接法)。
采用扫描方式进行显示时,每一行和每一列都有一个行驱动器和列驱动器,各行的同名列和各列的同名行共用一个驱动器。
我们采用四个74LS273锁存器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
编写点阵显示程序,利用proteus画出电路原理图并装入程序仿真调试,仿真成功后完成电路焊接并装入程序完成实物设计。
整个设计过程让我们学到许多实践知识!LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息,由点阵LED组成的汉字显示屏在工工程所应用非常广泛。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。
本文设计的是一个室内用16x16的点阵LED图文显示屏,图形或文字显示有静止、移入移出等显示方式。
本设计是基于MCS-51单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外、该设计只需简单的级联就能实现显示屏的扩展,但级联时要注意不要超过驱动负载范围。
关键字:LED,点阵式,显示屏,AT89C51武汉理工大学《单片机课程设计》报告目录摘要 (2)第一章:绪论 (1)1.1掌握单片机应用系统的一般过程和方法 (1)1.2:设计要求 (1)第二章:硬件电路的设计 (1)2.1设计思路 (1)2.2实验器材 (1)2.2.1 锁存器74LS273介绍 (2)2.3硬件电路设计框图 (2)2.4 16*16点阵LED显示器汉字显示的工作原理 (3)2.5 如何将4片8x8的LED拼接成一片16x16的LED显示屏(显示屏的扩展) (5)2.6 点阵LED显示器与单片机的接口 (6)第三章:系统软件设计 (8)第四章:系统程序设计 (9)ORG 0000H (10)总结: (24)参考文献: (26)附:元件清单及仿真图 (27)武汉理工大学《单片机课程设计》实验报告第一章:绪论1.1掌握单片机应用系统的一般过程和方法综合运用单片机原理与接口技术课程和其它有关先修课程的理论及方法,分析和解决单片机应用系统的设计、分析和实验开发等相关问题,进一步巩固和加深对所学知识的理解。
#include<reg52.h>#include<intrins.h>//第13脚接地,第10脚接高。
#define uchar unsigned char#define uint unsigned int//Hang(行)低电平有效,Lie(列)高电平有效sbit LSer=P1^3;//595串行数据输入,第14脚sbit LSck=P1^4;//595移位时钟,高电平有效,11脚sbit LRck=P1^5;//595锁存时钟,高电平有效,12脚sbit HSer=P1^0;//595串行数据输入,第14脚.sbit HSck=P1^1;//595移位时钟,高电平有效,11脚sbit HRck=P1^2;//595锁存时钟,高电平有效,12脚unsigned char code table[];unsigned char temp[32];void LieHC595(uchar SendV al2,uchar SendVal){uchar i;for(i=0;i<8;i++){if((SendVal<<i)&0x80)LSer=1;else LSer=0;LSck=0;_nop_(); LSck=1;}for(i=0;i<8;i++){if((SendVal2<<i)&0x80)LSer=1;else LSer=0;LSck=0;_nop_();LSck=1;}LRck=0;_nop_();LRck=1;//0到1:锁存器输出_nop_();LRck=0;//1到0:锁存器锁存}uint length()//计算有多少个数组{uint num=0;while(table[num]!=0xff)//0xff结束标志位,在table中设定num=num+32;//32个算一个字return num/32;//}void display(){uchar i;HSer=0;for(i=0;i<16;i++){LieHC595(0,0);////清屏HSck=0;_nop_();HSck=1;HRck=0;_nop_();HRck=1;//0到1:锁存器输出_nop_();HRck=0;//1到0:锁存器锁存HSer=1;//列转换LieHC595(temp[i*2],temp[i*2+1]);}}void adjust()//调节{unsigned char temp2[32];uchar j,k,a;static uchar i=0;for(j=0;j<32;j++)//给temp赋前一个字的值{temp[j]=table[j+i*32];}i++;if(i>=length())//计算长度i=0;for(j=0;j<32;j++)//给temp2赋后一个字的值{temp2[j]=table[j+i*32];}for(k=0;k<16;k++)//移动16次正好是一个字{a=5;//这里可以调节显示的速度while(a--)//循环延时display();//显示for(j=0;j<16;j++)//在移动一个字时,每个字有16行需要移动{temp[j*2]=(temp[j*2]<<1);//每一行有两个字节,把高8位右移if(temp[j*2+1]&0x80)//如果低8位中的最高位为1temp[j*2]=temp[j*2]|0x01;//高8位的最低位补1,否则自动补0temp[j*2+1]=temp[j*2+1]<<1;//同上,但这里是下一个字的,注意移位与判断就行if(temp2[j*2]&0x80)temp[j*2+1]=temp[j*2+1]|0x01;temp2[j*2]=(temp2[j*2]<<1);//同上if(temp2[j*2+1]&0x80)temp2[j*2]=temp2[j*2]|0x01;temp2[j*2+1]=(temp2[j*2+1]<<1);//这里以后就是下下一个字了,所以下面不用判断}}}void Init(){uchar j,a;for(j=0;j<32;j++)//给temp赋第一个字的值{temp[j]=table[j];}a=50;while(a--)display();}void main(){Init();//显示第一个字while(1){adjust();//循环显示}}unsigned char code table[]={//存放文字的数组/*-- 文字: 努--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x00,0x10,0x00,0xFE,0xFC,0x22,0x84,0x44,0x88,0x28,0x50,0x10,0x20,0x28,0x58,0xC5,0x86,0x02,0x00,0x02,0x00,0x7F,0xF8,0x04,0x08,0x08,0x08,0x10,0x50,0x60,0x20,/*-- 文字: 力--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7F,0xF8,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x04,0x08,0x04,0x08,0x08,0x08,0x08,0x08,0x10,0x88,0x20,0x50,0x40,0x20,/*-- 文字: 奋--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x01,0x00,0x01,0x00,0x7F,0xFC,0x02,0x80,0x04,0x40,0x08,0x20,0x30,0x18,0xC0,0x06, 0x1F,0xF0,0x11,0x10,0x11,0x10,0x1F,0xF0,0x11,0x10,0x11,0x10,0x1F,0xF0,0x10,0x10,/*-- 文字: 斗--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x40,0x04,0x40,0x02,0x40,0x02,0x40,0x10,0x40,0x08,0x40,0x08,0x40,0x00,0x40, 0x00,0xFE,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,/*-- 文字: !--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00, 0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 创--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x04,0x08,0x04,0x14,0x04,0x12,0x24,0x21,0x24,0x40,0xA4,0xBE,0x24,0x22,0x24, 0x22,0x24,0x22,0x24,0x2A,0x24,0x24,0x24,0x20,0x84,0x20,0x84,0x1F,0x94,0x00,0x08,/*-- 文字: 造--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x40,0x22,0x40,0x13,0xF8,0x14,0x40,0x00,0x40,0x07,0xFC,0xF0,0x00,0x10,0x00, 0x13,0xF8,0x12,0x08,0x12,0x08,0x13,0xF8,0x12,0x08,0x28,0x00,0x47,0xFE,0x00,0x00,/*-- 文字: 美--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x20,0x04,0x40,0x7F,0xFC,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00, 0xFF,0xFE,0x01,0x00,0x01,0x00,0x7F,0xFC,0x02,0x80,0x04,0x40,0x18,0x30,0xE0,0x0E,/*-- 文字: 好--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x00,0x10,0xFC,0x10,0x04,0x10,0x08,0xFC,0x10,0x24,0x20,0x24,0x20,0x25,0xFE, 0x24,0x20,0x48,0x20,0x28,0x20,0x10,0x20,0x28,0x20,0x44,0x20,0x84,0xA0,0x00,0x40,/*-- 文字: 未--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE, 0x03,0x80,0x05,0x40,0x09,0x20,0x11,0x10,0x21,0x08,0xC1,0x06,0x01,0x00,0x01,0x00,/*-- 文字: 来--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x11,0x10,0x09,0x10,0x09,0x20, 0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,0x01,0x00,/*-- 文字: !--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00, 0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xff};//0xff结束标志位(汉字中没有这个)。