资源简介
吐血大放送,另一个AD芯片TLC1543,软硬件,仿真均通过,正好也有TLC1543,拿过来玩了一下,大家那个驱动程序仔细研究一下,和其他的AD时序不一样,我也是参考别人的。申明:我的所有资源不都是原创,但是绝对是经过实际验证的,大家放心下载,
代码片段和文件信息
#include “adc0832.h“
#include “lcd1602.h“
#include “myfun.h“
unsigned char lcd1602_1[8]=“M: . V“;
unsigned char lcd1602_2[16]=“ChanneL 1: V“;
unsigned char code dianya[10]=“0123456789“;
unsigned int idata receive[9];
unsigned int read_1543(unsigned char Channel)
{
unsigned int ConvertValue;
unsigned char i Chan;
unsigned char ConvertValueL ConvertValueH;
unsigned char delay;
ConvertValueL = ConvertValueH = 0; //初始化转换结果
delay = 0;
if (EOC) // 转换结束信号
{
Clock = 0;
ChipSelect = 1;
Wait2us;
ChipSelect = 0;
Wait2us;
Channel = Channel << 4;
for (i = 0; i < 4; i ++) //输入需要转换的通道的编码
{
Chan = Channel;
Chan = Chan >> 7;
DataIn = (bit)Chan;
Wait2us;
Clock = 1;
Clock = 0;
Channel = Channel << 1;
}
for (i = 0; i < 6;i ++) //输入转换时钟
{
Clock = 1;
Clock = 0;
}
ChipSelect = 1;
//开始检测转换结束标志,或者转换超时出错
while ((!EOC) && (delay < 10))
{
Wait10us;
delay ++;
}
if (delay == 10)
{
return (0xFFFF); //转换超时,返回错误代码
}
else
{
Wait10us;
Clock = 0;
ChipSelect = 1;
Wait1us;
ChipSelect = 0;
Wait1us;
for (i = 0; i < 2; i ++) //读取高二位bit值
{
Clock = 1;
DataOut = 1;
ConvertValueH <<= 1;
if (DataOut)
ConvertValueH |= 0x01;
Clock = 0;
Wait1us;
}
for (i = 0; i < 8; i ++) //读取低八位bit值
{
Clock = 1;
DataOut = 1; // 三态输出口??
ConvertValueL <<= 1;
if (DataOut)
ConvertValueL |= 0x01;
Clock = 0;
Wait1us;
}
ChipSelect=1;
ConvertValue = ConvertValueH;
ConvertValue <<= 8;
ConvertValue |= ConvertValueL;
return (ConvertValue); //返回转换结果
}
}
}
unsigned int filter(unsigned int ddata[]) // 滤波子程序 中位值平均滤波法
{
unsigned long int al = 0;
unsigned int itemp;
unsigned char xy;
for(y=0;y<8;y++) // 将得到的数据从大到小排序
{
for(x=1;x<9-y;x++)
{
if((*(ddata+x))>(*(ddata+x-1)))
{
temp=(*(ddata+x-1));
(*(ddata+x-1))=(*(ddata+x));
(*(ddata+x))=temp;
}
}
}
for(i=2;i<7;i++) // 滤除高2位和低2位数据
{
al+=ddata[i];
}
al/=5;al=(unsigned int)al;
return (al);
}
float Data_Process(unsigned char channel) // 数据处理
{
unsigned char i;
unsigned int get; // get必须为int型,否则出错
float voltage;
for(i = 0;i < 9;i++)
{
receive[i] = read_1543(channel);
Delay50us();
}
get = filter(receive);
voltage = ((float)(get)*4.3/1024);
return voltage ;
}
void Refresh_Dis_Buffer( unsigned char channel) // 刷新相应通道号显示数据
{
float ab;
unsigned int Vc;
a = Data_Process(channel);
/*if(a>=2.5) // 当输出为+-10V时,可用此语句,实际测量值Uo和输入信号Ui关系为Uo=0.25*Ui+2.5
{b = 4*a-10;lcd1602_1[2] = ‘ ‘;}
if(a<2.5)
{b = 10-4*a;lcd1602_1[2] = ‘-‘;} ; */
b = 2*a;
V = (unsigned int)(b*100);
lcd1602_1[3]=dianya[V/100];
lcd1602_1[5]=dianya[V/10%10];
lcd1602_1[6]=dianya[V%1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-07-15 16:26 TLC1543文件包\
文件 100628 2011-07-14 12:03 TLC1543文件包\1602_ADC0832.DSN
文件 100393 2011-07-15 11:02 TLC1543文件包\1602_TLC1543.DSN
文件 768 2011-07-15 12:32 TLC1543文件包\1602_TLC1543.PWI
文件 100393 2011-07-15 09:30 TLC1543文件包\Last Loaded 1602_TLC1543.DBK
文件 434544 2009-06-10 11:22 TLC1543文件包\TLC1543.pdf
文件 1601514 2011-07-13 21:50 TLC1543文件包\TLC1543中文资料.PDF
目录 0 2011-07-15 12:31 TLC1543文件包\程序\
目录 0 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\
文件 7348 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\adc0832.lst
文件 10771 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\adc0832.obj
文件 6684 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\lcd1602.lst
文件 8642 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\lcd1602.obj
文件 2602 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\main.lst
文件 4392 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\main.obj
文件 1482 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\myfun.lst
文件 2177 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\myfun.obj
文件 14138 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\STARTUP.lst
文件 815 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\STARTUP.obj
文件 24367 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\TLC1543
文件 6845 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\TLC1543.hex
文件 189 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\TLC1543.lnp
文件 27244 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\TLC1543.m51
文件 202 2011-07-15 12:31 TLC1543文件包\程序\OUTPUT\TLC1543.plg
目录 0 2011-07-14 17:06 TLC1543文件包\程序\SRC\
文件 3443 2011-07-15 09:20 TLC1543文件包\程序\SRC\adc0832.c
文件 569 2011-07-14 16:55 TLC1543文件包\程序\SRC\adc0832.h
文件 3041 2010-11-25 19:39 TLC1543文件包\程序\SRC\lcd1602.c
文件 460 2011-07-10 16:16 TLC1543文件包\程序\SRC\lcd1602.h
文件 727 2011-07-15 12:31 TLC1543文件包\程序\SRC\main.c
文件 362 2011-07-14 16:56 TLC1543文件包\程序\SRC\myfun.c
............此处省略7个文件信息
- 上一篇:二进制方式打包和解包文件
- 下一篇:LCD1602显示程序
相关资源
- Proteus仿真的单片机控制步进电机及液
- 1602液晶显示51串口接受的数据
- MLX90614红外温度传感器程序,并用液晶
- 19264液晶显示屏驱动程序
- 基于mps430f149的12864液晶显示模块编程
- 基于stm32的万年历,有液晶显示、阴阳
- keil 4 stm32 液晶显示正弦波
- 16管脚LCD12864液晶显示汉字详解
- stm32f103c8t6 驱动ili9341 2.8寸TFT LCD液晶显
- STM32 RTC 万年历 3.2寸TFT液晶显示
- STM32CUBEMX配置,dc18b20采集温度,LCD5
- 51单片机音乐播放器的设计,在LCD12
- TI的msp430f5529读取夏普灰尘传感器,并
- STM32串行12864液晶显示
- ht1621液晶显示驱动原理及程序.pdf
- 基于STM32F103(C51)芯片的液晶显示屏
- STM32,ADS1110电压采集,LCD5110液晶显示
- 用128*64液晶显示的数字电压表VHDL程序
- STM32 STM32F103C8T6 三星S6D05A1_TFTLCD_32048
- 基于FPGA的OLED液晶显示
- 基于51单片机的12864液晶显示的“204
- 温度检测控制报警程序
- STM32f103 ADC采集电压数据 显示在LCD液晶
- stc单片机AD 8位和10位数值通过1602液晶
- 51单片机驱动160160液晶显示程序
- 12864LCD液晶显示屏中文资料
- 数控液晶显示可调稳压电源
- HB12864液晶显示c程序
- lcd液晶显示简易电子钟课程设计
- MSP430单片机AD转换电压值带字库12864液
评论
共有 条评论