⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 show.c

📁 msp430开发的驻波表测试仪 数字显示的,国内没有的哦
💻 C
字号:
#define set_E1 P6OUT|=BIT7
#define cls_E1 P6OUT&=~BIT7

#define set_E2 P6OUT|=BIT6
#define cls_E2 P6OUT&=~BIT6

#define set_RW P6OUT|=BIT4
#define cls_RW P6OUT&=~BIT4

#define set_A0 P6OUT|=BIT5
#define cls_A0 P6OUT&=~BIT5

void w_com_1(unsigned char COM)
{
	unsigned char flag;
	flag=0;
	cls_A0;
	set_RW;
	do
	{
		P2OUT=0xff;
		set_E1;
		P2DIR=0X00; //P5 INPUT
		flag=P2IN;
		P2DIR=0XFF;  //P5 OUTPUT
		cls_E1;
	}while(flag&BIT7);
	cls_RW;
	P2OUT=COM;
	set_E1;
	cls_E1;
}

void w_com_2(unsigned char COM)
{
	unsigned char flag;
	flag=0;
	cls_A0;
	set_RW;
	do
	{
		P2OUT=0xff;
		set_E2;
		P2DIR=0X00; //P5 INPUT
		flag=P2IN;
		P2DIR=0XFF;  //P5 OUTPUT
		cls_E2;
	}while(flag&BIT7);
	cls_RW;
	P2OUT=COM;
	set_E2;
	cls_E2;
}

void w_data_1(char DAT)
{
	unsigned char flag;
	flag=0;
	cls_A0;
	set_RW;
	do
	{
		P2OUT=0xff;
		set_E1;
		P2DIR=0X00; //P5 INPUT
		flag=P2IN;
		P2DIR=0XFF;  //P5 OUTPUT
		cls_E1;
	}while(flag&BIT7);
	set_A0;
	cls_RW;
	P2OUT=DAT;
	set_E1;
	cls_E1;
}

void w_data_2(char DAT)
{
	unsigned char flag;
	flag=0;
	cls_A0;
	set_RW;
	do
	{
		P2OUT=0xff;
		set_E2;
		P2DIR=0X00; //P5 INPUT
		flag=P2IN;
		P2DIR=0XFF;  //P5 OUTPUT
		cls_E2;
	}while(flag&BIT7);
	set_A0;
	cls_RW;
	P2OUT=DAT;
	set_E2;
	cls_E2;
}

void init_lcd(void)
{
	w_com_1(0xe2);
	w_com_2(0xe2);
	w_com_1(0xa4);
	w_com_2(0xa4);
	w_com_1(0xa9);
	w_com_2(0xa9);
	w_com_1(0xa0);
	w_com_2(0xa0);
	w_com_1(0xc0);
	w_com_2(0xc0);
	w_com_1(0xaf);
	w_com_2(0xaf);
}

/* 清除LCD所有显示 */
void clear_lcd(void)
{
	char pageadd;
	char pagebits;
        char COM;
        char DAT;
        for(pageadd=0;pageadd<4;pageadd++)
	{
		COM=pageadd|0xb8;
		w_com_1(COM);
                w_com_2(COM);
		COM=0x00;
		w_com_1(COM);
		w_com_2(COM);
                for(pagebits=0;pagebits<80;pagebits++)
		{
			DAT=0X00;
			w_data_1(DAT);
                        w_data_2(DAT);
		}
	}
}


/* 以  16*16 点阵写入中文字符 */
/* STR:中文字符数组  SHOWPAGE:显示所在页数  SHOWCOL:显示所在列数*/
void WriteChinese(const unsigned char STR[32],unsigned char SHOWPAGE,unsigned char SHOWCOL)
{
        char right;
        char i,k;
        char COM,DAT;
        char col;
//** 用于显能模块 **       
    if(SHOWPAGE==0)
      SHOWPAGE=2;
    else
      SHOWPAGE=0;
//************************
        for (k=0;k<2;k++)
        {
                COM=SHOWPAGE&0x03;
                COM=COM|0xb8;
	        w_com_1(COM);
	        w_com_2(COM);
                if(SHOWCOL>=0x3d)
                {
                        right=1;
                        col=SHOWCOL-0x3d;
                        COM=col;
                        w_com_2(COM);
                }
                else
                {         
                        right=0;
                        COM=SHOWCOL;
                        w_com_1(COM);
                }
                col=SHOWCOL;
                for(i=0;i<16;i++)
	        {
		        DAT=STR[i+k*16];
		        if (right) w_data_2(DAT);
                        else w_data_1(DAT);
                        /*col=SHOWCOL;*/
                        col++;
                        if (col==0x3d&&(!right))
                        {
                                if (!right)
                                {
                                        col=0x00;
                                        COM=0X00;
                                        w_com_2(COM);
                                        right=1;
                                }
                                else continue;
                         }
                }
                col++;
                right=0;
                SHOWPAGE++;
        }
}

/*显示单个数字*/
/* num:单个数字   page:页   col:列 */

void show_num(const unsigned char num,unsigned char page,unsigned char col)
{
        switch (num)
        {
        case 0:WriteChinese(n0,page,col) ;break;
        case 1:WriteChinese(n1,page,col) ;break;
        case 2:WriteChinese(n2,page,col) ;break;
        case 3:WriteChinese(n3,page,col) ;break;
        case 4:WriteChinese(n4,page,col) ;break;
        case 5:WriteChinese(n5,page,col) ;break;
        case 6:WriteChinese(n6,page,col) ;break;
        case 7:WriteChinese(n7,page,col) ;break;
        case 8:WriteChinese(n8,page,col) ;break;
        case 9:WriteChinese(n9,page,col) ;break;
        }
}

void show_vol0(unsigned int num)
{
      
       char g,s,b,q;
       if(num>9999) num=9999;
       g=num%10;
       s=(num%100)/10;
       b=(num%1000)/100;
       q=(num%10000)/1000;

       show_num(g,0,106);
       show_num(s,0,92);
       show_num(b,0,71);
    if(num>=1000)
       show_num(q,0,58);
    else
       WriteChinese(space,0,58);
}

void show_vol21(unsigned int num)
{
       char g,s,b;
       g=num%10;
       s=(num%100)/10;
       b=(num%1000)/100;

    if(num>=100)
       show_num(b,2,0);
    else
       WriteChinese(space,2,0);
       show_num(s,2,12);
    show_num(g,2,30);
}
void show_vol22(unsigned int num)
{
       char g,s,b;
       g=num%10;
       s=(num%100)/10;
       b=(num%1000)/100;

    if(num>=100)
       show_num(b,2,66);
    else
       WriteChinese(space,2,66);
    show_num(s,2,78);
    show_num(g,2,96);
}

void show_vol3(unsigned long num1,unsigned long num2)
{
       char g,s,b,q;

       WriteChinese(space,0,16);
       WriteChinese(space,0,64);
       WriteChinese(space,0,80);
       WriteChinese(space,0,96);
       WriteChinese(space,0,112);
       WriteChinese(space,2,0);
       WriteChinese(pin,0,0);
       WriteChinese(lv,0,32);
       WriteChinese(mh,0,48);
       WriteChinese(dot,2,54);
       WriteChinese(mhz,2,106);

       g=num1%10;
       s=(num1%100)/10;
       b=(num1%1000)/100;
       show_num(b,2,0);
       show_num(s,2,12);
       show_num(g,2,26);

       g=num2%10;
       s=(num2%100)/10;
       b=(num2%1000)/100;
       q=(num2%10000)/1000;
       show_num(q,2,40);
       show_num(b,2,62);
       show_num(s,2,76);
       show_num(g,2,90);
}

 void show_cm(void)
{           
WriteChinese(B,0,16);
WriteChinese(G,0,32);
WriteChinese(n4l,0,50);
WriteChinese(S,0,68);
WriteChinese(F,0,86);
WriteChinese(Cc,0,102);
WriteChinese(zu,2,5);
WriteChinese(bo,2,21);
WriteChinese(gon,2,37);
WriteChinese(lv,2,53);
WriteChinese(pin,2,69);
WriteChinese(lv,2,85);
WriteChinese(biao,2,101);
}

void show_face0(void) //测驻波 face
{
clear_lcd();
WriteChinese(zu,0,0);
WriteChinese(bo,0,16);
WriteChinese(bi,0,32);
WriteChinese(mh,0,48);
WriteChinese(dot,0,85);
WriteChinese(dot,2,26);
WriteChinese(dot,2,92);
WriteChinese(W,2,46);
WriteChinese(W,2,112);
WriteChinese(pie,2,58);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -