⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 adc检测串口反馈到PC上,数据不断发送
💻 C
字号:
#include<iom16v.h>
#include<macros.h>
#include "abs.h" 

          /*   七段译码字形表     */        
/*const unsigned char tabel[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e};*/
//放一个串口通讯时自己能看懂的数据简单处理
const unsigned char tabel[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15};
          /*     显示缓冲区       */
unsigned int d[]={0,0,0,0,0,0,0,0,0,0,0};
void port_init(void)//端口初始化
 {
    PORTA = 0x00;DDRA  = 0xff;  PORTB = 0x00;DDRB  = 0x00;
    PORTC = 0x00;DDRC  = 0x00;  PORTD = 0xff;DDRD  = 0x00;
	DDRA  =0xff&((~(1<<PA3))|(~(1<<PA6)) );
 }
void display()
{
  USART_Transmit8(tabel[d[3]]);      //送数据
  delay_nms(10);
  USART_Transmit8(tabel[d[2]]);
  delay_nms(10);
  USART_Transmit8(tabel[d[1]]);
  delay_nms(10);
  USART_Transmit8(tabel[d[0]]); 
  delay_nms(10);
}

unsigned int ad_con;//存放PA0的AD转换结果
/*      将AD结果转换成电压     */
#define vref   502
void adctovol(unsigned int adc)
    {
	 unsigned int temp;
	 unsigned char i;
	 unsigned char *char_p;
     temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
     for(i=0;i<3;i++)
	 {
        d[i]=temp%10;
		temp=temp/10;
	}
  	}
	
/*      AD转换程序     */
#pragma interrupt_handler adc_isr:15
void adc_isr(void)
   {
    unsigned int temp=0;
	while(temp<6)
	    temp++;
	ad_con=ADC;    
   	ADCSR|=(1<<ADSC);//启动转换
	} 
//将AD转换结果转换成电压数值
void main(void)
{
unsigned char i;
 port_init();
 WDT_ON();
 USART_InitM1681(9600);
 Red_LedON;Green_LedON;
	delay_nms(500);        //延时1秒
	Red_LedOFF; Green_LedOFF;
    USART_Transmit8(2);
    USART_Transmit8(0x0d); //发送一个回车
    USART_Transmit8(0x0a); //发送一个换行

 MCUCSR=0;
 //ADMUX=0x00;//0通道
 ADMUX=0x03;//3
 // ADMUX=0x06;//6
 ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0x06;
 SEI();

 i=0;
 USART_Transmit_2();//发个Hello
 while(1)
    {
     if((i==127)|(i==0))
	     adctovol(ad_con);//降低AD结果刷新速率
	display();			  //使末位闪烁不太明显
	Red_D1glint;delay_nms(500);//红绿灯交替亮灭
	Green_D1glint;delay_nms(500);
	i++; 
    }
 }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -