AT892051单片机汉字点阵滚动显示源码
需积分: 9 187 浏览量
更新于2024-11-30
收藏 10KB TXT 举报
"该资源提供了一个基于80C51系列单片机(如AT892051)的汉字点阵滚动指示牌的源程序。程序实现了汉字字符的滚动显示,通过调整SPEED变量可以改变滚动速度,且包含了将两个字节数据转换为点阵列的函数two_onebyte()。"
这篇代码描述了一个简单的汉字滚动显示系统,适用于80C51系列的微控制器,如S52和S2052。程序的核心是通过处理存储在HZ数组中的汉字点阵数据来实现动态显示。以下是对主要知识点的详细解释:
1. **数据类型定义**:`uchar` 和 `uint` 是自定义的数据类型别名,分别代表无符号字符型和无符号整型,它们通常用于节省内存空间。
2. **头文件引用**:`#include<AT892051.H>` 引入了针对AT892051单片机的特定头文件,包含了与该芯片相关的寄存器定义和函数声明。
3. **变量定义**:
- `col` 和 `disrow` 分别表示当前显示的列和行。
- `word` 用于追踪当前显示的汉字编码位置。
- `BUFF[6]` 临时存储一行汉字点阵数据的缓冲区。
- `HZ[]` 是一个二维数组,存储了所有汉字的点阵数据。
4. **宏定义**:
- `SPEED` 定义了滚动的速度,数字越大滚动越慢。
5. **函数定义**:
- `two_onebyte()` 函数将两个字节的数据融合为一个新的字节,用于生成点阵列。它根据`col`值决定如何混合两个字节,然后取反以适应显示器的工作方式。
- `loadoneline()` 函数负责加载一行汉字点阵数据到缓冲区BUFF中,根据当前的`word`和`disrow`计算出正确的点阵数据。
- `sendoneline()` 函数将缓冲区中的数据发送到显示器,通过调用`SBUF`发送数据并等待发送完成标志`TI`。
6. **主函数`main()`**:
- 在无限循环中,程序按列逐个显示汉字,每列显示`SPEED`次,然后移动到下一行。当所有列都显示完毕后,`word`向后移动32(一个汉字的宽度),如果超过最大值则重置回零,保证了连续滚动。
7. **汉字点阵数据**:`HZ[]`数组包含了一系列的汉字点阵编码,每个汉字由多个字节组成,对应16x16点阵的每一位。这些数据通常是预先通过点阵字库生成。
8. **I/O操作**:`P1`口的设置用于控制显示器的行选择,通过`P1=0x10+disrow`和`P1=0x20+disrow`交替改变行选择信号,使得显示的汉字能够滚动。
这个程序利用了80C51系列单片机的特性,结合硬件接口,实现了汉字点阵滚动显示的功能,具有一定的可定制性和实用性。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-04-24 上传
2022-01-14 上传
2022-11-28 上传
2009-09-14 上传
2023-02-17 上传
106 浏览量
oppwang
- 粉丝: 1
- 资源: 1
最新资源
- Python中快速友好的MessagePack序列化库msgspec
- 大学生社团管理系统设计与实现
- 基于Netbeans和JavaFX的宿舍管理系统开发与实践
- NodeJS打造Discord机器人:kazzcord功能全解析
- 小学教学与管理一体化:校务管理系统v***
- AppDeploy neXtGen:无需代理的Windows AD集成软件自动分发
- 基于SSM和JSP技术的网上商城系统开发
- 探索ANOIRA16的GitHub托管测试网站之路
- 语音性别识别:机器学习模型的精确度提升策略
- 利用MATLAB代码让古董486电脑焕发新生
- Erlang VM上的分布式生命游戏实现与Elixir设计
- 一键下载管理 - Go to Downloads-crx插件
- Java SSM框架开发的客户关系管理系统
- 使用SQL数据库和Django开发应用程序指南
- Spring Security实战指南:详细示例与应用
- Quarkus项目测试展示柜:Cucumber与FitNesse实践