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

📄 main.c

📁 此程序可以显示输入波形
💻 C
📖 第 1 页 / 共 5 页
字号:
//模块:Menu.C

//功能:菜单模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

//--------------------------------------------------------------------

#include"STC12c5412AD.h"

#define size_of_keybd_menu  8

#define uint unsigned int

#define uchar unsigned char

sbit sel_1=P1^6;

sbit sel_10=P1^4;

sbit sel_100=P3^4;

sbit f_in=P3^5;

uchar temp_l,temp_h;

uchar i=0;

uint temp0=0x30,temp1=0x30,temp2=0x30,temp3=0x30,temp4=0x30;

uchar keyfuncindex=0;

void(*keyfuncptr)();

void beep(uint time);

uchar bdata gate=4;

uchar code tab[16]=

{'0','1','2','3',

'4','5','6','7',

'8','9','A','B',

'C','D','E','F'};

extern void get_value();

extern void AD_init(uchar AD_port_sel );

extern void pwm();

extern void bin_to_hex();

extern unsigned char code x0[]; // 请

extern unsigned char code x1[];    // 选

extern unsigned char code x2[];    // 择

extern unsigned char code x3[];    // 工

extern unsigned char code x4[];    // 作

extern unsigned char code x5[];    // 模

extern unsigned char code x6[];    // 式

extern unsigned char code x7[];    // 频

extern unsigned char code x8[];    // 率

extern unsigned char code x9[];    // 计

extern unsigned char code x10[];// 示

extern unsigned char code x11[];// 波

extern unsigned char code x12[];// 器

extern unsigned char code x13[];// 测

extern unsigned char code x14[];// 量

extern unsigned char code x15[];// 红

extern unsigned char code x16[];// 外

extern unsigned char code x17[];// 分

extern unsigned char code x18[];// 析

extern unsigned char code x19[];// 固

extern unsigned char code x20[];// 件

extern unsigned char code x21[];// 版

extern unsigned char code x22[];// 本

extern unsigned char code x23[];// 信

extern unsigned char code x24[];// 息

extern unsigned char code x25[];// 程

extern unsigned char code x26[];// 式

extern unsigned char code x27[];// 设

extern unsigned char code x28[];// 计

extern unsigned char code x29[];// 魏

extern unsigned char code x30[];// 广

extern unsigned char code x31[];// 寅

extern unsigned char code x32[];// 贵

extern unsigned char code x33[];// 大

extern unsigned char code x34[];// 电

extern unsigned char code x35[];// 科

extern unsigned char code x36[];// 欢

extern unsigned char code x37[];// 迎

extern unsigned char code x38[];// 使

extern unsigned char code x39[];// 用

extern unsigned char code x40[];// 多

extern unsigned char code x41[];// 功

extern unsigned char code x42[];// 能

extern void lcd_init();

extern void delay(uint time);

extern void dis_one_zi(uchar x_add,uchar y_add,uchar code *po,bit back_flag,bit char_moudle);

extern void dis_one_char(uchar x,uchar y,uchar asc_num,bit b_flag);

extern  wave();

extern void dis_cls(void);

extern void freq();

sbit beep_port=P1^5;

//--------------------------------------------------------------------

void d0_3(uchar sel)

