“8通道10位串行AD轉換器MAX192”,Keil開發環境下源程序及工程文件
("8-channel 10-bit serial AD converter MAX192", Keil development environment, source code and project files)
0.png (57.67 KB, 下載次數: 44)
下載附件
2018-2-2 04:14 上傳
單片機源程序如下:
- /****************************************************************/
- /* 這是調用MAX192編程序(MAX192B.ASM)的C51程序。 */
- /* 文件名為CALL192.C。 */
- /* 功能:本程序主要是讀出MAX192芯片輸入通道CH0,CH1,...,CH7的模數*/
- /* 轉換值,轉換值依次放在數組mid1[8]中,轉換值的標度變換值放在*/
- /* 浮點數組volt[8]中。MAX192芯片的8個通道可編程為單極性/雙極 */
- /* 性和差動/單端工作,這里采用單端\單極性輸入。MAX192有內部時 */
- /* 鐘和外部時鐘兩種工作模式,這里采用內部時鐘模式。MAX192具有 */
- /* 片內電壓基準,也可用外部基準,這里使用內部4.096V電壓基準。 */
- /****************************************************************/
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void delay1(uint x);
- extern uint chai; //把全局變量chai聲明為外部變量
- extern uint a_func(uchar); //把a_func 聲明為外部函數
- uint idata mid1[8];
- float idata volt[8];
- uchar idata i;
- void delay1(uint x) //延時程序
- {
- uchar tw;
- while (x-->0){
- for (tw=0;tw<125;tw++){;}
- }
- }
- void main() //主程序
- {
- SP=0xcf;
- delay1(1000);
- EA=0;
- chai=a_func(0x8e); // 讀出MAX192芯片輸入通道CH0的AD轉換值
- mid1[0]=chai; // 把它放入數組mid1中。
- delay1(10);
- chai=a_func(0xce); // 讀出MAX192芯片輸入通道CH1的AD轉換值
- mid1[1]=chai; // 把它放入數組mid1中。
- chai=a_func(0x9e);
- mid1[2]=chai;
- chai=a_func(0xde);
- mid1[3]=chai;
- chai=a_func(0xae);
- mid1[4]=chai;
- chai=a_func(0xee);
- mid1[5]=chai;
- chai=a_func(0xbe);
- mid1[6]=chai;
- chai=a_func(0xfe); // 讀出MAX192芯片輸入通道CH7的AD轉換值
- mid1[7]=chai; // 把它放入數組mid1中。
- for (i=0;i<8;i++){
- volt[i]=(float)mid1[i]/1024.0*4.096; // 標度變換,且變成浮點數。
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
匯編語言源程序:
- ;/*****************************************************************/
- ;/* 這是MAX192的匯編程序, 文件名MAX192.ASM */
- ;/* 功能:本程序主要是讀出MAX192輸入通道CH0,CH1,..CH7的模數轉換值, */
- ;/* 轉換值放在寄存器R6,R7中,R6放高位。MAX192芯片的8個通道 */
- ;/* 可編程為單極性/雙極性和單端/差動工作, 這里采用單端\單極性 */
- ;/* 輸入。MAX192有內部時鐘和外部時鐘兩種工作模式,這里采用內 */
- ;/* 部時鐘模式。MAX192有內帶4.096V的基準電壓,也可用外部基準 */
- ;/* 電壓,這里采用內帶4.096V的基準電壓。 */
- ;/******************************************************************/
- SI EQU P1.3
- SO EQU P1.2
- SCK EQU P1.1
- CS EQU P1.0
- ORG 0030H
- CLR EA
- CLR SCK
- CLR CS ;發送一個字節
- MOV A,#08EH ;08EH-選擇CH0,單端/單極性,內部時鐘模式,用內帶基準電壓
- LCALL BYTE_OUT ;0CEH-選擇CH1,單端/單極性,內部時鐘模式,用內帶基準電壓
- SETB CS ;09EH-選擇CH2,單端/單極性,內部時鐘模式,用內帶基準電壓
- NOP ;0DEH-選擇CH3,單端/單極性,內部時鐘模式,用內帶基準電壓
- NOP ;0AEH-選擇CH4,單端/單極性,內部時鐘模式,用內帶基準電壓
- NOP ;0EEH-選擇CH5,單端/單極性,內部時鐘模式,用內帶基準電壓
- NOP ;0BEH-選擇CH6,單端/單極性,內部時鐘模式,用內帶基準電壓
- NOP ;0FEH-選擇CH7,單端/單極性,內部時鐘模式,用內帶基準電壓
- NOP
- CLR CS ;讀回兩個字節
- LCALL BYTE_IN
- MOV R6,A
- LCALL BYTE_IN
- MOV R7,A
- SETB CS
- CLR C
- MOV A,R6
- RRC A
- MOV R6,A
- MOV A,R7
- RRC A
- MOV R7,A
- CLR C
- MOV A,R6
- RRC A
- MOV R6,A
- MOV A,R7
- RRC A
- MOV R7,A
- CLR C
- MOV A,R6
- RRC A
- MOV R6,A
- MOV A,R7
- RRC A
- MOV R7,A
- CLR C
- MOV A,R6
- RRC A
- MOV R6,A
- MOV A,R7
- RRC A
- MOV R7,A
- CLR C
- MOV A,R6
- RRC A
- MOV R6,A
- MOV A,R7
- RRC A
- MOV R7,A
- MOV A,R6
- ANL A,#03H
- MOV R6,A
- LJMP $
- BYTE_OUT: MOV R0,#08H ;發送單個字節到芯片串口
- BOUT1: CLR SCK
- RLC A
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
4115624MAX192-c51.rar
(33.96 KB, 下載次數: 21)
2018-2-1 17:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|