資源簡(jiǎn)介
吐血大放送,另一個(gè)AD芯片TLC1543,軟硬件,仿真均通過,正好也有TLC1543,拿過來玩了一下,大家那個(gè)驅(qū)動(dòng)程序仔細(xì)研究一下,和其他的AD時(shí)序不一樣,我也是參考別人的。申明:我的所有資源不都是原創(chuàng),但是絕對(duì)是經(jīng)過實(shí)際驗(yàn)證的,大家放心下載,

代碼片段和文件信息
#include?“adc0832.h“
#include?“l(fā)cd1602.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;?//初始化轉(zhuǎn)換結(jié)果
?delay?=?0;
?if?(EOC) ????//?轉(zhuǎn)換結(jié)束信號(hào)?
?{
??Clock?=?0;
??ChipSelect?=?1;
??Wait2us;
??ChipSelect?=?0;
??Wait2us;
??Channel?=?Channel?<4;
??for?(i?=?0;?i?4;?i?++)???????????//輸入需要轉(zhuǎn)換的通道的編碼
??{
???Chan?=?Channel;
???Chan?=?Chan?>>?7;
???DataIn?=?(bit)Chan;
???Wait2us;
???Clock?=?1;
???Clock?=?0;
???Channel?=?Channel?<1;
??}
??for?(i?=?0;?i?6;i?++)????????????//輸入轉(zhuǎn)換時(shí)鐘
??{
???Clock?=?1;
???Clock?=?0;
??}
??ChipSelect?=?1;
??//開始檢測(cè)轉(zhuǎn)換結(jié)束標(biāo)志,或者轉(zhuǎn)換超時(shí)出錯(cuò)
??while?((!EOC)?&&?(delay?10))
??{
???Wait10us;
???delay?++;
??}
??if?(delay?==?10)
??{
???return?(0xFFFF);?//轉(zhuǎn)換超時(shí),返回錯(cuò)誤代碼
??}
??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; ??//?三態(tài)輸出口??
????ConvertValueL?<<=?1;
????if?(DataOut)
??????ConvertValueL?|=?0x01;
????Clock?=?0;
????Wait1us;
???}?
???ChipSelect=1;
???ConvertValue?=?ConvertValueH;
???ConvertValue?<<=?8;
???ConvertValue?|=?ConvertValueL;
???return?(ConvertValue);?//返回轉(zhuǎn)換結(jié)果
??}
?}
}
unsigned?int?filter(unsigned?int?ddata[]) ????//?濾波子程序?中位值平均濾波法
{
??unsigned?long?int?al?=?0;
??unsigned?int?itemp;
??unsigned?char?xy;
???for(y=0;y<8;y++) ?//?將得到的數(shù)據(jù)從大到小排序
????{
?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位數(shù)據(jù)
???{
??? ?al+=ddata[i];
???}
???al/=5;al=(unsigned?int)al;
???return?(al);
}
float?Data_Process(unsigned?char?channel) ?//?數(shù)據(jù)處理
{
??unsigned?char?i;
??unsigned?int?get; ?//?get必須為int型,否則出錯(cuò)?
??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) ???//?刷新相應(yīng)通道號(hào)顯示數(shù)據(jù)
{
?float?ab;
?unsigned?int?Vc;
?a?=?Data_Process(channel);
?/*if(a>=2.5) //?當(dāng)輸出為+-10V時(shí),可用此語句,實(shí)際測(cè)量值Uo和輸入信號(hào)Ui關(guān)系為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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個(gè)文件信息
- 上一篇:二進(jìn)制方式打包和解包文件
- 下一篇:LCD1602顯示程序
評(píng)論
共有 條評(píng)論