{

      dis_cls();

      dis_one_char(0,0,'1',1); //1. 50MHz频率计 

      dis_one_char(0,1,'.',1);

      dis_one_char(0,2,' ',1);

      dis_one_char(0,3,'5',1);

      dis_one_char(0,4,'0',1);

      dis_one_char(0,5,'M',1);

      dis_one_char(0,6,'H',1);

      dis_one_char(0,7,'z',1);

      dis_one_zi(0,4,x7,1,1);

      dis_one_zi(0,5,x8,1,1);

      dis_one_zi(0,6,x9,1,1);



      dis_one_char(1,0,'2',1); //2. 15KHz示波器  

      dis_one_char(1,1,'.',1);

      dis_one_char(1,2,' ',1);

      dis_one_char(1,3,'1',1);

      dis_one_char(1,4,'5',1);

      dis_one_char(1,5,'K',1);

      dis_one_char(1,6,'H',1);

      dis_one_char(1,7,'z',1);

      dis_one_zi(1,4,x10,1,1);

      dis_one_zi(1,5,x11,1,1);

      dis_one_zi(1,6,x12,1,1);



      dis_one_char(2,0,'3',1); //3. PWM红外分析      

      dis_one_char(2,1,'.',1);

      dis_one_char(2,2,' ',1);

      dis_one_char(2,3,'P',1);

      dis_one_char(2,4,'W',1);

      dis_one_char(2,5,'M',1);

      dis_one_zi(2,3,x15,1,1);

      dis_one_zi(2,4,x16,1,1);

      dis_one_zi(2,5,x17,1,1);

      dis_one_zi(2,6,x18,1,1);



      dis_one_char(3,0,'4',1); //4. SOW版本信息      

      dis_one_char(3,1,'.',1);

      dis_one_char(3,2,' ',1);

      dis_one_char(3,3,'S',1);

      dis_one_char(3,4,'O',1);

      dis_one_char(3,5,'W',1);

      dis_one_zi(3,3,x21,1,1);

      dis_one_zi(3,4,x22,1,1);

      dis_one_zi(3,5,x23,1,1);

      dis_one_zi(3,6,x24,1,1);



      switch (sel)

      {

              case 0:

          {

          dis_one_char(0,0,'1',0); //1. 50MHz频率计 

              dis_one_char(0,1,'.',0);

              dis_one_char(0,2,' ',0);

              dis_one_char(0,3,'5',0);

              dis_one_char(0,4,'0',0);

              dis_one_char(0,5,'M',0);

              dis_one_char(0,6,'H',0);

              dis_one_char(0,7,'z',0);

              dis_one_zi(0,4,x7,0,1);

              dis_one_zi(0,5,x8,0,1);

              dis_one_zi(0,6,x9,0,1);

              dis_one_char(0,14,0x7f,1);

              dis_one_char(0,15,0x7f,1);

              break;}



              case 1:

          {

            dis_one_char(1,0,'2',0); //2. 15KHz示波器  

              dis_one_char(1,1,'.',0);

              dis_one_char(1,2,' ',0);

              dis_one_char(1,3,'1',0);

              dis_one_char(1,4,'5',0);

              dis_one_char(1,5,'K',0);

              dis_one_char(1,6,'H',0);

              dis_one_char(1,7,'z',0);

              dis_one_zi(1,4,x10,0,1);

              dis_one_zi(1,5,x11,0,1);

              dis_one_zi(1,6,x12,0,1);

              dis_one_char(1,14,0x7f,1);

              dis_one_char(1,15,0x7f,1);

              break;}



              case 2:

              {

              dis_one_char(2,0,'3',0); //3. PWM红外分析      

              dis_one_char(2,1,'.',0);

              dis_one_char(2,2,' ',0);

              dis_one_char(2,3,'P',0);

              dis_one_char(2,4,'W',0);

              dis_one_char(2,5,'M',0);

              dis_one_zi(2,3,x15,0,1);

              dis_one_zi(2,4,x16,0,1);

              dis_one_zi(2,5,x17,0,1);

              dis_one_zi(2,6,x18,0,1);

              dis_one_char(2,14,0x7f,1);

              dis_one_char(2,15,0x7f,1);

              break;}



              case 3:

              {

              dis_one_char(3,0,'4',0); //4. SOW版本信息      

              dis_one_char(3,1,'.',0);

              dis_one_char(3,2,' ',0);

              dis_one_char(3,3,'S',0);

              dis_one_char(3,4,'O',0);

              dis_one_char(3,5,'W',0);

              dis_one_zi(3,3,x21,0,1);

              dis_one_zi(3,4,x22,0,1);

              dis_one_zi(3,5,x23,0,1);

              dis_one_zi(3,6,x24,0,1);

      

              dis_one_char(3,14,0x7f,1);

              dis_one_char(3,15,0x7f,1);

              break;}



      }

}

//--------------------------------------------------------------------

void d0(void)

{

      d0_3(0);

      

}

//--------------------------------------------------------------------

void d1(void)

{

      d0_3(1);

}

//--------------------------------------------------------------------

void d2(void)

{

      d0_3(2);

}

//--------------------------------------------------------------------

void d3()

{

      d0_3(3);

}

//--------------------------------------------------------------------

void d4()

{

      dis_cls();

      pwm();

}

//--------------------------------------------------------------------

void d5()

{

      dis_cls();

      dis_one_zi(0,0,x19,1,1);

      dis_one_zi(0,1,x20,1,1);

      dis_one_char(0,4,':',1);

      dis_one_char(0,5,' ',1);

      dis_one_char(0,6,'V',1);

      dis_one_char(0,7,'1',1);

      dis_one_char(0,8,'.',1);

      dis_one_char(0,9,'0',1);

      dis_one_char(0,10,'.',1);

      dis_one_char(0,11,'0',1);



      dis_one_zi(1,0,x25,1,1);

      dis_one_zi(1,1,x26,1,1);

      dis_one_zi(1,2,x27,1,1);

      dis_one_zi(1,3,x28,1,1);

      dis_one_char(1,8,':',1);

      dis_one_zi(2,4,x32,1,1);

      dis_one_zi(2,5,x33,1,1);

      dis_one_zi(2,6,x34,1,1);

      dis_one_zi(2,7,x35,1,1);

      

      dis_one_zi(3,4,x29,1,1);

      dis_one_zi(3,5,x30,1,1);

      dis_one_zi(3,6,x31,1,1);



}

