本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
分享一个TLC5620芯片DA转换的源代码,C程序和汇编两种
C程序代码:
- /*------------------------------------------------------------------------------
- 调用方式:void da5620(uchar da) ﹫2001/03/23
- 函数说明:往固定端口送da值完成DA输出,该函数没有输出端口选择功能,尽管5620有4个
- 输出口。
- 改变程序中的command可以改变默认端口。
- ------------------------------------------------------------------------------*/
- #include"reg51.h"
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define nop _nop_()
- sbit SPI_CLK=P1^2;
- sbit SPI_DATA=P1^1;
- sbit CS_DA=P1^3;
- void del(uint v)
- {
- while(v!=0)v--;
- }
- void da5620(uchar da)
- {
- uchar i;
- ACC=01100000; //d7=a1;d6=a0;d6=rng;(while rng=1 2倍out);(a0,a1是ch选择)
- CS_DA=1;
- for (i=3;i>0;i--) //写D/A命令字(通道数的选择)
- {
- ACC+=ACC; //CY=ACC。7
- SPI_DATA=CY;
- SPI_CLK=1;
- nop;
- nop;
- nop;
- nop;
- SPI_CLK=0;
- }
- ACC=da; //写D/A数据
- for (i=8;i>0;i--)
- {
- ACC+=ACC; //CY=ACC。7
- SPI_DATA=CY;
- SPI_CLK=1;
- nop;
- nop;
- nop;
- nop;
- SPI_CLK=0;
- }
- CS_DA=0;
- nop;
- nop;
- CS_DA=1;
- }
- void main(void) //主程序处理
- {
- uchar j;
- while(1)
- {
- for(j=0xff;j>=0x01;j--)
- {da5620(j);del(2000);}
- for(j=0x00;j<=0xfe;j++)
- {da5620(j);del(2000);}
- }
- }
复制代码
以下是汇编源代码
- SPI_DATA BIT P1.1
- SPI_CLK BIT P1.2
- CS_DA BIT P1.3
- ORG 0000H
- AJMP START
- ORG 0010H
- TLC5620: ;;D/A 转换主程序
- CLR A
- SETB CS_DA
- MOV R6,#43H ;;写D/A命令字(通道数的选择)
- COMMAND: ADD A,ACC
- MOV SPI_DATA,C
- SETB SPI_CLK
- NOP
- NOP
- NOP
- NOP
- CLR SPI_CLK
- DJNZ R6,COMMAND
- MOV A,R7
- MOV R6,#08H
- DATE : ADD A,ACC ;;写D/A数据
- MOV SPI_DATA,C
- SETB SPI_CLK
- NOP
- NOP
- NOP
- NOP
- CLR SPI_CLK
- DJNZ R6,DATE
- CLR CS_DA
- NOP
- NOP
- SETB CS_DA
- RET
- DEL: ;;延时程序
- MOV R1,#01H
- DEL0:
- MOV R2,#60H
- DEL1:
- MOV R3,#0FFH
- DJNZ R3,$
- DJNZ R2,DEL1
- DJNZ R1,DEL0
- RET
- START:
- MOV R7,#0FFH ;;数据减一处理程序,并进行转换(FF--80)
- LOOP1:
- ACALL TLC5620
- ACALL DEL
- DEC R7
- CJNE R7,#80H,LOOP1
- MOV R7,#80H ;;数据加一处理程序,并进行转换(80--FF)
- LOOP2:
- ACALL TLC5620
- ACALL DEL
- INC R7
- CJNE R7,#0FFH,LOOP2
- AJMP START
- END
复制代码 |