16X16LED点阵课程设计报告
16x16的点阵LED显示屏课程设计报告
单片机原理及应用课程设计报告书题目:姓名:学号:专业:电气工程及其自动化指导老师:设计时间: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×16led点阵显示
16×16LED点阵显示摘要单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
本设计是4个16×16点阵LED电子显示屏的设计。
整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。
通过该芯片控制一个行驱动器74LS154和八个列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示4个汉字,采用16块8 x 8点阵LED显示模块来组成4个16x16点阵显示模式。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
关键词:AT89C51单片机 LED 16*16点阵显示动态显示目录第一章绪论 (1)1.1 设计课题背景知识 (1)1.2 问题提出 (3)1.3 LED显示屏的发展 (4)第二章功能要求及方案论证 (6)2.1 功能要求 (6)2.1 功能要求 (6)第三章系统电路的设计 (9)3.1 设计框图及介绍 (9)3.2 51系列单片机简介 (9)3.3 单片机最小应用系统电路设计 (13)3.4 LED点阵介绍 (14)3.5 LED显示方式 (14)3.6 点阵的移动 (17)3.7 点阵的颜色 (21)3.8 LED阵列驱动电路 (21)3.9 单片机延时子程序 (22)第四章系统程序的设计 (24)4.1 显示驱动程序 (24)4.2 系统主程序 (25)第五章调试及性能分析 (32)5.1 开发环境介绍 (32)5.2 理论性能分析 (32)5.3 系统调试 (33)第六章总结 (34)致谢 (35)附录 (36)一. 程序代码 (36)系统主程序 (37)二.主要芯片介绍 (42)三.点阵左移显示的流程图 (46)四.元件清单 (47)五.参考文献 (47)六.仿真电路图 (48)第一章绪论1.1 设计课题背景知识单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
16x16点阵显示实验报告
16*16点阵显示实验报告一、实验目的(1)学习点阵显示字符的基本原理。
(2)掌握用数控分频控制速度,实现点阵扫描的基本方式。
(3)会使用Quartus II软件中的Verilog HDL语言实现点真的行列循环显示。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可通过编写Verilog HDL语言,实现点阵的行列交替扫描。
先是行扫描,扫描间隔为1s,16行都扫描完之后开始列扫描,扫描间隔仍然为1s,16列扫描完之后,行继续扫描,依次循环。
2.点阵基本知识16*16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。
LED点阵每个点都有一个红色的发光二极管。
点阵内的二极管间的连接都是行共阳,列共阴。
本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。
3.系统工作原理本系统用了两个模块,其中dianzhen.v是顶层文件,而hangsaomiao.v和liesaomiao.v是两个子模块,总体的系统功能框图如图3.3.1所示。
图3.3.1 系统功能图示通过流程图可以看到,体统是先将试验箱的50MHz时钟信号分频为1s,因为要实现16*16的点阵扫描,所以用一个16s的计时器计时,每经过16s行扫描与列扫描的状态转换一次,通过点阵显示出来。
4.模块化程序设计(1)点阵显示顶层程序设计module dianzhen (clk50mhz,row,sel0,sel1,sel2,sel3,line);input clk50mhz; //实验箱提供50MHz时钟信号output sel0,sel1,sel2,sel3; //设置引脚选通点阵output reg [15:0] row; //行output reg [3:0] line; //列wire [15:0] row1,row2;wire [3:0] line1,line2;reg [24:0] cnt=0; //1Hz计数子reg [4:0] cnt1=0; //16s计数子assign sel0=1'b0;assign sel1=1'b1;assign sel2=1'b0;assign sel3=1'b0;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0; //1Hz计时器cnt1<=cnt1+1; //16s计时器endelsecnt<=cnt+1;endhangsaomiao u1(.clk50mhz(clk50mhz),.row(row1),.line(line1)); liesaomiao u2(.clk50mhz(clk50mhz),.row(row2),.line(line2));always@(*)if(cnt1<=5'd15)beginrow<=row1; //行扫描line<=line1;endelsebeginrow<=row2; //列扫描line<=line2;endendmodule(2)行扫描模块hangsaomiao.v程序设计module hangsaomiao(clk50mhz,line,row);input clk50mhz; //实验箱输入50MHz时钟信号output reg [15:0] row; //列output reg [3:0] line; //行reg [24:0] cnt1,cnt2; //计数子reg clkrow,clkline; //行脉冲、列脉冲always@(posedge clk50mhz)beginif(cnt1>=25'd5*******)begincnt1<=25'b0;clkrow=~clkrow; //1s列脉冲endelsecnt1<=cnt1+1;endalways@(posedge clk50mhz)beginif(cnt2>=25'd500)begincnt2<=25'b0;clkline=~clkline; //50KHz行脉冲endelsecnt2<=cnt2+1;endalways@(posedge clkline)begincase(line)4'd0:line<=4'd1; //高速行扫描4'd1:line<=4'd2;4'd2:line<=4'd3;4'd3:line<=4'd4;4'd4:line<=4'd5;4'd5:line<=4'd6;4'd6:line<=4'd7;4'd7:line<=4'd8;4'd8:line<=4'd9;4'd9:line<=4'd10;4'd10:line<=4'd11;4'd11:line<=4'd12;4'd12:line<=4'd13;4'd13:line<=4'd14;4'd14:line<=4'd15;4'd15:line<=4'd0;default:line<=4'd0;endcaseendalways@(posedge clkrow) //时间间隔为1s的列扫描begincase(row)16'b0000000000000001: row<=16'b0000000000000010;16'b0000000000000010: row<=16'b0000000000000100;16'b0000000000000100: row<=16'b0000000000001000;16'b0000000000001000: row<=16'b0000000000010000;16'b0000000000010000: row<=16'b0000000000100000;16'b0000000000100000: row<=16'b0000000001000000;16'b0000000001000000: row<=16'b0000000010000000;16'b0000000010000000: row<=16'b0000000100000000;16'b0000000100000000: row<=16'b0000001000000000;16'b0000001000000000: row<=16'b0000010000000000;16'b0000010000000000: row<=16'b0000100000000000;16'b0000100000000000: row<=16'b0001000000000000;16'b0001000000000000: row<=16'b0010000000000000;16'b0010000000000000: row<=16'b0100000000000000;16'b0100000000000000: row<=16'b1000000000000000;16'b1000000000000000: row<=16'b0000000000000001;default : row<=16'b0000000000000001;endcaseendendmodule(3)列扫描模块liesaomiao.v程序设计module liesaomiao(clk50mhz,row,line);input clk50mhz; //实验箱输入50MHz 时钟信号output reg [15:0] row; //行output reg [3:0] line; //列reg [24:0] cnt; //计数子reg clk;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0;clk=~clk; //1sendelsecnt<=cnt+1;endalways @ (posedge clk) //列扫描begincase(line)4'h0:begin row=16'b1111111111111111;line<=4'h1; end4'h1:begin row=16'b1111111111111111;line<=4'h2; end4'h2:begin row=16'b1111111111111111;line<=4'h3; end4'h3:begin row=16'b1111111111111111;line<=4'h4; end4'h4:begin row=16'b1111111111111111;line<=4'h5; end4'h5:begin row=16'b1111111111111111;line<=4'h6; end4'h6:begin row=16'b1111111111111111;line<=4'h7; end4'h7:begin row=16'b1111111111111111;line<=4'h8; end4'h8:begin row=16'b1111111111111111;line<=4'h9; end4'h9:begin row=16'b1111111111111111;line<=4'ha; end4'ha:begin row=16'b1111111111111111;line<=4'hb; end4'hb:begin row=16'b1111111111111111;line<=4'hc; end4'hc:begin row=16'b1111111111111111;line<=4'hd; end4'hd:begin row=16'b1111111111111111;line<=4'he; end4'he:begin row=16'b1111111111111111;line<=4'hf; end4'hf:begin row=16'b1111111111111111;line<=4'h0; enddefault:line<=4'h0;endcaseendendmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2、sel3四个使能端选通点阵,EP2C8Q208C8就会工作在给点阵下命令的状态,并用line和row分别作为点阵的行、列选通端,最终使得点阵正常工作,如图3.5.1所示。
电子线路课程设计报告(16X16LED点阵屏)..
江西理工大学应用科学学院微机控制系统课程设计报告题目:LED电子屏设计姓名:学号:专业班级:指导教师:完成时间:2016年6月日目录1 设计任务和性能指标 (1)1.1 设计任务 (1)1.2 性能指标 (1)2 设计方案 (2)2.1 需求分析 (2)2.2 方案论证 (2)3 系统硬件设计 (3)3.1硬件电路组成 (3)3.2 单片机系统及外围电路 (3)3.3 LED的显示方式 (4)3.4 LED阵列的驱动电路 (5)4系统软件设计 (6)4.1 点阵左移显示的流程图及分析 (6)4.2系统各单元电路设计 (9)4.3 字符的点阵显示原理及字库代码获取方法 (10)5调试及性能分析 (11)5.1 调试步骤 (11)5.2 仿真结果 (12)6 总结 (12)参考文献 (13)附录1 系统硬件电路图 (13) (14)附录2 程序清单 (15)1 设计任务和性能指标1.1 设计任务1、显示屏为16×16点阵(由四块8×点阵模块组成),可显示各种图文。
2、掉电时能保存显示的信息。
3、上电后在显示屏上顺序显示“江西理工大学应用科学学院”,当按下按键后显示屏停在对应的汉字上,再次按下时,重复循环显示。
4、写出详细的设计报告。
1.2 性能指标LED是英文light emitting diode(发光二极管)的缩写,发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,在p型半导体和n型半导体之间有一个过度层p-n结,注入的少数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。
LED在我们日常生活的电器中随处可见,极为普通也广为人知。
LED具有效率高、光线质量高、能耗小、寿命长等特点,主要可用于平面显示领域、便携设备显示屏、照明以及红外线LED领域等下游应用产品市场。
LED点阵显示器,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。
16乘16点阵设计课程设计
16X16点阵设计摘要本设计利用简单单片机AT89C51作为主操纵模块,利用简单的外围电路来驱动16×16的点阵LED显示屏。
在本设计中要紧用两个74HC595来驱动16×16点阵显示屏的列,用AT89C51来驱动16×16点阵显示屏的行,能够最终实现——“十六乘十六点阵可调速显示屏设计” 十五个汉字的自动左移,而且它们的“进”和“出”是以转动形式设计的。
也确实是说,硬件电路大致上能够分成单片机系统及外围电路、列驱动电路和行驱动电路三部份。
从而能够实现一个室内用的16×16点阵LED图文显示屏,在目测条件下LED显示屏各点亮度均匀、充沛,可显示图形和文字,显示图形或文字应稳固、清楚无串扰,图形或文字显示有静止、移入移出等显示方式。
最后,利用烧录器能够很方便的实现单片机与PC机等外围存储设备的数据传输,并能利用软件方便的进行显示内容的多样转变,它在实际生活中具有普遍的应用。
关键词:单片机,16x16点阵,转动显示目录1 绪论 0课题描述 0功能要求 0方案论证 02 系统整体方案及硬件设计 (1)显示屏整体设计方案 (1)AT89C51的原理及说明 (1)列驱动电路 (2)行驱动电路 (2)3 系统硬件电路的设计 (6)单片机 (7)单片机系统及外围电路 (8)4 系统程序的设计 (8)系统主程序 (9)显示驱动程序 (9)单片机汇编程序 (10)总结 (18)致谢 (18)参考文献 (18)附录1.硬件原理图 (19)附录2.元器件清单表 (23)1 绪论课题描述随着LED显示技术日趋成熟和普遍公共场合需求量增大,现代工业操纵和一些智能化仪器仪表中,愈来愈多的场合所需要用点阵图形显示器显示汉字,广告屏等。
因此研究LED显示有有效意义。
功能要求设计一个室内用16×16点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充沛,可显示图形和文字,显示图形或文字应稳固、清楚无串扰,图形或文字显示有静止、移入移出等显示方式。
单片机课程设计16×16led点阵显示
16×16LED点阵显示摘要单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
本设计是4个16×16点阵LED电子显示屏的设计。
整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。
通过该芯片控制一个行驱动器74LS154和八个列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示4个汉字,采用16块8 x 8点阵LED显示模块来组成4个16x16点阵显示模式。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
关键词:AT89C51单片机 LED 16*16点阵显示动态显示目录第一章绪论 (1)1.1 设计课题背景知识 (1)1.2 问题提出 (3)1.3 LED显示屏的发展 (4)第二章功能要求及方案论证 (6)2.1 功能要求 (6)2.1 功能要求 (6)第三章系统电路的设计 (9)3.1 设计框图及介绍 (9)3.2 51系列单片机简介 (9)3.3 单片机最小应用系统电路设计 (13)3.4 LED点阵介绍 (14)3.5 LED显示方式 (14)3.6 点阵的移动 (17)3.7 点阵的颜色 (21)3.8 LED阵列驱动电路 (21)3.9 单片机延时子程序 (22)第四章系统程序的设计 (24)4.1 显示驱动程序 (24)4.2 系统主程序 (25)第五章调试及性能分析 (32)5.1 开发环境介绍 (32)5.2 理论性能分析 (32)5.3 系统调试 (33)第六章总结 (34)致谢 (35)附录 (36)一. 程序代码 (36)系统主程序 (37)二.主要芯片介绍 (42)三.点阵左移显示的流程图 (46)四.元件清单 (47)五.参考文献 (47)六.仿真电路图 (48)第一章绪论1.1 设计课题背景知识单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
16x16LED点阵屏设计
2009级电子信息工程单片机原理课程设计报告书设计题目LED点阵屏的设计制作姓名学号学院工程技术学院专业电子信息工程班级指导教师2012年5月3日目录一、引言 (1)1、设计意义 (1)2、系统功能要求 (1)二、方案设计 (2)1、总体设计 (2)图1 (2)2、设计论证 (2)三、硬件设计 (5)1、单片机系统及其管脚 (5)2、16x16点阵的级联实现 (6)3、点阵驱动部分 (8)4、电源部分 (10)四、软件设计 (11)1、显示驱动程序 (11)2、系统主程序 (12)五、系统调试 (13)1、调试主要分为硬件调试和软件调试 (13)2、程序仿真 (13)六、总结 (14)七、参考文献 (15)八、附录A;原理图 (16)九、附录B;源程序 (16)十、附录B;作品实物图、PCB、清单如下: (19)一、引言1、设计意义LED 就是Light Emitting Diode(发光二极管)的缩写。
在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。
PN结加反向电压,少数载流子难以注入,故不发光。
发光二极管是由p 型和n 型半导体组成的二极管。
在LED 的p - n 结附近,n 型材料中多数载流子是电子,p 型材料中多数载流子是空穴。
LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、录像信号等各种信息的显示屏幕。
图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
基于AT89C51单片机的16x16LED点阵显示的课程设计报告书
单片机课程设计16×16LED点阵显示16×16LED点阵显示的设计【摘要】本设计使用AT89C51系列高速单片机作为主控制模块,利用简单的外围电路来驱动64×16的点阵LED显示屏。
利用AT89C51系列高速单片机本身强大的功能,可以很方便的实现单片机与PC机间的数据传输及存储,并能利用软件方便的进行显示容的多样变化,另一方面点阵显示屏广泛的应用于医院、机场、银行等公共场所,所以本设计具有很强的现实应用性。
本LED显示屏能够以动态扫描的方式同时显示4个16×16点阵汉字,并能通过上位机软件修改显示容和显示效果等等。
把字符码存储在空闲的单片机程序存储器空间,使本LED显示系统能掉电存储1024个字符。
设计中采用了SPI接口的GB2312标准字库,支持所有的国标字符和ASCII标准字符的显示。
因为采用串行传输方式,使本系统的可扩展性得到提升,便于多个显示单元的级联。
本文从LED的显示原理入手,详细阐述了LED动态显示的过程,以及硬件电路的设计、计算和软件的算法。
【关键词】LED动态显示 AT89C51 点阵汉子显示仿真引言LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
当今社会在飞速发展无疑能源、健康、空间的利用,成了人们着重关注的对象。
16X16 矩阵LED灯 课程设计
目录一、设计任务和要求 (2)二、系统方案 (2)1、设计思路 (2)2、实验中所用到的芯片介绍极其作用 (3)3、系统框图以及说明 (3)三、设计方法——硬件设计 (4)1、电路原理图 (4)2、说明 (4)四、设计方法——软件设计 (5)1、程序流程图 (5)2、说明 (6)3、源程序清单和注释 (6)五、系统调试 (9)1、使用的主要仪器和仪表 (9)2、实验步骤 (9)3、调试中出现的故障、原因以及排除方法 (9)六、设计结论 (9)七、收获和体会 (10)八、附件(源程序) (10)九、参考文献 (10)一、设计任务和要求(1)、了解16X16 矩阵LED 基本原理和功能。
(2)、掌握微机接口芯片与LED点阵块之间接口电路设计及编程。
(3)、利用取模软件建立标准字库,编制程序实现点阵循环右移显示“上海电机学院OK”。
二、系统方案1、设计思路(1)16X16 矩阵LED为共阴极显示,由四个8X8 LED点阵块组成,根据提供I/O地址、功能,由不同I/O口分别提供字形代码送行,列扫描信号送列扫描行,凡字形代码位"1"、列扫描信号"0"该点点亮,否则熄灭,通过逐列扫描,循环点亮字形或曲线。
(2)用8255的PA、PB输出接口提供扫描列信号;用8255的PC口和273输出接口提供扫描行信号,输出字形代码,完成16×16的点阵显示。
2、实验中所用到的芯片介绍极其作用8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。
点阵显示系统课程设计报告
摘要完成16×16LED 点阵显示器系统设计,画出程序框图并编写程序显示英文、汉字字符等。
关键字:16×16点阵显示屏 8086CPU 74LS574 74LS138成绩目录1.概述 (1)1.1.设计任务与要求 (1)1.2.设计目的 (1)2.设计总体方案说明 (1)3.硬件部分设计 (1)3.1.8086微处理器 (1)3.2.地址锁存 (3)3.3.控制模块 (3)3.4.LED显示器原理 (4)3.5.点阵汉字显示原理 (5)3.6.proteus_pro_7.8_sp2 点阵显示屏幕仿真总电路图 (6)4.软件部分 (6)4.1.软件流程图 (7)4.2.系统源程序 (7)5.系统调试 (11)6.总结 (12)7.参考文献 (12)点阵显示屏系统的设计一、概述1.1设计任务与要求:1)给出系统设计方案;画出硬件连线图,并说明工作原理;2)完成16×16LED 点阵显示器系统设计,画出程序框图并编写程序显示英文、汉字字符等。
1.2设计目的:1)了解16x16点阵电路的原理。
2)通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。
使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/输出(I/O)接口技术,应用程序设计技术,并能结合专业设计简单实用的微型计算机应用系统。
针对课堂重点讲授内容使学生加深对微型计算机硬件原理的理解及提高汇编语言程序设计的能力,为以后的毕业设计搭建了微机系统应用平台,提高学生的开发创新能力。
二、总体设计方案与说明16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。
每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。
每次显示一行,10ms 后再显示下一行。
图1点阵显示屏系统框图三、硬件部分设计1.8086微处理器8086微处理器是16位机,1 6 位微处理器比 8 位微处理器有更大的寻址空间、 更列驱动器8086 Cpu行驱动器16x16LED 点阵显示控制模块地址锁存强的运算能力、更快的处理速度和更完善的指令系统。
16×16点阵LED电子显示屏设计报告_单片机课程设计报告
单片机课程设计报告项目16×16点阵LED电子显示屏地设计摘要:本文介绍了基于STC89C51单片机地16×16点阵LED电子显示屏地设计.分别介绍了显示屏显示地基本原理,硬件设计、控制方法及其程序地实现.经过调试和分析,本设计基本满足了题目设计地要求.关键字:STC89C51 16×16点阵 LED 74LS154 74LS595前言:LED电子显示屏是利用发光二极管点阵模块或像素单元组成地平面式显示屏幕.他具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点.并广泛用于公交汽车、码头、商店、学校和银行等公共场合用于信息地发布和广告宣传.自20世纪八十年代开始,LED电子显示屏地应用领域已经遍布了交通、电信、教育、广告宣传等各方面.LED电子显示屏发展较快,其无论在成本和产生地社会效益等方面都有其独特地优势.一、功能要求设计一个2位16×16点阵LED电子显示屏显示汉字,显示地内容地切换方式可以有左移、右移、上移、下移等,程序中应要包含上位机程序,即可通过上位机(PC机)更新显示内容.二、方案论证2.1 LED驱动显示方案大屏幕显示广泛应用于各个领域,动态大屏幕显示系统显示地文字,数字,图形等生动逼真,立体感强.用单片机驱动LED点阵有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分.静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示地数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少地CPU时间.动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用地CPU时间多.这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少地CPU时间,但每个显示单元都需要单独地显示驱动电路,使用地硬件较多;动态显示虽然有闪烁感,占用地CPU时间多,但使用地硬件少,能节省线路板空间.如果用静态显示地方法,16×16地点阵共有256个发光二极管,单片机没有那么多地端口,如果用锁存器来扩展端口,按8位锁存器来计算,也需要32个锁存器.两位显示就需要64个锁存器.因此在实际应用中地显示屏几乎都不采用静态显示,而是采用动态扫描地显示方法.本次设计地要求是2位地16×16点阵显示,采用动态显示,扫描电路就可以实现多行地同名列共用一套列驱动器.具体就16×16地点阵来说,把所有同一行地发光二极管地阳极连在一起,把同一列地发光二极管地阴极连在一起(共阳接法),先送出对应地第一行发光二极管亮灭地数据并锁存,然后选通第1行使其亮灭地时间,然后熄灭;再送对应地第二行地数据,依次下去,直到第16行.整个来回地时间只要能够达到每秒24次以上,由于人眼地视觉暂留现象,就可以看到显示在屏幕上地稳定地图像了.2.2数据传输和显示方案采用扫描方式进行显示时,每行一个行驱动器,各行地同名列共用一个列驱动器.显示数据通常存储在单片机地存储器中,按8位一个字节地形式顺序排放.显示时要把一行中各列地数据都传送到相应地列驱动器上,这就存在着一个显示数据传输地问题.从控制电路到列驱动器地数据传输可以采用并行方式或串行方式.显然,采用并行方式时,从控制电路到列驱动器地线路数量大,相应地硬件数目多.当列数很多时,并行传输地方案不可取.采用串行传输地方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面比较经济.但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行地各列数据都已传输到位后,这一行地各列才能并行地进行显示.这样,对于一行地显示过程就可以分解为列数据传输和列数据显示两个部分.解决串行传输中列数据传输和列数据显示地时间矛盾问题,可以采用重叠处理地方法.即在显示本行各列数据地同时,传送下一行地列数据.为了达到重叠处理地目地,列数据地显示就需要具有锁存地功能.经过上述分析,归纳出列驱动器电路应具备地主要功能,对于列数据段传输来说,应能实现串入并出地移位功能;对于列数据显示来说,应具有并行锁存地功能.综上所述,本次设计采用动态扫描方式驱动LED显示,采用串入并出地方法实现数据传输和采用并行锁存地方法实现数据显示.2.3系统整体方案框图经过分析,给出系统电路原理框图如图1-1.三、系统硬件电路设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分. 3.1单片机系统及其外围电路本次设计采用单片机STC89C51,使用11.0592MHZ地晶振.单片机地串口与列驱动器相连,用来送显示数据.P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来送控制信号.P0和P2空着,在有必要时可以扩展系统地ROM和RAM.设计地显示界面可显示2个汉字,需要8个8×8 LED点阵模块,组成16×32地矩形点阵.3.2行驱动电路单片机P1口低4位输出地行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应地行线当选通端(G1、G2)均为低电平时,可将地址端(ABCD)地二进制编码在一个对应地输出端,以低电平译出. 若将G1 和G2 中地一个作为数据输入端,由 ABCD 对输出寻址,54/74154 还可作1 线-16 线数据分配器.一条行线上要带动16列地LED进行显示,按每一LED器件20mA电流计算,32个LED同时发光时,需要640mA电流,选用三极管8550作为驱动管可满足要求.3.3列驱动电路列驱动器由集成电路74HC595构成.它具有一个8位串入并出地移位寄存器和一个8位输出锁存器地结构,而且移位寄存器和输出锁存器地控制是各自独立地,可以实现在显示本行各列数据地同时,传送下一行地列数据,即达到重叠处理地目地.引脚SI为串行数据输入端,与单片机串口RXD(P3.0)相连,用来传送数据;引脚SCK为移位寄存器地移位时钟脉冲,与单片机串口TXD(P3.1)相连;引脚SCLR信号是移位寄存器地清0输入端,低电平有效,接与单片机P1.5口;RCLK是输出寄存器地打入信号,与单片机P1.6口相接;四、主要元器件功能介绍4.1 8×8点阵LED结构LED点阵电子显示屏是利用发光二极管点阵模块组成地平面显示屏幕.8×8点阵是最基本地单元模块,由4块8×8点阵可构成一块16×16点阵模块,由8块8×8点阵可构成一块18×32点阵模块.单色8×8点阵外形及结构如图1-3:图1-2 硬件电路原路图图1-3从图1-3中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线地交叉点上,当对应地某一列置1电平,某一行置0电平,则相应地二极管就亮;如要将第一个点点亮,则9脚接低电平13脚接高电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接低电平,而(13、3、4、10、6、11、15、16)这些引脚接高电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接高电平,而(9、14、8、12、1、7、2、5)接低电平,那么第一列就会点亮.4.2 74LS154芯片介绍74LS154为4线-16线译码器,其管脚图如图1-4所示.引脚A,B,C,D为译码地址输入端,低电平有效;G1,G2为选通端,低电平有效;0-15为输出端,低电平有效.其功能表如图1-5所示.图1-53.3 74LS595芯片介绍74LS595是一个8位串行输入并行输出地移位寄存器和一个8位输出锁存器地结构.74HC595地内部结构如图1-6它地输入端有8个串行移位寄存器,每个移位寄存器地输出都连接一个输出锁存器.引脚SER是串行数据地输入端.引脚SRCLK是移位寄存器是移位时钟脉冲,在其上升沿发生移位,并将SER地下一个数据打入最低位.移位后地各路信号出现在各移位寄存器地输出端.RCLK是输出锁存器地打入信号,其上升沿将移位寄存器地输出打入输出锁存器.引脚E是输出三态门地开放信号,只要当其为低时锁存器地输出才开放,否则为高阻态.SRCLK*是寄存器地清零输入端,当其为低电平时输出全部为零.由于SRCLK和RCLK两个信号是互相独立地,所以能够作到输入串行移位与输出锁存互不干扰.芯片地输出端为Q0——Q7,最高位Q7可以做为多片74LS595级联应用向下级地芯片输入.但因Q7受输出锁存器打控制,所以还从输出锁存器前引出了QT作为级联输出.图1-6五、系统软件设计显示屏软件地主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计地要求显示.根据软件分层次设计地原理,可把显示屏地软件系统分成两大层:第一层是底层地显示驱动程序,第二层是上层地系统应用程序.显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏地扫描显示工作.显示驱动程序由定时器T0中断程序实现.系统应用程序完成系统环境地设置、显示效果处理等工作,由主程序来实现.5.1 显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率地稳定,然后显示驱动程序查询当前燃亮地行号,从显示缓寸区内读取下一行地显示数据,并通过串口发送给移位寄存器.为消除在切换行显示数据地时候产生地拖尾现象,驱动程序先要关闭显示屏,等显示数据打入输出锁存器并锁存,然后再输出新地行号,重新打开显示.图1-7是显示驱动程序地流程图.5.2系统主程序系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口以及显示效果.如、左移、右移等.系统主程序地流程图如图1-8所示.六、调试及性能分析6.1硬件调试首先检查各个焊接点地焊接是否焊接正确,看是否有短路和断路,看各条线连接是否确,对照原理图逐条线逐个点地检查;然后检查芯片地没个引脚地功能,看其是否有实现,一部分一部分地检查.直至检查出错误或保证电路完全正确.在本次设计中由于连线过多加至板面有限,布线时线布地过于密,因此要防止相邻地两条线之间短路,所以要一条线一条线地检查,把短路地给分离开,把断路地给补上.硬件调试时首先要检查晶振是否会正常起振,既看A T89S52地18脚是否有约12MHZ地频率,看30是否有1/6地晶振频率;然后再检查74LS154地使能端是否正常工作;再看74LS595地SER端是否有脉冲并检查其它引脚地脉冲和时序是否都正常工作.最后再检查LED灯地各行和各列是否都连接正确.各部分都调试正常之后就可以进行软件调试了.6.2软件调试软件部分需要调试地分需要调试地主要有显示屏地刷新率及显示效果部分.显示屏地刷新率由定时器T0地溢出率和单片机地晶振频率决定.显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏地刷新率地稳定.定时器T0设定为工作方式1,即16位定时器模式,晶振频率f为11.0592MHZ,通过计算得定时器T0地初值TH0=0XFCH,TL0=0X18H.显示效果处理程序地内容及方法非常广泛,本次采用地是左移、两边对移、和上移. 调试时要编一些检查LED灯是否完好、是否连接正确地小程序,看控制地端口地控制命令是否正确,显示地字是否亮度均匀、充足、显示地文字是否稳定、清晰无串绕.我在做本次设计中,主要是硬件调试,在程序调试时观察字左移显示是否完全显示完.,还在字段间加空格使得显示更加美观,另外显示地延时也要取得恰当.七、设计总结两周地课程设计终于圆满落下帷幕了.经过这次地课程设计,让我更深刻体会到了把理论学习联系到实践应用当中地重要性.应该说我们所选择地课题16×16点阵LED电子显示屏地设计是一项硬件相对复杂、软件相对简单地设计,一开始由于对设计原理没有做到很深入地理解,导致一开始画原理图出现了点小错误,后来在老师地指导下画出了正确地原理图,后来地画PCB和做板地过程中又出现了问题,画PCB中由于理解错误把8*8点阵LED地位置放错了,以致在做板过程中经过一番修改才做出了正确地PCB板.在软件设计时,参考了很多网上搜索地资料,经过无数次地修改和调试,最后确定了这次设计地源程序.总之,经过这次课程设计,让我们地实践动手能力得到了很大地提高,在接下来地学习中,我们应该更多地把学习地理论知识应用到实践当中.参考文献【1】孙育才. 单片微型计算机及其应用. 东南大学出版社 2004【2】李华. MCS-51系列单片机实用接口技术. 北京航空航天大学出版社.1993附录一:完整源程序#include<reg51.h>#define BLKN 4sbit G=0x97。
单片机课程设计16×16led点阵显示
16×16LED点阵显示摘要单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
本设计是4个16×16点阵LED电子显示屏的设计。
整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。
通过该芯片控制一个行驱动器74LS154和八个列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示4个汉字,采用16块8 x 8点阵LED显示模块来组成4个16x16点阵显示模式。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
关键词:AT89C51单片机 LED 16*16点阵显示动态显示目录第一章绪论 (1)1.1 设计课题背景知识 (1)1.2 问题提出 (3)1.3 LED显示屏的发展 (4)第二章功能要求及方案论证 (6)2.1 功能要求 (6)2.1 功能要求 (6)第三章系统电路的设计 (9)3.1 设计框图及介绍 (9)3.2 51系列单片机简介 (9)3.3 单片机最小应用系统电路设计 (13)3.4 LED点阵介绍 (14)3.5 LED显示方式 (14)3.6 点阵的移动 (17)3.7 点阵的颜色 (21)3.8 LED阵列驱动电路 (21)3.9 单片机延时子程序 (22)第四章系统程序的设计 (24)4.1 显示驱动程序 (24)4.2 系统主程序 (25)第五章调试及性能分析 (32)5.1 开发环境介绍 (32)5.2 理论性能分析 (32)5.3 系统调试 (33)第六章总结 (34)致谢 (35)附录 (36)一. 程序代码 (36)系统主程序 (37)二.主要芯片介绍 (42)三.点阵左移显示的流程图 (46)四.元件清单 (47)五.参考文献 (47)六.仿真电路图 (48)第一章绪论1.1 设计课题背景知识单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
1616led点阵课程设计
1616led点阵课程设计一、课程目标知识目标:1. 理解LED点阵的基本原理,掌握其工作方式和应用场景。
2. 学习并掌握16×16LED点阵的电路连接方法和编程控制技巧。
3. 了解基础的数字逻辑和时序控制,并将其应用于LED点阵动画的创造中。
技能目标:1. 能够独立完成16×16LED点阵的电路搭建,并进行功能性测试。
2. 能够编写程序代码,实现对LED点阵的控制,展示简单的图案和文字。
3. 能够通过小组合作,设计并展示一个创意LED点阵项目。
情感态度价值观目标:1. 培养学生的创新意识和动手实践能力,激发对电子制作的兴趣。
2. 强化学生的团队合作意识,学会在集体中共同解决问题。
3. 增强学生对科技进步的认识,培养其对社会发展的责任感。
课程性质分析:本课程设计为实践性强的学科项目,结合了电子技术、计算机编程和创意设计,旨在提高学生的技术素养和创新能力。
学生特点分析:考虑到学生所在年级,已有一定的物理和数学基础,对电子元件和编程有初步认识,求知欲强,喜欢动手操作和团队协作。
教学要求:1. 教学内容与课本知识紧密结合,注重理论与实践的结合。
2. 教学过程中鼓励学生自主探索和小组讨论,培养学生的自主学习能力。
3. 教学评价关注学习过程和成果,强调知识技能的掌握以及情感态度价值观的培养。
二、教学内容1. LED点阵原理:讲解LED点阵的结构、工作原理及特性,涉及光的发射、导电特性等基础物理知识。
- 相关教材章节:第二章“半导体器件”,第三节“发光二极管”。
2. 电路连接与搭建:介绍16×16LED点阵的电路连接方法,指导学生进行实际操作。
- 相关教材章节:第三章“电子电路基础”,第四节“数字电路连接”。
3. 编程控制:学习如何通过编程实现对LED点阵的控制,包括编程语言基础、时序控制等。
- 相关教材章节:第五章“微控制器及应用”,第二节“微控制器编程基础”。
4. 动画制作:教授如何设计LED点阵动画,包括静态图案、动态效果等。
16乘16LED点阵电子显示屏课程设计
目录1任务和要求 (1)2设计思想与原理 (1)2.1设计思想 (1)2.2 设计原理 (1)3 流程图 (3)4硬件电路图 (4)5仿真图 (5)6课程设计心得 (8)7参考文献 (8)8致谢 (8)9附录: (9)1任务和要求1.设计一个可供6-8组参赛队的智力竞赛抢答器,每组设置一个抢答按钮。
2.电路具有第一抢答信号的鉴别和锁存功能。
即保持该信号不变,同时使后输入的信号无效。
3.在发出“抢答开始”命令后计时,规定的抢答时间到后无人抢答,发出“抢答时间到”信号,并锁定输入电路,使各路抢答信号无法再输入。
4.设置计分电路,每组预置为100分或其他,答对一次加10分,答错减10分(此项可选)。
2设计思想与原理2.1设计思想我的设计思路是竞赛抢答器要有报警系统,要是在规定时间内还没有参赛者抢答或回答出问题时就会发出报警声,倒计时为设定为30S。
并且如果出现犯规抢答时也会发出报警并且显示该犯规选手的编号。
这个抢答器可同时供不大于8名选手或8个代表队参加比赛,各用一个抢答按钮,按钮的编号与选手的编号是相对应的,分别是S1、S2、S3、S4、S5、S6、S7、S8;给节目主持人设置二个控制按钮开关,用来控制系统的清零和抢答的开始;该八路抢答器具有程序存储、数据锁存和显示功能,抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在数码管上显示出选手的编号,参赛选手在设定的时间内抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零;如果定时抢答30S后,却没有选手抢答时,系统持续报警,直到定时抢答的时间为零,本次抢答无效,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示FFF 犯规处理:如果主持人没按"开始"键,就有选手抢答,则显示选手编码,并持续报警。
如果已经有选手抢答了,别的选手则按键无效。
直到主持人重新复位按下开始键为止。
主持人可以根据不同的问答方式设定不同的抢答时间和回答时间。
单片机课程设计16×16点阵LED电子显示屏的设计
单片机原理及应用课程设计报告书题目:16×16点阵LED电子显示屏的设计姓名:马超学号:P091812933专业:电气工程及其自动化指导老师:马慧兰16*16点阵设计摘要单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。
LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。
LED 之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
现代LED的发展很快,很多研究领域非常已经深刻,所以想利用自己学的单片机知识简单的研究一下用单片机驱动的LED显示汉字,以达到学以致用和实践相结合的目的,同时巩固加深自己的单片机知识。
用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。
因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的。
点阵大小可以有16×16、24×24、32×32、48×48等不同规格,也有单色、双色、和多色几种,最常用的是单色图文屏。
单色屏多使用红色或橘红色或橙色LED点阵单元。
双色图文屏和多色图文屏,在LED点阵的每一个“点”上布置有两个或多个不同颜色的LED发光器件。
16×16-LED点阵电子显示屏的设计
嵌入式系统原理课程设计目录一、课程设计的目的: ............................................ 错误!未定义书签。
二、课程设计的任务 (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进行控制和驱动。
16乘16点阵显示综合设计报告
一、方案设计本设计大概包括时钟源、CPLD芯片,显示器。
此次实验所用的可编程逻辑器件的主芯片为EPF10K10LC84-3。
通过VHDL语言进行编程分别把程序模块进行编译仿真。
所编的十六进制计数器控制花样信号对字符库进行选择,计数器产生的花样信号和时钟信号共同控制行选信号和列选信号(列选频率一定要比字选频率大很多)把相应的值输入点阵,控制显示器显示相应的字符。
时钟源信号要高于24HZ 。
所分模块有:1、字选模块:为十六进制计数器模块,其时钟源信号要比列选信号小得多。
2、列选信号:通过给定的时钟信号用来选中列,再对列进行扫描。
3、显示模块:经过字选信号和列选信号输出十六位二进制用来显示一行。
4、顶层模块:该模块采用图形模式(图3),把所有模块按要求连接起来,再加上顶层输入信号。
二、实验原理16×16扫描LED点阵的工作原理同8位扫描数码管类似。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。
所以其扫描译码地址需4位信号线。
2864E2PROM存贮器是电可擦除/编程的只读存贮器,容量为8k×8bit ,有13位并行地址线和8位并行数据线,而一个完整的字符所需的存贮容间为32字节即32×8 bit,也就是说2864最多可连续存256个16×16点阵字形。
存贮方式可事先约定好。
本实验就是要通过CPLD芯片产生读时序,将字形从2864中读出,然后产生写时序,写入16×16的点阵,使其扫描显示输出。
三、单元电路设计1)十六进制计数器用VHDL语言十六进制计数器进行设计,程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY JISHU ISPORT(CLK,RST,LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END JISHU;ARCHITECTURE SHILIU OF JISHU ISBEGINPROCESS(CLK,RST,LOAD,DIN)BEGINIF (CLK'EVENT AND CLK='1') THENIF(RST='1')THEN DOUT<=(OTHERS=>'0');ELSIF (LOAD='1') THEN DOUT<=DIN;ELSIF (DOUT=8) THENDOUT<="0000";ELSEDOUT<=DOUT+1;END IF;END IF;END PROCESS;END SHILIU;设计完成后,器件图如图1图1十六进制计数器2)对行列控制模块进行及字库进行设计行列控制模块进行及字库程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zhi isport( din : in std_logic_vector(3 downto 0);selout : buffer std_logic_vector(3 downto 0);clk,rst: in std_logic;dotout : out std_logic_vector(15 downto 0));end zhi;architecture one of zhi isbeginprocess(clk,rst,din,selout)variable b:std_logic_vector(15 downto 0);beginif rst='1'then selout<="0000";elsif clk'event and clk='1' thencase din iswhen "0000"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0010001000011100";when "0001" =>b:="0001000100001000";when "0010" =>b:="0000100010010000";when "0011" =>b:="0000000000100010";when "0100" =>b:="0011100001000100";when "0101" =>b:="0001000000001000";when "0110" =>b:="0001000000010000";when "0111" =>b:="0111111111100000";when "1000" =>b:="0111111111111100";when "1001" =>b:="0001000000000100";when "1010" =>b:="0001010000000100";when "1011" =>b:="0001100000000100";when "1100" =>b:="0011000000000100";when "1101" =>b:="0000000000011100";when others =>b:="0000000000000000";end case;when"0001"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000000";when "0001" =>b:="0000000110000000";when "0010" =>b:="0000001100000000";when "0011" =>b:="0000011000000000";when "0100" =>b:="0000110000010000";when "0101" =>b:="0000000000001000";when "0110" =>b:="0111111111111100";when "0111" =>b:="0111111111111110";when "1000" =>b:="0000000000000000";when "1001" =>b:="0000110000000000";when "1010" =>b:="0000011000000000";when "1011" =>b:="0000001100000000";when "1100" =>b:="0000000110000000";when "1101" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0010"=> selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000110";when "0001" =>b:="0001100000000110";when "0010" =>b:="1001100000000110";when "0011" =>b:="1101100110000110";when "0100" =>b:="0111100110000110";when "0101" =>b:="0011100110000110";when "0110" =>b:="0001100110000110";when "0111" =>b:="0001100110000110";when "1000" =>b:="0011100110000110";when "1001" =>b:="0111100110000110";when "1010" =>b:="1101100110000110";when "1011" =>b:="1001100000000110";when "1101" =>b:="0000000000000110";when others =>b:="0000000000000000";end case;when "0011"=> selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000100";when "0001" =>b:="0000000000001100";when "0010" =>b:="0001000000011100";when "0011" =>b:="0101011011110000";when "0100" =>b:="0101011101100000";when "0101" =>b:="0101010110000000";when "0110" =>b:="1111010111111111";when "0111" =>b:="0101010111111110";when "1000" =>b:="0101010101100100";when "1001" =>b:="0101011000110000";when "1010" =>b:="0001000000011000";when "1011" =>b:="0000000000001100";when "1100" =>b:="0000000000000100";when "1101" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0100"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000011000";when "0001" =>b:="0000011000110000";when "0010" =>b:="0110011011000000";when "0011" =>b:="0111111111111100";when "0100" =>b:="0111111111111110";when "0101" =>b:="0110011110000000";when "0110" =>b:="0000011011100000";when "1000" =>b:="0000000000000000";when "1001" =>b:="0000011111110000";when "1010" =>b:="0000011111100000";when "1011" =>b:="0000000000001000";when "1100" =>b:="0111111111111100";when "1101" =>b:="0111111111111110";when "1110" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0101"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000000000";when "0001" =>b:="0000111000000010";when "0010" =>b:="0000111000000110";when "0011" =>b:="0000100110001000";when "0100" =>b:="0000100110010110";when "0101" =>b:="0000100110101110";when "0110" =>b:="0110100111010110";when "0111" =>b:="0110101110100110";when "1000" =>b:="0110100110000110";when "1001" =>b:="0000100110010110";when "1010" =>b:="0000100110001110";when "1011" =>b:="0000100110000110";when "1100" =>b:="0000111000000110";when "1101" =>b:="0000111000000010";when "1110" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0110"=> selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000010";when "0010" =>b:="0110000110000110";when "0011" =>b:="0110000110000110";when "0100" =>b:="0110000110000110";when "0101" =>b:="0110000110000110";when "0110" =>b:="0111111111111110";when "0111" =>b:="0111111111111110";when "1000" =>b:="0110000110000110";when "1001" =>b:="0110000110000110";when "1010" =>b:="0110000110000110";when "1011" =>b:="0110000110000110";when "1100" =>b:="0110000000000110";when "1101" =>b:="0000000000000010";when others =>b:="0000000000000000";end case;when "0111"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000100100";when "0001" =>b:="0010001000011000";when "0010" =>b:="0010010100011000";when "0011" =>b:="0010110010100100";when "0100" =>b:="0011000001001010";when "0101" =>b:="0010010010101010";when "0110" =>b:="0010010010101010";when "0111" =>b:="0010010010101010";when "1000" =>b:="0111111111111110";when "1001" =>b:="0010010010101010";when "1010" =>b:="0010010010101010";when "1011" =>b:="0010010010101010";when "1100" =>b:="0011111110001010";when "1101" =>b:="0000010000001010";when "1110" =>b:="0000010000000010";when others =>b:="0000000000000000";end case;when"1000"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000001111100";when "0001" =>b:="0000100011000000";when "0010" =>b:="0010100100100000";when "0011" =>b:="0010101000010000";when "0100" =>b:="0111111111001000";when "0101" =>b:="0010100100000100";when "0110" =>b:="0010100100000010";when "0111" =>b:="0000100000000010";when "1000" =>b:="0000000000000010";when "1001" =>b:="0100010001110010";when "1010" =>b:="0100100010001010";when "1011" =>b:="0101000010001010";when "1100" =>b:="0110010010001010";when "1101" =>b:="0111111001110010";when "1110" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"1001"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000111100001111";when "0000" =>b:="0000111100001111";when "0001" =>b:="0000111100001111";when "0010" =>b:="0000111100001111";when "0011" =>b:="1111000011110000";when "0100" =>b:="1111000011110000";when "0101" =>b:="1111000011110000";when "0110" =>b:="1111111111110000";when "0111" =>b:="0000111100001111";when "1000" =>b:="0000111100001111";when "1001" =>b:="0000111100001111";when "1010" =>b:="0000111100001111";when "1011" =>b:="1111000011110000";when "1101" =>b:="1111000011110000";when "1110" =>b:="1111000011110000";when others =>null;end case;when"1010"=>selout<=selout+1;case selout iswhen "1111" =>b:="1111000011110000";when "0000" =>b:="1111000011110000";when "0001" =>b:="1111000011110000";when "0010" =>b:="1111000011110000";when "0011" =>b:="0000111100001111";when "0100" =>b:="0000111100001111";when "0101" =>b:="0000111100001111";when "0110" =>b:="0000111100001111";when "0111" =>b:="1111000011110000";when "1000" =>b:="1111000011110000";when "1001" =>b:="1111000011110000";when "1010" =>b:="1111000011110000";when "1011" =>b:="0000111100001111";when "1100" =>b:="0000111100001111";when "1101" =>b:="0000111100001111";when "1110" =>b:="0000111100001111";when others =>null;end case;when"1011"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000000011111111";when "0000" =>b:="0000000011111111";when "0001" =>b:="0000000011111111";when "0010" =>b:="0000000011111111";when "0011" =>b:="0000000011111111";when "0100" =>b:="0000000011111111";when "0101" =>b:="0000000011111111";when "0111" =>b:="1111111100000000";when "1000" =>b:="1111111100000000";when "1001" =>b:="1111111100000000";when "1010" =>b:="1111111100000000";when "1011" =>b:="1111111100000000";when "1100" =>b:="1111111100000000";when "1101" =>b:="1111111100000000";when "1110" =>b:="1111111100000000";when others =>null;end case;when"1100"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111100000001";when "0000" =>b:="0111111100000011";when "0001" =>b:="0011111100000111";when "0010" =>b:="0001111100001111";when "0011" =>b:="0000111100011111";when "0100" =>b:="0000011100111111";when "0101" =>b:="0000001101111111";when "0110" =>b:="0000000111111111";when "0111" =>b:="1111111110000000";when "1000" =>b:="1111111011000000";when "1001" =>b:="1111110011100000";when "1010" =>b:="1111100011110000";when "1011" =>b:="1111000011111000";when "1100" =>b:="1110000011111100";when "1101" =>b:="1100000011111110";when "1110" =>b:="1000000011111111";when others =>null;end case;when"1101"=> selout<=selout+1;case selout iswhen "0000" =>b:="1111111111111111";when "0001" =>b:="1111110011111111";when "0010" =>b:="1111000011111111";when "0011" =>b:="1110000011111111";when "0100" =>b:="1111100011111111";when "0101" =>b:="1111110011001111";when "0110" =>b:="1111111001000111";when "0111" =>b:="1100000000000011";when "1000" =>b:="1110001100111111";when "1001" =>b:="1110011100011111";when "1010" =>b:="1111111100000111";when "1011" =>b:="1111111100001111";when "1100" =>b:="1111111100111111";when "1101" =>b:="1111111111111111";when "1110" =>b:="1111111111111111";when others =>null;end case;when"1110"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111111111111";when "0000" =>b:="1111111111111111";when "0001" =>b:="1111111111111111";when "0010" =>b:="1111111111111111";when "0011" =>b:="1111000000001111";when "0100" =>b:="1111011100001111";when "0101" =>b:="1111001101101111";when "0110" =>b:="1111000111101111";when "0111" =>b:="1111011110001111";when "1000" =>b:="1111011011001111";when "1001" =>b:="1111000011101111";when "1010" =>b:="1111000000001111";when "1011" =>b:="1111111111111111";when "1100" =>b:="1111111111111111";when "1110" =>b:="1111111111111111";when others =>null;end case;when"1111"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111111111111";when "0000" =>b:="1111111111111111";when "0001" =>b:="1111111111111111";when "0010" =>b:="1111111111111111";when "0011" =>b:="1111111111111111";when "0100" =>b:="1111111111111111";when "0101" =>b:="1111111111111111";when "0110" =>b:="1111111111111111";when "0111" =>b:="1111111111111111";when "1000" =>b:="1111111111111111";when "1001" =>b:="1111111111111111";when "1010" =>b:="1111111111111111";when "1011" =>b:="1111111111111111";when "1100" =>b:="1111111111111111";when "1101" =>b:="1111111111111111";when "1110" =>b:="1111111111111111";when others =>null;end case;when others=>null;end case;end if;dotout<=b;end process;end one;设计完成后,该模块器件图如图2图2 行列控制模块四、总原理图把十六进制计数器和行列控制模块连接成一个器件,总原理图如图3图3 总原理图其引脚图如图4图4 总器件引脚图图5为部分字符仿真波形,如下图5 部分字符仿真波形五、结论16×16点阵显示综合设计基本符合要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.看门狗
10.内部集成MAX810专用复位电路(D版本才有),外部晶体20M以下时,可省外部复位电路
11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用
12.外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒
显示屏刷新率(帧频)与T0初值关系表(24MHz晶振时)
刷新率/Hz
25
50
62.5
75
85
100
120
T0初值
ec78
f63c
f830
f97e
fa42
fb1e
fbee
从理论上来说,24Hz以上的刷新率就能看到连续稳定的显示,刷新率越高,显示越稳定,但显示驱动程序占用的CPU时间越多。实验证明,在目测条件下,刷新率在40Hz以下的画面看起来闪烁严重;刷新率在50Hz以上的已基本觉察不出画面闪烁;刷新率达到85Hz以上时,即使再增加刷新率,画面闪烁也没有明显改善。
所谓动态扫描,简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(如16行)的同名列共用一套列驱动器。以16X16点阵为例,把所有同一行发光管的阳极连在一起,把所有同一列发光管的阴极连在一起(共阳的接法),先送出第一行发光管亮灭的数据并锁存,然后选通第一行使其点亮一定的时间,然后熄灭;再送出对应第二行的数据并锁存,然后选通第二行使其点亮相同的时间,然后熄灭……第十六行之后又重新亮第一行,这样反复轮回。当这样轮回的速度足够快(每秒24次以上)时,由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时,要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。
管脚图如下:
STC89C51RC/RD+系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。
特点:
1.增强型6时钟/机器周期,12时钟/机器周期8051 CPU
4、列驱动电路
列驱动电路由集成电路74LS595构成,它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的空制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
74LS595的外形如图所示。它的输入
侧有8个串行移位寄存器,每个移位寄存
6.通用I/O口(32/36个),复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口)口是开漏输出P0,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方式来解决。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能:对于列数据准备来说,应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示时间。
13.通用异步串行口(UART),还可用定时器软件实现多个UART
14.工作温度范围:0 - 75℃/ -40 - +85℃
系统采用12MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。单片机的串口与列驱动器相连,用来送显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号。P0和P2口空闲,在必要时,可以扩展系统的ROM的RAM。16X16点阵显示屏的硬件原理图见附件2.1及2.2。
; *
;**********************************
;显示字用查表法,不占内存,用四个16*16共阳LED点阵显示,
;效果:向上滚动显示字,每次四个,重复循环。
;R2:行扫描地址(从00-0FH)。
;R3:滚动显示时控制移动速度,也可控制静止显示的时间。
;************;
1、显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定。
16行扫描格式和显示屏刷新率(帧频)的计算公式如下:
其中: 为晶振频率; 为定时器初值(工作在16位定时器模式)。
其次,显示驱动程式查询当前点亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
附件5………………………………… 17
课题:4个16X16LED点阵电子显示屏
一、功能设计要求
设计一个能显示4个16X16点阵图文LED显示屏(由于经济问题,由4个8X8的LED焊接成一个16X16的LED),要求能显示图形或文字,显示图形或文字应稳定、清晰,图形或文字显示有静止、左移或右移等显示方式。
下图为显示屏电路实现的结构框图:
显示屏电路框图
三、系统硬件电路的设计
硬件电路大致可分成单片机系统及外围电路、STC—ISP串口下载电路、行驱动电路和列驱动电路4个部分。具体元器件见附件4。
1、单片机系统及外围电路
单片机采用STC89C52芯片,在系统可编程时,无需编程器,无需仿真器,可直接在个人电脑上烧录程序到单片机。STC89C51单片机的介绍如下:
五、调试及性能分析…………………… 7
六、控制源程序清单…………………… 7
七、收获、体会、建议………………… 7
八、焊接成品…………………………… 7
九、附件
附件1………………………………… 8
附件2………………………………… 15
附件3………………………………… 15
附件4………………………………… 16
;
START:MOV 20H,#00H;清标志,00H为1帧扫描结束标志
MOV A,#0FFHH;端口初始化
;中断入口程序;
;************;
;
ORG000H0H
LJMP START
ORG000H3HH
RETI
ORG000HBH
LJMP INTT0
ORG001H3H
RETI
ORG001HBH
RETI
ORG002H3H
RETI
ORG002HBH
RETI
;
;************;
;主程序;
;************;
2、STC—ISP串口下载电路
STC—ISP串口下载电路主要采用MAX232AESE芯片及RS232通讯串口组成的电路,可实现在系统可编程时直接在个人电脑上烧录程序到单片机。STC—ISP串口下载电路图见附件3。
3、行驱动电路
单片机P1口低4位的行信号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列4的LED进行显示,按每一LED器件mA电流计算,64个LED同时发光时,需要320mA的电流,选用三极管8550作为驱动管可满足要求。
二、方案论证
从理论上讲,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到想要的显示结果。这种同时控制各个发光点亮灭片机没有这么多端口。如果采用锁存器来扩展端口,那么按8位锁存器来计算,一个16X16的点阵需要256/8=32个锁存器。这个数字很庞大,因为这里仅仅是16X16的点阵,而在实际应用中的显示屏往往还要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中,显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据逐位地传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序逐位地输出给列驱动器,只有当一行中的各列数据都已经传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间相对要长一些,在行扫描周期确定的情况下,行显示的时间就会缩短,以致会影响到LED的亮度效果。
器的输出都连接一个输出锁存器。
74LS595外形:
四、系统程序的设计
显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序;第二层是上层的系统应用程序。显示驱动负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
为消除在切换行显示数据时产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据输入输出锁存器并锁存后,再输出新的行号,重新打开显示。
图(1)为显示驱动程序(显示屏扫描函数)流程图。
显示驱动程序流程图系统主程序流程图
图(1)图(2)
2、系统主程序
系统主程序开始后,首先对系统环境初始化,包括设置串口、定时器、中断和端口。然后以“卷帘出”效果显示文字或图案,停留几秒钟,接着向上滚动显示汉字或图形,停留几秒后,再左移显示汉字或图形、右移显示等。最后以“卷帘入”效果隐去文字。