单片机学习小组
直播中

杨平

8年用户 1753经验值
私信 关注

atmega128 AD转换程序

  • /*********************************包含头文件********************************/
  • #include
  • #include
  • /********************************数码管段码表*******************************/
  • extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  •                                   0x7F,0x6F};
  • /*********************************端口定义**********************************/
  • #define  sclon   PORTG |=BIT(0);     //时钟高
  • #define  scloff   PORTG &=~BIT(0);
  • #define  dion   PORTG |=BIT(1);      //数据高
  • #define  dioff   PORTG &=~BIT(1);
  • /*********************************全局变量**********************************/
  • unsigned int adc_rel;
  • int dat;
  • /****************************************************************************
  • 函数功能:ADC初始化函数
  • 入口参数:
  • 出口参数:
  • ****************************************************************************/
  • void adc_init(void)
  • {
  • ADCSRA=0x00;  //关ADC
  • ADMUX = (1<ADCSRA = (1<}
  • /****************************************************************************
  • 函数功能:ADC中断函数
  • 入口参数:
  • 出口参数:
  • ****************************************************************************/
  • #pragma interrupt_handler adc_isr:iv_ADC
  • void adc_isr(void)
  • {
  •    int data_H,data_L;
  •   ADCSRA = 0x00;
  •   adc_rel=ADC;
  •   ADCSRA = (1<}
  • /****************************************************************************
  • 函数功能:数据输出程序
  • 入口参数:temp
  • 出口参数:
  • ****************************************************************************/
  • void dataOUT(unsigned char temp)
  • {
  •     unsigned char i,temp1;
  •     temp1 = tab[temp];
  •     for(i = 0;i < 8;i++ )
  •     {
  •         scloff;
  •   if((temp1&0x80)!= 0x80)
  •          {  dioff;}
  •         else
  •          { dion;}
  •   sclon;
  •         temp1 <<=1;
  •   scloff;
  •     }
  • }
  • /****************************************************************************
  • 函数功能:延时子程序
  • 入口参数:
  • 出口参数:
  • ****************************************************************************/
  • void delay(void)
  • {
  •    int i;
  •     for(i=0;i<200;i++);
  • }
  • /****************************************************************************
  • 函数功能:显示子程序
  • 入口参数:k
  • 出口参数:
  • ****************************************************************************/
  • void display(unsigned int k)
  • {
  •    dataOUT(k/1000);
  •   PORTG &=0x03;
  •   delay();
  •   dataOUT(k/100%10);
  •   PORTG |=0x04;
  •   delay();
  •   dataOUT(k/10%10);
  •   PORTG &=0x0B;
  •   PORTG |=0x08;
  •   delay();
  •   dataOUT(k%10);
  •   PORTG |=0x0C;
  •   delay();
  • }
  • /****************************************************************************
  • 函数功能:主程序
  • 入口参数:
  • 出口参数:
  • ****************************************************************************/
  • void main(void)
  • {
  •    DDRE=0x00;
  •   DDRG=0xff;
  •   adc_init();
  •   SEI();
  •   display(0);
  •   while(1)
  •   {
  •     delay();
  •    display(adc_rel);
  •   }
  • }



更多回帖

发帖
×
20
完善资料,
赚取积分