/**************************************************************************************
实验现象: 下载程序后,插上带字库LCD12864,显示字符、汉字信息
接线说明: 1:STC8A单片机-->LCD12864液晶模块(带字库)(需自行购买)
J42-->J22(P00-->P00)
P25-->P25
P26-->P26
P27-->P27
注意事项: USB连接线给开发板通电下载程序,STC下载软件中内部IRC时钟选择11.0592MHZ
***************************************************************************************/
#include "STC8.H"
#include "intrins.h"
#define MAIN_Fosc 11059200L //定义主时钟
#define uint8 unsigned char
#define uint16 unsigned int
/**********************
引脚别名定义
***********************/
sbit RS=P2^6; //LCD12864 RS端
sbit RW=P2^5; //LCD12864 RW端
sbit E =P2^7; //LCD12864 E 端
/**************************************
功能描述:延时函数
入口参数:uint16 x ,该值为1时,延时1ms
返回值:无
***************************************/
void delay_ms(uint16 x)
{
uint16 j,i;
for(j=0;j<x;j++)
{
for(i=0;i<1100;i++);
}
}
/***************************************************************************
* 描 述 : LCD12864液晶测忙子程序(读状态)
* 入 参 : 无
* 返回值 : 无
**************************************************************************/
void Busy()
{
uint8 busy;
do
{
E = 0; //0为关闭使能端,1为打开使能端
RS = 0; //1为指令,0为数据
RW = 1; //1为读,0为写
delay_ms(1);
E = 1; //0为关闭使能端,1为打开使能端
P0M0=0x00;
P0M0=0x00; //设置P0.0~P0.7为准双向口
busy=P2; //读取P2状态
delay_ms(1);
E = 0; //0为关闭使能端,1为打开使能端
}while(busy&0x80); //判断BUSY位是否工作:1为内部在工作,0为正常状态
}
/***************************************************************************
* 描 述 : LCD12864液晶数据写入子程序
* 入 参 : uint8 k 输入数据
* 返回值 : 无
**************************************************************************/
void Write_Data(uint8 k)
{
Busy(); //测忙
E =1; //0为关闭使能端,1为打开使能端
RS=1; //1为指令,0为数据
RW=0; //1为读,0为写
P0M1 = 0; //设置P2.0~P2.7为推挽输出
P0M0 = 0xff; //设置P2.0~P2.7为推挽输出
P0=k; //输入数据K到DATA
delay_ms(1);
E =0; //0为关闭使能端,1为打开使能端
delay_ms(1);
}
/***************************************************************************
* 描 述 : LCD12864液晶命令写入子程序
* 入 参 : uint8 cmd 输入命令
* 返回值 : 无
**************************************************************************/
void Write_Cmd(uint8 cmd)
{
Busy(); //测忙
E=1; //0为关闭使能端,1为打开使能端
RS=0; //1为指令,0为数据
RW=0; //1为读,0为写
P0M1 = 0; //设置P2.0~P2.7为推挽输出
P0M0 = 0xff; //设置P2.0~P2.7为推挽输出
P0=cmd; //输入命令cmd到DATA
delay_ms(1);
E=0; //0为关闭使能端,1为打开使能端
delay_ms(1);
}
/***************************************************************************
* 描 述 : LCD12864液晶数据显示子程序
* 入 参 : uint8 y 行,uint8 x 列,uint8 i 数据大小,uint8 *z 显示内容
* 返回值 : 无
**************************************************************************/
void Disp(uint8 y,uint8 x,uint8 i,uint8 *z)
{
uint8 Address;
if(y==1)
{
Address=0x80+x;
}
//Y判断第几行,X判断第几列,0x80为液晶行初始地址
if(y==2){Address=0x90+x;}
if(y==3){Address=0x88+x;}
if(y==4){Address=0x98+x;}
Write_Cmd(Address); //写入地址命令到LCD12864
while(i) //写入显示数据的大小
{
Write_Data(*(z++)); //写入显示数据到LCD12864
i--;
}
}
/***************************************************************************
* 描 述 : LCD12864液晶初始化子程序
* 入 参 : 无
* 返回值 : 无
**************************************************************************/
void Ini_Lcd(void)
{
delay_ms(1);
Write_Cmd(0x30); //基本指令集
delay_ms(1);
Write_Cmd(0x02); // 地址归位
delay_ms(1);
Write_Cmd(0x0c); //整体显示打开,游标关闭
delay_ms(1);
Write_Cmd(0x06); //游标右移
delay_ms(1);
Write_Cmd(0x80); //设定显示的起始地址
delay_ms(1);
Write_Cmd(0x01); //清除显示
}
/***************************************************************************
* 描 述 : 主函数
* 入 参 : 无
* 返回值 : 无
**************************************************************************/
int main()
{
Ini_Lcd(); //液晶初始化子程序
Disp(1,0,16,"LCD12864显示测试"); //显示数据到LCD12864子程序
Disp(2,0,15," STC8A8K64S4A12"); //显示数据到LCD12864子程序
Disp(3,1,12,"STC8单片机开发板"); //显示数据到LCD12864子程序
Disp(4,1,14,"----普中科技"); //显示数据到LCD12864子程序
while(1)
{
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于STC8A单片机基础实验例程源码之-LCD12864液晶屏实验(带字库).zip
共8个文件
uvopt:1个
template:1个
m51:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 169 浏览量
2023-11-28
20:44:38
上传
评论
收藏 25KB ZIP 举报
温馨提示
基于STC8A单片机基础实验例程源码之-LCD12864液晶屏实验(带字库).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于STC8A单片机基础实验例程源码之-LCD12864液晶屏实验(带字库).zip (8个子文件)
基于STC8A单片机基础实验例程源码之-LCD12864液晶屏实验(带字库)
template.M51 9KB
template 22KB
template.uvgui.Administrator 132KB
template.uvproj 13KB
template_Target 1.cfg 20B
template.hex 1KB
main.c 5KB
template.uvopt 6KB
共 8 条
- 1
资源评论
GJZGRB
- 粉丝: 1639
- 资源: 6448
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功