📄 l297.h
字号:
/*****************************************
* 基于AD转化程序设计 *
* 功 能:AD转化 *
* 时钟频率:内部8M *
* 设 计:莫锦攀 *
* 修改日期:2007年07月04日 *
* 编译环境:ICC-AVR6.31 *
* 实验环境:M16学习板 *
* 使用端口:PC6,PC7,PA4~PA7,PA0 *
*****************************************/
#include <iom16v.h>
#include "1602.h"
#define uchar unsigned char
#define uint unsigned int
uchar Data[5]={0,0,0,0,0};//初始值为0000,最后一个0是结束符
void change(uint i,uchar *p) //显示处理
{p[3]=i%10+48;//个
p[2]=i/10%10+48;//十
p[1]=i/100%10+48;//百
p[0]=i/1000%10+48;//千
}
uint ADC_convert(void)//AD转换函数,读取采样获得的10位数据
{
uint temp1,temp2;
temp1=(uint)ADCL;
temp2=(uint)ADCH;
temp2=(temp2<<8)+temp1;
return temp2;
}
void main(void)
{uint i,j;
//uchar a;
DDRA=0x00;
PORTA=0x01; //A口为不带上拉输入
DDRD=0xFF;
PORTD=0xff;
LCD_init();//液晶初始化
ADMUX=(1<<REFS1)|(1<<REFS0);//选择第一通道ADC0,内部REF(2.56V)
ADCSR=0xe7;//8M32分频,125k速率,自由模式;启动AD转换器
delay_nms(100);//延迟100ms等待系统稳定后读取数据
while(1)
{i=ADC_convert();
j=0;
change(i,Data);
LCD_write_string(3,0,"ADC by cac");
LCD_write_string(0,1,Data);
if(i>0x2BC)
{ LCD_write_string(6,1,"Forw");
PORTD|=(1<<PD1);
while(j<=2000)
{
PORTD|=(1<<PD2);
delay_nus(20);
PORTD&=~(1<<PD2);
delay_nus(20);
j++;
}
}
else if(i<0xC8&&i>0xAA)
{LCD_write_string(6,1,"Back");
PORTD&=~(1<<PD1);
while(j<=2000)
{
PORTD|=(1<<PD2);
delay_nus(20);
PORTD&=~(1<<PD2);
delay_nus(20);
j++;
}
}
else
LCD_write_string(6,1,"Stop");
// LCD_write_command(0x01); //清屏
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -