Aaron~ 发表于 2018-11-23 15:08:38

AVR-Arduino与串口屏通信(电子秤例程)

本帖最后由 Aaron~ 于 2018-11-23 15:17 编辑

1.开发板说明功能MCU   ArduinoI/O    9路I/OLED    工作指示灯按键   复位按键电源   5V 电源输入






注:可实现的功能:a.称重,通过屏幕显示物品质量b.计价,通过屏幕显示金额d.校准称功能,可以随意更换称台
需使用的工具a. 硬件:arduino最小系统,HX711电子秤专用AD模块,电阻应变片式称台。b. 软件: Arduino 1.6.8。c. 原理图:详见“硬件原理图”文件夹。d. 程序:串口屏工程配置文件通过SD卡下载DWIN_SET导入屏中即可。arduino程序可参照arduino源码。
2.评估板硬件和软件部分详细介绍硬件接口定义TXD(屏端子显示)         Tx1RXD(屏端子显示)         Tx1独立按键                     D3-D7HX711_SCK时钟信号    D11HX711_DATA数据信号 D10


硬件原理图


MCU程序
#include "dwin.h"#include <stdio.h>#include <stdarg.h> #include <arduino.h> #define u8 unsigned char#define u16 unsigned intint LCD_printf(unsigned char mode,unsigned int Color,unsigned int Bcolor,unsigned int x,unsigned int y,const char *format, ...){   unsigned char l;char tmp;va_list arg; va_start(arg, format); vsprintf(tmp,format,arg);va_end(arg); l=0;Serial.write(0xAA);Serial.write(0x11);Serial.write(mode);//模式Serial.write(Color/256);Serial.write(Color%256);//前景颜色Serial.write(Bcolor/256);Serial.write(Bcolor%256);//背景颜色Serial.write(x/256);Serial.write(x%256);//横坐标Serial.write(y/256);Serial.write(y%256);//Y坐标
while(tmp)Serial.write(tmp) ;
Serial.write(0xcc);Serial.write(0x33);Serial.write(0xc3);Serial.write(0x3c);
}/****************显示二维码函数*****************//*参数:mode:D7********************************/void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...){unsigned char l;char tmp;va_list arg; va_start(arg, format); vsprintf(tmp,format,arg);va_end(arg); l=0;Serial.write(0xaa);Serial.write(0x21);Serial.write(x/256);Serial.write(x%256);//横坐标Serial.write(y/256);Serial.write(y%256);//Y坐标Serial.write(QR_Pixel);//二维码每个点的大小
while(tmp)Serial.write(tmp) ;
Serial.write(0xcc);Serial.write(0x33);Serial.write(0xc3);Serial.write(0x3c);}/****************绘图清屏函数*****************//*参数:mode:D7********************************/void clr(u16 Color){Serial.write(0xaa);Serial.write(0x01);Serial.write(Color/256);Serial.write(Color%256);//颜色Serial.write(0xcc);Serial.write(0x33);Serial.write(0xc3);Serial.write(0x3c);}/****************绘图直线插入函数*****************//*参数:mode:D7********************************/void Linear_interpolation(u8 num,u16 Color,...){    va_list arg_ptr;    int tempValue;    num*=2;    Serial.write(0xaa);    Serial.write(0x03);    Serial.write(Color/256);    Serial.write(Color%256);    va_start(arg_ptr,Color);    while(num--)    {          tempValue=va_arg(arg_ptr,int);          Serial.write(tempValue/256);          Serial.write(tempValue%256);    }
    va_end(arg_ptr);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************绘图打点插入函数*****************//*参数:mode:D7********************************/void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...){    va_list arg_ptr;    int tempValue;    num*=2;    Serial.write(0xaa);    Serial.write(0x02);    Serial.write(Color/256);    Serial.write(Color%256);    Serial.write(nx%256);    Serial.write(ny%256);    va_start(arg_ptr,ny);    while(num--)    {          tempValue=va_arg(arg_ptr,int);          Serial.write(tempValue/256);          Serial.write(tempValue%256);    }
    va_end(arg_ptr);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************屏幕背光亮度设置*****************//*参数:mode:D7********************************/void DIM_Set(u8 Set){
    Serial.write(0xaa);    Serial.write(0x30);    Serial.write(Set);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************设置扩展串口波特率**************//*参数:mode:D7********************************/void Bode_Set(u16 Set)//调节扩展串口波特率{    Serial.write(0xaa);    Serial.write(0x38);    Serial.write(15667200/Set/256);    Serial.write(15667200/Set%256);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************从扩展串口发送字符串**************//*参数:mode:D7********************************/void UART_TX(const char *format, ...)//串口发送字符串{    u8 l;    char tmp;     va_list arg;     va_start(arg, format);     vsprintf(tmp,format,arg);    va_end(arg);     l=0;    Serial.write(0xaa);    Serial.write(0x39);   while(tmp)    Serial.write(tmp) ;    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************显示ICO图标**************//*参数:mode:D7********************************/void dis_ico(u16 x,u16 y,u8 mode,u8 ids)//显示ico图标{    Serial.write(0xaa);    Serial.write(0x23);    Serial.write(x/256);    Serial.write(x%256);    Serial.write(y/256);    Serial.write(y%256);     Serial.write(y%256);     Serial.write(mode);    Serial.write(ids);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************设置动态图标*******************//*参数:mode:D7********************************/void disd_ico(u16 x,u16 y,u8 mode,u8 Icon_lib,u8 Icon_IDs,u8 Icon_0IDe,u8 Delay_time)//显示ico图标{    Serial.write(0xaa);    Serial.write(0x28);    Serial.write(x/256);    Serial.write(x%256);     Serial.write(y/256);    Serial.write(y%256);     Serial.write(y%256);     Serial.write(mode);    Serial.write(Icon_lib);    Serial.write(Icon_IDs);    Serial.write(Icon_0IDe);    Serial.write(Delay_time);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}/****************设置动态图标*******************//*参数:mode:D7********************************/void disc_ico(u16 set)//控制ico动态图标{    Serial.write(0xaa);    Serial.write(0x29);
    Serial.write(set/256);    Serial.write(set%256);
    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}
/****************写存储器***********************//*参数:mode:D7********************************/void writ_sram_flsh(u16 Length,u8 Type,u16 Address)//写数据存储器{    Serial.write(0xaa);    Serial.write(0x31);    Serial.write(Type);    Serial.write(Address/256);    Serial.write(Address%256);    while(Length--)    {      Serial.write(Address++);    }
    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}
/****************读存储器***********************//*参数:mode:D7********************************/void read_sram_flsh(u16 Length,u8 Type,u16 Address)//写数据存储器{    Serial.write(0xaa);    Serial.write(0x32);    Serial.write(Type);    Serial.write(Address/256);    Serial.write(Address%256);    Serial.write(Length);    Serial.write(0xcc);    Serial.write(0x33);    Serial.write(0xc3);    Serial.write(0x3c);}#defineN_KEY3//调用按键检测函数N_KEY次,均获取同一个按键信息,说明该按键的确按下#define F_KEY3//按下按键不放时的按键测试频率,小于N_KEY值,越小频率越快。u8 key_check(void){staticu8 NewKey,OldKey,nKey = 0;
NewKey = 0; if(digitalRead(3))NewKey=1; // if(digitalRead(4))NewKey=2;if(digitalRead(5))NewKey=3;//if(digitalRead(6))NewKey=4;if(digitalRead(7))NewKey=5;if(NewKey)//有按键按下,状态保存至newkey中{    if(OldKey != NewKey)//如果是新的按键信息,保存至oldkey中    {         //每次有新按键按下,均判断成立一次。      OldKey = NewKey;//包含组合按键的情况      nKey = 0;    //SysLed = 0;      return(0);    }    else    {      nKey++;      if(nKey >= N_KEY)//调用此函数N_KEY次,均获取此按键信息,说明按键的确按下      {      if(nKey == N_KEY)          return(NewKey);       if(nKey == 10 + F_KEY)      {          nKey = nKey - F_KEY;          return(NewKey);       }      }      return(0);    }   }OldKey = 0;nKey = 0;return(0);   //返回0,没有按键按下}void delay_us(short i){for(;i>0;i--) {                   unsigned char x;                  x=x;                  x=x;                  x=x;                }}longinthx711_read_data(void){unsigned char i;longint Count;Count=0;digitalWrite(11,0);//ADSK = 0; // ??AD(PD_SCK??)while(digitalRead(10));for (i=0;i<24;i++){     digitalWrite(11,1);;       // PD_SCK??(????)    Count = Count<<1; // ???????????????,??count????,????    digitalWrite(11,0);       if(digitalRead(10)) Count++; } for(i=0;i<1;i++){    digitalWrite(11,1);     delay_us(4);    digitalWrite(11,0);    delay_us(4);}Count=Count&(u32)0x7fffff;return Count ;}



