|
單片機與TLC2543接口實現ad轉換,并且用數碼管顯示的仿真原理圖如下(proteus仿真工程文件可到本帖附件下載)
TLC2543與單片機連接的電路圖:
0.png (28.91 KB, 下載次數: 148)
下載附件
2017-4-5 04:07 上傳
TLC2543是11通道12位串行A/D轉換器.TLC2543中文資料詳見:http://www.zg4o1577.cn/chip/4009.html
TLC2543單片機驅動源代碼:
- #include<reg51.h>
- sbit SDO=P3^0; //定義端口
- sbit SDI=P3^1;
- sbit CS=P3^2;
- sbit CLK=P3^3;
- sbit EOC=P3^4;
- sbit P2_0=P2^0;
- sbit P2_1=P2^1;
- sbit P2_2=P2^2;
- sbit P2_3=P2^3;
- unsigned char code xiao[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- //共陽極數碼管0-9的段碼
- //**********************************
- //延時程序
- //**********************************
- void delay(unsigned char n)
- {
- unsigned char i,j;
- for(i=0;i<n;i++)
- for(j=0;j<125;j++);
- }
- //**********************************
- //向TLC2543寫命令及讀轉換后的數據
- //**********************************
- unsigned int read2543(unsigned char con_word)
- {
- unsigned int ad=0,i;
- CLK=0; //時鐘首先置低
- CS=0; //片選為0,芯片工作
- for(i=0;i<12;i++)
- {
- if(SDO) //首先讀TLC2543的一位數據
- ad=ad|0x01;
- SDI=(bit)(con_word&0x80); //向TLC2543寫一位數據
- CLK=1; //時鐘上升沿,TLC2543輸出使能
- delay(3);
- CLK=0; //時鐘下降沿,TLC2543輸入使能
- delay(3);
- con_word<<=1;
- ad<<=1;
- }
- CS=1;
- ad>>=1;
- return(ad);
- }
- void main()
- {
- unsigned int ad;
- while(1)
- {
- ad=read2543(0x00);
- P0=xiao[ad/1000]; //千位數字的段碼
- P2_0=1; //顯示千位
- delay(3);
- P2_0=0;
- P0=xiao[(ad%1000)/100]; //百位數字的段碼
- P2_1=1; //顯示百位
- delay(3);
- P2_1=0;
- P0=xiao[(ad%100)/10]; //十位數字的段碼
- P2_2=1; //顯示十位
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (64.4 KB, 下載次數: 172)
下載附件
2017-4-5 04:06 上傳
該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共幾十個項目):http://www.zg4o1577.cn/bbs/dpj-80575-1.html
本例程下載(含proteus仿真工程文件與源碼):
TLC2543單片機程序 帶Proteus仿真L9_4.rar
(49.98 KB, 下載次數: 434)
2017-4-5 04:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|