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

📄 oscillograph_v6.c

📁 基于LPC2200实验箱的数字示波器源代码
💻 C
📖 第 1 页 / 共 2 页
字号:

/****************************************************************************************
* 文 件 名:main.c
* 功    能:通过图形函数接口,演示矩形波的傅立叶逼近过程
* 说    明:将JP3短接。
****************************************************************************************/
#include	"config.h"
#include	"stdlib.h"
#include	"math.h"
#include	"GUI_BASIC.H"
#define PI 3.1415
#define	TaskStkLengh	512
#define  K	0.027

uint32 Guang_Biao=2;		//默认光标指向"开始"
uint32 OK=0;			//确定标志(F)
uint32 Bei_Lv=1;		//倍率变量	
uint32 Stop=1;			//停止状态标志位

/*******捕获的变量的定义**************/
uint32 		Time_CAP[10]={0};				//捕获的间隔时间数组
volatile	uint32	CAP=0;					//捕获的数组下标
volatile	uint32	CAP_Value0=0;			//捕获的上次时间记录
volatile	uint32	CAP_Value=0;			//捕获的本次时间记录
uint32	CAP_AVG=0;
volatile	uint32 	OV=0;					//计时的周期个数

/*************************************/

OS_STK TaskStk0 [TaskStkLengh];
OS_STK TaskStk1 [TaskStkLengh];
OS_STK TaskStk2 [TaskStkLengh];
OS_EVENT	*Mybox;		//定义消息邮箱


/********采样的变量定义**********/
//uint32 ADC_DATA1[260]={0};
uint32 ADC_DATA[260]={200,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};          //存放转换结果
uint32 ADC_DATA_AVG=0;               //存放平均值
uint32 COU=0;               		//下标
volatile uint32 count=0;
volatile uint32 maxwell=0;   //采样显示数组的下标
//uint32 ADC_DATA_AV[100]={0};				//存储采样显示数据的数组

volatile uint32 Min_ADC=0;		//最小值
volatile uint32 Max_ADC=0;			//最大值
/***********************************/

/****************************************************************************/

uint8 TG[5][16]={
					{
						0x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,
						0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00
					},/*"T",0*/
					{
						0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,
						0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00
					},/*"i",1*/
					{
						0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,
						0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C
					},/*"g",2*/
					{	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,
						0x42,0x7E,0x40,0x40,0x42,0x3C,0x00,0x00
					},/*"e",3*/
					{
						0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,
						0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00
					}/*"r",4*/
				};
uint8 PJZH[3][32]={
				{/*"平",0*/
						0x7F,0xFC,0x01,0x00,0x21,0x10,0x11,0x18,
						0x09,0x10,0x0D,0x20,0x09,0x40,0x01,0x00,
						0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,
						0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
				},
				{/*"均",1*/
						0x10,0x80,0x10,0xC0,0x10,0x84,0x10,0xFE,
						0xFD,0x04,0x11,0x04,0x12,0x84,0x14,0x64,
						0x10,0x44,0x16,0x1C,0x18,0x64,0xE3,0x84,
						0x41,0x04,0x00,0x24,0x00,0x14,0x00,0x08
				},
				{/*"值",2*/
						0x10,0x40,0x18,0x60,0x17,0xFC,0x10,0x40,
						0x20,0x80,0x33,0xF8,0x62,0x08,0xA3,0xF8,
						0x22,0x08,0x23,0xF8,0x22,0x08,0x23,0xF8,
						0x22,0x08,0x22,0x08,0x2F,0xFE,0x20,0x00
				}
			};

uint8	NUM[10][16]={
						{
							0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,
							0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00
						},/*"0",0*/

						{
							0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,
							0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00
						},/*"1",1*/

						{
							0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,
							0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00
						},/*"2",2*/

						{
							0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,
							0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00
						},/*"3",3*/

						{
							0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,
							0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00
						},/*"4",4*/

						{
							0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,
							0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00
						},/*"5",5*/

						{
							0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,
							0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00
						},/*"6",6*/

						{
							0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,
							0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00
						},/*"7",7*/

						{
							0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,
							0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00
						},/*"8",8*/

						{
							0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,
							0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00
						}/*"9",9*/
					};
uint8 mv[2][16]={
					{
						0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,
						0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00
					},/*"m",0*/

					{
						0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,
						0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00
					}/*"V",1*/
				};
uint8	BL[2][32]={
						{	
							0x08,0x80,0x08,0x40,0x17,0xFE,0x12,0x10,
							0x31,0x18,0x51,0x90,0x11,0x20,0x17,0xFE,
							0x10,0x00,0x13,0xF8,0x12,0x08,0x12,0x08,
							0x12,0x08,0x13,0xF8,0x12,0x08,0x00,0x00
						},/*"倍",0*/

						{
							0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x00,
							0x22,0x28,0x17,0xD0,0x04,0x80,0x11,0x10,
							0x22,0x48,0x47,0xC4,0x01,0x20,0xFF,0xFE,
							0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
						}/*"率",1*/
				  };
uint8	X[16]={
					0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,
					0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00
			  };/*"X",2*/

uint8 	S[16]={
				0x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,
				0x18,0x04,0x02,0x42,0x42,0x7C,0x00,0x00
			  };/*"S",0*/

uint8 	ZDZH[3][32]={
						{	
							0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,
							0x1F,0xF0,0x00,0x00,0xFF,0xFE,0x22,0x00,
							0x3E,0xFC,0x22,0x88,0x3E,0x50,0x23,0x20,
							0x3E,0x50,0xE2,0x8E,0x03,0x04,0x02,0x00
						},/*"最",0*/

						{
							0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
							0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,
							0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,
							0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04
						},/*"大",1*/

						{
							0x10,0x40,0x18,0x60,0x17,0xFC,0x10,0x40,
							0x20,0x80,0x33,0xF8,0x62,0x08,0xA3,0xF8,
							0x22,0x08,0x23,0xF8,0x22,0x08,0x23,0xF8,
							0x22,0x08,0x22,0x08,0x2F,0xFE,0x20,0x00
						}/*"值",2*/					
					};
uint8 	ZXZH[3][32]={
						{	
							0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,
							0x1F,0xF0,0x00,0x00,0xFF,0xFE,0x22,0x00,
							0x3E,0xFC,0x22,0x88,0x3E,0x50,0x23,0x20,
							0x3E,0x50,0xE2,0x8E,0x03,0x04,0x02,0x00
						},/*"最",0*/

						{
							0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
							0x09,0x40,0x0D,0x20,0x19,0x10,0x11,0x18,
							0x21,0x0C,0x41,0x06,0x81,0x04,0x01,0x00,
							0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00
						},/*"小",1*/

						{
							0x10,0x40,0x18,0x60,0x17,0xFC,0x10,0x40,
							0x20,0x80,0x33,0xF8,0x62,0x08,0xA3,0xF8,
							0x22,0x08,0x23,0xF8,0x22,0x08,0x23,0xF8,
							0x22,0x08,0x22,0x08,0x2F,0xFE,0x20,0x00
						}/*"值",2*/					
					};					
uint8	ZHQ[2][32]={
						{	
							0x00,0x00,0x1F,0xFC,0x10,0x84,0x13,0xE4,
							0x10,0x84,0x10,0x84,0x17,0xF4,0x10,0x04,
							0x13,0xE4,0x12,0x24,0x12,0x24,0x13,0xE4,
							0x22,0x24,0x20,0x04,0x40,0x14,0x80,0x08
						},/*"周",0*/

						{
							0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,
							0x3E,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,
							0x22,0x44,0xFF,0x7C,0x00,0x44,0x24,0x84,
							0x22,0x84,0x43,0x14,0x81,0x08,0x00,0x00
						}/*"期",1*/	
					};		
uint8	PL[2][32]={
					{
						0x08,0x00,0x08,0xFE,0x4E,0x20,0x48,0x40,
						0x48,0xFC,0xFE,0x84,0x00,0xA4,0x08,0xA4,
						0x4A,0xA4,0x4A,0xA4,0x84,0xA4,0x08,0x50,
						0x10,0x48,0x20,0x86,0xC3,0x02,0x00,0x00
					},/*"频",0*/
					{
						0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x00,
						0x22,0x28,0x17,0xD0,0x04,0x80,0x11,0x10,
						0x22,0x48,0x47,0xC4,0x01,0x20,0xFF,0xFE,
						0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
					}/*"率",1*/
				   };
uint8 	HZ[2][16]={	
						{
							0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,
							0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00
						},/*"H",2*/
						{
							0x00,0x00,0x00,0x7E,0x84,0x04,0x08,0x08,
							0x10,0x20,0x20,0x42,0x42,0xFC,0x00,0x00
						}/*"Z",3*/
				  };					   
uint8	TZH[2][32]={
						{
							0x08,0x40,0x0C,0x20,0x0B,0xFE,0x10,0x00,
							0x11,0xF8,0x31,0x08,0x51,0xF8,0x90,0x00,
							0x17,0xFE,0x14,0x02,0x11,0xFC,0x10,0x20,
							0x10,0x20,0x10,0x20,0x10,0xA0,0x10,0x40
						},/*"停",0*/
						{
							0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
							0x08,0x80,0x08,0x80,0x08,0xFC,0x08,0x80,
							0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,
							0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x00
						}/*"止",1*/
					};
uint8	KSH[2][32]={
						{
							0x00,0x00,0x7F,0xFE,0x04,0x20,0x04,0x20,
							0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x20,
							0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,
							0x10,0x20,0x20,0x20,0x40,0x20,0x00,0x00
						},/*"开",0*/
						{
							0x10,0x20,0x18,0x30,0x10,0x20,0x10,0x48,
							0xFC,0x84,0x25,0xFE,0x24,0x84,0x44,0x00,
							0x44,0xFC,0x28,0x84,0x18,0x84,0x14,0x84,
							0x22,0x84,0x42,0xFC,0x80,0x84,0x00,0x00
						}/*"始",1*/	
					};
uint8	QP[2][32]={
						{
							0x08,0x00,0x0F,0xFC,0x10,0x00,0x2F,0xF8,
							0x48,0x08,0x0F,0xF8,0x08,0x08,0x0F,0xF8,
							0x04,0x00,0x07,0xF8,0x0C,0x10,0x12,0x60,
							0x21,0x80,0x06,0x60,0x18,0x1E,0x60,0x04
						},/*"复",0*/

						{
							0x09,0x00,0x0C,0xC0,0x10,0x40,0x17,0xFC,
							0x20,0x00,0x34,0x10,0x52,0x18,0x52,0x10,
							0x91,0x10,0x11,0x20,0x11,0x20,0x10,0x20,
							0x10,0x40,0x1F,0xFE,0x10,0x00,0x00,0x00
						}/*"位",1*/
					};
uint8	SHZH[2][32]={
						{
							0x40,0x00,0x21,0xF0,0x31,0x10,0x21,0x10,
							0x01,0x10,0x01,0x10,0xE2,0x0E,0x25,0xF8,
							0x21,0x08,0x21,0x08,0x20,0x90,0x20,0x90,
							0x28,0x60,0x30,0x90,0x23,0x0E,0x0C,0x04
						},/*"设",4*/

						{	
							0x3F,0xF8,0x24,0x48,0x24,0x48,0x3F,0xF8,
							0x01,0x00,0x7F,0xFC,0x02,0x00,0x1F,0xF0,
							0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,
							0x10,0x10,0x1F,0xF0,0x10,0x10,0xFF,0xFE
						}/*"置",5*/
					};
uint8   MAXX[32]={	0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
							0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
							0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
							0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};								
/***************************************************************************/

/*************************************************/
    uint8 (* p1)[32]=PJZH;	/*平均值*/
	uint8 (* p2)[16]=NUM;			//指向数字阵列的指针
	uint8 (* p3)[16]=mv;	/*mV*/
	uint8 (* p4)[32]=ZDZH;	/*最大值*/
	uint8 (* p5)[32]=ZXZH;	/*最小值*/
	uint8 (* p6)[32]=ZHQ;	/*周期*/
	uint8 (* p7)[32]=PL;	/*频率*/
	uint8 (* p8)[32]=BL;	/*倍率*/
	uint8 (* p9)[16]=NUM;	/*0,1,2,3,4,5,6,7,8,9*/
	uint8 (* p10)[16]=HZ;	/*HZ*/
	
	uint8 (* p11)[32]=TZH;	/*停止*/
	uint8 (* p12)[32]=KSH;	/*开始*/
	uint8 (* p13)[32]=QP;	/*清屏*/
	uint8 (* p14)[32]=SHZH;	/*设置*/
	
	uint8 (* p15)[16]=TG;	/*Tiger*/
	//uint8 (* pa)[16]=TG;
/********************************************************/						
/**********************************
void Line_MySIN(void)
{	
	uint32 x,y;
	for(x=0;x<320;x++)
	   	{
	   		y=(100-95*sin(x*PI/120));
			//y=10;
			GUI_Point(x,y,RED);
		}
}
**********************************/

/**********************************
void Line_MySIN(void)
{	
	uint32 x,y;
	for(x=0;x<200;x++)
	   	{
	   		y=(100-95*ADC_DATA[x]/3300);
			//y=10;
			GUI_Point(x,y,RED);
		}
}
**********************************/
/**********************************************************
****GPIO 初始化
****
****
**********************************************************/
void	GPIO_Init(void)
{
	PINSEL1=PINSEL1|(0x03<<2);		//设置P0.17为CAP1.2
}
/****************************************************************************
* 功    能:初始化背景和坐标系
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  Coordinate(void)
{
    GUI_FillSCR(BLUE);                 // 填充白色背景
  	GUI_HLine(  59, 0, 319, YELLOW);    // 绘画x坐标轴
    GUI_HLine(  59, 20, 319, YELLOW);
    GUI_HLine(  59, 40, 319, YELLOW);
    GUI_HLine(  59, 60, 319, YELLOW);
    GUI_HLine(  59, 80, 319, YELLOW);
    GUI_HLine(  59, 100, 319, YELLOW);
    GUI_HLine(  59, 120, 319, YELLOW);
    GUI_HLine(  59, 140, 319, YELLOW);
    GUI_HLine(  59, 160, 319, YELLOW);
    GUI_HLine(  59, 180, 319, YELLOW);
    //GUI_HLine(  0, 200, 319, YELLOW);
    //GUI_HLine(  0, 220, 319, YELLOW);
   // GUI_HLine(  0, 240, 319, YELLOW);
    
    //GUI_RLine(0,   0, 240, YELLOW);    // 绘画y坐标轴
    //GUI_RLine(20,   0, 240, YELLOW);
    //GUI_RLine(40,   0, 240, YELLOW);
    GUI_RLine(60,   0, 200, YELLOW);
    GUI_RLine(80,   0, 200, YELLOW);
    GUI_RLine(100,   0, 200, YELLOW);
    GUI_RLine(120,   0, 200, YELLOW);
    GUI_RLine(140,   0, 200, YELLOW);
    GUI_RLine(160,   0, 200, YELLOW);
    GUI_RLine(180,   0, 200, YELLOW);
    GUI_RLine(200,   0, 200, YELLOW);
    GUI_RLine(220,   0, 200, YELLOW);
    GUI_RLine(240,   0, 200, YELLOW);
    GUI_RLine(260,   0, 200, YELLOW);
    GUI_RLine(280,   0, 200, YELLOW);
    GUI_RLine(300,   0, 200, YELLOW);
    GUI_RLine(320,   0, 200, YELLOW);
}

/****************************************************************************/

/*******************界面显示构架函数**********************************/
void	Display_Frame(void)
{
	uint8 	i=0;
	
	GUI_Initialize();			        // 初始化LCM  
	GUI_FillSCR(WHITE);                 // 填充白色背景
	

	Coordinate();						//画坐标
	
	GUI_RectangleFill(0, 0,60, 200, MAGENTA);			//画控制区的矩形

	GUI_RectangleFill(0, 200,320, 240, DGREEN);			//画参数区的矩形
	
	//GUI_LoadLine(10,10,MAXX,32);

	/********************画参数区****************************/
	GUI_SetColor(BLACK,DGREEN);
	for(i=0;i<3;i++)					//显示"平均值"
		GUI_LoadPic(16*i,201,*(p1+i),16,16);
	for(i=0;i<2;i++)					//显示"mv"
		GUI_LoadPic((8*i+84),201,*(p3+i),8,16);
		
	for(i=0;i<3;i++)					//显示"最大值"
		GUI_LoadPic((16*i+100),201,*(p4+i),16,16);
	for(i=0;i<2;i++)					//显示"mv"
		GUI_LoadPic((8*i+180),201,*(p3+i),8,16);
		
	for(i=0;i<3;i++)					//显示"最小值"
		GUI_LoadPic((16*i+100),221,*(p5+i),16,16);
	for(i=0;i<2;i++)					//显示"mv"
		GUI_LoadPic((8*i+180),221,*(p3+i),8,16);
	
	for(i=0;i<2;i++)					//显示"周期"
		GUI_LoadPic((200+16*i),201,*(p6+i),16,16);
	for(i=0;i<2;i++)					//显示"S"
		GUI_LoadPic(280,201,S,8,16);
		
	for(i=0;i<2;i++)					//显示"频率"

⌨️ 快捷键说明

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