久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11810|回復: 8
打印 上一主題 下一主題
收起左側

程序錯誤G:\KESHE.C(31): warning C206: 'lcd1602_init': missing function-prototype

[復制鏈接]
跳轉到指定樓層
樓主
ID:276150 發表于 2018-1-17 10:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs=P2^0; //1602:0寫指令,1寫數據
sbit lcdwr=P2^1; //1602讀寫信號
sbit lcden=P2^2; //1602片選信號
sbit TLC549_CS = P3^1;  //TLC549片選,低電平有效
sbit TLC549_DO = P3^5;  //TLC549數字量輸出
sbit TLC549_CLK = P3^0;  //TLC549片外獨立時鐘
sbit sta7=P0^7;
unsigned char data1_convert(unsigned char dat_temp)
{
unsigned char data1;  
data1=(unsigned char)(((float)dat_temp/255)*5); //換算為電壓值的個位值
data1=data1+48; //轉換為對應的ASCII碼,因為0對應ASCII碼的48,以此類推
return data1;   
}
unsigned char data0_convert(unsigned char dat_temp)
{  
unsigned char data0,data1;  data1=(unsigned char)(((float)dat_temp/255)*5);     //換算為電壓值的個位值
data0=(unsigned char)((((float)dat_temp/255)*5-data1)*10);//換算為為電壓值的小--  
                                                        //--數點后第一位的那個?
data0=data0+48;            
return data0;             //轉換為對應的ASCII碼
}
/**********************主函數*********************/
void main()  
{  
unsigned char dat;   //用于接收從8591中讀到的數據
lcd1602_init();
lcd_write_cmd(0x80);  
lcd_write_data('C');  
lcd_write_data('H');  
lcd_write_data('1');  
lcd_write_data(':');  
lcd_write_cmd(0x85);
lcd_write_data('.');
lcd_write_cmd(0x87);
lcd_write_data('V');  //上面的這些都是為了在1602中顯示"CH1: : V"   
while(1)  
{   
iic_start();   
iic_write(0x90);     //對8591進行寫操作
iic_ack();   
iic_write(0x01);  //設置為4路獨立信號輸入,并關閉通道自動加1,只用通道1  
iic_ack();
iic_start();      //重新開始,為讀數據作準備
iic_ack();   
iic_write(0x91);  //對8591進行讀操作
iic_ack();   
dat=iic_read();   //這還只是一個8位的數據(需進一步轉換為實際電壓值)
iic_send_no_ack();   
iic_stop();
lcd_write_cmd(0x84);                 //將要顯示的字符顯示在此地址處
lcd_write_data(data1_convert(dat));  //顯示電壓的整數部分
lcd_write_cmd(0x86);                //將要顯示的字符顯示在此地址處
lcd_write_data(data0_convert(dat));  //顯示電壓的小數部分
}
}
/***********************1ms延時函數**********************/
void delayms(uint ms)
{
uint y;
while(ms--)
{
for(y=0;y<125;y++);
}
}
//******************判忙*********************
void lcd_busy_check(void)   //1602忙信號檢測,忙則等待
{  
P0=0xff;   
do  
{   
lcdrs=0;   //讀狀態操作,為0   
lcdwr=1;      //讀操作為1   
lcden=0;   
lcden=1;   //讀狀態,需為高電平
}   
while (sta7==1);  //如果為1則忙,等待...直到為0   
lcden=0;
}
/***********************LCD寫指令 寫數據**********************/
void lcd_write_comdata(unsigned char cmd) //液晶寫?
{  
lcd_busy_check(); //每次操作之前都要進行忙信號檢測
lcdrs=0;   //執行數據操作,為1  
lcdwr=0;   //寫操作,為0  
P0=cmd;    //送數據到液晶數據端口P0,準備執行數據操?
lcden=1;   //高電平,數據送入液晶液晶數據RAM  
  //保持一會兒,使顯示數據可靠地送入液晶數據RAM  
lcden=0;   //低電平,顯示數據
}
void lcd_write_data(unsigned char dat) //液晶寫數據函數
{  
lcd_busy_check(); //每次操作之前都要進行忙信號檢測
lcdrs=1;   //執行數據操作,為1  
lcdwr=0;   //寫操作,為0  
P0=dat;    //送數據到液晶數據端口P0,準備執行數據操作

lcden=1;   //高電平,數據送入液晶液晶數據RAM  
  //保持一會兒,使顯示數據可靠地送入液晶數據RAM  
lcden=0;   //低電平,顯示數據
}
/***********************LCD初始化*********************/
void  lcd1602_init()
{
P0=0x00;
lcden=0;
lcd_write_cmd(0,0x38); //顯示模式5*7
lcd_write_cmd(0,0x0c);
lcd_write_cmd(0,0x06); //設置指針+1 屏幕不移動
lcd_write_cmd(0,0x01); //清屏
lcd_write_cmd(0,0x80); //初始化顯示地址
}