//--------------------------------------------------------------------

void d6()

{

      dis_cls();

      freq();

}

//--------------------------------------------------------------------

void d7()

{

      dis_cls();

      wave();

}

//--------------------------------------------------------------------

typedef struct

{

      uchar keystateindex;

      uchar keydnstate;

      uchar keyupstate;

      uchar keycrstate;

      void(*currentoperate)();

} kbdtabstruct;

//--------------------------------------------------------------------

kbdtabstruct code keytab[size_of_keybd_menu]=

{ //第一行表示在0级菜单时按下向下键则转到1级菜单

  //按下向上键则转1级菜单,按下回车键则转5级菜单

  //    下 上 回车



      { 0, 1, 3, 6, (* d0)},

      { 1, 2, 0, 7, (* d1)},

      { 2, 3, 1, 4, (* d2)},

      { 3, 0, 2, 5, (* d3)},

      

      { 4, 2, 2, 2, (* d4)},//PWM分析子程序

      { 5, 3, 3, 3, (* d5)},//版本信息

      { 6, 0, 0, 0, (* d6)},//频率计子程序

      { 7, 0, 1, 1, (* d7)},//示波器子程序

};

//--------------------------------------------------------------------

void getkeyinput(void)

{



      uchar key_value,temp;

re:    temp=P3;

      temp|=0x03;

      P3=temp;

      key_value=P3&0x03;

      delay(50000);

//0:下键  2:中键  1:上键 

      switch(key_value)

      {

              case 1:

              {

                    keyfuncindex=keytab[keyfuncindex].keycrstate;

                    beep(6500);

                    break;

              }

              case 2:

              {

                    keyfuncindex=keytab[keyfuncindex].keyupstate;

                    beep(6500);

                    break;

              }

              case 0:

              { 

                    keyfuncindex=keytab[keyfuncindex].keydnstate;

                    beep(6500);

                    break;

              }

              default:

              goto re;

      }  

              

      keyfuncptr=keytab[keyfuncindex].currentoperate;

      (*keyfuncptr)();

      delay(65535);

      delay(65535);

}

//--------------------------------------------------------------------

void beep(uint time)

{

      beep_port=0;

      delay(time);

      delay(time);

      delay(time);

      delay(time);

      beep_port=1;

}

//--------------------------------------------------------------------

void sys_auto_check(void)

{

      uchar xx,c=3;



      dis_one_zi(0,2,x36,1,1);

      dis_one_zi(0,3,x37,1,1);

      dis_one_zi(0,4,x38,1,1);

      dis_one_zi(0,5,x39,1,1);

      dis_one_zi(1,1,x40,1,1);

      dis_one_zi(1,2,x41,1,1);

      dis_one_zi(1,3,x42,1,1);

      dis_one_zi(1,4,x7,1,1);

      dis_one_zi(1,5,x8,1,1);

      dis_one_zi(1,6,x9,1,1);

      while(--c!=0)

      {

              for(xx=3;xx<13;xx++)

              {

                    dis_one_char(2,xx-1,'>',1);

                    dis_one_char(2,xx  ,'>',1);

                    dis_one_char(2,xx+1,'>',1);

                    delay(50000);

                    delay(50000);



                    dis_one_char(2,xx-1,' ',1);

                    dis_one_char(2,xx  ,' ',1);

                    dis_one_char(2,xx+1,' ',1);

              }

      }

      beep(60000);

}

//--------------------------------------------------------------------

void main(void) using 0

{

      

      beep_port=1;

      EA=0;

      SP=0x7f;

      lcd_init();

      f_in=1;

      sys_auto_check();

      AD_init(7);

      keyfuncindex=0;

      d0();

      while(1)

    {

              getkeyinput();

      }

}

//--------------------------------------------------------------------



//模块:STC12C5412AD_Driver.C

//功能:单片机增强功能驱动模块

//晶振:24.000MHz

//芯片: STC12C5412AD

//版本:V1.0.0

//设计:魏广寅

//日期:2007.4.10

#include "STC12C5412AD.h"

⌨️ 快捷键说明

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