历史上的今天
今天是:2025年06月21日(星期六)
2021年06月21日 | AVR之简单的ADC程序
2021-06-21 来源:eefocus
最近看了ATmega16的ADC,写下这个简单的程序,了解下ADC的简单控制。
程序用Proteus仿真的,用的是ICCAVR7 的编译器(头文件有所不同,自己掂量)
程序的内容是:通过PA1外部电压的读入并动态的显示在3位数码管上
#include #include unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管0~9 void display(unsigned char smg); unsigned char temp; void delay_1ms(unsigned int z) { unsigned int i,j; for(i=0;i } void main() { DDRC=0xff; PORTC=0;//PC输出数码管段选 DDRD=0xff; PORTD=0;//PD5~PD7为数码管位选 ADCSRA=0;//关闭ADC ADMUX=(1< SEI(); while(1) { display(temp);//动态显示数码管 } } #pragma interrupt_handler adc:iv_ADC void adc() { temp=ADCH;//读取转换的数据 ADCSRA|=0X40;//重新启动ADC,设置ADCSRA的ADATE和连续转换模式时不用 } void display(unsigned char smg)//3位数码管动态显示 { unsigned char bai,shi,ge; bai=smg/100;//百位 shi=smg%100/10;//十位 ge=smg%10;//个位 PORTC=tab[bai]; PORTD=0x80; PORTD=0; delay_1ms(2); PORTC=tab[shi]; PORTD=0x40; PORTD=0; delay_1ms(2); PORTC=tab[ge]; PORTD=0x20; PORTD=0; delay_1ms(1); }
上一篇:AVR系列之蜂鸣器的驱动
史海拾趣
|
我要在vxworks平台下写一个usb设备的驱动,系统通过枚举识别出usb设备,但系统如何选择驱动程序呢?是根据(bDeviceClass,bDeviceSubClass,bDeviceProtocl)信息,还是根据(idVendor,idProduct),或则其他?怎样把这些信息加入到系统中,当设备attach时,系统 ...… 查看全部问答> |
|
$IF (EXTERNAL_MODE) CODE_BASE EQU 0x80000000 $ELSE CODE_BASE EQU 0x00000000 ...… 查看全部问答> |
|
小弟正在做一个基于WCE上的时钟系统,以下是2段关于NTP时刻同步的部分代码: // Set key \"refresh\" DWORD refresh = SNTP_REFRESH_MS; lRes = RegSetValueEx (hKey, TEXT(\"refresh\"), 0, REG_DWORD, (const unsig ...… 查看全部问答> |
|
请版主帮忙解答DMA同时更新TIM1_CCR1和TIM1_CCR2寄存器的问题 我想用TIM1的Update DMA同时更新TIM1_CCR1和TIM1_CCR2寄存器,但只有TIM1_CCR1被更新,而TIM1_CCR2的值不变,请版主帮忙说明如何才能实现同时更新 CCR1和CCR2,谢谢! 设置如下: #define TIM1_CCR1_Address 0x40012C34 #def ...… 查看全部问答> |
|
复位用的是100K,0.01uF的RC复位。现在出现的情况是上电后单片机死机。如果现在重新上电,可以解决问题。或者将RESET端拉低也能解决问题。这个是不是上电复位时间不够。如果将0.01uf改为0.1uf不知道行不行。由于空间限制,没地方加复位芯片了。 看 ...… 查看全部问答> |
|
(1)安装Windows Mobile 5.0系统及Platform Builder for Windows Mobile 5.0 WM50_OAK_RTM \\Microsoft Platform Builder for Windows Mobile 5.0.msi (with it can download & debug binary) (2)安装升级包,升级到WM 6.0 AKU604.msi(Wind ...… 查看全部问答> |




