哪位大神有TLC3548的程序,基于430或者51单片机的,分数全给

哪位大神有TLC3548的程序,基于430或者51单片机的,分数全给,第1张

#include<reg52.h>

#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.0

CLK0 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8058184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存