单片机C51 - 16 x 16点阵使用指针显示汉字

发布者:静默思考最新更新时间:2020-03-31 来源: eefocus关键字:单片机  C51  16点阵  指针  显示汉字 手机看文章 扫描二维码
随时随地手机看文章

近年来,点阵LED显示屏利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,已成为众多显示媒体以及户外作业显示的电子工具,广泛地应用于车站、宾馆、金融、证券、邮电、体育等广告发布或交通运输等行业。本文中所介绍的16x16LED显示屏是采用4块最基本的8X8 LED点阵显示模块,理解8X8 LED点阵的工作原理就可以基本掌握LED点阵显示技术。 


LED点阵显示的基本原理  


8X8点阵LED结构如下图所示

从图中可以看出,8X8点阵是由一排排的LED灯组成的,它们的阴端连接到行,阳端连接到列,当想要点阵显示什么数字或者字母或者图形的时候,只需要点亮相应的LED就可以了。比如说我们想点亮左上角第一个LED,而其它的都是灭的,我们只需要将行1位置置为1,其它行位置置为0,列1位置置为0,其他位置置为1则可以点亮左上角第一个LED,而其它的不亮。且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。

当在LED点阵上显示中文时,可以用现成的汉字取模工具去生成,而不需要手动去计算(字模生成软件:点击打开链接)。在16x16点阵中,点阵显示是通过4块8x8LED显示的,而最先输入的8x8LED块会被压入最后(右下角块),所以发送字节数据的时候是从最后一块往第一块发。16 x 16点阵使用指针显示“点阵使用指针显示汉字”10个汉字代码如下:


#include

#include

#include "array.h"

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

sbit MOSIO = P3^4;

sbit R_CLK = P3^5;

sbit S_CLK = P3^6;

 

/*******************************************************************************

* 函 数 名         : HC595SendData

* 函数功能    : 通过595发送四个字节的数据

* 输    入         : BT3:第四个595输出数值

*                  * BT2: 第三个595输出数值

*                  * BT1:第二个595输出数值

*                  * BT0:第一个595输出数值

* 输    出         : 无

*******************************************************************************/

void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0)

{  

uchar i;

for(i = 0; i < 8; i++)

{

MOSIO = BT3 >> 7 ; //从高位到低位

BT3 <<= 1;

S_CLK = 0;

S_CLK = 1;

}

 

for(i = 0; i < 8; i++)

{

MOSIO = BT2 >>7;

BT2 <<= 1;

S_CLK = 0;

S_CLK = 1;

}

 

for(i = 0; i < 8; i++)

{

MOSIO = BT1 >> 7;

BT1 <<= 1;

S_CLK = 0;

S_CLK = 1;

}

 

for(i = 0; i < 8; i++)

{

MOSIO = BT0 >> 7;

BT0 <<= 1;

S_CLK = 0;

S_CLK = 1;

}

   

//--输出--//

R_CLK = 0;

R_CLK = 1; //片选

R_CLK = 0;

}

 

void main()

{

int i, j, ms;

uchar *p[] = {tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8, tab9, tab10}; //--定义一个指针数据指向汉字--//

while(1)

{

for(i = 0; i < 10; i++)    //总共10个汉字

{

for(ms = 50; ms > 0; ms--)

{

for(j = 0; j < 16; j++)   //显示一个字

{

//--因为字模软件取的数组是高电平有效,所以列要取反--//

HC595SendData(~(*(p[i]+2*j+1)),~(*(p[i]+2*j)),tab0[2*j],tab0[2*j+1]);

}

 

HC595SendData(0xff,0xff,0x00,0x00); //清屏

}

}

}

}

array.h

//--字模生成器生成出对应的C代码--//

unsigned char code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,

                             0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00}; 

 

unsigned char code tab1[] = {128,0,128,0,128,0,128,127,128,0,128,0,248,31,8,16,8,16,8,16,248,31,0,0,72,34,136,68,132,68,2,64}; //点

 

unsigned char code tab2[] = {0,2,62,2,34,2,210,127,18,1,10,5,146,4,146,63,34,4,34,4,34,4,214,127,10,4,2,4,2,4,2,4}; //阵

 

unsigned char code tab3[] = {8,2,8,2,248,127,4,2,4,2,230,63,38,34,37,34,228,63,4,2,68,2,132,2,4,1,132,2,68,12,52,112}; //使

 

unsigned char code tab4[] = {0,0,252,31,132,16,132,16,132,16,252,31,132,16,132,16,132,16,252,31,132,16,132,16,132,16,130,16,130,20,1,8}; //用

 

unsigned char code tab5[] = {136,0,136,32,136,28,136,3,191,64,136,64,8,127,40,0,152,63,140,32,139,32,136,63,136,32,136,32,138,63,132,32}; //指

 

unsigned char code tab6[] = {8,4,8,4,120,4,4,4,4,4,62,4,201,127,8,4,127,4,8,4,8,4,72,4,40,4,24,4,8,4,0,4}; //针

 

unsigned char code tab7[] = {0,0,248,15,8,8,8,8,248,15,8,8,8,8,248,15,32,2,34,34,36,34,40,18,40,10,32,2,255,127,0,0}; //显

 

unsigned char code tab8[] = {0,0,252,31,0,0,0,0,0,0,0,0,255,127,128,0,128,0,136,8,136,16,132,32,130,64,129,64,160,0,64,0}; //示

 

unsigned char code tab9[] = {0,0,228,31,72,16,72,16,65,16,130,8,146,8,144,8,8,5,8,5,7,2,4,2,4,5,132,8,68,16,48,96}; //汉

 

unsigned char code tab10[] = {64,0,128,0,254,127,2,64,1,32,248,7,0,2,0,1,128,0,255,127,128,0,128,0,128,0,128,0,160,0,64,0}; //字


关键字:单片机  C51  16点阵  指针  显示汉字 引用地址:单片机C51 - 16 x 16点阵使用指针显示汉字

上一篇:74HC595在【8x8LED点阵】中的使用
下一篇:51_单片机_点阵深度分析

推荐阅读最新更新时间:2024-11-04 13:31

恩智浦推出全新Kinetis KE1xF与KE1xZ MCU 进一步扩展5V MCU产品阵容
中国深圳, 2016 年 9 月 27 日讯 ( 2016 恩智浦 FTF 未来科技峰会) 恩智浦半导体(NASDAQ:NXPI)今日宣布推出全新KE1xF和KE1xZ MCU,进一步扩展了其Kinetis E系列产品线。全新MCU产品采用ARM Cortex -M内核,不仅具备更加强大的性能,还拥有更高的存储容量,并集成了更多的抗干扰IP。 Kinetis KE1xF MCU基于高性能ARM Cortex-M4内核,运行频率高达168MHz,集成了兼容CAN 2.0B的FlexCAN模块,提供面向工业应用的高可靠性串行接口以及包含LPUARTs、LPI2Cs、LPSPIs和FlexIO在内的丰富的通信接口。 恩智浦先
[新品]
基于中颖8位MCU的触摸按键方案
前言 在需要用户界面的应用方案中,传统的机电开关正在被电容式触摸感应控制所替代。 Sino wealth已经开发了一套触摸感应软件,使得任意一款8位的中颖微控制器都可以作为一个电容式触摸按键控制器使用。通过对由一个电阻和触摸电极电容组成的RC充放电时间的控制,该触摸感应软件可以检测到人手的触摸。由于电极电容的改变,导致的RC充放电时间的改变,能够被检测出来,然后经过滤波等,最终通过专用的I/O端口,或者I2C/SPI接口发送给主机系统。该软件库所需的元器件BOM表,成本低廉,因为每个通道只需要两个电阻就可以实现触摸检测功能。 RC感应原理 RC采样原理就是通过测量触摸电极电容的微小变化,来感知人体对电容式触摸感应
[工业控制]
基于中颖8位<font color='red'>MCU</font>的触摸按键方案
Keil C51单片机中变量的使用方法解析
8051内核单片机是一种通用单片机,在国内占有较大的市场份额。在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功。由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同。正确地使用变量,有利于获得高效的目标代码。下面详细介绍Keil C51中变量的使用方法。 一、CPU存储结构与变量的关系 变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同。 标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CPU内部有寄存器,外部有存储器,寄存器的访问速度大大高于存储器的访问速度。在标准C中,不加特别定义的变量是放在存储器中的,使用register可以强制变量存储在
[单片机]
Keil <font color='red'>C51</font><font color='red'>单片机</font>中变量的使用方法解析
写给对MCU感兴趣的读者
随着科技时代的到来,我们的日常生活中越来越多的充斥着各种各样的电子产品,使社会生产力极大的提高,也使得我们的生活更加的丰富多彩。与此同时,这些电子产品的大量普及也带动了史无前例的创业和就业机遇,按用途大体可以划分为两类电子产品:一类主要为人们提供温饱之后的享乐之用,例如机顶盒、手机、平板电脑、MP3、MP4、电子词典、游戏机、电子宠物、智能玩具等;另一类主要为人们节约劳动力成本或使用的工作流程更加智能化,例如机械手、遥控器、温度检测仪、刷卡计费系统、智能剃须刀、捕猎器、智能调光器、安防器械、医疗器械等。 从市场容量来看,10年前电子产品的主要市场在国外,那个时候我国人民正在努力解决温饱问题。而10年后的今天,我国已经成为了全球最
[单片机]
iPad 4值得购买的10大理由:配置A6X处理器
    美国著名IT杂志《eWeek》网络版近日撰文, 称苹果即将推出的大尺寸iPad 4平板电脑值得用户购买,并指出了值得用户购买的10大理由。《eWeek》网络版的文章内容如下: 苹果公司在10月23日举行的一系列产品发布会上,也展示了第四代iPad平板电脑,这一产品的确是该发布会上的最大惊奇。无论是对普通消费者、还是对企业 用户而言,这款大尺寸的iPad 4平板电脑都应当是一款必须购买的产品。苹果宣布即将推出iPad 4,可能会惹恼一些最近购买iPad的用户,因为这些用户本以为仍需等待很长的时间才能购买到新升级的大尺寸iPad,但苹果却出人意料地宣布将推出 iPad 4。 这些用户可能不太走运,但是,对那些可能
[手机便携]
单片机(AT89C51)外设的I/O输入输出实验
题目解析 主要实现扩展的输入口接了8个开关,扩展的输出口接了8个发光二极管。实现8个开关控制对应8个发光二极管的显示? 实验中需要用到外界其他的芯片 方法一 使用74LS373和74LS245作为外接的芯片完成实验 实验电路图 实验代码 #include reg51.h #include absacc.h //定义绝对地址访问 #define uchar unsigned char void delay(unsigned int n) { unsigned int i,j; for(i=0;i n;i++) for(j=249;j 0;j--) ; } uchar i; vo
[单片机]
<font color='red'>单片机</font>(AT89C51)外设的I/O输入输出实验
24c02的c51驱动
#include AT89X51.H //#include stdio.h //#include absacc.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit led=P1^0; sbit led2=P1^1; sbit SCL=P3^5; //24c02 SCL sbit SDA=P3^4; //24c02 SDA //sbit DOG=P1^7; //狗 uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据 void x24c02_
[单片机]
24c02的<font color='red'>c51</font>驱动
英飞凌Traveo II车身微控制器,为新兴汽车应用提供全面服务
动力传动系统电气化和高级驾驶辅助系统(ADAS)推动着驾驶方式变革,不断提升汽车舒适性及其他车身功能的丰富性和复杂程度。针对这一挑战,英飞凌科技股份公司近日宣布,面向整个市场推出 Traveo™ II 车身微控制器系列。该产品系列适用于各类汽车应用,包括车身控制模块、车门、车窗、天窗和座椅控制单元,以及车内智能手机终端和无线充电单元。Traveo™ II系列由赛普拉斯半导体公司研发,该公司此前被英飞凌科技股份公司所收购。 英飞凌高级副总裁兼汽车微控制器业务总经理 Peter Schaefer 表示:“英飞凌和赛普拉斯的强强联合,催生出了业内最全面的汽车微控制器产品组合。英飞凌的 AURIX 安全控制器产品组合,加上赛普拉斯
[嵌入式]
英飞凌Traveo II车身<font color='red'>微控制器</font>,为新兴汽车应用提供全面服务
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved