|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2013-2-4 18:03:28
|
显示全部楼层
我把主程序贴出来:
#include <iom16v.h> //包含型号头文件
#include <macros.h> //包含"位"操作头文件
#include <my_M8.h> //自定义常量头文件
#include "1602_4.c" //1602显示子程序
#define uchar unsigned char
#define uint unsigned int
/*******************************************
函数名称: Mega16_ad
功 能: 对指定的通道进行模数转换
参 数: chl--指定的通道(本开发板只用了通道0)
返回值 : addata--10位数据输出
/********************************************/
uint Mega16_ad(uchar chl)
{
uint addata;
DDRC&=~(BIT(PC0)|BIT(PC1)); //转换口设置为输入、无上拉
PORTC&=~(BIT(PC0)|BIT(PC1));
ADMUX=0x40; //采用AVCC参考电压,输出数据右对齐
ADMUX|=chl; //设置指定的通道
ADCSR=0x80; //采用单次转换,查询模式,2分频
ADCSR|=BIT(ADSC); //启动转换
while(!(ADCSR&(BIT(ADIF)))); //等待转换结束
addata=ADCL; //读取低8位数据
addata+=ADCH*256; //读取高2位数据
return addata; //返回10位数据
}
/********************************************/
void main(void)
{
uint v;
my_M8_init(); //初始化
delay(10);
L1602_init();
while(1)
{
v=Mega16_ad(0);
L1602_char(1,3,v/1000%10+48);
L1602_char(1,4,v/100%10+48);
L1602_char(1,5,v/10%10+48);
L1602_char(1,6,v%10+48);
delay(200);
}
} |
|