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

📄 lcd4.c

📁 msp430和nrf905的例子,联系qqliuyong007@163.com
💻 C
字号:

#define TRUE	1
#define FAULT	0
int n,i,d,t;


#include  "Variable Definition.h"
#include  "Character Definition.h"
#include  "DisplayFunction.c"

//////////////////////////////////////////xiao liang
#include  "math.h"
#include  "SPI.H"
#include  "GENERAL.H"
#include <msp430x44x.h>

#define	  KI		1000.00	
#define	  KU		100.00	
#define	  PhsOfst       0
#define   genhao3       1.732	
#include  "spi.c"
#include  "xiaobiao.c"
#include  "time.c"
#include  "testtimechange.c"
#include  "Spi_Init.c"

///////////////////////////////////////////////

////////////////////////////////////////////// fjj
unsigned char btl;
#include  "crc16.h"
#include  "btlsz.h"//波特率设置
#include  "485csh.h"//485初始化

#define ADDRESS 0x14
#define read_relay 0x01
#define read_switch 0x02
#define read_register 0x03
#define release_replase  0x05
#define download_parameter 0x06
#define read_dztd  0x07

unsigned short receive_count,time_ok,T16;
unsigned char rxbuf[140],txbuf[140],high8,low8;
unsigned char  answernum; //,receive_ok,transfer_ok,timecount_ok; 



///////////////////////////////////////////////////////



#include  "11.c"
#include  "01.c"
#include  "02.c"
#include  "03.c"
#include  "05.c"
#include  "06.c"
#include  "07.c"
#include  "junger.c"
#include  "general_function.c"
#include  "Check_second.c"
//////////////////////////////////////////////////////////
/*-----------------------------字模显示函数--------------------------------*/

/*void SetCGRAM(void)                                     建立CGRAM*/
/*void DisplayChar( char row,char col, char word)          显示西文字符*/
/*void CCDisplay( char row, char col, word)               文本方式下显示汉字*/
/*void GCDisplay( char row, char col, char GW[32])        图形方式下显示汉字*/
/*void RRWL( char row ,char col, int wordcode)            读取RAM,再在LCD显示汉字*/
/*void ThirdDisplay( char row, char col, char TuXing[96]) 第三区显示图形*/
/*void Data_disply( char row, char col, long int data)    十进制最大八位显示数据*/
/*void CLRDisplay_definition(char row, char col)          自定义清楚RAM开头地址*/


/*----------- 系统状态显示-----------

void Display_XTZT(unsigned char flag)

/*-------------------------------*/
/*-------------------------------*/
unsigned char key[3];//flag,flag_zt,flag_gb,flag_setup;
//struct flags flag;

unsigned int X=4000,Y=0;
  
void main(void)
{  
    WDTCTL = WDTPW + WDTHOLD;	    	// Stop watchdog timer
    FLL_CTL0|=XCAP14PF;
                   
  BTCTL = BTDIV + BTIP2+ BTIP1;        // 1s interrupt
  IE2 |= BTIE;                          // Enable BT interrupt

  ////////////////////////////////////////////// fjj
  btl=3;
  // btl=systemsetup.baudrate.com1;  //   最后要写成这样
  Init();
  Init_MAXMIN_Min();
  flag.receive_ok=FAULT;
  flag.timecount_ok=FAULT;
  flag.transfer_ok=TRUE;
  receive_count=0;
  ////////////////////////////////////////////////


    TBCTL=TBSSEL0+TBCLR;               //选择ACLK为时钟源,清CCR0
    //TBCCTL0=CCIE;//中断允许
    TBCCR0=32768; //设置CCR0数值;;;32768
    TBCTL|= MC0;//设置为增计数模式
    Init_LCD();	                        //初始化1335
    int_touch();  
   // TACTL=TASSEL0+TACLR;            //选ACLK,计数器清零
   //  CCTL0=CCIE;                    //CCRO中断使能
   //  CCR0=16384;                    // 中断间隔为0.5s
   
   
    
    if(flag.jy==1)
       {  adjATT7022();
          flag.jy=0;
       }
    
    _EINT();
        
    SetCGRAM();                     //道入字模
    flag.setup=0; 
    flag.updown=0; 
    flag.ds=0; 
    flag.sel=1;
    systemsetup.connectionmode=sel;
    
    mytime1.second=5; //时间复制
    mytime1.minute=6;
    mytime1.hour=12;
    mytime1.date=12;
    mytime1.month=12;
    mytime1.year=5;
    while(1)
  {
  
   
   switch (flag.ds)
    {
    case 0:   Display_ChangeData();      break;
    case 1:   Display_System_Setup();    break;
    case 2:   translation();             break;
    case 3:   Make_value();              break;
    case 4:   testtimechange();          break;
    default:  flag.ds=0;                 break;                     
    }/*swich*/
 }/*while*/
}

void scan_key_deal(void)
{
  
  flag.gb=0;                 
 if((Y!=0)&&(X<=1500))
  {
    flag.gb=1;
    if(Y<=900)
      {flag.ds=3;
      }
    if((Y>1800)&&(Y<=2500))
     { flag.ds=1;
     }
    if (Y>3000)
     {flag.ds=0;
     }
    else
    return;
  }
 if ((Y!=0)&&(X<3200)&&(X>=2800))
   {
    flag.gb=1;
    flag.number=5+(4-Y/800);
   }
 if ((Y!=0)&&(X<2800)&&(X>=2300))
   {
    flag.gb=1;
    flag.number=4-Y/800;
   }
if((Y!=0)&&(X>=3200))                    //judge if the key was press

    {
    flag.gb=1;
       if(Y<=800)
        { 
        if(flag.setup==10)
          flag.setup=0;
        else
          flag.setup++;
        }
       if((Y>=1000)&&(Y<1800))
        {if (flag.updown==14)
          flag.updown=0;
         else
          flag.updown++;
         }
       if((Y>=2000)&&(Y<2800))
        {
         if (flag.updown==0)
           flag.updown=12;
         else
           flag.updown--;
        }
        if(Y>3000)
         {
          flag.sure=1;
          /*if(flag.setup==0)
            flag.setup=10;
          else
            flag.setup--;*/
         }
        
       
   }
 
return;   
}

/***************** Timer B0 interrupt service routine***************/
#pragma vector=TIMERB0_VECTOR
 __interrupt void Timer_B (void)

{
  
}

/***************I/O口P2.5中断子程序*****************/

#pragma vector=PORT2_VECTOR   
__interrupt void PORT2_5 (void)
{
//P2IFG=0x00;
if((P2IFG&P2_TINT)==P2_TINT)                  //判断是否为P2.5中断
{
delay(500);                                  //中断后延时以消除抖动,使得采样数据更准确
P2IE&=~P2_TINT;                              //禁止中断
P2IFG&=~P2_TINT;                             //清除中断标志                                
P3OUT&=~P3_TCS;                              //选重ADS7843
                                                                            
//while((P3IN&P3_TBUSY)==P3_TBUSY);            //等待BUSY信号复位,
delay(10);
WriteTo7843(0x90);                           //送控制字 10010000 即用差分方式读X坐标 
//while((P3IN&P3_TBUSY)==P3_TBUSY);            //等待BUSY信号复位,AD转化是否完成
delay(10);
X = ReadFrom7843();                          //读取X12位数据
WriteTo7843(0xD0);                           //送控制字 11010000 即用差分方式读Y坐标
//while((P3IN&P3_TBUSY)==P3_TBUSY);            //等待BUSY信号复位,AD转化是否完成
delay(10);                                     
Y=ReadFrom7843();                            //读取Y12位数据
_NOP();
scan_key_deal();
P2IFG&=~P2_TINT;                             //清除中断标志
P2IE|=P2_TINT;                               //开启P2。5中断
P3OUT|=P3_TCS;                               //退出ADS7843
}
else
return;
}
//读三相电流值
//#pragma vector=TIMERA0_VECTOR
//__interrupt void Timer_A (void)
// { 
  
// }

//////////////////////////////////////////////////////fjj
#pragma vector=UART1RX_VECTOR
__interrupt void usart1_rx (void)
//interrupt[UART0RX_VECTOR] void usart0_rx (void)//接受中断

{ 
   

  if (URCTL1 & URXWIE)
  { 
       //if(RXBUF1==systemsetup.sbh)    //   最后要写成这样
       if(RXBUF1==ADDRESS) //判断地址
	 {
	  URCTL1 &=~URXWIE;//改变接收为数据方式
	  flag.timecount_ok=TRUE;
          receive_count=0;
          rxbuf[0]=RXBUF1;
          receive_count++;
          flag.gb=1;
	  flag.ds=2;
	 }
  }
  else
  {
	if(flag.receive_ok==FAULT)
		{
			if(t<time_ok)
	               {
			        rxbuf[receive_count]=RXBUF1;//数据存入数组
				t=0;				
				receive_count++;
			}
			
		}

  }	
      
}

///////////////////////////////////////////////////////////

// Basic Timer interrupt service routine
#pragma vector=BASICTIMER_VECTOR
 __interrupt void basic_timer(void)
{   

   if(unixtime2!=0) unixtime2++;
   mytime1.second++;                      // Toggle P5.1 using exclusive-OR
   
   if(mytime1.second>=60)
          {
            mytime1.second=0;
            mytime1.minute++;
            if(mytime1.minute>=60)
               {
                mytime1.minute=0;
                mytime1.hour++;
           
                if(mytime1.hour>=24)
                    {
                    mytime1.hour=0; 
                    mytime1.date++;
                    if(mytime1.year%4==0)
                     a=29;
                     else a=28;
                     switch(mytime1.month)
                      {
                       case 1:
                       case 3:
                       case 5:
                       case 7:
                       case 8:
                       case 10:
                       case 12:maxdate=31; break;
                       case 4:
                       case 6:
                       case 9:
                       case 11:maxdate=30;break;
                       case 2:maxdate=a;  break; 
                       default:break;
                         } 
                        if(mytime1.date>=maxdate) 
                         {
                            mytime1.date=0; 
                             mytime1.month++;  
                            if(mytime1.month>=12) 
                              {
             
                                mytime1.month=0; 
                              mytime1.year++;
                              }
                        }
                        }
                }
           }
  flag.second=1;
  
  ReadReal();
  ProcEC();
  check_second();
}

⌨️ 快捷键说明

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