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

📄 led_pwm_lcd1

📁 ATMEGA8-lcdd在flash 存贮中应用-学习AVR的朋友们挺多的
💻
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdio.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#define uchar unsigned char
#define uint unsigned int
#define sbi(x,y) (x|=(1<<y))
#define cbi(x,y)  (x&=~(1<<y))

//#define pgm8(A) ((typeof(A))pgm_read_byte(&(A))) 
//#define pgm16(A) ((typeof(A))pgm_read_word(&(A)))

unsigned char timer=0;
unsigned char count=0; 		//AD转换结果
prog_uchar DispCode[]={0x3f,0x06,0x5b,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7C,0x39,0x5E,0x79,0x71,0x80,0x00}; //数码管译码表

/*--  文字:  一  --*/
/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
static unsigned char yi[] PROGMEM = {
                 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa};

const char FlashString[] PROGMEM = "This is a string held completly in flash memory.";
//LCD_puts(PSTR("Program Memory String"));

void delay(unsigned int v)
          {
           while(v)v--;
           }


/*

void adc_init(void)		//ADC初始化
{
 DDRF=0xf0;
 PORTF=0xf0;
 ADCSRA =0x00; 		
 ADMUX|=(1<<REFS0); 
 ACSR=(1<<ACD);    
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);	
}

*/


void adc_init(void)		//ADC初始化
{
 DDRF=0x00;
 PORTF=0x00;
 ADCSRA =0x00; 		//设置前,先关闭ADC
 ADMUX=0;
 ADMUX|=(1<<REFS0); 
 ACSR=(1<<ACD);     //关闭模拟比较器
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);	//64分频
}



void uart0_init(void)
      {
	  UCSR0B=0X00;
	  UBRR0L=0X33;
	  UCSR0B=0X98;
	  }

void sendchar(unsigned char c)
      {
	  UDR0=c;
	  while(!(UCSR0A&0X40));
	  UCSR0A|=0X40;  
	  }


void  send(unsigned char const *str)
{ 
   while(1)
   {  if( *str == '\0' ) break;
      sendchar(*str++);	    // 发送数据
   }
}


SIGNAL(SIG_OVERFLOW1)
      {
	  TCNT1=64900;
       
	timer++;
	if(timer>=100)   //〈256  //改变时间
	   {
	   PORTD=0xff^PORTD;   //改变引脚
	   timer=0;
	   }


	  }

void
debug_P(const char *addr)
{
char c;
while ((c = pgm_read_byte(addr++)))
sendchar(c);
}


int main (void)
{
const unsigned char  SEND_STRING[] = "welcome to avr\n";
unsigned int adc_rel=0;

 	DDRD=0xff;
	PORTD=0xff;   

 sei();
	 TCCR1A=0X00;
	 TCCR1B=(1<<CS10);
	 TIMSK|=(1<<TOIE1);
     TCNT1=61712;
 uart0_init(); 
send(SEND_STRING);
while(1)
    { 
	  delay(50000); 
	  delay(50000);
    delay(50000);
   ADCSRA|=(1<<ADSC);                                  //启动ADC转换
   while(ADCSRA& (1<<ADSC));                           //判断ADC转换是否结束
//   while(ADCSRA& (1<<ADIF));  
  ADCSRA|=(1<<ADSC);
   adc_rel=ADC; 
   count=adc_rel*10/102;
    sendchar(0XAA);
    sendchar(count);
  /*
  //  sendchar(adc_rel%256);
 //  sendchar(adc_rel/256);

//sendchar(ADCL );
 //sendchar(ADCH);
  for(count=0;count<32;count++ )
     {
     sendchar((pgm_read_byte(&yi[count])));
     delay(50000);	
     } */
	 }
	
	return (0); 
}



⌨️ 快捷键说明

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