評分

參與人數 1黑幣 +60 收起 理由
admin + 60

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:276150 發表于 2018-1-17 10:05 | 只看該作者
G:\KESHE.C(31): warning C206: 'lcd1602_init': missing function-prototype
G:\KESHE.C(32): warning C206: 'lcd_write_comdata': missing function-prototype
G:\KESHE.C(32): error C267: 'lcd_write_comdata': requires ANSI-style prototype
回復

使用道具 舉報

板凳
ID:276150 發表于 2018-1-17 16:53 | 只看該作者
已經解決了
回復

使用道具 舉報

地板
ID:1 發表于 2018-1-17 20:33 | 只看該作者

問題出在哪里 能分享一下嗎?
回復

使用道具 舉報

5#
ID:276150 發表于 2018-1-17 21:57 | 只看該作者
改正好的程序
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs=P2^0; //1602:0寫指令,1寫數據
sbit lcdwr=P2^1; //1602讀寫信號
sbit lcden=P2^2; //1602片選信號
sbit TLC549_CS = P3^1;  //TLC549片選,低電平有效
sbit TLC549_DO = P3^5;  //TLC549數字量輸出
sbit TLC549_CLK = P3^0;  //TLC549片外獨立時鐘
sbit sta7=P0^7;

unsigned char data1_convert(unsigned char dat_temp)
{
unsigned char data1;  
data1=(unsigned char)(((float)dat_temp/255)*5); //換算為電壓值的個位值
data1=data1+48; //轉換為對應的ASCII碼,因為0對應ASCII碼的48,以此類推
return data1;   
}




unsigned char data0_convert(unsigned char dat_temp)
{  
unsigned char data0,data1;  
data1=(unsigned char)(((float)dat_temp/255)*5);     //換算為電壓值的個位值
data0=(unsigned char)((((float)dat_temp/255)*5-data1)*10);//換算為為電壓值的小--                                                          //--數點后第一位的那個?
data0=data0+48;            
return data0;             //轉換為對應的ASCII碼
}





/***********************1ms延時函數**********************/
void delayms(uint ms)
{
uint y;
while(ms--)
{
for(y=0;y<125;y++);
}
}




//******************判忙*********************
void lcd_busy_check(void)   //1602忙信號檢測,忙則等待
{  
P0=0xff;   
do  
{   
lcdrs=0;   //讀狀態操作,為0   
lcdwr=1;      //讀操作為1   
lcden=0;   
lcden=1;   //讀狀態,需為高電平
}   
while (sta7==1);  //如果為1則忙,等待...直到為0   
lcden=0;
}


/***********************LCD寫指令 寫數據**********************/
void lcd_write_cmd(unsigned char cmd) //液晶寫?
{  
lcd_busy_check(); //每次操作之前都要進行忙信號檢測
lcdrs=0;   //執行數據操作,為1  
lcdwr=0;   //寫操作,為0  
P0=cmd;    //送數據到液晶數據端口P0,準備執行數據操?
lcden=1;   //高電平,數據送入液晶液晶數據RAM  
  //保持一會兒,使顯示數據可靠地送入液晶數據RAM  
lcden=0;   //低電平,顯示數據
}
void lcd_write_data(unsigned char dat) //液晶寫數據函數
{  
lcd_busy_check(); //每次操作之前都要進行忙信號檢測
lcdrs=1;   //執行數據操作,為1  
lcdwr=0;   //寫操作,為0  
P0=dat;    //送數據到液晶數據端口P0,準備執行數據操作

lcden=1;   //高電平,數據送入液晶液晶數據RAM  
  //保持一會兒,使顯示數據可靠地送入液晶數據RAM  
lcden=0;   //低電平,顯示數據
}


/**********************主函數*********************/
void main()  
{
unsigned char dat;   //用于接收從8591中讀到的數據
lcd_init();
lcd_write_cmd(0x80);  
lcd_write_data('C');
lcd_write_cmd(0x81);
lcd_write_data('H');
lcd_write_cmd(0x82);   
lcd_write_data('1');
lcd_write_cmd(0x83);   
lcd_write_data(':');  
lcd_write_cmd(0x85);
lcd_write_data('.');
lcd_write_cmd(0x87);
lcd_write_data('V');  //上面的這些都是為了在1602中顯示"CH1: : V"   
while(1)  
{   
lcd_write_cmd(0x84);                 //將要顯示的字符顯示在此地址處
lcd_write_data(data1_convert(dat));  //顯示電壓的整數部分
lcd_write_cmd(0x86);                //將要顯示的字符顯示在此地址處
lcd_write_data(data0_convert(dat));  //顯示電壓的小數部分
}
}
回復

使用道具 舉報

6#
ID:276150 發表于 2018-1-17 22:03 | 只看該作者
解決方案:
1、main函數放到最后
2、刪去1602 改為lcd_init
3、聲明lcd_write_comdata 改為lcd_write_cmd
4、刪去了main函數中所有含有iic_的語句
其他細節見樓上
回復

使用道具 舉報

7#
ID:276150 發表于 2018-1-17 22:15 | 只看該作者
missing function-prototype
requires ANSI-style prototype
就是聲明的函數名和主函數中調用的函數名不一致
回復

使用道具 舉報

8#
ID:723577 發表于 2020-4-16 04:20 | 只看該作者
感謝,我就是因為main函數放前面了,找了一天了也沒找到問題
回復

使用道具 舉報

9#
ID:626275 發表于 2021-1-28 09:22 | 只看該作者
vktpas 發表于 2018-1-17 22:15
missing function-prototype
requires ANSI-style prototype
就是聲明的函數名和主函數中調用的函數名不 ...

謝謝,解決了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久免费精品视频 | 中文字幕一区二区三区四区五区 | 成人午夜影院 | av片免费| 欧美日韩综合精品 | 久久另类视频 | 国产成人久久精品一区二区三区 | 国产精品美女久久久久久久久久久 | 全免费a级毛片免费看视频免 | 日韩精品久久久久 | 在线亚洲一区二区 | 欧美 日韩 国产 成人 在线 | 亚洲精品第一 | 91视频电影 | 成人区精品一区二区婷婷 | 日本在线免费视频 | 亚洲在线一区二区三区 | 91精品国产91久久久久游泳池 | 欧州一区二区 | 一区二区三区欧美 | 成人精品国产一区二区4080 | 日韩乱码av | 亚洲精品久久久久久下一站 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 99在线观看视频 | 国产欧美精品一区二区 | 另类在线 | 欧美日韩专区 | 最新中文字幕 | 视频在线一区二区 | 天天干视频 | 日本 欧美 国产 | 九九热精品视频 | 免费在线观看91 | 欧美精品久久 | 国产成人精品一区二 | 久久精品成人 | 91精品国产综合久久久久 | 国产美女精品 | 国产精品久久一区二区三区 | 91一区二区|