51单片机教程:51单片机驱动四个8*8点阵

发布者:数据探险家最新更新时间:2022-01-27 来源: eefocus关键字:51单片机  驱动  8*8点阵 手机看文章 扫描二维码
随时随地手机看文章

一、点阵原理

市面上有很多种类的点阵,但是最常用的还是这种8乘8点阵

在这里插入图片描述

内部结构如下图

在这里插入图片描述

可以发现点阵就是由led构成,并且有一排是阳极,另一排是阴极,有一排是控制行,另一排是控制列。

打开proteus搜索MATRIX,看到各种型号的点阵,选择8乘8即可

在这里插入图片描述

任意选择一个颜色的点阵,我们发现引脚没有做任何标记,默认上排:阴极、控制列;下排:阳极、控制行

(一定要自己测一下,proteus仿真布置的点阵每次方向都可能发生改变)

在这里插入图片描述

什么意思呢,也就是跟下图对应关系,只不过引脚位置发生改变

在这里插入图片描述

二、4个 “ 2乘2 ” 点阵拼成一个 “ 4乘4” 点阵

我们先从简单开始理解,首先画出4个 “2乘2” 点阵

在这里插入图片描述

然后把上下方向的阴极控制列连接起来

把左右方向的阳极控制行连接起来

就拼成了一个4*4点阵

在这里插入图片描述

二、4个 “ 8乘8 ” 点阵拼成一个 “ 16乘16” 点阵

注意:proteus的点阵真的很难用,找不到方向,得自己测

测量两个内容:控制列还是控制行、阴极还是阳极

在这里插入图片描述

三、仿真:依次显示 “化作尘”,间隔为1秒


这里使用了74hc138与74hc595,不了解原理的自行百度,不做讲解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对应代码:


/*

hc595与hc138控制8*8点阵

一开始写这个程序的时候,程序运行占用存储空间超过了128b

错误:

点阵(四)16乘16.C(98): error C249: 'DATA': SEGMENT TOO LARGE


导致程序无法运行,原因是数组占用了大量的内存

后来在数组名前加了code解决了这个问题

意思是把数组存储到程序存储区4kb而不是  data区128b

*/


#include


sbit SH_CP = P3^0;

sbit DS = P3^1;

sbit ST_CP = P3^2;


//不需要改变的数组保存到code程序存储区

unsigned char code b[3][32] = {

/*--  文字:  化  --*/

/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x10,0x01,0x10,0x01,0x10,0x21,0x08,0x11,0x08,0x09,0x0C,0x05,0x0C,0x03,0x0A,0x01,

0x89,0x01,0x48,0x01,0x28,0x01,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x7E,0x08,0x00,


/*--  文字: 作  --*/

/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x90,0x00,0x90,0x00,0x90,0x00,0x88,0x7F,0x48,0x01,0x4C,0x01,0x2C,0x01,0x0A,0x1F,

0x09,0x01,0x08,0x01,0x08,0x01,0x08,0x3F,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,


/*--  文字:  尘  --*/

/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x80,0x00,0x80,0x00,0x90,0x04,0x90,0x08,0x88,0x10,0x84,0x20,0x82,0x20,0x00,0x00,

0x80,0x00,0x80,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x00,0x00,

  };


void delayms(unsigned int m)

{

int i,j;

for(i=0; i for(j=0; j<120; j++);

}


void hc_595(unsigned int temp,unsigned int temp1)   //595段码程序

{

char t;

bit val;

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

{

   

val = temp & 0x80;     //第一个数据传到第一个595输出

DS = val;

SH_CP = 0;;  

SH_CP = 1;

temp = temp<<1;

}

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

{

   

val = temp1 & 0x80;    //第二个数据传输到第二个595输出

DS = val;

SH_CP = 0;;  

SH_CP = 1;

temp1 = temp1<<1;

}

ST_CP = 0;;   

ST_CP = 1;


void hc_138()

{

unsigned int n,t,i;

for(i=0; i<3; i++)   //显示3个汉字

{

for(t=0; t<30; t++)    //用来延时1秒

{

for(n=0; n<16; ++n)    //一次显示一个汉字

{

if(n<8)       //第一个138的高电平向下移动

{

P3_6 = 1;   //第一个138使能,第二个138不工作

P2 = n;    

}

else         //第二个138的高电平向下移动

{

P3_6 = 0; //第二个138使能,第一个138不工作

P2 = n-8;    

}

hc_595(b[i][2*n],b[i][2*n+1]); //发送段码

delayms(2);

}

}

}

}



void main(void)

{

while(1)

{

hc_138();

}

}

关键字:51单片机  驱动  8*8点阵 引用地址:51单片机教程:51单片机驱动四个8*8点阵

上一篇:C51教程 第二个51程序: 跑马灯 流水灯
下一篇:51单片机项目设计:超声波测距、智能小车(keil+proteus)

推荐阅读最新更新时间:2024-11-25 10:51

51单片机——按键操作
在51单片机开发板上,对按键设置进行操作,其中包括按键的按下,显示对应位置,以及按键密码锁 1.按下按键显示对应位置 main.c #include REGX52.H #include Delay.h #include LCD1602.h #include MatrixKey.h unsigned char KeyNum; void main() { LCD_Init(); LCD_ShowString(1,1, helloworld ); while(1) { KeyNum=MatrixKey(); if(KeyNum) { LCD_ShowNum(2,1,KeyNum,
[单片机]
C51全局初始化及精确延时程序,51单片机精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact :zq1987731@163.com * * Version : V2.1 γ * Corrector : QiZhao * Date : 2008.2.1 (Last modified) * * Remarks :
[单片机]
51单片机基础之定时器中断(一)
TH和TL定时换算: 定时器说白了倒数的,时间到了触发一次中断,那么必须设置倒数时间, TH0和TL0就是高八位和第八位 假设定时1ms一次,那么2的16次方等于65536,定时1ms,就等于65536-1000=64536,再把十进制换成十六进制,如下图的例子。 代码: #include reg51.h sbit LED=P2^0; //等下要用到,会看到LED闪烁,闪烁一次说明定时器中断触发了100次 typedef unsigned char u8;//typedef关键字的作用是自己重定义数据类型 typedef unsigned int u16; u16 i=0; //定义
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>基础之定时器中断(一)
开创更小、更快充电器电源时代,ST驱动与GaN集成产品问市
半导体供应商意法半导体 推出世界首个嵌入硅基半桥驱动芯片和一对氮化镓(GaN)晶体管的MasterGaN®产品平台,这个集成化解决方案将有助于加快下一代400W以下轻便节能的用于消费电子和工业充电器和电源适配器的开发速度。 GaN技术使电子设备能够处理更大功率,同时设备本身变得更小、更轻、更节能,这些改进将会改变用于智能手机的超快充电器和无线充电器、用于PC和游戏机的USB-PD紧凑型适配器,以及太阳能储电系统、不间断电源或高端OLED电视机和云服务器等工业应用。 在当今的GaN市场上,通常采用分立功率晶体管和驱动IC的方案,这要求设计人员必须学习如何让它们协同工作,实现最佳性能。意法半导体的MasterGaN方案绕
[电源管理]
开创更小、更快充电器电源时代,ST<font color='red'>驱动</font>与GaN集成产品问市
许家印强势布局,电动汽车驱动系统能迈入“理想国”吗?
近日,许家印的造车梦又上热搜。只因恒大豪掷5亿元收购泰特机电70%股份,从而拿下轮毂电机领军企业荷兰e-Traction的控制权。 轮毂电机曾被认为是电动汽车驱动系统最理想的解决方案,全球汽车工程师为之不懈奋斗,然而,产业化之路道阻且长。如今,志在实践“造车梦”的许家印强势布局,能否加速推进轮毂电机产业化,迈入电驱动系统的“理想国”呢? 答案,可能不容乐观。 (泰特轮毂电机) 全球汽车产业向电动汽车转型已经成为大势所趋,电动汽车创新驱动技术层出不穷,呈现出百花齐放、前景却扑朔迷离的局面。 当前汽车市场上的纯电动汽车,仍然是中央电机驱动为主,而且多数为单电机+单级减速器(固定速比减速器)的构型。但是,随着电动汽车高时速行驶、长
[汽车电子]
许家印强势布局,电动汽车<font color='red'>驱动</font>系统能迈入“理想国”吗?
基于mini2440的UDA1341音频驱动架构分析
Mini2440开发板 Kernel:linux 2.6.32.2 音频基于i2s总线接口(和l3总线接口对混音器进行设置) Linux ASoC音频设备驱动 ASoC驱动的组成 ASoC(ALSA System on Chip)是ALSA在SoC方面的发展和演变,它在本质上仍然属于ALSA,但是在ALSA架构的基础上对CPU相关的代码和CODEC相关的代码进行了分离。其原因是,采用传统ALSA架构的情况下,同一型号的CODEC工作于不同的CPU时,需要不同的驱动,这不符合代码重用的要求。 ASoC主要由3部分组成。 (1)CODEC驱动。这一部分只关心CODEC本身,与CPU平台相关的特性不由此部分操作。 (2)平台驱动。这一部
[单片机]
让创新驱动未来——世强2015创新技术巡回研讨会回顾
无论是微信的迅速崛起还是苹果用40年写下的伟大传奇,都让我们看到一个个了不起的企业如何用源源不断的创新精神驱动公司前进。而上周刚刚结束的世强2015创新技术巡回研讨会则展示了那些推进技术创新的幕后英雄,让与会的近800名研发工程师以管窥豹,了解这些创新产品将如何推动未来行业市场的变革。 本次研讨会于4月21日在深圳首站开启,随后巡回北京、上海、杭州、南京,结合各地用户情况分设微波通信、消费电子、汽车电子、工业电子等论坛,将世强旗下代理的来自欧美和日系原厂自2015年以来发布的最新产品和技术方案进行整合、分享。会议还得到原厂的大力支持,他们亲临各站现场并带来最新的方案演示。 Small cell,低功耗,无线互联,智能汽车,
[嵌入式]
让创新<font color='red'>驱动</font>未来——世强2015创新技术巡回研讨会回顾
LED线性驱动和开关型驱动
驱动方案一般来说有两种: 线性驱动和开关型驱动。   线性驱动应用是一种最为简单和最为直接的驱动应用方式。在照明级白光LED应用中,虽然存在着效率低、调节性差等问题,但是由于其电路简单、体积小巧,能满足一些特定的场合应用较多。   开关型驱动可以获得良好的电流控制精度和较高的总体效率,应用方式主要分为降压式和升压式两大类。降压式开关驱动是针对电源电压高于led的端电压或者是多个LED采用并联驱动情况下的应用。升压式开关驱动是针对电源电压低于LED的端电压或者是多个LED采用串联驱动情况下的应用。   一般认为,隔离型驱动安全但效率较低,非隔离型驱动效率较高,应按实际使用的要求来选。  目前设计一般的基本LED驱动器照明应
[电源管理]

推荐帖子

共晶材料的选择及焊接温度的控制 高亮度LED封装工艺及方案
芯片设计从芯片的演变历程中发现,各大LED生产商在上游磊晶技术上不断改进,如利用不同的电极设计控制电流密度,利用ITO薄膜技术令通过LED的电流能平均分布等,使在结构上都尽可能产生最多的。再运用各种不同方法去抽出LED发出的每一粒光子,如生产不同外形的芯片;利用芯片周边有效地控制光折射度提高LED取率,研制扩大单一芯片表面尺寸(2mm2)增加发光面积,更有利用粗糙的表面增加光线的透出等等。有一些高亮度LED芯片上p-n两个电极的位置相距拉近,令芯片发光效率及散热能力提高。而最近已有的生产
探路者 LED专区
ADI最新中文资料(2018年1月)
转自:https://ezchina.analog.com/thread/17635电子书E-BOOK。ADI参考电路设计——仪器仪表选集数据手册DATASHEETS。ADGS5414:SPI接口,八路SPST开关,13.5ΩRON,±20V/+36V,多路复用器ADGS1212:SPI接口、四路SPST开关、低QINJ、低CON、±15V/+12V、多路可配置技术文章TECHNICALARTICLE。Ka频段需要更多带宽?
鲁宾汗 模拟电子
监控系统的接地与防雷接地2009思考[转]
监控系统的接地与防雷接地监控系统的接地与防雷接地有矛盾么?有!!!有的防雷器产品厂家明确主张“到处接地”,特别指出摄像机要接地;为了防雷制造了“多点接地”,那地环路问题怎么办?监控系统的接地要求是:系统(主机)单点接地——摄像机不接地,那防雷又怎么办?这都是尖锐的问题、有趣的问题,又是很久以来许多人一直关注的问题!!!。一个网友问:“多点接地可以防雷却制造地环路干扰,单点接地虽可排除地环路干扰,但能防雷吗?”这个问题提得太好了!!值得深思和重视。不过,我也要提醒的发问:“多点接地真能
xyh_521 安防电子
【米尔MYD-YG2LX开发板】在工控领域的应用-在PLC上的应用
前言本文介绍基于【米尔MYD-YG2LX开发板】在工控领域的应用,在PLC领域的应用。开发环境基于WSL2.使用Beremiz。Beremiz官网https://beremiz.org/下载https://github.com/beremiz/beremiz/releases如果下载不稳定经常断,可以使用wget下载wgethttps://github.com/beremiz/beremiz/releases/dow
qinyunti 工控电子
放大电路的频率响应
频率响应通常亦称频率特性,频率响应或频率特性是衡量放大电路对不同频率输入信号适应能力的一项技术指标。实质上,频率响应就是指放大器的增益与频率的关系。通常讲一个好的放大器,不但要有足够的放大倍数,而且要有良好的保真性能,即:放大器的非线性失真要小,放大器的频率响应要好。“好”:指放大器对不同频率的信号要有同等的放大。之所以放大器具有频率响应问题,原因有二:一是实际放大的信号频率不是单一的;(电视图像信号的频率在0~6mhz之间);二是放大器具有电抗元件和电
fighting 模拟电子
有关FIFO操作fifo的问题
我用软件自带的IP核去调用FIFO的,参数都设置好后,我用signals:std_logic_vector(7downto0);process(filter_clk)beginifrising_edge(filter_clk)thens=s+1;filter_dat_out=s;endif;。。去给fifo写入数据然后再Niosii里面的C语言语句:if(READ_EMPTY==1){printf(\"sdhkhk
tpengti FPGA/CPLD
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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