忘記了
#include <stc8.h> //基準電壓是2.515V
#define uint8 unsigned char
#define uint16 unsigned int
sbit CS = P2^4; //片選
sbit SCLK = P2^2; //時鐘
sbit DIN = P2^0; //數據入口
uint16 code tosin[256]={
0x1FF,0x20C,0x218,0x225,0x231,0x23E,0x24A,0x256,0x263,0x26F,0x27B,0x287,0x293,0x29F,0x2AB,0x2B7
,0x2C3,0x2CE,0x2DA,0x2E5,0x2F0,0x2FB,0x306,0x311,0x31B,0x326,0x330,0x33A,0x343,0x34D,0x357,0x360
,0x369,0x371,0x37A,0x382,0x38A,0x392,0x39A,0x3A1,0x3A8,0x3AF,0x3B6,0x3BC,0x3C2,0x3C8,0x3CD,0x3D3
,0x3D8,0x3DC,0x3E1,0x3E5,0x3E8,0x3EC,0x3EF,0x3F2,0x3F5,0x3F7,0x3F9,0x3FB,0x3FC,0x3FD,0x3FE,0x3FE
,0x3FE,0x3FE,0x3FE,0x3FD,0x3FC,0x3FB,0x3F9,0x3F7,0x3F5,0x3F2,0x3EF,0x3EC,0x3E8,0x3E5,0x3E1,0x3DC
,0x3D8,0x3D3,0x3CD,0x3C8,0x3C2,0x3BC,0x3B6,0x3AF,0x3A8,0x3A1,0x39A,0x392,0x38A,0x382,0x37A,0x371
,0x369,0x360,0x357,0x34D,0x343,0x33A,0x330,0x326,0x31B,0x311,0x306,0x2FB,0x2F0,0x2E5,0x2DA,0x2CE
,0x2C3,0x2B7,0x2AB,0x29F,0x293,0x287,0x27B,0x26F,0x263,0x256,0x24A,0x23E,0x231,0x225,0x218,0x20C
,0x1FF,0x1F2,0x1E6,0x1D9,0x1CD,0x1C0,0x1B4,0x1A8,0x19B,0x18F,0x183,0x177,0x16B,0x15F,0x153,0x147
,0x13B,0x130,0x124,0x119,0x10E,0x103,0x0F8,0x0ED,0x0E3,0x0D8,0x0CE,0x0C4,0x0BB,0x0B1,0x0A7,0x09E
,0x095,0x08D,0x084,0x07C,0x074,0x06C,0x064,0x05D,0x056,0x04F,0x048,0x042,0x03C,0x036,0x031,0x02B
,0x026,0x022,0x01D,0x019,0x016,0x012,0x00F,0x00C,0x009,0x007,0x005,0x003,0x002,0x001,0x000,0x000
,0x000,0x000,0x000,0x001,0x002,0x003,0x005,0x007,0x009,0x00C,0x00F,0x012,0x016,0x019,0x01D,0x022
,0x026,0x02B,0x031,0x036,0x03C,0x042,0x048,0x04F,0x056,0x05D,0x064,0x06C,0x074,0x07C,0x084,0x08D
,0x095,0x09E,0x0A8,0x0B1,0x0BB,0x0C4,0x0CE,0x0D8,0x0E3,0x0ED,0x0F8,0x103,0x10E,0x119,0x124,0x130
,0x13B,0x147,0x153,0x15F,0x16B,0x177,0x183,0x18F,0x19B,0x1A8,0x1B4,0x1C0,0x1CD,0x1D9,0x1E6,0x1F2 };
void DA_Conver(uint16 DA_Value) //進行DA轉換,輸入十位DA值,十六位數據,高四位無效,認為0000 //低二位為00
{
uint8 i;
DA_Value <<= 6;
CS =0; //片選DA芯片,低電平有效
SCLK = 0; //片選低電平, 時鐘為上升沿時開始傳送數據
for(i=0;i<12;i++) //從高位到地位依次發送
{
DIN = (bit)(DA_Value & 0x8000);
SCLK = 1;
DA_Value <<= 1; // 一位一位的進行傳輸
SCLK = 0;
}
CS = 1; // 關閉芯片,CS的上升沿和下降沿只有在clk為低的時候才有效
SCLK = 0;
}
void main()
{
uint16 j;
P2M0=0x00;
P2M1=0x00;
while(1)
{
for(j=0;j<255;j++)
{
DA_Conver(tosin[j]); //輸出正弦波
}
}
} |