📄 ok.c
字号:
/*遥控端监控系统控制软件*/
#include <hpi.h>
#if 1
#define INTERRUPTBASED 0
#endif
/********************************
全局变量和常量定义部分
********************************/
const unsigned shuzi0[32]={0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20,0x30,0x1F,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符0显示数组
const unsigned shuzi1[32]={ 0x00,0x10,0x10,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x3F,0x20,0x20,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符1显示数组
const unsigned shuzi2[32]={0x00,0x70,0x78,0x08,0x08,0x88,0xF8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x38,0x2C,0x26,0x23,0x31,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符2显示数组
const unsigned shuzi3[32]={0x00,0x30,0x38,0x88,0x88,0xC8,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x20,0x20,0x31,0x1F,0x0E,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符3显示数组
const unsigned shuzi4[32]={0x00,0x00,0xC0,0xE0,0x30,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x24,0x24,0x3F,0x3F,0x24,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符4显示数组
const unsigned shuzi5[32]={0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x39,0x21,0x20,0x31,0x1F,0x0E,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符5显示数组
const unsigned shuzi6[32]={0x00,0xE0,0xF0,0x98,0x88,0x98,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x31,0x20,0x31,0x1F,0x0E,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符6显示数组
const unsigned shuzi7[32]={ 0x00,0x38,0x38,0x08,0xC8,0xF8,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符7显示数组
const unsigned shuzi8[32]={ 0x00,0x70,0xF8,0x88,0x08,0x88,0xF8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x3E,0x23,0x21,0x23,0x3E,0x1C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符8显示数组
const unsigned shuzi9[32]={0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x33,0x22,0x33,0x1F,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,};//字符9显示数组
const unsigned bei[32]= {0x00,0x00,0x80,0x80,0x80,0xF8,0x00,0x00,0xF8,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x10,0x08,0x7F,0x00,0x00,0x7F,0x41,
0x40,0x40,0x70,0x00,0x00,0x00,};//字符“北”显示数组
const unsigned jing[32]={0x00,0x10,0x30,0xD0,0x50,0x50,0x54,0x58,0x50,0x50,0xF0,0x10,0x10,0x10,0x00,0x00,0x40,0x40,0x20,0x13,0x4A,0x82,0x42,0x3E,0x02,0x0A,
0x13,0x10,0x60,0x00,0x00,0x00,};//字符“京”显示数组
const unsigned gong[32]={0x00,0x00,0x10,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x40,0x40,
0x40,0x40,0x20,0x00,0x00,0x00,};//字符“工”显示数组
const unsigned ye[32]={0x00,0x40,0x80,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x40,0x41,0x4E,0x40,0x7F,0x40,0x40,0x7F,0x4C,
0x43,0x40,0x40,0x00,0x00,0x00,};//字符“业”显示数组
const unsigned da[32]={0x00,0x00,0x80,0x80,0x80,0x80,0xFC,0x80,0x80,0x80,0x80,0x80,0x40,0x00,0x00,0x00,0x00,0x40,0x40,0x20,0x10,0x0E,0x01,0x03,0x04,0x18,
0x20,0x40,0x40,0x40,0x00,0x00,};//字符“大”显示数组
const unsigned xue[32]={ 0x00,0xC0,0x40,0x28,0x50,0x40,0x48,0x50,0x40,0x30,0x48,0xC0,0x40,0x00,0x00,0x00,0x00,0x08,0x08,0x09,0x09,0x49,0x7F,0x0B,0x09,0x09,
0x08,0x08,0x08,0x00,0x00,0x00,};//字符“学”显示数组
const unsigned han[32]={0x00,0xC0,0xF8,0x40,0x20,0x40,0xF8,0xA8,0xA8,0xA8,0xA8,0x78,0x00,0x00,0x00,0x00,0x40,0x21,0x1F,0x08,0x30,
0x10,0x12,0x12,0x3E,0x12,0x12,0x12,0x08,0x00,0x00,0x00,};//字符“焊”显示数组
const unsigned jie[32]={0x00,0x40,0xF8,0x44,0xA0,0x90,0xB0,0xD4,0x98,0x90,0xD0,0xB0,0x90,0x80,0x00,0x00,0x00,0x44,0x7F,0x01,0x80,
0x84,0x8C,0x52,0x25,0x34,0x2C,0x44,0x00,0x00,0x00,0x00,};//字符“接”显示数组
const unsigned yan[32]={0x00,0x08,0xF8,0x08,0x88,0x08,0x08,0xF8,0x08,0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x04,0x1F,0x20,0x21,0x3F,
0x41,0x31,0x0F,0x01,0x01,0x3F,0x01,0x01,0x00,0x00,0x00,};//字符“研”显示数组
const unsigned jiu[32]={0x00,0x20,0x90,0x90,0x70,0x90,0x14,0x38,0x50,0x50,0x50,0xB0,0x10,0x00,0x00,0x00,0x00,0x41,0x42,0x22,0x1A,
0x07,0x02,0x02,0x02,0x7E,0x40,0x40,0x60,0x00,0x00,0x00,};//字符“究”显示数组
const unsigned suo[32]={ 0x00,0xF0,0x48,0x48,0x48,0xC4,0x08,0xF8,0x90,0x88,0x88,0x88,0x80,0x80,0x00,0x00,0x60,0x1F,0x04,0x04,
0x04,0x47,0x38,0x07,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,};//字符“所”显示数组
const unsigned han1[32]= {0x00,0xC0,0xF8,0xF8,0x60,0x60,0xF8,0xF8, 0xA8,0xA8,0xA8,0xF8,0x78,0x00,0x00,0x00,0x40,0x61,0x3F,0x1F,
0x38,0x30,0x12,0x12,0x3E,0x3E,0x12,0x12,0x1A,0x08,0x00,0x00,};//字符“焊”显示数组
const unsigned jie1[32]={ 0x00,0x40,0xF8,0xFC,0xE4,0xB0,0xB0,0xF4,0xDC,0x98,0xD0,0xF0,0xB0,0x90,0x80,0x00,0x00,0x44,0x7F,0x7F,
0x81,0x84,0x8C,0xDE,0x77,0x35,0x3C,0x6C,0x44,0x00,0x00,0x00,};//字符“接”显示数组
const unsigned yan1[32]={0x00,0x08,0xF8,0xF8,0x88,0x88,0x08,0xF8,0xF8,0x08,0xF8,0xF8,0x08,0x00,0x00,0x00,0x04,0x1F,0x3F,0x21,0x3F,
0x7F,0x71,0x3F,0x0F,0x01,0x3F,0x3F,0x01,0x01,0x00,0x00,};//字符“研”显示数组
const unsigned jiu1[32]={ 0x00,0x20,0xB0,0x90,0xF0,0xF0,0x94,0x3C,0x78,0x50,0x50,0xF0,0xB0,0x10,0x00,0x00,0x00,0x41,0x43,0x62,0x3A,
0x1F,0x07,0x02,0x02,0x7E,0x7E,0x40,0x60,0x60,0x00,0x00,};//字符“究”显示数组
const unsigned suo1[32]={ 0x00,0xF0,0xF8,0x48,0x48,0xCC,0xCC,0xF8,0xF8,0x98,0x88,0x88,0x88,0x80,0x80,0x00,0x60,0x7F,0x1F,0x04,0x04,
0x47,0x7F,0x3F,0x07,0x00,0x7F,0x7F,0x00,0x00,0x00,0x00,};//字符“所”显示数组
const unsigned dian[32]={0x00,0xE0,0xE0,0x20,0x20,0x20,0xF8,0xF8,0x20,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x09,0x09,
0x09,0x7F,0x7F,0x49,0x49,0x4F,0x4F,0x60,0x60,0x00,0x00,};//字符“电”显示数组
const unsigned liu[32]={0x00,0x40,0x40,0xD8,0xF8,0x20,0xA0,0xE4,0x6C,0x28,0xA0,0xA0,0xB0,0x10,0x00,0x00,0x00,0x18,0x7E,0x67,0x41,
0x7F,0x3F,0x01,0x7D,0x7D,0x7F,0x7E,0x60,0x60,0x40,0x00,};//字符“流”显示数组
const unsigned A[32]={0x00,0x80,0xF8,0x7E,0x7E,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x3F,0x07,0x04,0x04,0x07,
0x3F,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//字符“A”显示数组
const unsigned zhong[32]={0x00,0xC0,0xE0,0x20,0x20,0x20,0xFC,0xFC,0x20,0x20,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x07,0x07,0x04,0x04,
0x04,0x7F,0x7F,0x04,0x04,0x04,0x0F,0x0F,0x00,0x00,0x00,};//字符“中”显示数组
const unsigned diann[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//符号“.”显示数组
const unsigned fa[32]={ 0x00,0x10,0x3E,0x10,0x10,0xF0,0x9F,0x90,0x90,0x92,0x94,0x1C,0x10,0x10,0x10,0x00,0x40,0x20,0x10,0x88,0x87,
0x41,0x46,0x28,0x10,0x28,0x27,0x40,0xC0,0x40,0x00,0x00,};//字符“发”显示数组
const unsigned song[32]={0x40,0x41,0xC6,0x00,0x40,0x48,0x49,0x4E,0xF8,0x4C,0x4B,0x48,0x48,0x40,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,
0x48,0x44,0x43,0x40,0x41,0x42,0x4C,0x40,0x40,0x40,0x00,};//字符“送”显示数组
const unsigned cheng[32]={0x00,0x00,0xF8,0x48,0x48,0x48,0xC8,0x08,0xFF,0x08,0x09,0x0A,0xC8,0x88,0x08,0x00,
0x40,0x30,0x0F,0x00,0x08,0x50,0x4F,0x20,0x10,0x0B,0x0C,0x12,0x21,0x40,0xF0,0x00,};//字符“成”显示数组
const unsigned gong1[32]={0x00,0x04,0x04,0x04,0xFC,0x04,0x14,0x14,0x10,0x90,0x7F,0x10,0x10,0xF0,0x00,0x00,0x04,0x0C,0x04,0x04,0x03,0x42,0x22,0x11,0x0C,
0x23,0x20,0x60,0x20,0x1F,0x00,0x00,};//字符“功”显示数组
int j; //保存按键信息
int k=1;//按键顺序
int p[3]={0};//存放反馈数据
/**************************************
函数声明部分
***************************************/
int *ld;//定义一个指针,用于存放显示字符数组的地址
void intlcd(void);//液晶初始化函数声明
void clearlcd(void);//液晶清屏函数声明
void delay(int period);//延时函数声明
void wr_led(unsigned int num);//利用MCBSP通道口发送数据的函数声明
void wr_leddat(unsigned int num1);//利用MCBSP通道口发送数据的函数声明
void write10(unsigned int page,unsigned int ch,unsigned int cl,const unsigned int *ld);//液晶显示数据的函数声明
volatile unsigned int* DRR10 = (volatile unsigned int *) 0x0041;//定义MCBSP0的数据接受寄存器
volatile unsigned int* DXR10 = (volatile unsigned int *) 0x0043;//定义MCBSP0的数据发送寄存器数据发送和接受的标志位
extern volatile struct StatusStruct{
unsigned int reserved:10;
unsigned int THRE:1; //发送就绪标志
unsigned int BI:1; //间断错误标志
unsigned int FE:1; //帧错误标志
unsigned int PE:1; //校验标志
unsigned int OE:1; //超时错误标志
unsigned int DR:1; //接收准备标志
}UARTLSR;
#define BUFSIZE 20 //缓存大小
#define BUFMAXSIZE 50 //缓存的最大可能大小
volatile int RxCharCnt; //接收到的字符数
int *RxHeadPtr1; //存放接受数据寄存器1的地址
int *RxTailPtr1; //存放接受数据寄存器1的地址
int *RxHeadPtr; //存放接受数据寄存器的地址
int *RxTailPtr; //存放接受数据寄存器的地址
int *TxHeadPtr; //存放数据发送寄存器的地址
int *TxTailPtr; //存放数据发送寄存器的地址
int RxCharBuf[BUFMAXSIZE]={0}; //接受数据的存储器
int TxCharBuf[BUFMAXSIZE]={0}; //发送数据的存储器
int j=0; //初始化按键信息
int Rxcount=0; //反馈数据计数器
/*************************************************
void InitPLL()
PLL初始化子程序
功能:初始化PLL
入口参数:无
出口参数:无
调用方式:InitPLL()
****************************************************/
void InitPLL()
{
volatile unsigned int *CLKMD = (volatile unsigned int*)0x58;//设置时钟模式寄存器的地址
*CLKMD=0; //将时钟模式寄存器设置为分频器模式
while((*CLKMD&1)==1); //判断时钟模式寄存器是否为分频器模式
*CLKMD=0x1007; //将时钟模式寄存器设置为PLL模式同时设置乘法系数为2即将时钟频率成倍
while((*CLKMD&1)==0); //判断时钟模式寄存器是否为PLL模式
}
#ifdef INTERRUPTBASED
/*主程序*/
main()
{
int RxCharBuf[BUFSIZE]={0}; //接受数据存储器
int TxCharBuf[BUFSIZE]={0}; //发送数据存储器
int RxCharBuf1[50]={0}; //接受数据存储器1
volatile unsigned int *PMST = (volatile unsigned int*)0x1D; //定义5402的PMST寄存器
*PMST=0x00a0; //初始化5402的PMST寄存器 IPTR=0x4000, OVLY=1, DROM=0, MP/MC=0
InitPLL(); //调用子程序InitPLL(),初始化5402的PLL
init_hpi(); //调用子程序初始化主机接口HPI
init_spi(); //调用子程序初始化MCBSP口
intlcd(); //调用子程序初始化液晶显示器
UARTInit(); //调用子程序初始化MCBSP口和DMA通道
RxCharCnt=0; //初始化字符计数器
RxHeadPtr=RxCharBuf; //初始化RxHeadPtr
RxTailPtr=RxCharBuf; //初始化RxTailPtr
TxHeadPtr=TxCharBuf; //初始化TxHeadPtr
TxTailPtr=TxCharBuf; //初始化TxTailPtr
RxHeadPtr1=RxCharBuf1; //初始化RxHeadPtr1
RxTailPtr1=RxCharBuf1; //初始化RxTailPtr1
clearlcd(); //调用液晶清屏函数
init_timer0(); //调用子程序初始化定时器
UARTStart(0); //调用UART启动函数
asm(" rsbx intm "); //开中断
/**********************************************
液晶显示器显示焊接电流 A和数字000的字样
**********************************************/
write10(0xb0,0x11,0x00 ,han1);
write10(0xb0,0x13,0x00 ,jie1);
write10(0xb0,0x15,0x00 ,dian);
write10(0xb0,0x17,0x00 ,liu);
write10(0xb3,0x15,0x00 ,A);
write10(0xb6,0x10,0x00 ,han1);
write10(0xb6,0x11,0x00 ,jie1);
write10(0xb6,0x12,0x00 ,zhong);
write10(0xb6,0x13,0x00 ,diann);
write10(0xb6,0x14,0x00 ,diann);
write10(0xb6,0x15,0x00 ,diann);
write10(0xb3,0x13,0x00 ,shuzi0);
write10(0xb3,0x12,0x00 ,shuzi0);
write10(0xb3,0x14,0x00 ,shuzi0);
/****************************************
外部数据接收和发送
******************************************/
for(;;)
{
/************************************************
判断按键子程序
*************************************************/
if(GUI_KeyValue != 0)
{j = GUI_KeyValue;}
if(k==1)
{
switch(GUI_KeyValue)
{
case 1:
UARTTxChar(0X01);
write10(0xb3,0x14,0x00 ,shuzi1);
k=2;
GUI_KeyValue = 0;
break;
case 2:
UARTTxChar(0X02);
write10(0xb3,0x14,0x00 ,shuzi2);
k=2;
GUI_KeyValue = 0;
break;
case 3:
UARTTxChar(0X03);
write10(0xb3,0x14,0x00 ,shuzi3);
k=2;
GUI_KeyValue = 0;
break;
case 4:
UARTTxChar(0X04);
write10(0xb3,0x14,0x00 ,shuzi4);
k=2;
GUI_KeyValue = 0;
break;
case 5:
UARTTxChar(0X05);
write10(0xb3,0x14,0x00 ,shuzi5);
k=2;
GUI_KeyValue = 0;
break;
case 6:
UARTTxChar(0X06);
write10(0xb3,0x14,0x00 ,shuzi6);
GUI_KeyValue = 0;
break;
case 7:
UARTTxChar(0X07);
write10(0xb3,0x14,0x00 ,shuzi7);
GUI_KeyValue = 0;
break;
case 8:
UARTTxChar(0X08);
write10(0xb3,0x14,0x00 ,shuzi8);
k=2;
GUI_KeyValue = 0;
break;
case 9:
UARTTxChar(0X09);
write10(0xb3,0x14,0x00 ,shuzi9);
k=2;
GUI_KeyValue = 0;
break;
case 10:
UARTTxChar(0X0a);
write10(0xb3,0x14,0x00 ,shuzi0);
k=2;
GUI_KeyValue = 0;
break;
case 11:
UARTTxChar(0X0b);
GUI_KeyValue = 0;
break;
case 12:
UARTTxChar(0X0c);
GUI_KeyValue = 0;
break;
case 13:
UARTTxChar(0X0d);
GUI_KeyValue = 0;
break;
case 14:
UARTTxChar(0X0e);
GUI_KeyValue = 0;
break;
case 15:
UARTTxChar(0X0f);
GUI_KeyValue = 0;
break;
case 16:
UARTTxChar(0X10);
GUI_KeyValue = 0;
break;
case 17:
UARTTxChar(0X11);
GUI_KeyValue = 0;
break;
case 18:
UARTTxChar(0X12);
GUI_KeyValue = 0;
break;
case 20:
UARTTxChar(0X13);
GUI_KeyValue = 0;
break;
default:
GUI_KeyValue = 0;
break;
}
}
if(k==2)
{
switch(GUI_KeyValue)
{
case 1:
UARTTxChar(0X01);
write10(0xb3,0x13,0x00 ,shuzi1);
k=3;
GUI_KeyValue = 0;
break;
case 2:
UARTTxChar(0X02);
write10(0xb3,0x13,0x00 ,shuzi2);
k=3;
GUI_KeyValue = 0;
break;
case 3:
UARTTxChar(0X03);
write10(0xb3,0x13,0x00 ,shuzi3);
k=3;
GUI_KeyValue = 0;
break;
case 4:
UARTTxChar(0X04);
write10(0xb3,0x13,0x00 ,shuzi4);
k=3;
GUI_KeyValue = 0;
break;
case 5:
UARTTxChar(0X05);
write10(0xb3,0x13,0x00 ,shuzi5);
k=3;
GUI_KeyValue = 0;
break;
case 6:
UARTTxChar(0X06);
write10(0xb3,0x13,0x00 ,shuzi6);
k=3;
GUI_KeyValue = 0;
break;
case 7:
UARTTxChar(0X07);
write10(0xb3,0x13,0x00 ,shuzi7);
k=3;
GUI_KeyValue = 0;
break;
case 8:
UARTTxChar(0X08);
write10(0xb3,0x13,0x00 ,shuzi8);
k=3;
GUI_KeyValue = 0;
break;
case 9:
UARTTxChar(0X09);
write10(0xb3,0x13,0x00 ,shuzi9);
k=3;
GUI_KeyValue = 0;
break;
case 10:
UARTTxChar(0X0a);
write10(0xb3,0x13,0x00 ,shuzi0);
k=3;
GUI_KeyValue = 0;
break;
case 11:
UARTTxChar(0X0b);
GUI_KeyValue = 0;
break;
case 12:
UARTTxChar(0X0c);
GUI_KeyValue = 0;
break;
case 13:
UARTTxChar(0X0d);
GUI_KeyValue = 0;
break;
case 14:
UARTTxChar(0X0e);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -