把以上的LCD1602显示器换成JLX12864的代码
时间: 2024-03-21 17:40:36 浏览: 126
好的,以下是您需要的代码:
```c
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit lcd_rs = P2^0; //LCD 12864显示屏引脚定义
sbit lcd_rw = P2^1;
sbit lcd_en = P2^2;
sbit lcd_cs1 = P2^3;
sbit lcd_cs2 = P2^4;
sbit lcd_rst = P2^5;
sbit lcd_a0 = P1^0; //LCD 12864显示屏A0引脚定义
sbit lcd_e = P1^1; //LCD 12864显示屏E引脚定义
sbit key1 = P1^2; //按键引脚定义
sbit key2 = P1^3;
void init_lcd(); //LCD初始化函数
void write_cmd(uchar cmd); //写入命令函数
void write_data(uchar dat); //写入数据函数
void delay(uint z); //延时函数
void relay_on(uchar n); //控制继电器开启
void relay_off(uchar n); //控制继电器关闭
void main()
{
uchar key_value = 0; //按键状态变量
init_lcd(); //初始化LCD显示屏
while(1)
{
key_value = P1; //读取按键状态
if(key_value == 0x04) //按键1按下
{
relay_on(1); //控制继电器1打开
delay(1000); //延时1秒
relay_off(1); //控制继电器1关闭
}
else if(key_value == 0x08) //按键2按下
{
relay_on(2); //控制继电器2打开
delay(2000); //延时2秒
relay_off(2); //控制继电器2关闭
}
}
}
void init_lcd()
{
lcd_rst = 0; //复位LCD显示屏
delay(10);
lcd_rst = 1;
delay(10);
write_cmd(0xe2); //软件复位
delay(5);
write_cmd(0x40); //显示位置基地址设置为0
delay(5);
write_cmd(0xa2); //1/9偏压比
delay(5);
write_cmd(0xa0); //列地址按照从左到右顺序
delay(5);
write_cmd(0xc8); //行地址按照从下到上顺序
delay(5);
write_cmd(0x2f); //开启半点显示和显示开关
delay(5);
write_cmd(0xaf); //开启显示
delay(5);
}
void write_cmd(uchar cmd)
{
lcd_cs1 = 0; //选择第一个芯片
lcd_rs = 0; //选择命令模式
lcd_rw = 0; //选择写入模式
lcd_e = 0; //使能信号置低
lcd_a0 = 0; //选择指令
P0 = cmd; //写入命令
delay(5); //延时
lcd_e = 1; //使能信号置高
delay(5); //延时
lcd_e = 0; //使能信号置低
delay(5); //延时
lcd_cs1 = 1; //取消芯片选择
}
void write_data(uchar dat)
{
lcd_cs1 = 0; //选择第一个芯片
lcd_rs = 1; //选择数据模式
lcd_rw = 0; //选择写入模式
lcd_e = 0; //使能信号置低
lcd_a0 = 1; //选择数据
P0 = dat; //写入数据
delay(5); //延时
lcd_e = 1; //使能信号置高
delay(5); //延时
lcd_e = 0; //使能信号置低
delay(5); //延时
lcd_cs1 = 1; //取消芯片选择
}
void delay(uint z)
{
uint x, y;
for(x=z; x>0; x--)
{
for(y=110; y>0; y--);
}
}
void relay_on(uchar n)
{
switch(n)
{
case 1: P1 |= 0x04; break;
case 2: P1 |= 0x08; break;
default: break;
}
}
void relay_off(uchar n)
{
switch(n)
{
case 1: P1 &= 0xfb; break;
case 2: P1 &= 0xf7; break;
default: break;
}
}
```
注意事项:
1. 该代码使用的是8051单片机的keil编译器进行编译,所以需要在keil编译器中新建一个工程,将该代码复制到工程文件中,然后编译即可。
2. 该代码中使用了JLX12864显示屏,需要将JLX12864的引脚连接到STC89C52的P2.0、P2.1、P2.2、P2.3、P2.4、P2.5上,并且需要在代码中进行引脚定义。
3. 该代码中使用了两个按键,分别连接到STC89C52的P1.2、P1.3上,并且需要在代码中进行引脚定义。
4. 该代码中使用了2个继电器,分别连接到STC89C52的P1.2、P1.3上,并且需要在代码中进行引脚定义。
5. 该代码中的继电器控制函数relay_on()和relay_off()可以根据实际需求进行修改,比如可以添加控制继电器同时打开或关闭的功能。
阅读全文