您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 低成本AVR+LCD示波器
  所属分类: C
  开发工具:
  文件大小: 920kb
  下载次数: 0
  上传时间: 2010-04-03
  提 供 者: gllc*****
 详细说明: /* AVR oscilloscope with 128x64 graphic LCD. Created by Serasidis Vassilis and finished at 03.Aug.2007 Home: http://www.serasidis.gr e-mail: info@serasidis.gr and avrsite@yahoo.gr This code is ditributed under GPL licence. */ #include // include I/O definitions (port names, pin names, etc) #include #include "glcd.c" void USART_Init(unsigned int baudrate); void timePause(unsigned long count); void ADC_init (void); void initTimer (void); /* define CPU frequency in Mhz here if not defined in Makefile */ #ifndef F_CPU #define F_CPU 16000000UL #endif #define msUp 1 #define msDwn 4 #define YposUp 0 #define YposDwn 3 #define freeze 2 #define AC 0 #define DC 1 #define SQUARE 2 #define TRUE 0 #define FALSE 1 unsigned int counter = 0; unsigned int dataCounter = 0; unsigned int timeDiv = 52; unsigned int analogInput = 0; unsigned char trigger = 2; unsigned char cnt = 0; unsigned char empty = 0; unsigned int out = 0; unsigned char findZero = 0; unsigned char pressedButton = 0; unsigned char upLimit = 0; unsigned char dnLimit = 255; unsigned char limitBkup = 0; unsigned char voltageType = AC; unsigned char complete = TRUE; signed char Ypos = 0; signed char Ypos2 = 0; signed char position = 0; int main (void) { DDRC = 0b00000000; PORTC = 0b11111111; DDRA = 0b00000000; unsigned char temp1; unsigned int temp2; unsigned char i; glcdInit(); ADC_init(); createWelcomeScreen(); showTheWave(); timePause(10000000); for(;;) { //--------- if (pressedButton == 0) { if (~PINC & (1<= 52)) { if(timeDiv <= 145) timeDiv = 0; else timeDiv -= 145; pressedButton = 1; } if (~PINC & (1<= -60)) Ypos2--; if (~PINC & (1<0; i--) { ADCSRA |= (1 << ADSC); // Enable ADC loop_until_bit_is_set(ADCSRA, ADIF); // wait until conversion complete. temp1 = ADCL; temp2 = ADCH; timePause(timeDiv); //(7); if (upLimit < temp2) // find the higher voltage level of the input waveform. upLimit = temp2; if (dnLimit > temp2) // find the lower voltage level of the input waveform. dnLimit = temp2; if (temp2 > 0) { temp2 += 5; temp2 /= 5; temp2 += 2; }else temp2 = 2; position = temp2 + Ypos2 +5; if (position <= 63 && position >= 0) // Adjust Up-Down the wave. fillDataLcdBuffer(i,position); else fillDataLcdBuffer(i,0); } if(upLimit != dnLimit) trigger = (((upLimit - dnLimit)/2)+ dnLimit); // find the middle of the wave, to be used it as a trigger. //--------^ createRaster(); createWave(); showTheWave(); dataCounter = 0; do { limitBkup = temp2; ADCSRA |= (1 << ADSC); // Enable ADC loop_until_bit_is_set(ADCSRA, ADIF); temp1 = ADCL; temp2 = ADCH; //timerPause(timeDiv); if(limitBkup == temp2) { dataCounter++; if(dataCounter >= 500) voltageType = DC; else voltageType = AC; } if((voltageType == AC) && ((temp2 == trigger) && (limitBkup < temp2))) complete = TRUE; else if((voltageType == DC) && (limitBkup == temp2) && (upLimit != dnLimit)) { dataCounter = 0; do { ADCSRA |= (1 << ADSC); // Enable ADC loop_until_bit_is_set(ADCSRA, ADIF); temp1 = ADCL; temp2 = ADCH; complete = TRUE; dataCounter++; }while ((temp2 > trigger) && (dataCounter <1000)); dataCounter = 0; do { ADCSRA |= (1 << ADSC); // Enable ADC loop_until_bit_is_set(ADCSRA, ADIF); temp1 = ADCL; temp2 = ADCH; complete = TRUE; dataCounter++; }while ((temp2 < trigger) && (dataCounter <1000)); } else if((voltageType == DC) && (limitBkup == temp2)) complete = TRUE; else complete = FALSE; } while(complete == FALSE); } } //=============================================================================== // //=============================================================================== void ADC_init (void) { ADMUX = 0b01100000; // PA0 -> ADC0, ADLAR=1 (8bit) ADCSRA = 0b11000100; // ADC prescaler at 16 } //=============================================================================== // //=============================================================================== void timePause(unsigned long count) { while(count--); } //=============================================================================== // //=============================================================================== ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: AVR LCD示波器
 输入关键字,在本站1000多万海量源码库中尽情搜索: