📄 lcd4.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 + -