📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
#define LED1 1<<21
#define LED2 1<<22
#define LED3 1<<23
#define BEEP 1<<25
#define out IO1DIR|=(1<<25) // set output
#define in IO1DIR&=~(1<<25) // set input
#define set IO1SET=(1<<25) // set dat
#define clr IO1CLR=(1<<25) // clr dat
#define sh IO1PIN
#define TaskStkLengh 1024 // Define the Task0 stack length 定义用户任务0的堆栈长度
OS_STK Task0Stk[TaskStkLengh]; // Define the Task0 stack 定义用户任务0的堆栈
OS_STK SJStk[TaskStkLengh];
void Task0(void *pdata); // Task0 任务0
void SJ(void *pdata);
uint8 biaoti[]=
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 两点温度测量
; 宽×高(像素) : 18×96
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x01,0x00,0x40,0x10,0x01,0x00,
0x40,0x08,0x00,0x10,0xFF,0xFC,0x01,0x00,
0x27,0xF8,0x00,0x88,0x2F,0x88,0x1F,0xF8,
0x04,0x80,0x01,0xF8,0x24,0x10,0x3F,0xFC,
0x28,0xA8,0x10,0x10,0x04,0x80,0x01,0x00,
0x07,0xF0,0x22,0x20,0x0A,0xA8,0x1F,0xF0,
0x3F,0xF8,0x01,0x00,0x84,0x10,0x2F,0xF8,
0x8A,0xA8,0x10,0x10,0x24,0x88,0x1F,0xF0,
0x54,0x10,0x22,0x20,0x4A,0xA8,0x7F,0xFC,
0x24,0x88,0x10,0x10,0x57,0xF0,0x23,0xE0,
0x5A,0xA8,0x00,0x00,0x2A,0x88,0x10,0x10,
0x20,0x00,0x20,0x00,0x2A,0xA8,0x1F,0xF0,
0x29,0x48,0x10,0x10,0x2F,0xF8,0x2F,0xF0,
0x2A,0xA8,0x11,0x10,0x32,0x28,0x1F,0xF0,
0xC9,0x48,0x22,0x20,0xCA,0xA8,0x1F,0xF0,
0x24,0x08,0x00,0x00,0x49,0x48,0x21,0x40,
0x42,0x08,0x11,0x10,0x20,0x08,0x24,0x90,
0x49,0x48,0x40,0x80,0x45,0x08,0x3F,0xF8,
0x20,0x28,0x22,0x48,0x49,0x48,0x43,0x60,
0x48,0xA8,0x01,0x00,0x20,0x10,0x42,0x48,
0x5F,0xFC,0x9C,0x1C,0x50,0x90,0x7F,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uint8 x1[]=
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 1号温度:
; 宽×高(像素) : 13×55
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0x11,0xF8,0x04,0x00,0x00,0x00,0x41,
0x09,0x08,0xFF,0xC0,0x00,0x10,0x41,0x01,
0xF8,0x91,0x01,0x80,0x70,0x7F,0x11,0x08,
0xFF,0xC1,0x80,0x10,0x00,0x09,0xF8,0x91,
0x00,0x00,0x11,0xFF,0xC8,0x00,0x9F,0x00,
0x00,0x10,0x20,0x0B,0xF8,0x80,0x00,0x00,
0x10,0x3F,0x12,0xA8,0xBF,0x01,0x80,0x10,
0x01,0x12,0xA8,0x8A,0x01,0x80,0x7C,0x01,
0x12,0xA9,0x0E,0x00,0x00,0x00,0x0E,0x17,
0xFD,0x71,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00
};
uint8 x2[]=
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 2号温度:
; 宽×高(像素) : 13×55
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0x11,0xF8,0x04,0x00,0x00,0x00,0x41,
0x09,0x08,0xFF,0xC0,0x00,0x38,0x41,0x01,
0xF8,0x91,0x01,0x80,0x44,0x7F,0x11,0x08,
0xFF,0xC1,0x80,0x04,0x00,0x09,0xF8,0x91,
0x00,0x00,0x09,0xFF,0xC8,0x00,0x9F,0x00,
0x00,0x10,0x20,0x0B,0xF8,0x80,0x00,0x00,
0x20,0x3F,0x12,0xA8,0xBF,0x01,0x80,0x40,
0x01,0x12,0xA8,0x8A,0x01,0x80,0x7C,0x01,
0x12,0xA9,0x0E,0x00,0x00,0x00,0x0E,0x17,
0xFD,0x71,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00
};
uint8 x[]=
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 超温!
; 宽×高(像素) : 14×36
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x23,0xE8,0xFC,0x00,0x00,0x21,
0x24,0x84,0x30,0x00,0xF9,0x20,0xFC,0x78,
0x00,0x22,0x68,0x84,0x78,0x00,0xF4,0x04,
0xFC,0x78,0x00,0x23,0xE4,0x00,0x30,0x00,
0xBA,0x25,0xFC,0x30,0x00,0xA2,0x29,0x54,
0x00,0x00,0xA3,0xE9,0x54,0x30,0x00,0xE0,
0x09,0x54,0x30,0x00,0x9F,0xEB,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00
};
uint8 k[]=
{
/*------------------------------------------------------------------------------
; 源文件 / 文字:
; 宽×高(像素) : 14×36
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00
};
uint8 FONT5x7ASCII_1[][8] = {
/* 0 */
{
_XXX____,
X___X___,
X___X___,
X___X___,
X___X___,
X___X___,
_XXX____,
________}
/* 1 */
,{
__X_____,
_XX_____,
__X_____,
__X_____,
__X_____,
__X_____,
_XXX____,
________}
/* 2 */
,{
_XXX____,
X___X___,
____X___,
__XX____,
_X______,
X_______,
XXXXX___,
________}
/* 3 */
,{
_XXX____,
X___X___,
____X___,
__XX____,
____X___,
X___X___,
_XXX____,
________}
/* 4 */
,{
___X____,
__XX____,
_X_X____,
X__X____,
XXXXX___,
___X____,
___X____,
________}
/* 5 */
,{
XXXXX___,
X_______,
XXXX____,
____X___,
____X___,
X___X___,
_XXX____,
________}
/* 6 */
,{
__XX____,
_X______,
X_______,
XXXX____,
X___X___,
X___X___,
_XXX____,
________}
/* 7 */
,{
XXXXX___,
____X___,
___X____,
__X_____,
_X______,
_X______,
_X______,
________}
/* 8 */
,{
_XXX____,
X___X___,
X___X___,
_XXX____,
X___X___,
X___X___,
_XXX____,
________}
/* 9 */
,{
_XXX____,
X___X___,
X___X___,
_XXXX___,
____X___,
___X____,
_XX_____,
________}
/* ':' 3a */
,{
________,
XX______,
XX______,
________,
XX______,
XX______,
________,
________}
};
/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
OSInit ();
OSTaskCreate (Task0,(void *)0, &Task0Stk[TaskStkLengh - 1], 2);
OSStart ();
return 0;
}
void delay(uint32 n)
{
while(n--);
}
uint8 init(void)
{
uint8 i;
out;
set;
clr;
delay(6000);
set;
in;
delay(1200);
if((sh&(1<<25))==0)
{
i=1;
delay(6000);
}
else
i=0;
return(i);
}
uint32 readbit(void)
{
uint32 dat;
dat=0;
out;
set;
clr;
delay(56);
set;
delay(56);
in;
dat=sh&(1<<25);
delay(600);
return dat;
}
void writeBTS(uint8 dat)
{
uint8 i;
out;
for(i=0;i<8;i++)
{
if (dat&0x01)
{
set;
clr;
delay(56);
set;
delay(400);
}
else
{
set;
clr;
delay(800);
}
dat = dat >> 1;
}
set;
}
uint32 readBTS(void)
{
uint32 i,dat;
uint32 j=0;
dat=0;
for(i=0;i<16;i++)
{
j=readbit();
j=(j>>25)&0x01;
dat=(j<<15)|(dat>>1);
}
out;
set;
return(dat);
}
uint8 readB(void)
{
uint8 i,dat;
uint32 j=0;
dat=0;
for(i=0;i<8;i++)
{
j=readbit();
j=(j>>25)&0x01;
dat=(j<<7)|(dat>>1);
}
out;
set;
return(dat);
}
void gettemp1(void)
{
fp64 temp1,temp2;
char s[20];
init();
writeBTS(0xcc);
writeBTS(0x44);
OSTimeDlyHMSM(0,0,0,750);
init();
writeBTS(0x55);
writeBTS(40);
writeBTS(171);
writeBTS(74);
writeBTS(140);
writeBTS(1);
writeBTS(0);
writeBTS(0);
writeBTS(142);
writeBTS(0xbe);
temp1=readBTS();
init();
writeBTS(0x55);
writeBTS(40);
writeBTS(160);
writeBTS(235);
writeBTS(185);
writeBTS(1);
writeBTS(0);
writeBTS(0);
writeBTS(65);
writeBTS(0xbe);
temp2=readBTS();
temp1=temp1*0.0625;
if((temp1>=50)&&(temp1<=130)&&(temp1!=85))
{
IO0CLR=LED1|BEEP;GUI_LoadPic(92,18,(uint8*)x,36,14);
OSTimeDlyHMSM(0,0,0,400);
IO0SET=LED1|BEEP;GUI_LoadPic(92,18,(uint8*)k,36,14);
}
sprintf(s,"%6.2f\n",temp1);
if(temp1<130)
GUI_PutString(54,23,s);
else
{
GUI_PutString(54,23," ");
GUI_PutString(0,56,"!#1");IO0CLR=LED2|BEEP;
OSTimeDlyHMSM(0,0,0,400);
GUI_PutString(0,56," ");IO0SET=LED2|BEEP;
}
temp2=temp2*0.0625;
if((temp2>=70)&&(temp2<=130)&&(temp2!=85))
{
IO0CLR=LED3|BEEP;GUI_LoadPic(92,32,(uint8*)x,36,14);
OSTimeDlyHMSM(0,0,0,400);
IO0SET=LED3|BEEP;GUI_LoadPic(92,32,(uint8*)k,36,14);
}
sprintf(s,"%6.2f\n",temp2);
if(temp2<130)
GUI_PutString(54,37,s);
else
{
GUI_PutString(54,37," ");
GUI_PutString(40,56,"!#2");IO0CLR=LED2|BEEP;
OSTimeDlyHMSM(0,0,0,400);
GUI_PutString(40,56," ");IO0SET=LED2|BEEP;
}
}
void readID(void)
{
uint8 i;
uint8 b[8];
char s[20];
init();
writeBTS(0x33);
for(i=0;i<8;i++)
b[i]=readB();
for(i=0;i<3;i++)
{
sprintf(s,"%d",b[i]);
GUI_PutString(18*i,8,s);
}
for(i=3;i<8;i++)
{
sprintf(s,"%d",b[i]);
GUI_PutString(18*(i-3),16,s);
}
}
/*********************************************************************************************************
** Task0 任务0
** 功能:使用ZLG/GUI,在屏幕上同时显示多个"Hello ZLG/GUI!"字符串
********************************************************************************************************/
void Task0(void *pdata)
{
uint8 i;
pdata = pdata;
TargetInit ();
PINSEL2=0x00000000;
GUI_Initialize(); // 初始化LCM
GUI_SetColor(1, 0); // 设置前景色和背景色
GUI_LoadPic(16,0,(uint8*)biaoti,96,18);
GUI_LoadPic(0,20,(uint8*)x1,55,13);
GUI_LoadPic(0,34,(uint8*)x2,55,13);
IO0DIR = IO0DIR|LED1|LED2|LED3|BEEP; // 设置IO0DIR|LED1|LED2|LED3|BEEP为输出口
IO0SET = LED1|LED2|LED3|BEEP; // 初始化蜂鸣器不响,LED不亮
OSTaskCreate (SJ,(void *)0, &SJStk[TaskStkLengh - 1], 4);
while (1)
{
i=init();
if(i==1)
{
GUI_PutString(0,46," ");
gettemp1();
}
if(i==0)
{
GUI_PutString(0,48,"erro:noqijian");IO0CLR=LED2|BEEP;
OSTimeDlyHMSM(0,0,0,400);
GUI_PutString(0,48," ");IO0SET=LED2|BEEP;
}
OSTimeDlyHMSM(0,0,0,50);
}
}
void SJ(void *pdata)
{
uint32 times;
uint8 bak,shuz[6];
pdata = pdata;
while(1)
{
times=CTIME0;
bak=(times>>16)&0x1F; // 获取小时
shuz[0]=bak/10;
shuz[1]=bak%10;
bak=(times>>8)&0x3F; // 获取分钟
shuz[2]=bak/10;
shuz[3]=bak%10;
bak=times&0x3F; // 获取秒
shuz[4]=bak/10;
shuz[5]=bak%10;
GUI_LoadPic(80,54, *(FONT5x7ASCII_1+shuz[0]),5,8); //显示小时
GUI_LoadPic(86,54, *(FONT5x7ASCII_1+shuz[1]),5,8); //显示小时
GUI_LoadPic(92,54, *(FONT5x7ASCII_1+10),5,8); //显示冒号
GUI_LoadPic(98,54, *(FONT5x7ASCII_1+shuz[2]),5,8); //显示分钟
GUI_LoadPic(104,54,*(FONT5x7ASCII_1+shuz[3]),5,8); //显示分钟
GUI_LoadPic(110,54,*(FONT5x7ASCII_1+10),5,8); //显示冒号
GUI_LoadPic(116,54,*(FONT5x7ASCII_1+shuz[4]),5,8); //显示秒
GUI_LoadPic(122,54,*(FONT5x7ASCII_1+shuz[5]),5,8); //显示秒
OSTimeDlyHMSM(0,0,0,100);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -