文档"C51PG12864fproteus仿真.doc"主要介绍的是如何使用C51单片机配合Proteus软件进行12864液晶显示器的仿真和编程。C51单片机是基于8051内核的微控制器,广泛应用于嵌入式系统设计。Proteus则是一款强大的电子设计自动化工具,支持硬件电路仿真和嵌入式软件的模拟。
在本例中,作者将一个原本使用AVR单片机的项目转换为C51单片机实现,通过修改仿真图和程序,成功实现了12864液晶显示。虽然没有提供PG12864f的具体资料,但作者指出,其工作原理与常见的1206液晶显示屏相似。
仿真总图和单片机接线图是理解整个项目的关键,它们展示了C51单片机与12864液晶屏的物理连接。根据描述,液晶屏的接口由以下引脚控制:
1. 写数据(wr):P2^0
2. 读数据(rd):P2^1
3. 使能(ce):P2^2
4. 寄存器选择(cd):P2^3
5. 重置(rst):P2^4
程序中定义了相应的sbit变量来控制这些引脚的状态。
在C51程序中,关键函数包括:
1. `delay(uint t)`: 延时函数,用于控制操作之间的时序。
2. `init_12864()`: 初始化12864液晶屏,设置引脚状态并执行必要的初始化命令。
3. `write_data(uchar dat)`: 向液晶屏写入数据。
4. `write_cmd1(uchar cmd)`、`write_cmd2(uchar dat,uchar cmd)`、`write_cmd3(uchar data1,uchar data2,uchar cmd)`: 分别用于发送不同的控制命令,如设置地址、写入字符等。
5. `read_status()`: 读取液晶屏的状态。
6. `check_status()`: 检查液晶屏的状态。
7. `clear_screen()`: 清除屏幕内容。
8. `display_char(uchar x,uchar y,uchar ch)`: 在指定位置(x, y)显示字符ch。
在主函数`main()`中,首先调用`init_12864()`初始化液晶屏,然后在屏幕上逐行显示数字0到127,最后清空屏幕。`display_char()`函数使用了地址计算和字符映射,确保字符显示在正确的位置上。
总体来说,这份文档提供了一个基于C51单片机的12864液晶屏控制实例,通过Proteus仿真验证了程序的正确性。对于学习8051单片机和液晶显示控制的初学者来说,这是一个很好的实践项目。