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

📄 c_code.c

📁 Pressure Sensor Assemble Code
💻 C
📖 第 1 页 / 共 2 页
字号:
			if(ACC == 0x08)									//ALARM键按下
			{
			}
		}
	}while(iflag[0] != 0);
}

 //   hex to bcd 转换程序
void hextobcd(unsigned int hexs,unsigned char j) 
{
	unsigned int va;
	unsigned char i;
    va = 10000;                             		//最大数级万位
    for     (i=j-1;i;i--) {
        disp_buffer[i] = 0;                 		//目标数组清零
        while ((hexs>=va)&&(va>9)) {
            hexs -= va;                     		//减除数
            disp_buffer[i]++;               		//商位加1
        }
        va /= 10;                           		//除数除10,指向低一位
    }
    disp_buffer[0]=hexs;                    		//最后个位数	
}

 //数据处理程序
void deoutlier(unsigned int x[4], unsigned int x0[4][2], char Bound)	//野点剔除
{
	for(i=0;i<4;i++)
		value[i][0] = value[i][1];
	for(i=0;i<4;i++)
	{
		if(x[i]-x0[i][0]> Bound||x0[i][0]-x[i]>Bound)
			value[i][1] = 2*x0[i][0] - x0[i][1];
		else
			value[i][1] = x[i];
	}
}

void calibration(unsigned int x[4])//温度校正公式见说明文档
{
	for(i=0;i<4;i++)
		new_value[i] = x[i];					//
}

//指令&数据读写状态
void CheckRWCD(void){
     while((LcmCmdPort & 0x03) != 0x03);      //低电平忙
}
//数据自动写状态
void CheckAutoWrite(void){
     while((LcmCmdPort & 0x08) == 0);      //低电平忙
}
//屏读/屏考贝出错状态
//void CheckScreen(void){      
//     while(LcmCmdPort & 0x40);      //1出错,0正确
//}
//一个数据子写入函数
void LcmWriteData(unsigned char uData) {
     LcmDataPort = uData;
}
//一个数据读出函数
//unsigned char LcmReadData( void ){
//     unsigned char uData;
//     uData = LcmDataPort;
//     return uData;
//}
//无参数指令写入函数
void LcmWriteCommand(unsigned char Command) {
     CheckRWCD();                        //检测指令读写状态
     LcmCmdPort = Command;
}
//单参数指令写入函数
void LcmWriteCommandWith1Par(unsigned char Parameter,unsigned char Command){
     CheckRWCD();                        //检测指令读写状态
     LcmDataPort = Parameter;
     CheckRWCD();
     LcmCmdPort = Command;
}
//双参数指令写入函数
void LcmWriteCommandWith2Par(unsigned char Parameter1,unsigned char Parameter2,unsigned char Command){
     CheckRWCD();                        //检测指令读写状态
     LcmDataPort = Parameter1;
     CheckRWCD();
     LcmDataPort = Parameter2;
     CheckRWCD();
     LcmCmdPort = Command;
}
//LCM初始化函数
void LcmInit( void ){
     LcmWriteCommandWith2Par(0x00,0x00,0x40);      //设置文本显示区首地址
     LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41);      //设置文本显示区宽度
     LcmWriteCommandWith2Par(0x00,0x08,0x42);      //设置图形显示区首地址0x0800
     LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43);      //设置图形显示区宽度
     LcmWriteCommand(0xA7);                  //设置光标形状 8x8方块
     LcmWriteCommand(0x81);                  //显示方式设置 文本xor图形(异或)
     LcmWriteCommand(0x9C);                  //显示开关设置 文本开,图形开,光标闪烁关
}
//延时函数
void Delay(unsigned int MS){
     unsigned char us,usn;
     while(MS!=0)  {                         //12M Crystal   
           usn = 2;
           while(usn!=0)           {
                 us=0xf2;
                 while (us!=0){us--;};
                 usn--;
           }
           MS--;
     }
}
//通过按键设定延时函数
void DelayKey(unsigned char HalfSecond){                              //Delay_key加入时间参数0.5秒一级
     unsigned int i;
     for(i=0;i<50*HalfSecond;i++){            //12M Crystal     
           if(Key==0)           {
                 Delay(20);
                 while(Key==0) {Delay(20);}
                 break;
           }
           Delay(10);
     }
}
//清显示存储器函数
void LcmClear( unsigned char FillByte ){
     unsigned int i = 8192;      //此处仅清8K RAM,如果您32K RAM都使用,请修改i=32768(后面也要改)
     if(FillByte)      //注意如果填充ff时,如果RAM仅使用了8K,那么8192次会写入到文本区
     {                  //会形成乱码.(24064出厂时候默认将R7断开,即默认使用8KRAM)
           i -= 2*1024;//所以如果填入ff时候要扣除2K的文本区
             LcmWriteCommandWith2Par(0x00,0x08,0x24);      //填充0xff时候要在图形区
     }
     else
           LcmWriteCommandWith2Par(0x00,0x00,0x24);
     LcmWriteCommand(0xB0);                  //进入自动写
     while(i--) {
           CheckAutoWrite();
           LcmWriteData( FillByte );
     }
     LcmWriteCommand(0xB2);                  //退出自动写

}
//动态显示数据
void LcmDynWriteData(unsigned char x, unsigned char y, unsigned char CH_No,unsigned int ihex){
     LocateXY(x,y,TXT);
     LcmWriteCommand(0xB0);                  //进入自动写
	
	 CheckAutoWrite();
     LcmWriteData(0x23);//  C
     CheckAutoWrite();
     LcmWriteData(0x28);//  H
     CheckAutoWrite();
     LcmWriteData(CH_No);//  通道号
	 CheckAutoWrite();
     LcmWriteData(0x1A);// :
	
	 i = 5;// x x x x x 测量值
     while(i--) {
           CheckAutoWrite();
           LcmWriteData( ihex );
     }

	 CheckAutoWrite();
     LcmWriteData(0x30);//  显示P
	 CheckAutoWrite();
     LcmWriteData(0x54);// 显示t		     

     LcmWriteCommand(0xB2);                  //退出自动写
}
//设定显示地址函数
void LocateXY(unsigned char x,unsigned char y,unsigned char mode){
     unsigned int  temp;
     temp= LcmLengthDots/8*y + x;
     if(mode)  {                        //mode=1为Graphic
           temp+=0x0800;              //如果图形模式要加上图形区首地址0x0800         
     }
     LcmWriteCommandWith2Par(temp&0xff,temp/256,0x24);
}
//显示一个ASCII码函数
void PutChar(unsigned char x,unsigned char y,unsigned char CharByte){
     LocateXY(x,y,TXT);
     LcmWriteCommandWith1Par(CharByte,0xC4);
}
//显示一个字符串函数
void PutString(unsigned char x,unsigned char y,unsigned char *str){
     while(*str != 0)     {
           if(x> 29) {            //自动换行           
                 x=0;
                 y++;
           }
           PutChar(x,y,*str);
           ++x;
           ++str;
     }
}
//显示一副图片函数
//void DisplayOneBmp(unsigned char *puts){
//     unsigned char i,j;
//     unsigned int  X=0;
//     LocateXY(0,0,Graphic);
//     LcmWriteCommand(0xB0);                  //进入自动写
//     for(i=0;i<LcmWidthDots;i++) {
//           for(j=0;j<LcmLengthDots/8;j++) {
//                 CheckAutoWrite();
//                 LcmWriteData(puts[X]);
//                 X++;
//           }
//     }
//     LcmWriteCommand(0xB2);                  //退出自动写
//}
//反显一副图片函数
//void ReverseOneBmp( void ){                              //利用数据一次读写操作
//     unsigned char i,j,X;            //只能对一段RAM取反
//     LocateXY(0,0,Graphic);
//     for(i=0;i<LcmWidthDots;i++) {
//           for(j=0;j<LcmLengthDots/8;j++) {
//                 LcmWriteCommand(0xC5);      //读数据,地址不变
//                 CheckRWCD();
//                 X = LcmReadData();
//                 X = ~X;
//                 LcmWriteCommandWith1Par(X,0xC0);
//           }
//     }
//}
//屏读功能演示
//void ScreenReadDemo( void ){                              //利用屏读
//                             //能对当前屏幕反显,包括合成内容(本函数仅读文本到图形)
//                             //但是写入后的内容都在图形区
//                             //可以将文本区内容读出以图形方式写到图形区
//     unsigned char i,j,X;
//                             //使用屏读屏考时候必须设置宽度为40(硬件已决定)
//                             //所以如确定要用到屏读屏考的话最后初始化时就设40
//     LcmWriteCommandWith2Par(0x28,0x00,0x41);      //设置文本显示区宽度=40
//     LcmWriteCommandWith2Par(0x28,0x00,0x43);      //设置图形显示区宽度=40
//     PutString(0,0,str1);                        //0,0不会受到宽度改变的影响
//     for(i=0;i<8;i++) {            //屏幕较慢,就以一行文本做演示   
//           LcmWriteCommandWith2Par((0x28*i+0x800)&0xff,(0x28*i+0x800)/256,0x24);
//           for(j=0;j<LcmLengthDots/8;j++)           {
//                 LcmWriteCommand(0xE0);
//                 CheckScreen();
//                 CheckRWCD();
//                 X = LcmReadData();
//                 X = ~X;
//                 LcmWriteCommandWith1Par(X,0xC0);      
//           }            
//     }
//     //屏读需要一点时间,运行速度比较慢,运行过程中由于文本图形互补的关系,屏幕全黑
//     LcmWriteCommand(0x98);      //关闭文本区看显示效果
//     DelayKey(3);
//     LcmWriteCommand(0x9C);      //恢复文本区显示
//     LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41);      //宽度改回原值
//     LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43);
//     LcmClear(0);            //清屏
//}
//显示点阵子函数
//void DisplayDots(unsigned char DotByte,unsigned char n){
//     unsigned char i,j;
//     LocateXY(0,0,Graphic);
//     LcmWriteCommand(0xB0);                  //进入自动写
//     for(i=0;i<LcmWidthDots/n;i++)     {
//           for(j=0;j<LcmLengthDots/8*n;j++)   {
//                 CheckAutoWrite();
//                 LcmWriteData(DotByte);
//           }
//           DotByte=~DotByte;
//     }
//     LcmWriteCommand(0xB2);                  //退出自动写
//}

//代码区
unsigned char code str_Welcome[] = {0x37, 0x45, 0x4C, 0x43, 0x4F, 0x4D, 0x45,0x01};
unsigned char code str_Hibernate[] = {0x28, 0x49, 0x42, 0x45, 0x52, 0x4E, 0x41, 0x54, 0x45};
unsigned char code str_Charge[] = {0x23, 0x28, 0x21, 0x32, 0x27, 0x25};
unsigned char code str_USB[] = {0x35, 0x33, 0x22};
unsigned char code str2[] = {0x37, 0x41, 0x52, 0x4D, 0x49, 0x4E, 0x47, 0x00, 0x35, 0x50};
unsigned char code str3[] = {0x37, 0x41, 0x52, 0x4D, 0x49, 0x4E, 0x47, 0x00, 0x35, 0x50, 0x0E};
unsigned char code str4[] = {0x37, 0x41, 0x52, 0x4D, 0x49, 0x4E, 0x47, 0x00, 0x35, 0x50, 0x0E, 0x0E};
unsigned char code str5[] = {0x37, 0x41, 0x52, 0x4D, 0x49, 0x4E, 0x47, 0x00, 0x35, 0x50, 0x0E, 0x0E, 0x0E};

⌨️ 快捷键说明

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