17-ADCO电压采集-PA0.rar

  • wlf_0606
    了解作者
  • C/C++
    开发工具
  • 29KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2018-04-07 16:23
    上传日期
在8M晶振下,实现ADC0电压采集,简单易用,逻辑清楚。
17-ADCO电压采集-PA0.rar
  • 17-ADCO电压采集-PA0
  • BACKUP
  • main.c.130413160048
    6.3KB
  • main._c
    6.4KB
  • main.c.120426155352
    5.5KB
  • main.c.120426150200
    5.7KB
  • main.c.130413160102
    6.3KB
  • main.c.121211153016
    6.3KB
  • main.o
    7.5KB
  • ADC0.prj
    1.2KB
  • ADC0.hex
    3.2KB
  • ADC0.SRC
    41B
  • ADC0.mak
    504B
  • ADC0.lst
    18.2KB
  • main.lis
    33KB
  • ADC0.dbg
    2.7KB
  • ADC0.mp
    2.6KB
  • ADC0.lk
    9B
  • main.c
    6.3KB
  • ADC0.cof
    4.6KB
内容介绍
/******************************************************************************* * 版权: 木仔工作室 * * 单片机: ATMAGE16 * 晶振: 外部8MHz * 编译器: ICC 7.22 * * 文件名: main.c * 作者: 木仔工作室 * 版本: 1.0 * 完成日期: * 功能描述: 在8M晶振下,实现ADC0电压采集,运行系统时,拔掉P2跳线帽,用杜邦线连接PA0到P7任意排针 *******************************************************************************/ #include<iom16v.h> #include<macros.h> #define S_1 PORTD&=~BIT(7);PORTD|=BIT(6);PORTD|=BIT(5);PORTD|=BIT(4); #define S_2 PORTD|=BIT(7);PORTD&=~BIT(6);PORTD|=BIT(5);PORTD|=BIT(4); #define S_3 PORTD|=BIT(7);PORTD|=BIT(6);PORTD&=~BIT(5);PORTD|=BIT(4); #define S_4 PORTD|=BIT(7);PORTD|=BIT(6);PORTD|=BIT(5);PORTD&=~BIT(4); #define S_OFF PORTD|=BIT(7);PORTD|=BIT(6);PORTD|=BIT(5);PORTD|=BIT(4); #define S_ON PORTD&=~BIT(7);PORTD&=~BIT(6);PORTD&=~BIT(5);PORTD&=~BIT(4); unsigned char tab[16] = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; //初始化 变量 声明////////////////////////////////////////////////////////////// unsigned char cnn=0;//定时器变量 unsigned char i=0;//数码管位选用 unsigned char ad=0;//AD采集间隔 unsigned int ad_data1=0,ad_data2=0; /******************************************************************************* * 函数名称: delay_us() * 入口参数: microsecond : 输入延时微秒的时间 * 出口参数: * 功能描述: 微秒的延时 *******************************************************************************/ void delay_us(unsigned int microsecond) { do { microsecond--; } while (microsecond>1); } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ void delay_ms(unsigned int millisecond) { while (millisecond--) { delay_us(999); } } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ //I、O口初始化 void por_init(void) { PORTD = 0XFF; DDRD = 0XFF; PORTC = 0XFF; DDRC = 0XFF; PORTA = 0XFF;//AD采集口 ADC 设置为输入 DDRA = 0X00; } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ void display(unsigned char n) { PORTC = tab[n]; } /**************************************************************************** 函数功能: 入口参数: 出口参数: ****************************************************************************/ void display1(unsigned char n) { PORTC = tab[n]|0X80; } /////////////////////////////////////////// /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ //定时器0初始化 void timer0_int(void) { TCCR0 =(1<<CS01) | (1<<CS00); TCNT0 = 0X05; TIMSK = 0x01; //T0/C0溢出中断使能 } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ //CPU总体初始化 void init_devices(void) { por_init(); timer0_int(); SEI(); } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ unsigned int ad_cat(void)//电压采集函数 { unsigned int t1,t2; ADMUX=0x00; ACSR = 0x80; ADCSRA|=BIT(ADEN); ADCSRA|=BIT(ADSC); while(!(ADCSRA&(BIT(ADIF)))); ADCSRA&=~BIT(ADIF); t1 = (unsigned int)ADCL; t2 = (unsigned int)ADCH; t2 = (t2<<8)+t1; return t2; } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ unsigned int ad_chane(unsigned int i)//电压转换函数 { long x; unsigned int y; x = (2500*(long)i)/1024; y = (unsigned int)x; return y; } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ //定时器0/////////////////////////////////////////////////////////////////////// #pragma interrupt_handler timer0_ovf_isr:17 void timer0_ovf_isr(void) { TCNT0 = 0X65;//内部晶振,几分频算出时间初值 cnn++; if(4==cnn) { cnn=0; ad++; if(25==ad)//AD采集 { ad=0; ad_data1=ad_cat(); ad_data2=ad_chane(ad_data1); } switch(i++) { case 0:S_OFF;display1(ad_data2/1000);S_1;break; case 1:S_OFF;display((ad_data2%1000)/100);S_2;break; case 2:S_OFF;display((ad_data2%100)/10);S_3;break; case 3:S_OFF;display(ad_data2%10);S_4;i=0;break; default:i=0;break; }//end of switch(i++) }//end of if(10==++cnn) }//end of void timer0_ovf_isr(void) //////////////////////////////////////////////////////////////////////////////// /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ void main(void) { init_devices(); while(1) { } }
评论
    相关推荐
    • ATmega16A-352pages.rar
      本文件是ATMEGA16A的使用说明,内附该单片机内部各个资源的C代码和汇编代码
    • 12864ADC.rar
      12864电压表(ADC例程)+软件滤波
    • CT107D_SCH.rar
      蓝桥杯的开发原理图,内容详细准确,适合初学者学习
    • ATmega16A.rar
      High-performance, Low-power Atmel AVR 8-bit Microcontroller 􀁺 Advanced RISC Architecture ̶ 131 Powerful Instructions – Most Single-clock Cycle Execution ̶ 32 x 8 General Purpose ...
    • 26.ADC-.zip
      AVR单片机atmega16,控制ADC源程序,c语言编写。
    • Atmega16单片机开发程序
      Atmega16开发板单片机C语言开发程序,包括流水灯、蜂鸣器、数码显示、ADC、定时器等
    • Atmega16A程序模板
      适合单片机初学者,非阻塞
    • AVR的TCPIP开发
      AVR 的TCP/IP开发:使用ATmega128,硬件为Ethernut的1.3g方案,软件为Nut/OS实时操作系统和Nut/Net嵌入式TCP /IP协议栈。满足嵌入式领域不需要大量数据处理的TCP/IP应用开发。如网络报警、远程控制等。
    • 参赛-基于Android客户端控制的便携式侦察小车制作(原理图、上位机、下位机源码等)-电路方案
      MCU型号:ATMEGA16A 电机驱动:L298N 温湿度传感器:DHT11 电源:18650 摄像头型号:百脑通相影HD720P 视频小车WIFI模块: 舵机型号: 超声波避障模块: 系统成本预算: MCU 3元 电机驱动 20元 电容电阻 2元 7805*2 4元 ...
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路