📄 main.c
字号:
#include <msp430x14x.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define uint unsigned int
#define uchar unsigned char
#define BYTE unsigned char
#define ulong unsigned long int
#define bit0 (0x01<<0)
#define bit1 (0x01<<1)
#define bit2 (0x01<<2)
#define bit3 (0x01<<3)
#define bit4 (0x01<<4)
#define bit5 (0x01<<5)
#define bit6 (0x01<<6)
#define bit7 (0x01<<7)
uchar num[] = {
/*1 */
0x00,0x42,0x7F,0x40,0x00,0x00,
/*2 */
0x62,0x51,0x49,0x49,0x46,0x00,
/*3 */
0x21,0x41,0x49,0x4D,0x33,0x00,
/*4 */
0x18,0x14,0x12,0x7F,0x10,0x00,
/*5 */
0x27,0x45,0x45,0x45,0x39,0x00,
/*6 */
0x3C,0x4A,0x49,0x49,0x31,0x00,
/*7 */
0x01,0x71,0x09,0x05,0x03,0x00,
/*8 */
0x36,0x49,0x49,0x49,0x36,0x00,
/*9 */
0x46,0x49,0x49,0x29,0x1E,0x00,
/*0 */
0x3E,0x51,0x49,0x45,0x3E,0x00,
/*-号 */
0x00,0x08,0x08,0x08,0x08,0x00,
/*电量 */
0x38,0x38,0x38,0x38,0x38,0x38,
/*. */
0x00,0x60,0x60,0x00,0x00,0x00,
/*: */
0x00,0x36,0x36,0x00,0x00,0x00,
/*度 */
0x00,0x00,0x06,0x06,0x00,0x00,
/*分 */
0x00,0x00,0x00,0x06,0x00,0x00,
/*秒 */
0x00,0x06,0x00,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar word[]={
/*a */
0x24,0x54,0x54,0x38,0x40,0x00,0x00,0x00,
/*h */
0x7f,0x08,0x04,0x04,0x78,0x00,0x00,0x00,
/*g */
0x98,0xA4,0xA4,0xA4,0x78,0x00,0x00,0x00,
/*i */
0x00,0x00,0x79,0x00,0x00,0x00,0x00,0x00,
/*l */
0x00,0x41,0x7F,0x40,0x00,0x00,0x00,0x00,
/*n */
0x04,0x78,0x04,0x04,0x78,0x00,0x00,0x00,
/*O */
0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00,
/*p */
0xFC,0x24,0x24,0x24,0x18,0x00,0x00,0x00,
/*H */
0x7f,0x08,0x08,0x08,0x7f,0x00,0x00,0x00,
/*D */
0x7f,0x41,0x41,0x41,0x3e,0x00,0x00,0x00,
/*t */
0x04,0x3F,0x44,0x44,0x24,0x00,0x00,0x00,
/*A */
0x7C,0x12,0x11,0x12,0x7C,0x00,0x00,0x00,
/*B */
0x7F,0x49,0x49,0x49,0x36,0x00,0x00,0x00,
/*L */
0x7F,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
/*N */
0x7F,0x04,0x08,0x10,0x7F,0x00,0x00,0x00,
/*P */
0x7F,0x09,0x09,0x09,0x06,0x00,0x00,0x00,
/*R */
0x7F,0x09,0x19,0x29,0x46,0x00,0x00,0x00,
/*S */
0x26,0x49,0x49,0x49,0x32,0x00,0x00,0x00,
/*T */
0x01,0x01,0x7F,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar results[8];
uchar number;
uchar scia_tx[128];
uchar scia_txlen=0;
uchar flag0=0;
uchar flag1=0;
uchar rx1_buf[64];
int ADC_Flag=0;
int rx1num=1;
uchar rx1temp=0;
uchar rx1_cnt=0;
uchar *p=&num[0];
uchar *m=&word[0];
/******************************************TIME B VAR*****************************************/
uchar timecnt=0; //10ms记数器
uchar second=0; //秒记数器
uchar second1=0; //1秒记数器
uchar second6=0; //6秒记数器
uchar second6_flg=0; //6秒标志位
/************************************************com watchdog**************************/
uchar ComWatchDogFlag=0x00; //串口狗时间的标志位
uchar ComWatchDogcnt=0; //串口记数器
uchar ComWatchdogcnt1=0;
uchar ComWatchdogcnt2=0;
uchar reset=0; //程序复位标志位
uchar timecnt1=0;
//#define Lcd_Bus P4
#define CSA bit6
#define CSB bit7
#define RS bit5
#define E bit3
#define RW bit4
#define Lcd_Rst bit2
void Check_0180_State1();
void Check_0180_State2();
void Com1String();
void Clr_Screen();
//================================================================
// KS0108??????
//================================================================
#define Set_Disp_On 0x3F
#define Set_Disp_Off 0x3E
#define Set_Column 0x40
#define Set_Page 0xB8
#define Set_Start_Line 0xC0
//================================================================
// ??
//================================================================
void Delay()
{
uchar i,j;
for(i=0;i<255;i++)
for(j=0;j<100;j++);
}
//================================================================
// ???
//================================================================
void Long_Delay(int t)
{
int n=0xff;
while(--t){
while(--n);
n=0xff;
}
}
//================================================================
// KS0108写指令
//================================================================
Write_0108_Reg1(uchar Reg_Code)
{
Check_0180_State1();
P2OUT&=~CSA;
P4DIR=0xff;
P2OUT&=~RS ; //RS =0
P2OUT&=~RW; //RW=0
P4OUT=Reg_Code; //Lcd_Bus=Reg_Code;
P2OUT|=E; //E=1
_NOP();
_NOP();
P2OUT&=~E; //E=0
_NOP();
_NOP();
P2OUT|=CSA;
}
Write_0108_Reg2(uchar Reg_Code)
{
Check_0180_State2();
P4DIR=0xff;
P2OUT&=~CSB;
P2OUT&=~RS; //RS=0
P2OUT&=~RW; //RW=0
P4OUT=Reg_Code; //Lcd_Bus=Reg_Code;
P2OUT|=E; //E=1
_NOP();
_NOP();
P2OUT&=~E; //E=0
_NOP();
_NOP();
P2OUT|=CSB;
}
//================================================================
// KS0108写数据
//================================================================
Write_0108_Data1(uchar Disp_Data)
{
Check_0180_State1();
P2OUT&=~CSA;
P4DIR=0xff;
P2OUT|=RS ; //RS =1
P2OUT&=~RW; //RW=0
P4OUT=Disp_Data; //Lcd_Bus=Reg_Code;
P2OUT|=E; //E=1
_NOP();
_NOP();
P2OUT&=~E; //E=0
_NOP();
_NOP();
P2OUT|=CSA;
}
Write_0108_Data2(uchar Disp_Data)
{
Check_0180_State2();
P4DIR=0xff;
P2OUT&=~CSB;
P2OUT|=RS; // RS=1
P2OUT&=~RW; // RW=0
P4OUT=Disp_Data; //Lcd_Bus=Disp_Data
P2OUT|=E; // E=1
_NOP();
_NOP();
P2OUT&=~E; // E=0
_NOP();
_NOP();
P2OUT|=CSB;
}
//================================================================
// 读KS0108数据
//================================================================
void Read_0108_Data1()
{
Check_0180_State1();
uchar Data;
P2OUT&=~CSA;
P4DIR=0x00;
P2OUT|=RS;
P2OUT|=RW;
P2OUT|=E;
Data=P4IN;
_NOP();
_NOP();
_NOP();
_NOP();
P2OUT&=~E;
Com1String(&Data);
P2OUT|=CSA;
}
void Read_0108_Data2()
{
Check_0180_State2();
uchar Data;
P2OUT&=~CSB;
P4DIR=0x00;
P2OUT|=RS; //RS=1
P2OUT|=RW; //RW=1
P2OUT|=E; //E=1;
Data=P4IN; //Disp_Data=Lcd_Bus
_NOP();
_NOP();
_NOP();
_NOP();
P2OUT&=~E; //E=0;
P2OUT|=CSB;
Com1String(&Data);
}
//================================================================
// 设置,X???????,Y???page???
//================================================================
Set_XY(uchar X_Column, uchar Y_Page)
{
Write_0108_Reg1(Set_Page+Y_Page);
Write_0108_Reg1(Set_Column+X_Column);
Write_0108_Reg2(Set_Page+Y_Page);
Write_0108_Reg2(Set_Column+X_Column);
}
//================================================================
// KS0108初始化
//================================================================
void Init_0108()
{
P2OUT&=~Lcd_Rst; //Lcd_Rst=0
Delay();
P2OUT|=Lcd_Rst; //Lcd_Rst=1
P2OUT&=~RW; //RW,E,RS=0
P2OUT&=~RS;
P2OUT&=~E;
P2OUT|=CSA;
P2OUT|=CSB;
Delay();
Clr_Screen();
Write_0108_Reg1(Set_Disp_On);
Write_0108_Reg2(Set_Disp_On);
Delay();
Write_0108_Reg1(Set_Start_Line);
Write_0108_Reg2(Set_Start_Line);
}
//================================================================
// KS0108清屏
//================================================================
void Clr_Screen()
{
uchar Page;
for(uchar i=0;i<8;i++)
{
Page=Set_Page+i;
Write_0108_Reg1(Page);//送入左半屏
Write_0108_Reg1(Set_Column);//设置列地址
for(uchar j=0;j<64;j++)
{
Write_0108_Data1(0x00);
}
} //左半屏清屏
for(uchar i=0;i<8;i++)
{
Page=i+Set_Page;//设置页地址*/
Write_0108_Reg2(Page);//送入右半屏*/
Write_0108_Reg2(Set_Column);//设置列地址
for(uchar j=0;j<64;j++)
{
Write_0108_Data2(0x00);
}
} //右半屏清屏
}
//================================================================
// KS0108写数据
//================================================================
Word1(uchar i) //写字母左半屏
{
for(m=(word+i);m<(word+i+8);m++)
{
Write_0108_Data2(*m);
}
}
Word2(uchar i) //写字母右半屏
{
for(m=(word+i);m<(word+i+8);m++)
{
Write_0108_Data1(*m);
}
}
Num1(number) //写数字左半屏
{
for(p=(num+number);p<(num+number+6);p++)
{
Write_0108_Data2(*p);
}
}
Num2(number) //写数字右半屏
{
for(p=(num+number);p<(num+number+6);p++)
{
Write_0108_Data1(*p);
}
}
void Lcd_data()
{
Set_XY(0,0);
Word1(136);
Word1(88);
Word1(144);
Word1(152);
Word1(120);
Word1(128);
Word1(112);
Word1(152);
Word2(72);
Word2(48);
Word2(120);
Word2(152);
Set_XY(50,0);
Num2(66);Num2(66);
Set_XY(0,5);
Word1(104);
Word1(0);
Word1(80);
Num1(78);
Set_XY(0,6);
Word1(104);
Word1(40);
Word1(16);
Num1(78);
Set_XY(0,7);
Word1(64);
Word1(16);
Word1(80);
Num1(78);
//}
/*for(uchar i=0;i<8;i++)
{
Page=Set_Page+i;
Write_0108_Reg2(Page);
Write_0108_Reg2(Set_Column);
for(uchar j=0;j<32;j++)
{
Write_0108_Data2(0x00);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -