51单片机JLX12864G-350程序不带字库
时间: 2023-08-14 11:03:54 浏览: 50
你好!对于51单片机JLX12864G-350的程序,如果没有字库,你将无法使用显示屏来显示任何字符。字库是存储字符的点阵信息的集合,它们用于在显示屏上绘制文字。如果你的程序没有字库,你需要先获取一个字库文件,并将其导入到你的程序中。
通常情况下,你可以在相关的开发工具或者官方文档中找到字库文件。如果没有提供字库文件,你可能需要自行创建或者下载一个合适的字库文件。一些常见的字库文件格式包括ASCII码字库和汉字字库。
一旦你获得了字库文件,你需要将其导入到你的程序中,并使用相应的函数或者库来在显示屏上显示字符。具体的导入方法和函数调用方式可能会因使用的开发工具和编程语言而有所不同。你可以参考开发工具或者官方文档提供的示例代码和说明来完成这一步。
希望这些信息对你有所帮助!如果你有任何其他问题,请随时提问。
相关问题
用JLX12864G-350和 DS3231时钟写一个51单片机显示时间的程序
当使用JLX12864G-350和DS3231时钟模块来显示时间时,你可以按照以下步骤进行:
1. 连接硬件:将JLX12864G-350显示屏和DS3231时钟模块连接到51单片机。确保连接正确并使用正确的引脚。
2. 初始化DS3231时钟模块:使用相应的库函数初始化DS3231时钟模块,设置正确的时间和日期。这通常涉及到设置I2C总线通信,并发送相应的命令和数据来设置时间和日期。
3. 编写显示函数:编写一个函数来从DS3231时钟模块读取当前时间和日期,并将其显示在JLX12864G-350显示屏上。这涉及到读取DS3231的寄存器来获取时间和日期数据,并将其转换为可读格式。
4. 主程序循环:在主程序中,设置一个循环来反复调用显示函数,以便实时更新显示屏上的时间。
下面是一个简单的示例程序,演示了如何使用JLX12864G-350和DS3231时钟模块来显示时间:
```c
#include <reg51.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义JLX12864G-350相关引脚连接
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
sbit LCD_CS1 = P2^3;
sbit LCD_RST = P2^4;
sbit LCD_DATAPORT = P0;
// 定义DS3231相关引脚连接
sbit SDA = P3^4;
sbit SCL = P3^5;
// 定义全局变量
unsigned char time[8];
// I2C起始信号
void I2C_Start()
{
SDA = 1;
SCL = 1;
delay(5);
SDA = 0;
delay(5);
SCL = 0;
delay(5);
}
// I2C停止信号
void I2C_Stop()
{
SDA = 0;
SCL = 1;
delay(5);
SDA = 1;
delay(5);
}
// I2C发送一个字节
void I2C_SendByte(unsigned char dat)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
SDA = dat >> (7 - i);
SCL = 1;
delay(2);
SCL = 0;
delay(2);
}
SDA = 1;
SCL = 1;
delay(2);
SCL = 0;
}
// I2C接收一个字节
unsigned char I2C_ReceiveByte()
{
unsigned char i, dat = 0;
for (i = 0; i < 8; i++)
{
SCL = 1;
dat <<= 1;
dat |= SDA;
delay(2);
SCL = 0;
delay(2);
}
return dat;
}
// 从DS3231读取时间和日期
void ReadTimeFromDS3231()
{
unsigned char i;
I2C_Start();
I2C_SendByte(0xD0); // 发送DS3231的写地址
I2C_SendByte(0x00); // 发送读取时间寄存器的地址
I2C_Stop();
I2C_Start();
I2C_SendByte(0xD1); // 发送DS3231的读地址
for (i = 0; i < 7; i++)
{
time[i] = I2C_ReceiveByte(); // 读取时间和日期
if (i < 6)
{
I2C_SendByte(0x00); // 发送继续读取的命令
}
}
I2C_Stop();
}
// 在JLX12864G-350显示屏上显示时间
void DisplayTimeOnLCD()
{
unsigned char i;
LCD_CS1 = 0;
LCD_RST = 0;
delay(2);
LCD_RST = 1;
delay(2);
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 1;
delay(2);
LCD_EN = 0;
delay(2);
LCD_RS = 1;
for (i = 0; i < 8; i++)
{
LCD_EN = 1;
LCD_RW = 0;
LCD_DATAPORT = time[i];
delay(2);
LCD_EN = 0;
delay(2);
}
}
// 主函数
void main()
{
while (1)
{
ReadTimeFromDS3231(); // 从DS3231读取时间和日期
DisplayTimeOnLCD(); // 在JLX12864G-350显示屏上显示时间
delay(1000); // 延时1秒
}
}
```
请注意,以上示例程序仅供参考,具体的实现可能因你使用的开发工具和库函数而有所不同。在实际使用中,你需要根据硬件连接和库函数的要求进行适当的修改。
希望这个示例能帮到你!如果还有其他问题,请随时提问。
c51单片机温度传感器dht11JLX12864G-086显示
要使用c51单片机和温度传感器dht11以及JLX12864G-086显示器来显示温度值,可以按照以下步骤进行操作:
1. 连接硬件:将dht11传感器的VCC引脚连接到单片机的5V电源,GND引脚连接到单片机的GND,DATA引脚连接到单片机的P1.0口;将JLX12864G-086显示器的VCC引脚连接到单片机的5V电源,GND引脚连接到单片机的GND,CS引脚连接到单片机的P2.7口,SID引脚连接到单片机的P2.5口,SCLK引脚连接到单片机的P2.6口,RST引脚连接到单片机的P2.4口。
2. 编写程序:使用c语言编写程序,包括初始化dht11传感器和JLX12864G-086显示器,读取dht11传感器的温度值并将其转换为字符串格式,然后在JLX12864G-086显示器上显示该温度值。
3. 调试程序:将程序下载到单片机上,并连接电源,观察JLX12864G-086显示器是否能够正常显示温度值。如果出现问题,可以通过调试程序来解决。
下面是一个简单的示例程序,可以帮助你开始编写你自己的程序:
```c
#include <reg52.h>
#include <stdio.h>
sbit DHT11_DATA=P1^0;
sbit LCD_CS=P2^7;
sbit LCD_SID=P2^5;
sbit LCD_SCLK=P2^6;
sbit LCD_RST=P2^4;
void Delay10us()
{
int i=2;
while(i--);
}
void DelayMs(unsigned int ms)
{
while(ms--)
{
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
}
}
void LCD_WR_CMD(unsigned char cmd)
{
unsigned char i;
LCD_CS=0;
LCD_SID=0;
Delay10us();
LCD_SCLK=0;
Delay10us();
for(i=0;i<8;i++)
{
if(cmd&0x80)
{
LCD_SID=1;
}
else
{
LCD_SID=0;
}
Delay10us();
LCD_SCLK=1;
Delay10us();
LCD_SCLK=0;
Delay10us();
cmd<<=1;
}
LCD_CS=1;
}
void LCD_WR_DAT(unsigned char dat)
{
unsigned char i;
LCD_CS=0;
LCD_SID=1;
Delay10us();
LCD_SCLK=0;
Delay10us();
for(i=0;i<8;i++)
{
if(dat&0x80)
{
LCD_SID=1;
}
else
{
LCD_SID=0;
}
Delay10us();
LCD_SCLK=1;
Delay10us();
LCD_SCLK=0;
Delay10us();
dat<<=1;
}
LCD_CS=1;
}
void LCD_Init()
{
LCD_RST=0;
DelayMs(100);
LCD_RST=1;
DelayMs(100);
LCD_WR_CMD(0x30);
DelayMs(50);
LCD_WR_CMD(0x0c);
DelayMs(50);
LCD_WR_CMD(0x01);
DelayMs(50);
}
void DHT11_Init()
{
DHT11_DATA=1;
DelayMs(1000);
}
unsigned char DHT11_Read_Byte()
{
unsigned char i,dat=0;
for(i=0;i<8;i++)
{
while(!DHT11_DATA);
Delay10us();
if(DHT11_DATA)
{
dat|=1<<(7-i);
while(DHT11_DATA);
}
}
return dat;
}
void DHT11_Read_Temp(unsigned char *temp)
{
unsigned char dat[5],i;
DHT11_Init();
DHT11_DATA=0;
DelayMs(18);
DHT11_DATA=1;
while(DHT11_DATA);
for(i=0;i<5;i++)
{
dat[i]=DHT11_Read_Byte();
}
if(dat[0]+dat[1]+dat[2]+dat[3]==dat[4])
{
*temp=dat[2];
}
else
{
*temp=0xff;
}
}
void main()
{
unsigned char temp;
char str[5];
LCD_Init();
while(1)
{
DHT11_Read_Temp(&temp);
sprintf(str,"%d",temp);
LCD_WR_CMD(0x34);
LCD_WR_CMD(0x80);
LCD_WR_DAT('T');
LCD_WR_DAT('e');
LCD_WR_DAT('m');
LCD_WR_DAT('p');
LCD_WR_DAT(':');
LCD_WR_DAT(str[0]);
LCD_WR_DAT(str[1]);
LCD_WR_DAT(str[2]);
LCD_WR_DAT(str[3]);
DelayMs(1000);
}
}
```