|
A/D LTC1864 16位轉(zhuǎn)換資料網(wǎng)上百度庫有。
單片機(jī)源程序如下:
- #include<reg52.h> //LTC1864是一個16位精度模數(shù)轉(zhuǎn)換
- #include<intrins.h>
- #include<1602.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code num[]={"0123456789*#"}; //
- sbit SDO=P3^0; //數(shù)據(jù)輸出端
- sbit SCK=P3^2; //時鐘輸入
- sbit CONV=P3^4; //轉(zhuǎn)換輸入
- uint read_adc() //定義一個16位變量
- {
- uchar i; //定義需要移位數(shù)量
- uint dat=0x0000; //定義一個16位變量
- SCK=1; //先時鐘端高電平
- CONV=0;CONV=1; //轉(zhuǎn)換端進(jìn)行一個上升沿(一個低電平轉(zhuǎn)到高電平)模數(shù)轉(zhuǎn)換
- _nop_(); _nop_(); _nop_(); _nop_();//等待一下結(jié)束轉(zhuǎn)換
- CONV=0; //結(jié)束轉(zhuǎn)換轉(zhuǎn)換端置低電平,進(jìn)入采樣模式,如果轉(zhuǎn)換端為高電平進(jìn)入睡眠模式
- for(i=0;i<16;i++) //移動16位
- {
- SCK=1; //時鐘置為高電平
- _nop_();
- SCK=0; //時鐘置為低電平
- _nop_();
- dat=(dat<<1)|SDO; //下降沿后輸出同位數(shù),由高電位轉(zhuǎn)向低電位,完成一個16位數(shù)值
- _nop_();
- }
- SCK=0; //如果CONV為低電平,SCK時鐘信號置低電平,SDO端為零
- return dat; //輸出一個1轉(zhuǎn)換完16位數(shù)值dat
- }
- void main()
- {
- uint temp; //定義一個16位變量
- lcd_init(); //1602初始化
- display_list(0,0,"LTC1864 A/D Test"); //1602第一行輸出字符
- while(1)
- {
- temp=read_adc(); //定義temp=轉(zhuǎn)換后數(shù)據(jù)
- temp=(temp*50.0/65534.0)*1000; //轉(zhuǎn)換成電壓數(shù)據(jù)
- display_list(1,0,"CurrVolt:"); //1602第二行輸出字符
- wirte_lcd_cmd(0xc0+9); //1602第二行第9位開始輸出下面字符
- wirte_lcd_date(num[temp/10000]); //輸出壓數(shù)值第一位
- wirte_lcd_date(num[temp%10000/1000]); //輸出壓數(shù)值第二位
- wirte_lcd_date('.'); //輸出字符,
- wirte_lcd_date(num[temp%10000%1000/100]); //輸出壓數(shù)值第三位
- wirte_lcd_date(num[temp%10000%1000%100/10]); //輸出壓數(shù)值第四位
- wirte_lcd_date(num[temp%10]); //輸出壓數(shù)值第五位
- wirte_lcd_date('V'); //輸出壓符號
- }
- }
復(fù)制代碼
0.png (8.02 KB, 下載次數(shù): 43)
下載附件
2019-9-30 16:06 上傳
所有資料51hei提供下載:
ADC_LTC1864.rar
(64.36 KB, 下載次數(shù): 57)
2019-9-29 18:11 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|