標(biāo)題:
單片機(jī)獨(dú)立按鍵加lcd1602+adc0809顯示問題
[打印本頁]
作者:
yingao123
時間:
2015-5-1 21:51
標(biāo)題:
單片機(jī)獨(dú)立按鍵加lcd1602+adc0809顯示問題
程序單個都對,但是在主程序中組合在一起,按鍵程序就失效了……請問各位大神……程序如何修改?
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<intrins.h>
#include"adc0809.h"
#include"lcd1602.h"
#include"delay.h"
/* key0用于選擇顯示的內(nèi)容,當(dāng)前溫度或者報警溫度 */
/* 同時也用于選擇對高溫操作還是對低溫操作 */
/* key0==1時,key1對高溫加,key2對高溫減 */
/* key0==2時,key1對低溫加,key2對低溫減 */
sbit key0=P3^3;
sbit key1=P3^4;
sbit key2=P3^5;
sbit led=P2^0;
unsigned char flag=0,i=0;
void keyscan()
{
key0=1;
key1=1;
key2=1;
if(!key0)
{
DelayMs(10);
if(!key0)
{
while(!key0);
if (i<2)
{
flag++;
i++;
flag=flag%3; //flag= 0~
}
else
{
adc_display();
flag=0;
i=0;
}
}
}
if(flag==1)
{
if(!key1)
{
DelayMs(10);
if(!key1)
{
while(!key1);
{ LCD_Write_String(0,0,"we"); }
}
}
}
if(flag==1)
{
if(!key2)
{
DelayMs(10);
if(!key2)
{
while(!key2);
{ LCD_Write_String(0,0,"er"); }
}
}
}
if(flag==2)
{
if(!key1)
{
DelayMs(10);
if(!key1)
{
while(!key1);
{ LCD_Write_String(1,2,"qw"); }
}
}
}
if(flag==2)
{
if(!key2)
{
DelayMs(10);
if(!key2)
{
while(!key2);
{ LCD_Write_String(1,2,"rt"); }
}
}
}
}
void main()
{
LCD_Init();
LCD_Clear();
while(1)
{
adc_display();
keyscan();
DelayMs(10);
}
}
作者:
yingao123
時間:
2015-5-1 22:09
以下是adc0809的程序
#include"adc0809.h"
#include"delay.h"
#include"lcd1602.h"
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P27 = P2^7;
sbit EOC = P2^3;
sbit ST = P3^0;
sbit OE = P3^1;
uchar getdata = 0;
uchar code table[]="0123456789";//定義顯示的數(shù)組
uchar q,b,s,g;
void adc0809(void)
{
float temp=0.0;
ST=0;//ADC0809初始化
ST=1;
_nop_();
_nop_();
ST=0;
while(EOC==0)//等待轉(zhuǎn)換完成
{
OE=1;
getdata=P0;//p2選擇為ADC的數(shù)據(jù)口
OE=0;
}
//temp=(float) getdata*5.0/256;//數(shù)據(jù)處理
//temp=temp/100.0;
temp=getdata;
q=(int)temp/1000;
b=(int)temp%1000/100;
s=(int)temp%1000%100/10;
g=(int)temp%10;
}
void adc_display(void)
{
LCD_Init();
OE=0;
while (1)
{
LCD_Write_String(0,0,"current value:");
adc0809();
LCD_Write_Com(0x80+0x40);//1602顯示處理好的數(shù)據(jù)
{
LCD_Write_Data(table[q]);
DelayMs(20);
LCD_Write_Data(table[b]);
DelayMs(20);
LCD_Write_Data(table[s]);
DelayMs(20);
LCD_Write_Data(table[g]);
DelayMs(20);
}
}
}
作者:
13682060295
時間:
2015-6-8 06:13
樓主,你好!我現(xiàn)在也遇到了這個問題你是怎么解決的。
作者:
liaolinhui
時間:
2015-6-8 12:51
把lcd1602.h內(nèi)容也放出來看看
作者:
arsenalkobe
時間:
2015-6-10 21:47
樓主好牛啊
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1