欢迎来到天天文库
浏览记录
ID:15946493
大小:45.50 KB
页数:6页
时间:2018-08-06
《atmega16_adc转换_模数转换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2012.8.9/***************************************************2012.6.7功能:ATMEGA16内部集成模数转换的实现说明:光照采集程序,基于光敏电阻开发环境:iccavr控制芯片:ATMEGA16***************************************************/#include#include"LCD_12864_chuankou.c"#defineuintunsignedint#defineucharunsignedcharuintADData;voidport_in
2、it_G(){//PORTA=0X00;//ADC转化端口就是A口的第二功能//DDRA=0x00;//ADC通道设置为输入口,高阻态PORTA=~(1<3、=(1<4、(1<5、=(1<6、(1<7、=(1<8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
3、=(1<4、(1<5、=(1<6、(1<7、=(1<8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
4、(1<5、=(1<6、(1<7、=(1<8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
5、=(1<6、(1<7、=(1<8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
6、(1<7、=(1<8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
7、=(1<8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
8、(1<9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
9、(1<10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
10、S1);//使能AD转换,64分频}/**********************************************AD转换函数*********************************************/uintAD_GetData(){ADCSRA
11、=(1<12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
12、=(1<13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(214、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
13、**********************************数值显示函数,即是结果显示函数************************************/voidshow_NUM(){ADData=(int)((long)ADC*5000/1024);////获得的AD值转换为电压值,5000mv所测的最高电压值//ADC是数据寄存器的二进制值,1024这里可以容纳的最大二进制值,//形成一个比值,从而转换为电压值//write_data(ADData/1000+0x30);//电压值的千位并发送delay(2);write_data(0x2e);//小数点delay(2
14、);write_data(ADData%1000/100+0x30);//电压值的百位并发送delay(2);write_data(ADData%100/10+0x30);//电压值的十位并发送delay(2);write_data(ADData%10+0x30);//电压值的个位并发送delay(2);write_data(0x56);//电压单位delay(2);//Usart_PutChar(0x0d);//Usart_PutChar(0x0a);//显示空格和换行delay(30);//延时////returnADData;}//voidshow_guangzhao(){//por
15、t_init_G();write_string(0,2,"光照:");AD1_Init();//ADC0端口初始化AD_GetData();//ADC转换函数得到ADC值即模数转换过程函数LocateXY(3,2);show_NUM(ADC);//在串口中显示电压值delay(2000);//延时//}voidmain(){port_init_LCD();LCD_init();port_init_G();while(1){show_guangzhao();}}调用头文件:LCD_12864_chuankou.c/**************************************功
16、能:驱动lcd12864,串行通信模式开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输*****************************************/#include#include#defineucharunsignedchar#defineuintunsignedint#defineCS_0PORTC&=~(1<
此文档下载收益归作者所有