📄 adpan.c
字号:
#include <pic.h>
#define lcdrs RB0
#define lcdrw RB1
#define lcde RB2
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3f3a);
void delay(uint m)
{
uint i,j;
for(i=0;i<m;i++)
{
for(j=0;j<100;j++);
}
}
void wcomm(uchar m)
{
lcdrs=0;
lcdrw=0;
lcde=1;
PORTD=m;
delay(10);
lcde=0;
delay(200);
}
void wdata(uchar m)
{
lcdrs=1;
lcdrw=0;
lcde=1;
PORTD=m;
delay(10);
lcde=0;
delay(200);
}
void LCD_init(void)
{
wcomm(0x38);// RS设定显示模式
delay(1500);
wcomm(0x38);// RS设定显示模式
delay(1500);
wcomm(0x38);// RS设定显示模式
delay(1500);
wcomm(0x01);//清除
wcomm(0x02);//光标复位
wcomm(0x06);//输入方式设置
wcomm(0x14);//移动与显示位
wcomm(0x0c);//显示开关控制
}
void LCD_char(uchar i,uchar k)
{ if(i>15)
{
wcomm(0xc0+i-0x10);
}
else wcomm(0x80+i);
wdata(k);
}
unsigned int AD_READ(void)//
{
unsigned int x;
TRISA0=1;//RA0为输入口
ADON=1;
CHS0=0;CHS1=0;CHS2=0;//选通道0
ADCS1=1;ADCS0=0;//采样频率为fsoc/4/32
ADCON1=0x8e;
ADGO=1;
while(ADGO);
x=ADRESH*256+ADRESL;
return(x);
}
void interrupt INTER(void)
{
if(TOIF)
{
TOIF=0;
}
}
void Time0Init(void)
{
OPTION=0x30;
TMR0=0x00;
TOIE=1;//允许time0中断
ei();
}
void main(void)
{
uint m;
float x;
TRISB0=0;
TRISB1=0;
TRISB2=0;
TRISD=0X00;
TRISB4=0;
TRISC2=1;
TRISE=0x00;
TRISA4=1;
RE2=1;
RE2=0;
LCD_init();
while(1)
{
m=AD_READ();
x=100.0*(float)m/1024.0*5.0;
m=x;
LCD_char(1,0x30+m/100);
m=m%100;
LCD_char(2,'.');
LCD_char(3,0x30+m/10);
LCD_char(4,0x30+m%10);
if(RA4)
RE2=1;
else RE2=0;
// while(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -