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

📄 main.c

📁 一个msp430与HGO12864加4*4键盘的菜单程序... ...!
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <msp430x16x.h>
#include "display.h"

void Init_Port();
void Delay(unsigned int i);  //延时子程序
int KeyProcess(void);
long int tempp=0;

void d0_3_1(void);
void d0_3_2(void);
void d0_3_3(void);
void d1_2_1(void);
void d1_2_2(void);
void d2(void);
void d3(void);
void d4(void);

//zhi:显示数值 hang:显示行数  fab:反显
/*void displayy(long int zhi,char hang,char fab)
{
  unsigned char temp1,temp2,temp3,temp4,temp5;
  long int temp;
  temp = zhi;
  temp5= (temp/10000)%10;
  temp4= (temp/1000)%10;
  temp3= (temp/100)%10;
  temp2= (temp/10)%10;
  temp1= temp%10;
  
    WriteChinese(0, hang ,0, fab); //"电"
    WriteChinese(16, hang ,1, fab);//"压"
    WriteAbc(32, hang ,10, fab);   //":"
    WriteAbc(41, hang ,temp5, fab);//"0"
    WriteAbc(50, hang ,temp4, fab);//"0"
    WriteAbc(59, hang ,11, fab);   //"."
    WriteAbc(68, hang ,temp3, fab);//"0"
    WriteAbc(77, hang ,temp2, fab);//"0"
    WriteAbc(86, hang ,temp1, fab);//"0"
    WriteAbc(95, hang ,12, fab);   //"V"
    
}*/
//******************************************************************************
#define SIZE_OF_KEYBD_MENU 10 //菜单长度
#define uchar unsigned char
uchar KeyFuncIndex=0;

void (*KeyFuncPtr)(); //按键功能指针

typedef struct
{
uchar KeyStateIndex; //当前状态索引号
uchar KeyDnState; //按下"向下"键时转向的状态索引号
uchar KeyUpState; //按下"向上"键时转向的状态索引号
uchar KeyCrState; //按下"回车"键时转向的状态索引号
uchar KeyQuxiao;  //按下"取消"键时转向的状态索引号
void (*CurrentOperate)(); //当前状态应该执行的功能操作
} KbdTabStruct;

