TDX_PITE_80X86微机接口应用技术实验_点阵LED显示设计实验

目录

4.1实验目的

4.2实验设备

4.3实验内容及原理

4.4实验步骤

4.5字符提取方法 

 4.4字库取模软件下载


4.1实验目的

1.了解 LED 点的基本结构。
2.学习 LED 点阵扫描显示程序的设计方法。

4.2实验设备

PC机一台,TDX-PITE 实验装置一套。

4.3实验内容及原理

编写程序,控制点阵向上卷动显示“西安唐都科教仪器公司!3实验系统中的 16X16LED 点阵由四块 8X8 LED 点阵组成,如图 4.1 所示,8X8 点阵内部结构图如图 4.2 所示。由图 4.2 可知,当行为“1”,列为“0”,则对应行、列上的 LED点亮。图 4.3 为点阵外部引脚图。汉字显示如图 4.4 所示。

 

        本实验采用 SM16206 作为列信号控制芯片,它是 LED 恒流驱动芯片,内建 CMOS 移位寄存器与锁存功能,可以将串行的输入数据转换成并行输出数据格式。其输出端口耐压可达+15V,因此可以在每个输出端申接多个 LED 灯;另外SM16206 高达2MHz的时钟频率可以满足系统对大量数据传输的需求。芯片引脚如图 4.6 所。 

 

        本实验采用 SM5166 作为行信号控制芯片,它是高集成度 LED 驱动控制片。内置 3-8译码器,提供 8 通道的输出电流驱动,每个通道最大电流可达 2.5A。OUT1~OUT8 端口内置电压钳位电路,能消除 LED 显示屏的“列上拖影”,提高显示屏刷新率。内置短路保护功能,

        具有短路防烧灯、防烧板等特点,提升整体方案的应用可靠性。由于其高集成度的特点,可为应用方案节省空间,降低走线复杂度,降低应用风险。芯片引脚如图 4.7 所示。 

4.4实验步骤

1.按图 4.9 连接实验电路图。


2.编写实验程序(例程文件名为: LED16.C),检查无误后,编译、链接并装入系统。

hz.h文件  //(存放要显示的字的宏定义和数组),在这里我要LED点阵显示 “我爱湖南耒阳”

/*本文件为16×16点阵中文字库文件,字的横向8点构成一字节,左边点在字节的高位,字符点阵四角按左上角→右上角→左下角→右下角取字*/
/*如你想在以后继续用HZDotReader打开文件,追加汉字点阵数据,请不要修改或增删所有注释*/

#define  CCED2  0x0000  /*我  */
#define  CB0AE  CCED2+1  /*爱  */
#define  CBAFE  CB0AE+1  /*湖  */
#define  CC4CF  CBAFE+1  /*南  */
#define  CF1E7  CC4CF+1  /*耒  */
#define  CD1F4  CF1E7+1  /*阳  */

unsigned char hzdot[192] = {
/*我   CCED2 */
0x04,0x40,0x0E,0x50,0x78,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x44,
0x0A,0x44,0x0C,0x48,0x18,0x30,0x68,0x22,0x08,0x52,0x08,0x8A,0x2B,0x06,0x10,0x02,

/*爱   CB0AE */
0x00,0x08,0x01,0xFC,0x7E,0x10,0x22,0x10,0x11,0x20,0x7F,0xFE,0x42,0x02,0x82,0x04,
0x7F,0xF8,0x04,0x00,0x07,0xF0,0x0A,0x10,0x11,0x20,0x20,0xC0,0x43,0x30,0x1C,0x0E,

/*湖   CBAFE */
0x01,0x00,0x21,0x1E,0x11,0x12,0x17,0xD2,0x81,0x12,0x41,0x1E,0x41,0x12,0x17,0xD2,
0x14,0x52,0x24,0x5E,0xE4,0x52,0x27,0xD2,0x24,0x52,0x20,0x22,0x20,0x2A,0x00,0x44,

/*南   CC4CF */
0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x7F,0xFC,0x48,0x24,0x44,0x44,
0x4F,0xE4,0x41,0x04,0x41,0x04,0x5F,0xF4,0x41,0x04,0x41,0x04,0x41,0x14,0x40,0x08,

/*耒   CF1E7 */
0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,
0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,0x01,0x00,

/*阳   CD1F4 */
0x00,0x00,0x7C,0x00,0x45,0xFC,0x49,0x04,0x49,0x04,0x51,0x04,0x49,0x04,0x49,0x04,
0x45,0xFC,0x45,0x04,0x45,0x04,0x69,0x04,0x51,0x04,0x41,0x04,0x41,0xFC,0x41,0x04

};

LED16.C文件  //(存放要显示的字的播放逻辑)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
#include <ctype.h>
#include <process.h>
#include "hz.h"					



#define  IOY0         0x0600

#define  MY8255_A     IOY0 + 0x00*2	
#define  MY8255_B     IOY0 + 0x01*2
#define  MY8255_C     IOY0 + 0x02*2
#define  MY8255_MODE  IOY0 + 0x03*2
#define  Num          10			
unsigned char ROW;
unsigned int COL;

void delay(int time)
{
   int i;
   int j;
   for(i=0;i<=time;i++)
   {}
}

void send(unsigned int addr,unsigned int dat)
{
	unsigned int  i,by=0x0001;
	unsigned char bit[16]={0};
	for(i=0;i<16;i++)						
	{
		bit[i] =(dat & by)>>i;				
		by =by*2;							
		outp(addr, (0x80|ROW)|(bit[i]<<4));	
		outp(addr, (0x80|ROW)|(bit[i]<<4));
		outp(addr, (0xA0|ROW)|(bit[i]<<4));
		outp(addr, (0xA0|ROW));
	}
	outp(addr,(0x40|ROW));			
	outp(addr,(0x00|ROW));			
	delay(100);
}

void main()
{
	int i,j;
	int t;
	unsigned int NCOL;
	unsigned int count=0;
	while(1)
	{
		for(j=0; j<15; j++)							//滚动速度						
		{
			ROW = 0;
			send(IOY0,0x0000);						//消隐	
			for(i=0; i<16; i++)						//显示一个汉字						
			{
			
				COL=hzdot[count+1]|hzdot[count]<<8;	//取字库数据拼16列
				NCOL = 0x0000;
				for(t=0;t<16;t++){
					NCOL = NCOL<<1 | (COL>>t & 0x0001);
				}
				COL = NCOL;
				send(IOY0,COL);						//B口送列	
				ROW += 1;	
				count += 2;
			}
			count -= 32;
		}
		count += 2;
		if(count==(Num-1)*32) count = 0;				//判断是否显示结束		
	}
}

3,运行实验程序,观察点阵的显示,验证程序功能。

微机接口应用技术实验_点阵LED显示设计实验


4,自己可以设计实验,使点阵显示不同的符号。
使用点阵显示符号时,必须首先得到显示符号的编码,这可以根据需要通过不同的工具获得。在本例子中,我们首先得到了显示汉字的字库文件,然后将该字库文件修改后包含到主文件中。参考4.5节所述。


4.5字符提取方法 


·1,将 HZDotReader 文件夹拷贝到硬盘上,然后双击文件 "HZDotReader"运行程序; 

2.在“设置”下拉菜单中选择“取模字体”选项,设置需要显示汉字的字体;

3.在“设置”下拉菜单中选择“取模方式”选项,在本系统中选择如图所示,即以横向 8个连续点构成一个字节,最左边的点为字节的最低位,即 BIT,最右边的点为 BIT7。16X16汉字按每行 2 字节,共 16 行取字模,每个汉字共 32 字节,点阵四个角取字顺序为左上角-右上角一左下角右下角; 

4.在“设置”下拉菜单中选择“输出设置”选项,以设置输出格式,可以为汇编格式或C语言格式,根据实验程序语言而定,如图 4.12 所示; 

5.点击"字" 按钮,弹出字符输入对话框,输入“我爱湖南耒阳”,如图 4.13所示,然后点击输入按钮; 

6.字符输入后,可得到输入字符的点阵编码以及对应汉字的显示,如图 4.14 所示。此时可以对点阵进行编辑,方法是右键点击某一汉字,此时该汉字的编码反蓝,然后点击“编辑”下拉菜单中的“编辑点阵”选项来编辑该汉字,如图 4.15 所示。鼠标左键为点亮某点,鼠标右键为取消某点。若无需编辑,则进行保存,软件会将此点阵文件保存为 dot 格式;

7.使用 Word 软件打开保存的文件,然后将字库复制到自己的程序中使用。 

 4.4字库取模软件下载

点阵LED显示设计实验到这里就结束了,然后需要字库提取软件的,我把链接放到下面,自行下载即可。

链接:【免费】点阵LED显示字库取模软件资源-CSDN文库

  • 38
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
英文字库生成工具 C51格式 A51格式 HZDotReader3.0: 新增从文本文件输入字符功能,可以为您所要显示的文件生成专用小字库,免除字符一个个输入的麻烦。 新增HEX文件输出功能,解决二进制输出时保留区域的填充所带来的问题。 把2.0版的重码自动删除功能改为该功能可选,以适应某些特殊应用。要允许重码输入请在设置菜单,文件输出设定中去除重码自动去除项。 新增中英文混合输出功能,该功能把二个半角字符作为一个汉字取模,如半角字符为单个,在其后自动插入一个空格。在混合输出状态下,不能去除重码。如从文本文件输入,则自动去除回车和换行控制符。需要混合输出请点击设置,取模字体菜单,在弹出的对话框中选中中英文混合输出项。该项功能使软件所取的字模文件用二进制输出后可直接用于大屏的显示。 新增对英文字模的常量定义,解决少量字符的大点阵专用字库字符定位问题,英文字符常量格式为:字头“CHAR_”加ASII十六进制内码,如字母“Z”为 “CHAR_5A”。 新增码表生成功能,可从菜单“输出设定”项中设定使用码表或使用汉字常量检索字符在点阵中的位置,在选中生成字符码表后,系统输出时生成字库的内码列表,应用时,先检索字符在码表中的位置,再根据字符的位置计算该字符在点阵中的位置,可解决在C51中汉字常量无法应用于字符串的问题(C51语法把汉字常量认定是西文字符串)。产生的内码列表在汉字取模状态下A51格式为标号:HZ_INDEX,C51格式为常量数组:hzIndex[];在英文取模状态下A51格式为标号:CHAR_INDEX,C51格式为常量数组:charIndex[]。在产生字符码表的同时A51模式下生产一个代表字符总数的常量HZ_NUM或CHAR_NUM,而在C51输出模式下相应的常量则为:hzNum或charNum。 更改菜单名,更好地体现菜单的功能,原“字体设定”改为“取模字体”,原“字符取点设定”改为“取模方式”,原“文件输出设定”改为“输出设置”。 更正2.0版在点阵不为8的倍数,且纵向点取字时,对点阵进行编辑产生错误,更改某些状态下生成的字库不能重新打开编辑的错误。 如发现新的错误,敬请与作者联系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STM32单片机定制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值