完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 chenshengas 于 2012-3-28 10:28 编辑 程序出现了以下错误,怎么改 错误的地方我用红色标注了 BISHE.C(510): warning C214: 'Argument': conversion: pointer to non-pointer BISHE.C(511): warning C214: 'Argument': conversion: pointer to non-pointer BISHE.C(512): warning C214: 'Argument': conversion: pointer to non-pointer BISHE.C(513): warning C214: 'Argument': conversion: pointer to non-pointer BISHE.C(514): error C267: 'delay': requires ANSI-style prototype bishe.c - 1 Error(s), 4 Warning(s). #include #include #define uint unsigned int #define uchar unsigned char #define Dis_X_MAX 128-1 #define Dis_Y_MAX 64-1 ***it SPI_CS = P0^0; //定义CS接在P0.0端口 ***it SPI_SDA = P0^1; //定义SDA接在P0.1端口 ***it SPI_SCK = P0^2; //定义SCK接在P0.2端口 ***it SPI_RES = P0^3; //定义RESET接P0.3端口 ***it DS1302_CLK = P1^1; //实时时钟时钟线引脚 ***it DS1302_IO = P1^0; //实时时钟数据线引脚 ***it DS1302_RST = P1^2; ***it Set = P2^0; //模式切换键 ***it Up = P2^1; //加法按钮 ***it Down = P2^2; //减法按钮 ***it out = P2^3; //立刻跳出调整模式按钮 ***it DQ = P3^7; //实时时钟复位线引脚 ***it ACC0 = ACC^0; ***it ACC7 = ACC^7; unsigned char X_Witch=6; unsigned char Y_Witch=10; unsigned char X_Witch_cn=16; unsigned char Y_Witch_cn=16; unsigned char Dis_Zero=0; char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数 //温度传送数据IO口 char done,count,temp,flag,up_flag,down_flag; uchar temp_value; //温度值 uchar TempBuffer[5],week_value[2]; //======================================================================== // 函数: void LCD_Init(void) // 描述: LCD初始化程序,主要在里面完成端口初始化以及LCD模块的复位 // 参数: 无 // 返回: 无 // 备注: // 版本: // 2009/02/10 First version Mz Design //======================================================================== void timeDelay(unsigned int Timers) { unsigned int i; while(Timers) { Timers--; for(i=0;i<100;i++) ; } } void LCD_Init(void) { //SS和SCK预先设置为高电平 SPI_SCK = 1; SPI_CS = 1; //复位LCD模块 SPI_RES = 0; TimeDelay(50); //保持低电平大概2ms左右 SPI_RES = 1; TimeDelay(80); //延时大概10ms左右 } //======================================================================== // 函数: void SPI_SSSet(unsigned char Status) // 描述: 置SS线状态 // 参数: Status =1则置高电平,=0则置低电平 // 返回: 无 // 版本: // 2009/02/10 First version Mz Design //======================================================================== void SPI_SSSet(unsigned char Status) { if(Status) //判断是要置SS为低还是高电平?//SS置高电平 SPI_CS = 1; else //SS置低电平 SPI_CS = 0; } //======================================================================== // 函数: void SPI_Send(unsigned char Data) // 描述: 通过串行SPI口输送一个byte的数据置模组 // 参数: Data 要传送的数据 // 返回: 无 // 版本: // 2007/07/17 First version // 2007/07/24 V1.2 for MCS51 Keil C //======================================================================== void SPI_Send(unsigned char Data) { unsigned char i=0; for(i=0;i<8;i++) { //SCK置低 SPI_SCK = 0; if(Data&0x0080) SPI_SDA = 1; else SPI_SDA = 0;// //SCK上升沿触发串行数据采样 SPI_SCK = 1; Data = Data<<1; //数据左移一位 } } //======================================================================== // 函数: void FontSet(unsigned char Font_NUM,unsigned char Color) // 描述: ASCII字符字体设置 // 参数: Font_NUM 字体选择,以驱动所带的字库为准 // Color 文本颜色,仅作用于ASCII字库 // 返回: 无 // 备注: // 版本: // 2007/07/19 First version //======================================================================== void FontSet(unsigned char Font_NUM,unsigned char Color) { unsigned char ucTemp=0; if(Font_NUM==0) { X_Witch = 6;//7; Y_Witch = 10; } else { X_Witch = 8; Y_Witch = 16; } ucTemp = (Font_NUM<<4)|Color; //设置ASCII字符的字型 SPI_SSSet(0); //SS置低电平 SPI_Send(0x81); //传送指令0x81 SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色 SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void FontMode(unsigned char Cover,unsigned char Color) // 描述: 设置字符显示覆盖模式 // 参数: Cover 字符覆盖模式设置,0或1 // Color 覆盖模式为1时字符显示时的背景覆盖色 // 返回: 无 // 备注: // 版本: // 2008/11/27 First version //======================================================================== void FontMode(unsigned char Cover,unsigned char Color) { unsigned char ucTemp=0; ucTemp = (Cover<<4)|Color; //设置ASCII字符的字型 SPI_SSSet(0); //SS置低电平 SPI_Send(0x89); //传送指令0x81 SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色 SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void FontSet_cn(unsigned char Font_NUM,unsigned char Color) // 描述: 汉字库字符字体设置 // 参数: Font_NUM 字体选择,以驱动所带的字库为准 // Color 文本颜色,仅作用于汉字库 // 返回: 无 // 备注: // 版本: // 2007/07/19 First version //======================================================================== void FontSet_cn(unsigned char Font_NUM,unsigned char Color) { unsigned char ucTemp=0; if(Font_NUM==0) { X_Witch_cn = 12; Y_Witch_cn = 12; } else { X_Witch_cn = 16; Y_Witch_cn = 16; } ucTemp = (Font_NUM<<4)|Color; //设置ASCII字符的字型 SPI_SSSet(0); //SS置低电平 SPI_Send(0x82); //传送指令0x81 SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色 SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void PutChar(unsigned char x,unsigned char y,unsigned char a) // 描述: 写入一个标准ASCII字符 // 参数: x X轴坐标 y Y轴坐标 // a 要显示的字符在字库中的偏移量 // 返回: 无 // 备注: ASCII字符可直接输入ASCII码即可 // 版本: // 2007/07/19 First version //======================================================================== void PutChar(unsigned char x,unsigned char y,unsigned char a) { //显示ASCII字符 SPI_SSSet(0); //SS置低电平 SPI_Send(7); //传送指令0x07 SPI_Send(x); //要显示字符的左上角的X轴位置 SPI_Send(y); //要显示字符的左上角的Y轴位置 SPI_Send(a); //要显示字符ASCII字符的ASCII码值 SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void PutString(int x,int y,char *p) // 描述: 在x、y为起始坐标处写入一串标准ASCII字符 // 参数: x X轴坐标 y Y轴坐标 // p 要显示的字符串 // 返回: 无 // 备注: 仅能用于自带的ASCII字符串显示 // 版本: // 2007/07/19 First version //======================================================================== void PutString(unsigned char x,unsigned char y,unsigned char *p) { while(*p!=0) { PutChar(x,y,*p); x += X_Witch; if((x + X_Witch) > Dis_X_MAX) { x = Dis_Zero; if((Dis_Y_MAX - y) < Y_Witch) break; else y += Y_Witch; } p++; } } //======================================================================== // 函数: void PutChar_cn(unsigned char x,unsigned char y,unsigned short * GB) // 描述: 写入一个二级汉字库汉字 // 参数: x X轴坐标 y Y轴坐标 // a GB码 // 返回: 无 // 备注: // 版本: // 2007/07/19 First version // 2007/07/24 V1.2 for MCS51 Keil C //======================================================================== void PutChar_cn(unsigned char x,unsigned char y,unsigned char * GB) { //显示ASCII字符 SPI_SSSet(0); //SS置低电平 SPI_Send(8); //传送指令0x08 SPI_Send(x); //要显示字符的左上角的X轴位置 SPI_Send(y); //要显示字符的左上角的Y轴位置 SPI_Send(*(GB++)); //传送二级字库中汉字GB码的高八位值 SPI_Send(*GB); //传送二级字库中汉字GB码的低八位值 SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void PutString_cn(unsigned char x,unsigned char y,unsigned short *p) // 描述: 在x、y为起始坐标处写入一串汉字字符 // 参数: x X轴坐标 y Y轴坐标 // p 要显示的字符串 // 返回: 无 // 备注: 同PutChar_cn中的解释 // 版本: // 2007/07/19 First version // 2007/07/24 V1.2 for MCS51 Keil C //======================================================================== void PutString_cn(unsigned char x,unsigned char y,unsigned char *p) { while(*p!=0) { if(*p<128) { PutChar(x,y,*p); x += X_Witch+1; if((x/* + X_Witch*/) > Dis_X_MAX) { x = Dis_Zero; if((Dis_Y_MAX - y) < Y_Witch) break; else y += Y_Witch_cn; } p+=1; } else { PutChar_cn(x,y,p); x += X_Witch_cn+1; if((x/* + X_Witch_cn*/) > Dis_X_MAX) { x = Dis_Zero; if((Dis_Y_MAX - y) < Y_Witch_cn) break; else y += Y_Witch_cn; } p+=2; } } } //======================================================================== // 函数: void ShowChar(unsigned char x,unsigned char y,unsigned char Num,unsigned char type) // 描述: 在x、y的位置为显示区域的左上角,显示一个unsigned char型数 // 参数: x X轴坐标 y Y轴坐标 Num 要显示的8位宽度的数据 type 显示特性(0,1,2) // 返回: 无 // 备注: // 版本: // 2008/11/27 First version //======================================================================== void ShowChar(unsigned char x,unsigned char y,unsigned char a,unsigned char type) { //显示ASCII字符 SPI_SSSet(0); //SS置低电平 SPI_Send(11); //传送指令0x0B SPI_Send(x); //要显示字符的左上角的X轴位置 SPI_Send(y); //要显示字符的左上角的Y轴位置 SPI_Send(a); //要显示的数据 SPI_Send(type); SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void ShowShort(unsigned char x,unsigned char y,unsigned short Num,unsigned char type) // 描述: 在x、y的位置为显示区域的左上角,显示一个unsigned short型数(16位宽度) // 参数: x X轴坐标 y Y轴坐标 Num 要显示的16位宽度的数据 type 显示特性(0,1,2) // 返回: 无 // 备注: // 版本: // 2008/11/27 First version //======================================================================== void ShowShort(unsigned char x,unsigned char y,unsigned short a,unsigned char type) { //显示ASCII字符 SPI_SSSet(0); //SS置低电平 SPI_Send(12); //传送指令0x0C SPI_Send(x); //要显示字符的左上角的X轴位置 SPI_Send(y); //要显示字符的左上角的Y轴位置 SPI_Send((unsigned char)(a>>8)); SPI_Send((unsigned char)a); SPI_Send(type); //要显示字符ASCII字符的ASCII码值 SPI_SSSet(1); //完成操作置SS高电平 } //======================================================================== // 函数: void SetBackLight(unsigned char Deg) // 描述: 设置背光亮度等级 // 参数: Grade 0~127的等级 // 返回: 无 // 备注: // 版本: // 2008/11/27 First version //======================================================================== void SetBackLight(unsigned char Deg) { //显示ASCII字符 SPI_SSSet(0); //SS置低电平 SPI_Send(0x8a); //传送指令0x07 SPI_Send(Deg); //要显示字符的左上角的X轴位置 SPI_SSSet(1); //完成操作置SS高电平 } //===================================================================== // 函数: void SetLCDGra(unsigned char Dat) // 描述: LCD整屏显示灰度调节 // 参数: Dat 要调成的灰度值,0~0x3f // // 返回: 无 // 备注: 调节后的灰度将会保持到下一将从 LCD复位之前,或者下一次重新调整灰度之前 // 版本: // 2010/02/10 First version //===================================================================== void SetLCDGra(unsigned char Dat) { //显示ASCII字符 SPI_SSSet(0); //SS置低电平 SPI_Send(0x8c); //传送指令0x8a SPI_Send(Dat); //传送数值 SPI_SSSet(1); //完成操作置SS高电平 } /***********DS1302时钟部分子程序******************/ typedef struct __SYSTEMTIME__ { unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString[11]; unsigned char TimeString[9]; }SYSTEMTIME; //定义的时间类型 SYSTEMTIME CurrentTime; #define AM(X) X #define PM(X) (X+12) // 转成24小时制 #define DS1302_SECOND 0x80 //时钟芯片的寄存器位置,存放时间 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY 0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C /***********ds18b20子程序*************************/ /***********ds18b20延迟子函数(晶振12MHz )*******/ void delay_18B20(unsigned int i) { while(i--); } /**********ds18b20初始化函数**********************/ void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(14); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20); } /***********ds18b20读一个字节**************/ unsigned char ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); } return(dat); } /*************ds18b20写一个字节****************/ void WriteOneChar(uchar dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; } } /**************读取ds18b20当前温度************/ void ReadTemp(void) { unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 delay_18B20(100); // this message is very important Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 delay_18B20(100); a=ReadOneChar(); //读取温度值低位 b=ReadOneChar(); //读取温度值高位 temp_value=b<<4; temp_value+=(a&0xf0)>>4; } void temp_to_str() //温度数据转换成液晶字符显示 { TempBuffer[0]=temp_value/10+'0'; //十位 TempBuffer[1]=temp_value%10+'0'; //个位 TempBuffer[2]=0xdf; //温度符号 TempBuffer[3]='C'; TempBuffer[4]=' |