51例程---字模

发布者:innovator7最新更新时间:2020-04-06 来源: eefocus关键字:例程  字模 手机看文章 扫描二维码
随时随地手机看文章

一、何为字模

(1)如何记录组成字的LED点阵亮灭信息(16*16点阵一共有256点,显示一个特定的字需要其中有些点亮而另一些不亮,如何记录哪些点亮哪些点不亮?用字模)

字模如何工作?256个点用256个二进制位表示,1表示这个点亮,0表示不亮。256个点就是256个二进制位,也就是256/8=32个字节。所以一个大小为16*16的字的字模是32个字节大小。所以字模的表现形式就是32个unsigned char型数据。

(2)字模如何获取。一般都是用专门的字模提取软件去提取的。这种软件的作用就是给一个字就能自动得到这个字对应的32个字节的字模编码。

(3)字模的结果不是唯一的,和你提取字模的方式有关的。(横向纵向、从上到下之类区分)提取字模时是没有标准的,怎么做都是对的或者都是错的,关键是你提取字模的方式和你用来在点阵上显示这个字模的函数必须对应。


字模软件如下图:

可以看到c代码里面有个数组,数组编码是从D0-D7,横向取模的结果


一、横向取模函数

#include

 

#define  uchar unsigned char  //宏定义

 

sbit SER = P3^4;

sbit RCLK = P3^5;

sbit SCLK = P3^6;

 

//函数原型声明

void SendData (uchar d1,uchar d2, uchar d3, uchar d4);

void Display(uchar zimo[32],uchar hang[32]);

 

unsigned char peng[32] ={16,16,16,16,254,8,16,4,124,18,0,16,124,8,68,4,68,34,124,32,0,16,68,8,232,4,30,2,0,0,0,0};

unsigned char hang[32] = 

{

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, 

};


void main(void)

{ // d1 d2 对应负极(列), d3,d4对应正极(行)

    // d1 d3 对应9-16, d2 d4对应的是1-8

// d1的bit7对应最右边一列,bit0对应第九列;

    //d2的bit7对应第八列,bit0对应左边第一列;

//d3的bit7对应最下面一行,bit0对应第九行;

//d4的bit7对应第八行,bit0对应最上面一行;

    Display(peng, hang);

   }


//字模显示函数

void Display(uchar zimo[32],uchar hang[32])

{

    uchar i = 0;

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

{

    SendData(~zimo[2*i+1], ~zimo[2*i], hang[2*i], hang[2*i+1]);

/*取反的意义在于字模亮一颗表示1,而d1,d2表示

负极,0led小灯才会亮,故而1取反

*/

}

 }


 void SendData(uchar d1, uchar d2, uchar d3, uchar d4)

{

unsigned char i = 0; // unsigned char还可以用,和uchar是一样的


SCLK = 0;

RCLK = 0;

 

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

{

SER = d1 >> 7; // 将d1的最高bit取出来给SER

SCLK = 0;

SCLK = 1;  // 2步制造了一个SCLK的上升沿

d1 = d1 << 1;

}

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

{

SER = d2 >> 7; // 将d2的最高bit取出来给SER

SCLK = 0;

SCLK = 1;  // 2步制造了一个SCLK的上升沿

d2 = d2 << 1;

}

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

{

SER = d3 >> 7; // 将d3的最高bit取出来给SER

SCLK = 0;

SCLK = 1;  // 2步制造了一个SCLK的上升沿

d3 = d3 << 1;

}


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

{

SER = d4 >> 7; // 将d4的最高bit取出来给SER

SCLK = 0;

SCLK = 1;  // 2步制造了一个SCLK的上升沿

d4 = d4 << 1;

}

RCLK = 0;

RCLK = 1;

}

关键字:例程  字模 引用地址:51例程---字模

上一篇:51单片机之外设——玩转数码管
下一篇:数码管显示1314-520(普中51-单核-A2)

推荐阅读最新更新时间:2024-11-17 11:36

DS1337 时钟芯片在 C8051F 上的实现
一、DS1337介绍   DS1337串行实时时钟芯片是一种低功耗、全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出。其地址和数据可通过I2C总线串行传输,能提供秒、分、时、日、星期、月和年等信息。 1.1 DS1337的引脚说明   DS1337的引脚排列示意图如图1所示。各引脚的功能如下:                  图1 DS1337引脚示意图 VCC,GND:直流电源和接地端,VCC的输入范围在1.8~5.5V之间。X1,X2:标准的32.768kHz的石英晶振接入端,内部晶振电路设计要求晶振特定电容负载为6pF。另外,这两个引脚还可以有其它接法,即:X1脚连接外部振荡信号源,而
[单片机]
DS1337 时钟芯片在 C80<font color='red'>51</font>F 上的实现
基于FSQ510的RD-267 4.2W电源设计方案
基于 FSQ510的RD-267 4.2W电源设计方案 Fairchild 公司的FSQ510是用于谷底开关转换器,具有低EMI和高效率, 内部集成了700V的LDMOS功率开关,内置的软起动时间为5ms,主要用在LCD TV, LCD监视器,PC和白色家电的辅助电源.本文介绍FSQ510主要特性,方框图,典型应用电路以及采用FSQ510的RD-267 4.2W电源参考设计的电路和所用变压器的主要特性和电路. FSQ510, FSQ510H, and FSQ510M:Green Mode Fairchild Power Switch (FPS™) for Valley Switching Converter – Low
[电源管理]
基于FSQ<font color='red'>51</font>0的RD-267 4.2W电源设计方案
基于AT89S51子程序的设计
在实际的程序设计中,常常将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时通过子程序调用指令进行调用。这样的程序段称为子程序。      采用子程序能使整个程序结构简单,缩短程序的设计时间,减少占用的程序存储空间。调用子程序的程序称为主程序或调用程序。      子程序在程序设计中非常重要,应熟练掌握子程序的设计方法。      1.子程序的设计原则和应注意的问题      在编写子程序时应注意以下问题:      (1)子程序的第一条指令的地址称为子程序的入口地址,该指令前必须有标号。      (2)主程序调用子程序,是通过主程序或调用程序中的调用指令来实现的。在指令集
[单片机]
基于AT89S<font color='red'>51</font>子程序的设计
基于MCS-51单片机使用定时器编写时钟程序(汇编)
1、仔细想想还不错的思路 用定时器写一个时钟程序,想想都觉得头大。撇开其他花里胡哨的功能,先从最基本的时间显示开始吧,剩下的以后再说。 我们一般希望的是时钟能不停地计时,在需要的时候调用显示来显示当前时间,同时也可以干其他事,所以当然不能用延时来写,不然这个时钟除了只能显示时间之外就是个废物了。 我们希望每定时到一秒的时候来个中断,在中断里使存储里的时间序列加一秒(时间序列以时分秒各一个字节的方式存储)。51单片机定时器0方式1的最大定时时间是216=65536μs,也就是大约65ms出头。但我们可以每50ms来一次中断,中断到第20次的时候时间序列加一秒;或者每20ms来一次中断,到第50次的时候时间序列加一秒。一般来说
[单片机]
基于MCS-<font color='red'>51</font>单片机使用定时器编写时钟程序(汇编)
基于车规级位置传感器AS5172的车载应用
艾迈斯欧司朗提供性能优越的 AS5172 系列位置传感器,具有高效抗外部磁场干扰能力,可以帮助客户实现更安全和更智能的车载系统。 AS5172 系列是车规级位置传感器,根据 PSI5 版本 1.3 和版本 2.1 的协议,提供 14bit 的位置数据输出。按照 ISO26262 标准,AS5172 系列位置传感器定义为独立安全单元 (SEooC),并采用 SIP封装以降低成本。 AS5172 系列非常适用于刹车和油门踏板,节气门,活塞控制,方向盘角度传感器,悬架高度模组,尾气循环系统,2/4 驱切换开关等车载应用。 工作原理 AS5172 系列是使用 CMOS 工艺并基于霍尔原理的旋转磁感应位置传感器,主要功能框图
[嵌入式]
基于车规级位置传感器AS<font color='red'>51</font>72的车载应用
51单片机IO口总结
首先,看51单片机4类IO口,P0~P3,做一个结构上直观的比较 之所以把P0口和P2口放在一起,是因为其硬件结构上都包含一个多路开关,用于选择是做为普通I/O口使用还是作为 数据/地址 总线使用。对于没有内部ROM的单片机(8031)或单片机内部存储器无法满足程序大小需求,多路开关就与上面接通,作为单片机与扩展存储器通信的地址/数据总线使用。 它们之间的不同也显而易见,P0口引脚前2个mosfet(金属氧化物半导体场效应管)构成了一个推挽结构,而P2口前mosfet则为普通开关作用,且包含上拉电阻。 推挽结构:在输出 地址/数据 信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连
[单片机]
<font color='red'>51</font>单片机IO口总结
基于AT89C51的激光锁的设计
当今社会光电技术的应用已经非常广泛,尤其是在光纤通信技术、远程遥控技术、雷达探 测技术、自动控制技术以及光电检测技术等方面,对于光电技术的依赖越来越大。光电技术是具有广阔前景的一门新型技术,因为光的传播速度快,同时又不容易受干扰,还具有极大 的信息承载量,如果选择用光作为信息的载体,可以想象得出我们的世界将会变得如何的方 便快捷。 电脑密码控制器是以微处理器和数字存储器为代表,采用了当今高新科技、最新优化软件设 计而成,所追求的高保密性、高可靠性和广泛的适用性,特别是在区域管理和集中控制防盗 中显示出诸多优势,是一种现在比较流行的系统。 本密码控制器属于光电遥控式,集合了以上两种先进技术。以有光照或无光照作为基本码编 排一组特定
[电源管理]
51单片机的外部中断触发方式
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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