我爱胆机妙音 发表于 2012-6-21 08:43:47

求助:12864液晶怎样显示传感器数值

12864液晶库里的函数只能显示字符串和图片,不知道如何显示传感器数值
我的库和弘毅老大的不一样
附件里st7920.h里有可以调用的函数,不清楚哪一个是显示变量的//可用串口方式对ST7920操作

#ifndef __ST7920_H__
#define __ST7920_H__

#include <inttypes.h>
//已经基本参数
#define LCD_X_MAX        127
#define LCD_Y_MAX        63

//每行的首地址,基于RT12864-4M型液晶
#define LINE_ONE_ADDRESS   0x80
#define LINE_TWO_ADDRESS   0x90
#define LINE_THREE_ADDRESS 0x88
#define LINE_FOUR_ADDRESS0x98

//基本指令集预定义
#define LCD_DATA                       1                 //数据位
#define LCD_COMMAND                    0                       //命令位
#define        LCD_CLEAR_SCREEN               0x01                //清屏       
#define        LCD_ADDRESS_RESET              0x02                //地址归零       
#define        LCD_BASIC_FUNCTION                  0x30                //基本指令集
#define        LCD_EXTEND_FUNCTION                   0x34                //扩充指令集

//扩展指令集预定义
#define        LCD_AWAIT_MODE                        0x01               //待命模式       
#define LCD_ROLLADDRESS_ON                0x03                //允许输入垂直卷动地址
#define LCD_IRAMADDRESS_ON                0x02                //允许输入IRAM地址       
#define        LCD_SLEEP_MODE                        0x08               //进入睡眠模式
#define        LCD_NO_SLEEP_MODE                0x0c               //脱离睡眠模式
#define LCD_GRAPH_ON                        0x36                //打开绘图模式
#define LCD_GRAPH_OFF                        0x34                //关闭绘图模式

#ifndef LCD_COLOR
#define LCD_COLOR_BLACK                        1
#define LCD_COLOR_WHITE                        0
#endif

class ST7920
{
public:
        void LCD_Init(void);
        void LCD_Write( unsigned char Data_Command , unsigned char uc_Content );
        void LCD_ClearRam(void);
        void LCD_DisplayCLR(void);
        void LCD_ImgDisplayCharacter(unsigned char x,unsigned char y,unsigned char *img);
        void LCD_ImgDisplay(unsigned char *img);
        void LCD_ImgDisplay_from_flash(unsigned char *img);
        void LCD_GraphModeSet(unsigned char Select);
        void LCD_DisplayStrings_WithAddress(unsigned char ucAdd,const char *p);
        void LCD_DisplayMatrix_WithAddress(unsigned char ucAdd,unsigned char *p);
        void LCD_DisplayStrings(unsigned char x,unsigned char y,const char *p);
        void Overturn_Char(unsigned char x,unsigned char y,unsigned char wide,unsigned char cor);
        void Overturn_Font(unsigned char x,unsigned char y,unsigned char wide,unsigned char corv);
        void chsDisplay_8bit(unsigned char ucAdd, unsigned char code);
        void chsDisplay_16bit(unsigned char ucAdd, unsigned int code);
private:
        void LCD_SendByte(unsigned char a);
        void LCD_CGRAM_AddressSet(unsigned char ucCGramAdd);
        void LCD_DDRAM_AddressSet(unsigned char ucDDramAdd);
        void LCD_GDRAM_AddressSet(unsigned char ucGDramAdd);
        void LCD_CheckBusy(void);
        unsigned char ReceiveByte(void);
        unsigned char LCD_ReadData(void);
};


#endif        //#ifndef __ST7920_H__
谢谢大家

弘毅 发表于 2012-6-21 08:54:14

感觉是
      void LCD_DisplayStrings(unsigned char x,unsigned char y,const char *p);
       void Overturn_Char(unsigned char x,unsigned char y,unsigned char wide,unsigned char cor);
       void Overturn_Font(unsigned char x,unsigned char y,unsigned char wide,unsigned char corv);
这三个中的一个。。。。

Muller_r 发表于 2012-6-21 09:42:46

显示的函数就是 void LCD_DisplayStrings(unsigned char x,unsigned char y,const char *p); 如果你想要把传感器的读数显示出来的话需要先用Serial. Read()把传感器的数据读取出来然后储存在一个字符串里,让LCD显示

Muller_r 发表于 2012-6-21 09:46:07

发一个以前用LCD12864显示DS1302时钟芯片时间的程序#include <PIC.h>
#include <ST7920.h>
#include <stdio.h>
#include <string.h>
#include <DS1302.h>

ST7920 a=ST7920();
/* 接口定义
CE(DS1302 pin5) -> Arduino D5
IO(DS1302 pin6) -> Arduino D6
SCLK(DS1302 pin7) -> Arduino D7
*/
uint8_t CE_PIN   = 5;
uint8_t IO_PIN   = 6;
uint8_t SCLK_PIN = 7;

/* 日期变量缓存 */
char buf;
char day;
/* 串口数据缓存 */
String comdata = "";
int numdata ={0}, j = 0, mark = 0;
/* 创建 DS1302 对象 */
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);


void print_time()
{
    /* 从 DS1302 获取当前时间 */
    Time t = rtc.time();
    /* 将星期从数字转换为名称 */
    memset(day, 0, sizeof(day));
    switch (t.day)
    {
    case 1: strcpy(day, "Sunday"); break;
    case 2: strcpy(day, "Monday"); break;
    case 3: strcpy(day, "Tuesday"); break;
    case 4: strcpy(day, "Wednesday"); break;
    case 5: strcpy(day, "Thursday"); break;
    case 6: strcpy(day, "Friday"); break;
    case 7: strcpy(day, "Saturday"); break;
    }
    /* 将日期代码格式化凑成buf等待输出 */
    snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t.yr, t.mon, t.date, t.hr, t.min, t.sec);
    /* 输出日期到串口 */
   // Serial.println(buf);
   a.LCD_ClearRam();
delay(100);
a.LCD_DisplayStrings_WithAddress(0x80,buf);
}


void setup()
{
    Serial.begin(9600);
    rtc.write_protect(false);
    rtc.halt(false);
   
    a.LCD_Init();
delay(100);
}

void loop()
{

    /* 当串口有数据的时候,将数据拼接到变量comdata */
    while (Serial.available() > 0)
    {
      comdata += char(Serial.read());
      delay(2);
      mark = 1;
    }
    /* 以逗号分隔分解comdata的字符串,分解结果变成转换成数字到numdata[]数组 */
    if(mark == 1)
    {
      Serial.print("You inputed : ");
      Serial.println(comdata);
      for(int i = 0; i < comdata.length() ; i++)
      {
            if(comdata == ',' || comdata == 0x10 || comdata == 0x13)
            {
                j++;
            }
            else
            {
                numdata = numdata * 10 + (comdata - '0');
            }
      }
      /* 将转换好的numdata凑成时间格式,写入DS1302 */
      Time t(numdata, numdata, numdata, numdata, numdata, numdata, numdata);
      rtc.time(t);
      mark = 0;j=0;
      /* 清空 comdata 变量,以便等待下一次输入 */
      comdata = String("");
      /* 清空 numdata */
      for(int i = 0; i < 7 ; i++) numdata=0;
    }
   
    /* 打印当前时间 */
    print_time();
   
    delay(1000);
}

小号一 发表于 2013-7-23 00:14:49

Muller_r 发表于 2012-6-21 09:46 static/image/common/back.gif
发一个以前用LCD12864显示DS1302时钟芯片时间的程序#include
#include
#include


你好。。我想问问你这个程序用的是什么CPU,,不像是51的单片机啊。。。看不懂,是小白我,,求教一下

elbahk 发表于 2013-8-1 15:36:43

Atmega MCU

Vogue丶阿康 发表于 2017-11-14 18:12:50

怎么 将超声波测距仪 显示在 12864上 啊求个 为大神们 帮助 一下   
我是个新手。。
页: [1]
查看完整版本: 求助:12864液晶怎样显示传感器数值