首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > Mage16的10位ADC(带字符液晶显示)

Mage16的10位ADC(带字符液晶显示)

资料介绍
在附件中有仿真以及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: 52uS

void 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); //循环等待转换开始
}

标签:嵌入式单片机MCU
Mage16的10位ADC(带字符液晶显示)
本地下载

评论