资料
  • 资料
  • 专题
Mage16的10位ADC(带字符液晶显示)
推荐星级:
时间:2019-12-23
大小:68.81KB
阅读数:128
上传用户:rdg1993
查看他发布的资源
下载次数
0
所需E币
4
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
在附件中有仿真以及LCD显示的源文件//Project :ADC(10 bit) and LCD Display//ICC-AVR application builder : 2007-5-10 21:20:44// Target : M16// Crystal : 8.0000Mhz// Writer : you hu#include iom16v.h>#include macros.h>#include "display.h"#include "lcd.h"unsigned int value; //全局变量,存储10位的AD转换数据//ADC initialize// Conversion time: 52uSvoid adc_init(void){ADCSR = 0x00; //禁止AD启动ADMUX = 0xC0; //选择通道0,默认的右对齐方式ACSR = 0x80;ADCSR = 0xED; //启动AD转换}#pragma interrupt_handler adc_isr:15 //中断方式读取AD转换值void adc_isr(void){value=ADCL; //读取低8位转换值value|=(int)ADCH 8; //读取高2位转换值}void display(unsigned char X,unsigned char Y) //位显示函数,将对转换结果的数字量进行“0”或“1”的显示{if(Y) LCD_write_char(X,0,'1'); //如果转换结果变量的某一位为“1”,则显示,否则显示“0”else LCD_write_char(X,0,'0');}void transfor() //对12位数字量的量化和显示函数 { unsigned int datas; unsigned int bits=0x0001; //位屏蔽变量,通过移位处理,将得出数字量的每一位值(0或1) unsigned char i,pos=10; //显示位置变量,通过循环处理将依次将数字量的每一位显示在LCD上 init_lcd(); datas =(valuebits); //最低位独立处理 display(11,datas); bits = bits1; for(i=0;i=10;i++) //高11位在循环中处理 { datas =(valuebits); //位屏蔽操作 datas = datas>>(i+1); display(pos,datas); //位显示操作 bits = bits1; pos--; }} void init_devices(void){CLI(); //禁止所有中断adc_init();transfor();MCUCR = 0x00;SREG = 0X80; //允许中断发生GICR = 0x00;TIMSK = 0x00; SEI(); //重新开启所有中断}void main(void){ init_devices();while(1); //循环等待转换开始}……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
PARTNER CONTENT
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书