📄 adc.c
字号:
#include <io8535v.h>
#define uchar unsigned char
#define uint unsigned int
#define out PORTC
#define in ADMUX
#define RSS() PORTB=PORTB|0X01
#define RSC() PORTB=PORTB&0XFE
#define RWS() PORTB=PORTB|0X02
#define RWC() PORTB=PORTB&0XFD
#define ES() PORTB=PORTB|0X04
#define EC() PORTB=PORTB&0XFB
uchar *string="hello ^_^ next we will use AT90S8535 to measure the voltage ";
void delay(uint);
void delay_1ms(void);
void lcd_initial(void);
void write_data(uchar);
void write_code(uchar);
void busy(void);
void dstring(uchar *s);
uint adconvert(void);
#pragma data:data
uint res;
uint adh, adl;
float v;
void main()
{
uchar k;
////////////
DDRC=0XFF;
DDRB=0XFF;
lcd_initial();
for(k=0;k<50;k++)
{
write_code(0x80);//写入显示起始地址(第一行第一个位置)
dstring(string);
delay(100);
write_code(0x10);
string++;
}
write_code(0x10);
lcd_initial();
write_code(0x80);//写入显示起始地址(第一行第一个位置)
dstring("IN:");
write_code(0x86);
dstring("V:");
/////////////
DDRA=0X00;
PORTA=0X00;
ADMUX=in;//选择通道 in
ADCSR=0X80;//ADEN=1,ADSC=0,CLK/2单一非中断方式
while(1)
{
for(in=0;in<8;in++)
{
res=adconvert();
v=10.0*res/(float)1023;
v=v*1000;
if((uint)v%10>=5)v=v+10;
write_code(0x83);
write_data(0x30+in);
delay(1);
write_code(0x88);
write_data(0x30+(uint)v/1000);
dstring(".");
write_data(0x30+(uint)v/100%10);
write_data(0x30+(uint)v/10%10);
delay(300);
}
}
}
uint adconvert(void)
{
ADCSR=ADCSR|0X40;//开始转换
while(ADCSR&0X40);
adl=(uint)ADCL;
adh=(uint)ADCH;
adh=(adh<<8)+adl;
return(adh);
}
void lcd_initial(void)
{delay(10);
write_code(0x01);//清屏并光标复位
delay(1);
write_code(0x38);//设置式:8位2行5x7点阵显示模
delay(1);
write_code(0x0C);//显示器开、光标关、光标不允许闪烁
delay(1);
write_code(0x06);//文字不动,光标自动右移
delay(1);
}
void write_data(uchar dat)
{
out=dat;
RSS();
RWC();
EC();
busy();
ES();
}
void write_code(uchar command)
{out=command;
RSC();
RWC();
EC();
busy();
ES();
}
void busy(void)
{
while(PINC&0X80)
{
RSC();
RWS();
EC();
ES();
}
}
void dstring(uchar *s)
{ while(*s>0)
{ write_data(*s);
s++;
delay(0);
}
}
void delay(uint j)
{
for(;j>0;j--)
{
delay_1ms();
}
}
void delay_1ms()
{
uint m;
for(m=0;m<570;m++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -