第七篇 亚龙236 led 16*32点阵显示显示汉字

亚龙236设备显示模块有led点阵,16*32点阵可以显示汉字或图形。
这个模块只能教学用,实际的户外屏用的电路和它从原理上不一样。数码管模块也一样和常用电路不一样。但是竞赛都用 -!
led点阵共32列。每8列成一组,共四组,每次写入一组的数据,四次写完一行数据,再驱动这一行,通过uln2803供电让它显示。显示1ms再刷下一行数据,再点下一行。
点阵共16行,行驱动使用uln2803达林顿扩流,分上下两半屏写入数据。16行工作时只有一行给高电平,通过uln2803使得这一行得电能亮。
具体电路见pdf文档。

proteus画图时为了好看把驱动电路和led点阵分开画在两页了。

代码:

/*
教学使用
李枝蔚 西峰职专
*/
#include <reg52.h>
//用户数据类型定义
#define uchar unsigned char
#define uint unsigned int
//硬件连接定义
sbit row0 = P3 ^ 4;        //上半屏选通信号 低电平有效
sbit row1 = P3 ^ 5;        //下半屏
sbit col0 = P3 ^ 0;            //第一组选通信号。低电平有效
sbit col1 = P3 ^ 1;            //第二组选通信号
sbit col2 = P3 ^ 2;            //第三组
sbit col3 = P3 ^ 3;            //第四组
#define mat_port P0     //点阵数据端口
//用户全局变量定义
bit mat_refresh_en = 0;        //点阵刷新使能标志,每1ms刷新一次,显示16行的其中一行
uchar i=0;                         //循环变量
uchar code line_sel[16] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
uchar code mat_hz[4][16] = {{0x00,0x00,0x3F,0x20,0xA0,0x92,0x54,0x28,0x08,0x14,0x24,0xA2,0x81,0x40,0x20,0x10},
{0x01,0x01,0x01,0x3F,0x20,0x10,0x02,0x02,0x02,0x05,0x05,0x08,0x08,0x10,0x20,0x40},/*"欢",0*/
{0x00,0x04,0xC8,0x48,0x40,0x40,0x4F,0x48,0x48,0x48,0xC8,0x48,0x08,0x14,0xE2,0x00},
{0x00,0x01,0x3C,0x24,0x24,0x24,0x24,0x24,0x24,0x2D,0x14,0x04,0x04,0x04,0x7F,0x00},/*"迎",1*/
};
//------------------------------------------------------------------------------------
void delay_us()  //空延时函数,大概延时4.34us在11.0592mhz时钟下
{;
}/*************************************************************************************************函数名称:mat_ls373_clr函数功能:点阵字模显示驱动函数,锁存器全选写0,用于锁存清零入口参数:无出口参数:无备    注:
**************************************************************************************************/
void mat_ls373_clr()
{mat_port = 0x00;col0 = 1;col1 = 1;col2 = 1;col3 = 1;row0 = 1;row1 = 1;
}/*************************************************************************************************函数名称:mat_ls373_latch函数功能:点阵字模显示驱动函数,锁存器全不选,用于封锁锁存器入口参数:无出口参数:无备    注:
**************************************************************************************************/
void mat_ls373_latch()
{col0 = 0;col1 = 0;col2 = 0;col3 = 0;row0 = 0;row1 = 0;
}/*************************************************************************************************函数名称:mat_Wr_Line函数功能:点阵字模显示驱动函数,第k行点阵入口参数:char k ,要点亮第k行点阵出口参数:无备    注:
**************************************************************************************************/
void mat_Wr_Line(char k)
{mat_port = line_sel[k];delay_us();if (k < 8)               //行号小于8选上半屏,否则下半屏选中{row0 = 1;       //上半屏选中row1 = 0;       //下半屏不选中}else{row0 = 0;        //上半屏不选row1 = 1;       //下半屏选中}
}/*************************************************************************************************函数名称:mat_Init函数功能:点阵字模显示驱动函数,用于清零锁存器(黑屏)并且封锁锁存器 ,入口参数:char m 字模数组hz [4][16],出口参数:无备    注:
**************************************************************************************************/
void mat_Init()
{mat_ls373_clr();       //清零所有锁存器delay_us();mat_ls373_latch();  //关闭  锁存器
}/*************************************************************************************************函数名称:mat_wr_data函数功能:点阵字模显示驱动函数,锁存字模数组中的一个字节到74ls373行锁存器入口参数:char m 字模数组hz [4][16],出口参数:无备    注:
**************************************************************************************************/
void mat_wr_data(char m[4][16],k,l)
{mat_port = m[l][k];                   //汉字字模4列 16行switch (l)                      //四组 列组 判别{case 0:                          //若果l=0 表示数据要显示到第一列col0 = 1;break;case 1:                         //第二列col1 = 1;break;case 2:col2 = 1;break;case 3:col3 = 1;break;}//delay_us();                   //如果显示不稳就加短延时,mat_ls373_latch();         //封锁  锁存器   }/*************************************************************************************************函数名称:mat_dis函数功能:点阵字模显示函数,显示数组中的汉字点阵入口参数:char m 字模数组hz [4][16],出口参数:无备    注:
**************************************************************************************************/
void mat_dis(char m[4][16])
{uchar  j = 0;                                         //列数 mat_column  亚龙台子是4列if( mat_refresh_en==1)                        //如果点阵刷新使能==1 则{mat_Init();                                       //消隐for (j = 0; j < 4; j++)                       //for循环四次 ,写4列数据{mat_wr_data(m,i,j);                     //写第i行字模4字节到缓存ls373}            mat_Wr_Line(i);                             //选择第i行点亮mat_refresh_en=0;                         //关闭刷新使能,确保1ms之内只刷新一行点阵i++;                                                    //准备下一行 行号if (i>15) i=0;                                    //16行完了 归零}     // ---if( mat_refresh_en==1)
}
//定时器T0 初始化
void t0_init()
{TMOD = 0x01;                  //定时器赋初值TH0 = (65536 - 960) / 256;TL0 = (65536 - 960) % 256;ET0 = 1;TR0 = 1;EA = 1;                            //开中断
}//
void main(void)
{t0_init();         //t0定时器 初始化mat_Init();      //点阵初始化  黑屏  可以不用while (1)          //主循环{  mat_dis(mat_hz);}
}           void zhongduan(void) interrupt 1        //常规上不能在中断里处理太多任务 ,设定标志位,在主程序中处理
{TL0 = (65536 - 915) % 256;            //重置定时器 11.592-对应-1msTH0 = (65536 - 915)/ 256; mat_refresh_en=1;                  //每1ms 置位一次 mat_refresh_en ,使能点阵刷新
}

效果

第七篇 亚龙236 led 16*32点阵显示显示汉字相关推荐

  1. 基于51单片机16*32点阵显示屏的设计与实现

    文章目录 设计要求 一.开发软件 1.Keil 2.Proteus 3.PCtol2002 4.Altium Designer 二.硬件部分 1.51单片机最小系统 2.LED点阵屏 3.74HC59 ...

  2. c语言16x32点阵显示汉字,点阵16*32滚屏显示汉字

    // matrix2pcs20140821.ino const int SH_CP = 8; const int DS = 9; const int ST_CP = 10; //声明4个数组临时变量 ...

  3. 16*32点阵c语言,16*32点阵的原理

    一.总体方案 1.工作原理 利用单片机STC系列单片机作为本系统的中控模块.单片机可把由DS18B20.DS1302读来的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度.日历的显示.点阵l ...

  4. 第三篇:动态 8位数码管显示---亚龙236电路

    第三篇:动态8位数码管显示 -亚龙236电路 上一篇中已经实现了数码管的静态显示,如果按照上一篇的思路89s52芯片最多可以驱动4位数码管.这一节我们来看看其它显示更多位数的方案. 目前最常用的是 5 ...

  5. CCNA-第七篇-思科私有路由协议-EIGRP-初级

    CCNA-第七篇-思科私有路由协议-EIGRP 首先呢这个EIGRP之前呢, 路由协议是分几种的 一个叫距离向量协议RIP,IGRP(都过时了) 一个觉链路状态协议OSPF,IS-IS这些 还有个叫混 ...

  6. 转载 解密蓝牙mesh系列 | 第七篇【低功耗蓝牙】【承载层(bearer layer)】【节点与特性】【代理节点(Proxy Node)】【蓝牙mesh代理服务】【发现代理节点】【代理协议】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  7. WinDbg调试CPU占用高的问题 试验+实战 《第七篇》

    WinDbg调试CPU占用高的问题 试验+实战 <第七篇> 一.High CPU试验 1.示例代码 static void Main(string[] args){Console.Clea ...

  8. MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用

    MySQL数据库,从入门到精通:第七篇--MySQL单行函数应用 第七篇_单行函数 1. 函数的理解 1.1 什么是函数 1.2 不同DBMS函数的差异 2. 数值函数 2.1 基本函数 2.3 三角 ...

  9. 从零开始写项目第七篇【搭建Linux环境】

    tags: 从零开发项目, title: 从零开始写项目第七篇[搭建Linux环境] 使用SSH连接Linux环境 经过十多天的时间,我的网站备案终于完成了...接下来我就收到了阿里云的邮件.它让我在 ...

最新文章

  1. 彻底解决swf浏览器的缓存问题
  2. 2D图像生成3D点云补充材料chamfer distance和EMD
  3. python调用metasploit自动攻击_Python脚本与Metasploit交互进行自动永恒之蓝攻击-Go语言中文社区...
  4. js的一些function
  5. recover/panic
  6. C语言和C++中如何编写交换两个整形变量值的函数
  7. mid=(left+right)1什么含义
  8. 微信客服系统开发SDK使用教程-给好友发消息任务
  9. python处理出租车轨迹数据_1-出租车数据的基础处理,由gps生成OD(pandas).ipynb...
  10. Java ssm框架是什么?
  11. 计算机验证菜单命令的各种特性,2017年CAD工程师认证单选题「附答案」
  12. layui 确认,取消弹窗
  13. word论文排版插件_推荐一款强大的word插件,一键排版,好用到爆!
  14. AVR单片机ATMEGA16编译软件ICCAVR的使用技巧与应用示例
  15. C++ ActiveX基础1 使用VS2015创建MFC ActiveX工程项目
  16. ESP8266连接TFT(ST7789)配置说明
  17. Unity3D Shader 新手教程(2/6) —— 积雪Shader
  18. 动漫美少女生成神器、猫的门禁...2019年十七大最佳机器学习项目 |年度盘点①...
  19. 计算机网络状态不存在,IP地址是什么?我地电脑上不去网,有时显示IP地址不存在是怎么了...
  20. 造血干细胞扩增、转染以及基因编辑优化解决方案

热门文章

  1. PTZ摄像机中PTZ分别代表什么?
  2. 《开源思索集》一欢迎来到异步社区!
  3. 大数据 | Spark on K8S 在有赞的实践
  4. 2021前端面经-看这篇就够了(笔者靠这个拿到阿里和字节的offer)
  5. 物业系统源码,智慧物业系统源码
  6. TMDSEVM6657LS评估板恢复出厂默认状态
  7. Python学习心得第一周-01
  8. 用友华表Cell一些用法小结(cs.net版本)
  9. APE (Monkey's Audio) 音频编码插件for Nero Burning ROM
  10. ATMega328P-PU芯片Arduino最小系统实验