KbdTabStruct const KeyTab[SIZE_OF_KEYBD_MENU]=
{
//序-下-上-确-返------------------
{ 0, 1, 2, 3, 0,(*d0_3_1)},//顶层 "数据读取"
{ 1, 2, 0, 0, 1,(*d0_3_2)},//顶层 "功能设置"
{ 2, 0, 1, 7, 2,(*d0_3_3)},//顶层 "版本信息"

{ 3, 4, 4, 5, 0,(*d1_2_1)},//第二层>>d0_3_1的展开 "电压读取"
{ 4, 3, 3, 6, 0,(*d1_2_2)},//第二层>>d0_3_1的展开 "电流读取"

{ 5, 5, 5, 5, 3,(*d2)},//第三层>>d1_2_1的展开 "ABC电压"
{ 6, 6, 6, 6, 4,(*d3)},//第三层>>d1_2_2的展开 "ABC电流"

{ 7, 7, 7, 2, 7,(*d4)}//第三层>>d0_3_3的展开 "版本信息"
};
//******************************************************************************
void d0_3(uchar sel)
{
  ClearSree(0);//清屏
  //----------lie-hang-xv-fx-----
  WriteChinese(32, 0 ,0, 0); //"数"
  WriteChinese(48, 0 ,1, 0);//"据"
  WriteChinese(64, 0 ,2, 0);//"读"
  WriteChinese(80, 0 ,3, 0);//"取"
  
  WriteChinese(32, 2 ,13, 0); //"功"
  WriteChinese(48, 2 ,14, 0);//"能"
  WriteChinese(64, 2 ,15, 0);//"设"
  WriteChinese(80, 2 ,16, 0);//"置"
  
  WriteChinese(32, 4 ,17, 0); //"版"
  WriteChinese(48, 4 ,18, 0);//"本"
  WriteChinese(64, 4 ,19, 0);//"信"
  WriteChinese(80, 4 ,20, 0);//"息"
  
  WriteChinese(0, 6 ,9, 0);  //"确"
  WriteChinese(16, 6 ,10, 0);//"认"
  WriteChinese(56, 6 ,21, 0);//"箭头"
  switch(sel)
     {
         case 1:
           WriteChinese(32, 0 ,0, 1); //"数"
           WriteChinese(48, 0 ,1, 1);//"据"
           WriteChinese(64, 0 ,2, 1);//"读"
           WriteChinese(80, 0 ,3, 1);//"取"
           
           WriteChinese(0, 6 ,9, 0);  //"确"
           WriteChinese(16, 6 ,10, 0);//"认"
           WriteChinese(56, 6 ,21, 0);//"箭头"
                break;
         case 2:
           WriteChinese(32, 2 ,13, 1); //"功"
           WriteChinese(48, 2 ,14, 1);//"能"
           WriteChinese(64, 2 ,15, 1);//"设"
           WriteChinese(80, 2 ,16, 1);//"置"
           
           WriteChinese(0, 6 ,9, 0);  //"确"
           WriteChinese(16, 6 ,10, 0);//"认"
           WriteChinese(56, 6 ,21, 0);//"箭头"
                break; 
         case 3:
           WriteChinese(32, 4 ,17, 1); //"版"
           WriteChinese(48, 4 ,18, 1);//"本"
           WriteChinese(64, 4 ,19, 1);//"信"
           WriteChinese(80, 4 ,20, 1);//"息"
           
           WriteChinese(0, 6 ,9, 0);  //"确"
           WriteChinese(16, 6 ,10, 0);//"认"
           WriteChinese(56, 6 ,21, 0);//"箭头"
                break;
     }
}
void d0_3_1(void)
{
  d0_3(1);//读取数据反显
}
void d0_3_2(void)
{
  d0_3(2);//功能设置反显
}
void d0_3_3(void)
{
  d0_3(3);//版本信息反显
}
//==============================================================================
void d1_2(uchar sel)
{
  ClearSree(0);//清屏
  WriteChinese(32, 0 ,5, 0); //"电"
  WriteChinese(48, 0 ,6, 0);//"压"
  WriteChinese(64, 0 ,2, 0);//"读"
  WriteChinese(80, 0 ,3, 0);//"取"
  
  WriteChinese(32, 2 ,5, 0); //"电"
  WriteChinese(48, 2 ,7, 0);//"流"
  WriteChinese(64, 2 ,2, 0);//"读"
  WriteChinese(80, 2 ,3, 0);//"取"
  
  WriteChinese(0, 6 ,9, 0);//"确"
  WriteChinese(16, 6 ,10, 0);//"认"
  
  WriteChinese(96, 6 ,11, 0);  //"取"
  WriteChinese(112, 6 ,12, 0);//"消"
  WriteChinese(56, 6 ,21, 0);//"箭头"
  switch(sel)
  {
     case 1:
            WriteChinese(32, 0 ,5, 1); //"电"
            WriteChinese(48, 0 ,6, 1);//"压"
            WriteChinese(64, 0 ,2, 1);//"读"
            WriteChinese(80, 0 ,3, 1);//"取"
            
            WriteChinese(0, 6 ,9, 0);  //"确"
            WriteChinese(16, 6 ,10, 0);//"认"
            
            WriteChinese(96, 6 ,11, 0); //"取"
            WriteChinese(112, 6 ,12, 0);//"消"
            WriteChinese(56, 6 ,21, 0);//"箭头"
            break;
     case 2:
            WriteChinese(32, 2 ,5, 1);//"电"
            WriteChinese(48, 2 ,7, 1);//"流"
            WriteChinese(64, 2 ,2, 1);//"读"
            WriteChinese(80, 2 ,3, 1);//"取"
            
            WriteChinese(0, 6 ,9, 0);  //"确"
            WriteChinese(16, 6 ,10, 0);//"认"
            
            WriteChinese(96, 6 ,11, 0); //"取"
            WriteChinese(112, 6 ,12, 0);//"消"
            WriteChinese(56, 6 ,21, 0);//"箭头"
            break;
     default:   
            break;
  }
}
void d1_2_1(void)
{
    d1_2(1);//反显电压读取
}
void d1_2_2(void)
{
    d1_2(2);//反显电流读取
}
//==============================================================================
void d2(void)
{
     ClearSree(0);//清屏
  unsigned char temp1,temp2,temp3,temp4,temp5;
  long int temp;
  temp = tempp;
  temp5= (temp/10000)%10;
  temp4= (temp/1000)%10;
  temp3= (temp/100)%10;
  temp2= (temp/10)%10;
  temp1= temp%10;
  
     WriteAbc(0, 0 ,12, 0);//"A"
     WriteChinese(16, 0 ,4, 0);//"相"
     WriteChinese(32, 0 ,5, 0);//"电"
     WriteChinese(48, 0 ,6, 0);//"压"
     WriteAbc(64, 0 ,10, 0);//":"
     WriteAbc(65, 0 ,temp5, 0); //"0"
     WriteAbc(75, 0 ,temp4, 0); //"0"
     WriteAbc(84, 0 ,11,0);     //"."
     WriteAbc(93, 0 ,temp3, 0); //"0"
     WriteAbc(102, 0 ,temp2, 0);//"0"
     WriteAbc(111, 0 ,temp1, 0);//"0"
     WriteAbc(120, 0 ,32, 0);//"V"
     
     WriteAbc(0, 2 ,13, 0);//"B"
     WriteChinese(16, 2 ,4, 0);//"相"
     WriteChinese(32, 2 ,5, 0);//"电"
     WriteChinese(48, 2 ,6, 0);//"压"
     WriteAbc(64, 2 ,10, 0);//":"
     WriteAbc(120, 2 ,32, 0);//"V"
    
     WriteAbc(0, 4 ,14, 0);//"C"
     WriteChinese(16, 4 ,4, 0);//"相"
     WriteChinese(32, 4 ,5, 0);//"电"
     WriteChinese(48, 4 ,6, 0);//"压"
     WriteAbc(64, 4 ,10, 0);//":"
     WriteAbc(120, 4 ,32, 0);//"V"
     
            
     WriteChinese(96, 6 ,11, 0); //"取"
     WriteChinese(112, 6 ,12, 0);//"消"   
    
}
//==============================================================================
void d3(void)
{
     ClearSree(0);//清屏
     
     WriteAbc(0, 0 ,12, 0);     //"A"
     WriteChinese(16, 0 ,4, 0); //"相"
     WriteChinese(32, 0 ,5, 0); //"电"
     WriteChinese(48, 0 ,7, 0); //"流"
     WriteAbc(64, 0 ,10, 0);    //":"
     WriteAbc(120, 0 ,12, 0);   //"A"
     
     WriteAbc(0, 2 ,13, 0);     //"B"
     WriteChinese(16, 2 ,4, 0); //"相"
     WriteChinese(32, 2 ,5, 0); //"电"
     WriteChinese(48, 2 ,7, 0); //"流"
     WriteAbc(64, 2 ,10, 0);    //":"
     WriteAbc(120, 2 ,12, 0);   //"A"
    
     WriteAbc(0, 4 ,14, 0);     //"C"
     WriteChinese(16, 4 ,4, 0); //"相"
     WriteChinese(32, 4 ,5, 0); //"电"
     WriteChinese(48, 4 ,7, 0); //"流"
     WriteAbc(64, 4 ,10, 0);    //":"
     WriteAbc(120, 4 ,12, 0);   //"A"
  
            
     WriteChinese(96, 6 ,11, 0); //"取"
     WriteChinese(112, 6 ,12, 0);//"消"   
}
//******************************************************************************
void d4(void)
{
           ClearSree(0);//清屏
           WriteChinese(32, 0 ,17, 0); //"版"
           WriteChinese(48, 0 ,18, 0);//"本"
           WriteChinese(64, 0 ,19, 0);//"信"

⌨️ 快捷键说明

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