doujiang 发表于 2013-8-9 21:42:44

老陈VFD 显示程序(串口发送)

本帖最后由 doujiang 于 2013-8-9 21:49 编辑

自己写的老陈VFD显示程序,串口波特率115200

头文件#ifndef _drv_vfd128x64_h_
#define _drv_vfd128x64_h_

#include <string.h>
#include "common.h"//包含延时函数头文件
#include "drv_usart1.h"

#define bigfont 0x11//字体控制命令宏定义
#define smallfont 0x10

extern void Vfd128x64_Clear_All();//清屏
extern void Vfd128x64_Show_All();//所有点显示
extern void Vfd128x64_Show_Num(unsigned char font,unsigned char x,unsigned char y,unsigned int sdata);//4位数字显示
extern void Vfd128x64_Show_str(unsigned char font,unsigned char x,unsigned char y,unsigned char *str);//字符串显示

#endif
C文件
#include "drv_vfd128x64.h"
static unsigned char Calculate_Xor(unsigned char *dat, unsigned char len)//使用的老陈写的校验子程序,校验方法为按位异或(从控制命令、数据长度、坐标、数据)
{
        unsigned char calc_xor = 0;
        unsigned char i = 0;

        for (i = 0; i < len; i++)
        {
                calc_xor ^= *dat;
                dat++;
        }
        return (calc_xor);
}
void Vfd128x64_Show_All()//显示所有点
{
    SendData(0x20);
    SendData(0xFF);
    SendData(0x00);
    SendData(0XFF);
    SendData(0X03);
}

void Vfd128x64_Clear_All()//清屏
{
    SendData(0x20);
    SendData(0x00);
    SendData(0x00);
    SendData(0X00);
    SendData(0X03);
}

void Vfd128x64_Show_Num(unsigned char font,unsigned char x,unsigned char y,unsigned int sdata)//font=bigfont or smallfont,sdata为4位数
{
    unsigned char i=0,sxor=0;
    unsigned char temp;
    temp=font;
    temp=0x06;
    temp=x;
    temp=y;
    temp=sdata/1000+0x30;
    temp=sdata%1000/100+0x30;
    temp=sdata%100/10+0x30;
    temp=sdata%10+0x30;
    sxor=Calculate_Xor(temp,8);
    Delayus(30);
    SendData(0x20);
    for(i=0; i<8; i++)
    {
      SendData(temp);
    }
    SendData(sxor);
    SendData(0x03);
}

void Vfd128x64_Show_str(unsigned char font,unsigned char x,unsigned char y,unsigned char *str)//font为smallfont时不能显示汉字
{
        unsigned char slen=0,scom=0,sxor=0;
        scom=font;
        slen=strlen(str);
        sxor=Calculate_Xor(str,slen)^scom^(slen+2)^x^y;
        Delayus(30);
      SendData(0x20);
        SendData(scom);
        SendData(slen+2);
        SendData(x);
        SendData(y);
        while(*str!='\0')
        {
                SendData(*str++);
        }
        SendData(sxor);
      SendData(0x03);
}
感谢老陈的指导

工科男生 发表于 2013-8-10 00:41:51

准备做一个的,顶一下{:smile:}

tlsmf 发表于 2013-11-8 16:56:05

支持            

jimmyyjh 发表于 2013-11-27 00:22:29

抽空再研究一下~

zyicc 发表于 2014-4-24 22:48:49

能不能用串口软件发
页: [1]
查看完整版本: 老陈VFD 显示程序(串口发送)