#include"absacc.h"
#include "LCD1602.h"
#include<intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define SUM 50
uchar t1[]="1602 START NOW!"
uchar t2[]="voltage . V"
unsigned long int tmp//数据类型要注意
sbit CLOCK=P1^7/*2543时钟*/
sbit D_IN= P1^6/*2543输入*/
sbit D_OUT= P1^5/*2543输出*/
sbit _CS= P1^4/*2543片选*/
/**************************************
名称:delay
功能:延时模块
输入参数:n要延时的周期数
输出参数:无
*************************************/
void delay(uchar n)
{
uchar i
for(i=0i<ni++)
{
_nop_()
}
}
/**************************************
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
*************************************/
uint read2543(uchar port)
{
uint ad=0,i
CLOCK=0
_CS=0
port<<=4
for(i=0i<12i++)
{
if(D_OUT)
{
ad|=0x01
}
D_IN=(bit)(port&0x80)
CLOCK=1
delay(3)
CLOCK=0
delay(3)
port<<=1
ad<<=1
}
_CS=1
ad>>=1
return(ad)
}
void main()
{
unsigned long int tmp1
int i
i=SUM
init00()
LCD_1602_str(0,t1,0,t2) //显示初始化
while(1)
{
tmp1+= read2543(0x01) //进行AD转换
i-- //取20次AD转换的结果,求平均值
if(i==0)
{
tmp1=tmp1/SUM
tmp=tmp1*50000/4096
tmp1=0
i=SUM
}
LCD_1602_num(20,0,8,tmp/10000 )
LCD_1602_num(20,0,9,tmp/1000%10)
LCD_1602_num(20,0,11,tmp/100%10)
LCD_1602_num(20,0,12,tmp/10%10)
}
}
DAT0 BIT P1.0CLK0 BIT P1.1
CS BIT P1.2
----------------------------------------------------------------------------
TLC549_ADC: 串行显示处理程序,结果存在A中
CLR A
CLR CLK0
CLR CS
MOV R6,#8
ADLOOP:
SETB CLK0
NOP
NOP
MOV C,DAT0
RLC A
CLR CLK0
NOP
DJNZ R6,ADLOOP
SETB CS
SETB CLK0
RET
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)