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-07 23:47

51单片机led灯渐变PWM调光(渐亮渐灭)C语言和汇编源程序
PWM控制led灯渐亮渐灭程序 适用ME500开发系统 短接JP41-2选用8个LED灯 PWM—PulseWidthModulation(脉冲宽度调制) PWM足?种周期?走而高低电平的rV空比可以调制的方波信兮. 按K2—下,PWM值减小,则占空比增加。 兗度逐渐增加,直到8个LED灯达到高亮,蜂鸣器响。 按K1—下,PWM值增加,则占空比减小。 立度逐渐减弱,直到8个LED灯达到最峭,蜂鸣器响。 单片机汇编语言源程序如下: ; PWM 控制 LED 灯渐亮渐灭程序 ; 适用 ME500 开发系统 ; 晶振为11.0592M ; 利用定时器控制产生占空比可变的 PWM 波 ; 按K1,PWM值增加,则占空比减小,LED 灯渐
[单片机]
基于单片机的智能计算器(AT89C51、LCD1602、矩阵键盘)
一、简介 此电路由AT89C51最小系统、LCD1602液晶显示模块和矩阵键盘模块组成。 二、执行效果 三、部分代码 /* S16 S12 S8 S4分别是123+ S15 S11 S7 S3分别是456- S14 S10 S6 S2分别是789* S13 S9 S5 S1分别是0 CLR = / */ /*想要更多项目私wo!!!*/ /* 实现两个数的运算,每个数的位数至少可以八位 */ #include reg52.h #include lcd.h typedef unsigned char uint8; typedef unsigned int uint16; sbit led=P3^
[单片机]
基于单片机的智能计算器(AT89C<font color='red'>51</font>、LCD1602、矩阵键盘)
51单片机教程:单片机逻辑运算类指令
对单片机的累加器A的逻辑操作: CLR A ;将A中的值清0,单周期单字节指令,与MOV A,#00H效果相同。 CPL A ;将A中的值按位取反 RL A ;将A中的值逻辑左移 RLC A ;将A中的值加上进位位进行逻辑左移 RR A ;将A中的值进行逻辑右移 RRC A ;将A中的值加上进位位进行逻辑右移 SWAP A ;将A中的值高、低4位交换。 例:(A)=73H,则执行CPL A,这样进行: 73H化为二进制为01110011, 逐位取反即为 10001100,也就是8CH。 RL A是将(A)中的值的第7位送到第0位,第0位送1位,依次类推。 例:A中的值为68H,执行RL A。68H化为二进制
[单片机]
51单片机-中断函数基础
单片机中断按照中断源类型的不同主要分为:外部中断、定时器中断、串口中断 而因为电路板上可能存在多个定时器或多个引起外部中断的位置,所以产生多个中断源,也因此单片机有多个中断函数 以51单片机为例: ==================================== 中断编号 中断源 0 外部中断0 1 T0定时器溢出中断 2 外部中断1 3 T1定时器溢出中断 4 串口中断 ==================================== C程序中使用中断的方法 EA=1; //打开中断总开关 ET0=1; //打开T0定时器中断 while(
[单片机]
单片机如何使用?51单片机C语言编程实例有哪些?
单片机如何使用,我们要知道单片机在哪里使用? 单片机是很多电子产品的核心器件,它具有一定的逻辑判断和事件处理能力的芯片。 可以对单片机编程不同的程序,从而实现不同的功能。 一、如何使用单片机? 首先我们需要掌握单片机的 编程语言 ,目前大多数的单片机 都支持C语言编程 ,个别低端单片机还需要汇编语言。 所以单片机开发,我们C语言编程基础就可以满足90%的需求了,对于汇编语言,我们可以针对性的,在使用的时候,突击学习掌握就OK了。 对于入门阶段的学生, 单片机的C语言知识需要学习到什么程度? 学习一些基础的语法就可以满足我们实现一些功能比较简单的程序开发了,例如流水灯,交通路灯等。 高级语法不需要刻意去学习,在初级学习没有意义
[单片机]
51,PIC,AVR单片机的对比
1. 传统51 传统51,我想我就不多说了,适合菜鸟入门,容易上手,价格一般(从性价比方面说)。 缺点:解密容易(传统51说:谁让咱出道早呢,大家都研究我,哎!哭......)一般功能也有,, 但AD、eeprom等功能要靠扩展,增加硬件和软件负担。 IDE环境推荐 keil。 2. PIC PIC的好处就是各个型号的兼容性强,学好了PIC16f877a,16系列的就OK了,别的型号要用的时候拿出2分钟看看数据手册就行了。12系列,16系列,18系列也是充分的向下兼容。功能全,型号多,适于选型分析,抗干扰能力强 缺点:解密容易(pic说:我出道也很早啊,人家也研究我不少年了,我和奥尼
[单片机]
MAX4751,MAX4752,MAX4753低电压、单电源、四路SPST模拟开关
MAX4751/MAX4752/MAX4753为低导通电阻、低电压、四路单刀单掷(SPST)模拟开关,工作电压范围为+1.6V至+3.6V。这些开关具有较高的开关速度(tON = 30ns, tOFF = 25ns),可处理满摆幅模拟信号,静态功耗低于1µW,MAX4753具有接通前先断开的特性。 采用+3V单电源供电时,MAX4751/MAX4752/MAX4753具有低于0.9Ω (最大)的导通电阻(RON),RON匹配度为0.12Ω (最大),RON平坦度为0.1Ω。采用+3V单电源供电时,数字逻辑输入与1.8V CMOS逻辑兼容。 MAX4751有四个常开(NO)开关,MAX4752有四个常闭(NC)开关,而MAX47
[模拟电子]
MAX47<font color='red'>51</font>,MAX4752,MAX4753低电压、单电源、四路SPST模拟开关
两种机顶盒器件STx5105与QAMi5516的对比分析
1 引言   数字电视机顶盒作为数字电视系统的终端设备,其类似于一台微型计算机,其核心器件集数字传输与编解码为一体,可以通俗理解为机顶盒CPU,但是该核心器件的选择和传统的计算机CPU的选择有所不同,在品牌、性能、价格、供货等方面需要充分考虑,本文对意法半导体公司(ST)推出的QAMi5516和STx5105数字电视机顶盒主器件进行比较分析。 2主要参数对比分析   目前国际上为机顶盒提供主器件平台的厂家,有ST、BROADCOM、ZORAN、LSI、FUJITSU、ATI、NEC、Conexant等公司,其中ST公司作为世界最大的工业半导体和机顶盒器件供应商之一,在研发实力、产品种类、供货实力等方面有显著优势。所
[家用电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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