⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max191_mcu.c

📁 maxim的AD191的AD采样控制程序
💻 C
字号:
#include<reg51.h>
#include<absacc.h>
#include <intrins.h> 

#define unchar unsigned char
#define unint unsigned int
#define LCDDATA P0

//MAX191工作在ROM Mode 方式 
//对外中断1采用了查询方式,中断方式还得再试验
//12位AD精度有了,可是速度是一个问题,
//按现在的用法,转换时间为12uS,再算上数据处理时间(包括数据存储、显示等),对模拟信号的采样频率估计最快也就是
//几十KHz(只考虑转换时间和存储在RAM中所需时间)

sbit RS=P1^5;
sbit RW=P2^1;
sbit EN=P1^7;
sbit P3_3=P3^3;

unchar xdata *AD;
unint dataa;

void delay20us(void)
{
	unchar n;
	for(n=0;n<15;n++);
}

void delay15ms(void)
{
	unint n;
	for(n=0;n<4800;n++);
}

void delay100us(void)
{
	unchar n;
	for(n=0;n<100;n++);
}
void delay10ms(void)
{
	unint n;
	for(n=0;n<30000;n++);
	
	
}


void lcd_write_command(unchar c) //向LCD模块的命令寄存器写一个字节c。
{       
	RS=0;
	RW=0;
	EN=0;
	delay20us();
	EN=1;
	delay20us();
	LCDDATA=c;
	delay20us();
	EN=0;
	delay20us();
} 

void lcd_write_data(unchar ddata) //向LCD模块的字符发生器或显存写一个字节data。      
{      
       	RS=1;
	RW=0;  
	EN=0;
	delay20us();
       	EN=1;
       	delay20us();     
       	LCDDATA=ddata;  
       	delay20us();
	EN=0; 	
	delay20us();
	RS=0;
}

void lcd_init()   //初始化LCD模块。
{         
	lcd_write_command(0x30);
        delay100us();
	lcd_write_command(0x0c);
	delay100us();
	lcd_write_command(0x01);
	delay15ms();
	lcd_write_command(0x06);
        delay100us(); 
}   

void main()
{
  unchar a,d_h,d_l;
  lcd_init();//初始化
  AD=0x4000;

 while(1)
 { 
  a=*AD;//WR下跳沿启动
  _nop_();
  
  while(P3_3==1);
  AD=0x4100;
  d_h=*AD;
  AD=0x4000;
  d_l=*AD;
  dataa=d_h*0x0100+d_l;
  
  lcd_write_command(0x90);   //设置光标在第二行第2个字符位置
  delay100us();
  lcd_write_data(0xb5);
  delay100us();
  lcd_write_data(0xe7);
  delay100us();
  lcd_write_data(0xd1);
  delay100us();
  lcd_write_data(0xb9);
  delay100us();
  lcd_write_data(0x3a);
  delay100us();
  lcd_write_data(0x30+dataa/1000);
  delay100us();
  dataa=dataa%1000;
  lcd_write_data(0x30+dataa/100);
  delay100us();
  dataa=dataa%100;
  lcd_write_data(0x30+dataa/10);
  delay100us();
  dataa=dataa%10;
  lcd_write_data(0x30+dataa);
  delay100us();
  lcd_write_data(0x6d);
  delay100us();
  lcd_write_data(0x76);
  delay100us();
  delay10ms();
  AD=0x4000;//对液晶的操作可能会改变p2的值,所以AD的地址需要重新赋值
 }
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -