|
37e07f17c70701f17bffd7c9a9baf318.png (62.93 KB, 下載次數(shù): 52)
下載附件
2021-6-15 13:39 上傳
51hei.png (27.04 KB, 下載次數(shù): 47)
下載附件
2021-6-16 02:39 上傳
51hei.png (30.83 KB, 下載次數(shù): 46)
下載附件
2021-6-16 02:39 上傳
單片機(jī)源程序如下:
- #define TLC2543_GLOBAL
- #include "TLC2543.h"
- uint read_TLC2543(uchar channel)
- {
- register uchar i;
- uint tempAD = 0;
- while(!TLC2543GetEoc()); //等待 TLC2543 空閑
- _delay_us(3);
- channel <<= 4;
- TLC2543Clk(TLC2543_CLR);
- TLC2543_Cs(TLC2543_SET);
- TLC2543_Cs(TLC2543_CLR); //_CS TLC2543 選取
- _delay_us(3);
- for( i = 0; i < 12; i ++ )
- {
- tempAD <<= 1;
- if( TLC2543GetDo() ) //讀取數(shù)據(jù)
- {
- tempAD |= 0x01;
- }
- if( channel&0x80 )
- {
- TLC2543Di(TLC2543_SET);
- }
- else
- {
- TLC2543Di(TLC2543_CLR);
- }
- channel <<= 1;
- TLC2543Clk(TLC2543_SET);
- nop();
- TLC2543Clk(TLC2543_CLR);
- }
- TLC2543_Cs(TLC2543_SET); //TLC2543 close
- _delay_us(1);
- return tempAD; //取走轉(zhuǎn)換結(jié)果
- }
- void _delay_us(uint us) //延時子函數(shù)
- {
- uchar delayi;
- while(--us)
- {
- for(delayi=0;delayi<10;delayi++);
- }
- }
復(fù)制代碼- #include "led.h"
- #include "TLC2543.h"
- const uchar code displayMode=0x0f; //后四位分別對應(yīng)緩沖區(qū)中每位的數(shù)據(jù)類型,
- //1為任意字符顯示,0為數(shù)字顯示
- uchar displayBuff[4]={0x7e,0x7e,0x7e,0x7e}; //數(shù)碼管顯示緩沖區(qū),千,百,十,個
- const uchar code digitalNumber[10]={0x7e,0x06,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x73};
- sbit key=P1^2; //數(shù)碼管顯示數(shù)據(jù)
- void main() //主函數(shù)
- {
- uint voltageReadTemp;
- uint voltageRead;
- uchar temp;
- uchar i,j;
- init_led();
- while(1)
- {if(key){
- ledSweepDisplay(displayBuff,displayMode,4); //循環(huán)在數(shù)碼管上顯示緩沖區(qū)中的數(shù)據(jù)
- voltageRead=read_TLC2543(0x05);
- voltageRead=voltageRead*0x05;
- for(i=4;i>0;i--)
- {
- temp=(uchar)(voltageRead/0x0fff);
- if(i==4)
- displayBuff[i-1]=digitalNumber[temp]|0x80; //計算個位,放在緩沖區(qū)第3位
- else //計算十位,放在緩沖區(qū)第2位
- displayBuff[i-1]=digitalNumber[temp]; //計算百位,放在緩沖區(qū)第1位
- voltageRead=voltageRead%0x0fff; //計算千位,放在緩沖區(qū)第0位
- voltageReadTemp=voltageRead<<1; //每次緩存的讀數(shù)左移一位
- voltageRead=0x0000;
- for(j=0;j<5;j++)
- voltageRead+=voltageReadTemp;//voltageRead=voltageRead*10
-
- }
- }
- else //切換量程 以下與上面相同
- {
- ledSweepDisplay(displayBuff,displayMode,4); //循環(huán)在數(shù)碼管上顯示緩沖區(qū)中的數(shù)據(jù)
- voltageRead=read_TLC2543(0x06);
- voltageRead=voltageRead*0x02;
- for(i=4;i>0;i--)
- {
- temp=(uchar)(voltageRead/0x0fff);
- if(i==4)
- displayBuff[i-1]=digitalNumber[temp]|0x80;
- else
- displayBuff[i-1]=digitalNumber[temp];
- voltageRead=voltageRead%0x0fff;
- voltageReadTemp=voltageRead<<1;
- voltageRead=0x0000;
- for(j=0;j<2;j++)
- voltageRead+=voltageReadTemp;//voltageRead=voltageRead*10
- }
-
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
數(shù)字電壓表.rar
(183.32 KB, 下載次數(shù): 63)
2021-6-15 13:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|