Aaron~ 发表于 2018-11-28 16:06:39

AVR-arduino和串口通信效果视频

Earthman 发表于 2018-11-28 16:10:44

可以贴代码呢,你直接贴,长,不好看

Aaron~ 发表于 2018-11-28 17:14:22

Earthman 发表于 2018-11-28 16:10
可以贴代码呢,你直接贴,长,不好看

目前没有应用权限

Aaron~ 发表于 2018-11-29 17:30:37

MEGA2560例程
0)数据结构体与宏定义
// 指令数据发送宏操作
#define SEND_DATA(P)    Serial1.write(P)
#define TX_8(P1)      SEND_DATA((P1)&0xFF) // send one byte
#define TX_16(P1)       TX_8((P1)>>8);TX_8(P1) // send two byte
#define TX_32(P1)       TX_16((P1)>>16);TX_16((P1)&0xFFFF) // send four byte
#define BEGIN_CMD()   TX_8(FRAME_HRAD)
#define END_CMD()       TX_32(FRAME_TAIL)

// 文本属性结构体
typedef struct{
    us08 mode;                                //        显示模式
    us16 sx, sy;                        //        字符串显示的左上角坐标                        
    us16 f_color, b_color;        //字符显示颜色 && 字符背景显示颜色
    us08 num_i;                                //         显示的整数位数,0x01-0x14
    us08 num_f;                                //显示的小数位数,0x00-0x14,Num_I+Num_F 之和不能超过20
    us08p_len;            //待发送的数据字节数
    us08 *p_data;         //指向数据缓存区的指针
}DWIN_TEXT_STR;

// dwin操作类
class DWIN_LIB{
public:
        /*
       *配置与接口
        *******************************************************************************/
        void dwin_shake(void);
        void dwin_set_backlight(us08 level);
        void dwin_write_storage(us08 type,us16 addr, us08 *data, us08 len);
        void dwin_write_sram(us16 addr, us08 *data, us08 len);
        void dwin_write_flash(us16 addr, us08 *data, us08 len);
        void dwin_read_storage(us08 type,us16 addr, us08 len);
        void dwin_read_sram(us16 addr, us08 len);
        void dwin_read_flash(us16 addr, us08 len);
        void dwin_pic_storage(us08 pic_id);

        /*
       *绘图相关
        *******************************************************************************/
        void dwin_clear_screen(us16 color);
        void dwin_set_point_color(us16 x, us16 y, us16 color);
        void dwin_draw_line(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
        void dwin_draw_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
        void dwin_fill_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
        void dwin_xor_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
        void dwin_move_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color, us16 distance, us08 dir, us08 mode);

        /*
       *文本相关
        *******************************************************************************/
        void dwin_disp_string(DWIN_TEXT_STR *pstr);
        void dwin_disp_num(DWIN_TEXT_STR *pstr);
       
        /*
       *图标、图片相关
        *******************************************************************************/
        void dwin_show_qr(us16 sx, us16 sy, us08 qr_pixel, us08 *data, us08 len);
        void dwin_show_pic_from_storage(us08 jpg_id);
        void dwin_show_ico_from_storage(us16 sx, us16 sy, us08 ico_addr, us08 ico_id, us08 mode);
        void dwin_show_ico_from_sram(us16 sx, us16 sy, us16 sram_addr, us08 mode);
        void dwin_show_pic_from_virtual1(us08 jpg_id);
        void dwin_copy_pic_from_virtual1(us16 sx, us16 sy, us16 ex, us16 ey, us16 x, us16 y);
        void dwin_copy_pic_from_virtual(us08 mode, us16 sx, us16 sy, us16 ex, us16 ey, us16 x, us16 y);
        void dwin_draw_ico_animation(us08 mode, us16 sx, us16 sy, us08 ico_addr, us08 icos_id, us08 icoe_id, us08 timer);
        void dwin_ico_animation(us08 ico_addr, us08 sw);
       
       
        us08 dwin_frame_read(us08 indata, DWIN_DATA_STR *frameT);
       
private:
};

// 处理dwin 2d画图类
class DWIN_PROCESS{
public:
        void init_dwin(void);
        void dwin_handle_porcess(void);
       
        void show_temperature(float data, us08 num_f);
        void show_voltage(float data, us08 num_f);
        void show_currents(float data, us08 num_f);
        void show_gate_switch(us08 sw);
       
private:
        DWIN_LIB dwin_lib;

        void dwin_proc_shake(void);
        void create_gui_A(void);
        void create_gui_B(void);
       
};

1)loop ():程序主体运行程序
void loop() {
        // put your main code here, to run repeatedly:
        delay(1);
        dwin_process.dwin_handle_porcess();
       
        count++;
        timeC++;
        if(count >= 200){
                count = 0;
               
                if(!record){
                        record = 1;
                        digitalWrite(LED_BUILTIN, LOW);
                }
                else{
                        record = 0;
                        digitalWrite(LED_BUILTIN, HIGH);
                }
        }
        if(timeC >= 3000){
                timeC = 0;
               
                temp_v += 0.1f;
                vol_v += 0.01f;
                cur_v += 0.01f;
                if(sw_v) sw_v = 0;
                else sw_v = 1;
       
                dwin_process.show_temperature(temp_v, 1);
                dwin_process.show_voltage(vol_v, 2);
                dwin_process.show_currents(cur_v, 2);
                dwin_process.show_gate_switch(sw_v);
        }
}

2). setup ():接口和变量的初始化函数
void setup() {
        // put your setup code here, to run once:
        pinMode(LED_BUILTIN, OUTPUT);
        Serial1.begin(115200);
        Serial.begin(115200);
        while (!Serial) {}
       
        dwin_process.init_dwin();
       
        Serial.println("OK");
}
3). create_gui_A ():界面1显示函数
void DWIN_PROCESS::create_gui_A(void){
    DWIN_TEXT_STR textStr;
    us08 text = {0xCF,0xB5,0xCD,0xB3,0xB3,0xF5,0xCA,0xBC,0xBB,0xAF,0x2E,0x2E,0x2E,0x2E};
   
    // 显示二维码
    us08 qr_data = {
      0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,
      0x64,0x77,0x69,0x6E,0x2E,0x63,0x6F,0x6D,0x2E,0x63,0x6E
    };
    //dwin_show_qr(5,5,1,qr_data,22);
    //dwin_show_qr(5,220,1,qr_data,22);
    //dwin_show_qr(425,5,1,qr_data,22);
    dwin_lib.dwin_show_qr(425,220,1,qr_data,22);

    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1632;
    textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
    textStr.p_len = 14;
    textStr.p_data = text;
    textStr.sx = 100; textStr.sy = 120;
    dwin_lib.dwin_disp_string(&textStr);

   

    text = 0x05;
    while(1){
                delay(1000);
      textStr.sx = 315; textStr.sy = 125;
      dwin_lib.dwin_fill_rect(textStr.sx, textStr.sy, textStr.sx+60, textStr.sy+50, ASSEMBLE_RGB(31, 33, 33));
   
      textStr.mode = 0;
      textStr.mode = FONT1224|DISABLE_NUM_BCOLOR|ENABLE_SIGNED_NUM|DISABLE_NUM_ZERO|DISABLE_NUM_ZERO_S;
      textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
      textStr.p_len = 1;      
      textStr.p_data = text;
      textStr.num_i = 2;
      textStr.num_f = 0;
      
      dwin_lib.dwin_disp_num(&textStr);

      text -= 1;
      if(text == 0xFF){
            //dwin_fill_rect(textStr.sx, textStr.sy, textStr.sx+60, textStr.sy+50, ASSEMBLE_RGB(31, 33, 33));
            break;
      }
    }
    dwin_lib.dwin_clear_screen(ASSEMBLE_RGB(31,33,33));

}
4). create_gui_B ():界面2显示函数
void DWIN_PROCESS::create_gui_B(void){
    DWIN_TEXT_STR textStr;
    us08 text0 = {0x41,0x50,0x50,0xB2,0xD9,0xD7,0xF7};
    us08 text1 = {0x20,0xB5,0xE7,0xD1,0xB9,0xBC,0xEC,0xB2,0xE2,0xD2,0xC7,0x20};
    us08 text2 = {0xB5,0xB1,0xC7,0xB0,0xCE,0xC2,0xB6,0xC8,0xA3,0xBA};
    us08 text3 = {0xB5,0xB1,0xC7,0xB0,0xB5,0xE7,0xD1,0xB9,0xA3,0xBA};
    us08 text4 = {0xB5,0xB1,0xC7,0xB0,0xB5,0xE7,0xC1,0xF7,0xA3,0xBA};
    us08 text5 = {0xD5,0xA2,0xB5,0xB6,0xBF,0xAA,0xB9,0xD8,0xA3,0xBA};

    // 显示二维码
    us08 qr_data = {
      0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,
      0x64,0x77,0x69,0x6E,0x2E,0x63,0x6F,0x6D,0x2E,0x63,0x6E
    };
    dwin_lib.dwin_clear_screen(ASSEMBLE_RGB(31,33,33));
    dwin_lib.dwin_draw_line(0,18,479,18,ASSEMBLE_RGB(255,255,0));

    dwin_lib.dwin_draw_rect(337, 40, 449, 185, ASSEMBLE_RGB(255,255,0));
    dwin_lib.dwin_show_qr(347,80,2,qr_data,22);

    // APP
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|ENABLE_TEXT_BCOLOR|FONT1224;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.b_color = ASSEMBLE_RGB(31,33,33);
    textStr.p_len = 3;
    textStr.p_data = text0;
    textStr.sx = 375; textStr.sy = 48;
    dwin_lib.dwin_disp_string(&textStr);

    // 电压检测仪
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|ENABLE_TEXT_BCOLOR|FONT1632;
    textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
    textStr.b_color = ASSEMBLE_RGB(31,33,33);
    textStr.p_len = 12;
    textStr.p_data = text1;
    textStr.sx = 145; textStr.sy = 0;
    dwin_lib.dwin_disp_string(&textStr);

    // 当前温度
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.p_len = 10;
    textStr.p_data = text2;
    textStr.sx = 5; textStr.sy = 50;
    dwin_lib.dwin_disp_string(&textStr);

    // 当前电压
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.p_len = 10;
    textStr.p_data = text3;
    textStr.sx = 5; textStr.sy = 100;
    dwin_lib.dwin_disp_string(&textStr);

    // 当前电流
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.p_len = 10;
    textStr.p_data = text4;
    textStr.sx = 5; textStr.sy = 150;
    dwin_lib.dwin_disp_string(&textStr);

    // 刀闸开关
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(251, 146, 0);
    textStr.p_len = 10;
    textStr.p_data = text5;
    textStr.sx = 5; textStr.sy = 200;
    dwin_lib.dwin_disp_string(&textStr);

}


5). dwin_disp_string ():显示字符的函数
void DWIN_LIB::dwin_disp_string(DWIN_TEXT_STR *pstr){
    us08 i = 0;
    BEGIN_CMD();
    TX_8(0x11);
    TX_8(pstr->mode);
    TX_16(pstr->f_color);
    TX_16(pstr->b_color);
    TX_16(pstr->sx);
    TX_16(pstr->sy);
    //while(pstr->p_len--) TX_8(*(pstr->p_data++));
    while(pstr->p_len--) TX_8(pstr->p_data);
    END_CMD();   
}

6). dwin_disp_num ():显示数字的函数
void DWIN_LIB::dwin_disp_num(DWIN_TEXT_STR *pstr){
    us08 i = 0;
    BEGIN_CMD();
    TX_8(0x14);
    TX_8(pstr->mode);
    TX_16(pstr->f_color);
    TX_16(pstr->b_color);
    TX_8(pstr->num_i);
    TX_8(pstr->num_f);
    TX_16(pstr->sx);
    TX_16(pstr->sy);
    //while(pstr->p_len--) TX_8(*(pstr->p_data++));
    while(pstr->p_len--) TX_8(pstr->p_data);
    END_CMD();
}



7). show_temperature ():显示温度数据,文本显示
void DWIN_PROCESS::show_temperature(float data, us08 num_f){
    us32 value;
    us08 text;
    DWIN_TEXT_STR textStr;
   
    switch(num_f){
      case 1:
            value = data*10;
      break;
      
      case 2:
            value = data*100;
      break;
      
      case 3:
            value = data*1000;
      break;

      default: return;
    }
    text = value>>24;
    text = value>>16;;
    text = value>>8;;
    text = value;

    textStr.sx = 130; textStr.sy = 50;
    dwin_lib.dwin_fill_rect(textStr.sx, textStr.sy, textStr.sx+80, textStr.sy+50, ASSEMBLE_RGB(31, 33, 33));

    textStr.mode = 0;
    textStr.mode = FONT1632|DISABLE_NUM_BCOLOR|ENABLE_SIGNED_NUM|DISABLE_NUM_ZERO|DISABLE_NUM_ZERO_S;
    textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
    textStr.p_len = 4;      
    textStr.p_data = text;
    textStr.num_i = 8;
    textStr.num_f = num_f;
   
    dwin_lib.dwin_disp_num(&textStr);

}
8). show_gate_switch ():显示闸刀状态量,2D画图形式
void DWIN_PROCESS::show_gate_switch(us08 sw)
{
    us08 text1 = {0xBF, 0xAA};
    us08 text0 = {0xB9, 0xD8};
    DWIN_TEXT_STR textStr;
   
    dwin_lib.dwin_fill_rect(150, 199, 250, 231, ASSEMBLE_RGB(251, 146, 0));
    dwin_lib.dwin_fill_rect(151, 200, 249, 230, ASSEMBLE_RGB(31, 33, 33));
    if(sw == 1){
      dwin_lib.dwin_fill_rect(199, 201, 248, 229, ASSEMBLE_RGB(0, 255, 0));
      
      textStr.mode = 0;
      textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1224;
      textStr.f_color = ASSEMBLE_RGB(0, 0, 0);
      textStr.p_len = 2;
      textStr.p_data = text1;
      textStr.sx = 215; textStr.sy = 203;
      dwin_lib.dwin_disp_string(&textStr);
    }
    else{
      dwin_lib.dwin_fill_rect(152, 201, 200, 229, ASSEMBLE_RGB(255, 0, 0));

      textStr.mode = 0;
      textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1224;
      textStr.f_color = ASSEMBLE_RGB(0, 0, 0);
      textStr.p_len = 2;
      textStr.p_data = text0;
      textStr.sx = 165; textStr.sy = 203;
      dwin_lib.dwin_disp_string(&textStr);
    }
   
}

Aaron~ 发表于 2018-12-3 11:32:50

Aaron~ 发表于 2018-11-29 17:30
MEGA2560例程
0)数据结构体与宏定义
// 指令数据发送宏操作


AVR MEGA2560

t3486784401 发表于 2018-12-3 13:32:18

仿佛看到了同款三星笔记本 3440VC
页: [1]
查看完整版本: AVR-Arduino与串口屏通信(电子秤例程)