⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 C
字号:
//-----------------------------------------------------------------
//  名称: 用带SPI接口的数模转换芯片MCP4921生成正弦波形
//-----------------------------------------------------------------
//  说明: 本例运行时,经MCP4921进行数/模转换后的输出信号经调理后的输出
//        为周期为2ms,幅值为2.5V(+/-)正弦交流信号.
//
//-----------------------------------------------------------------
#include <pic.h>
#define INT8U   unsigned char
#define INT16U  unsigned int
#define _XTAL_FREQ 20000000UL  //20MHZ
//SPI使能与禁用,锁存使能与禁用
#define SPI_EN()   RC6 = 0
#define SPI_DI()   RC6 = 1
//当LDAC引脚直接连接低电平时下面的定义取消
//#define LDAC_EN()  RC7 = 0
//#define LDAC_DI()  RC7 = 1
//正弦波100个采样点电压对应的数字值
//幅值为(+/-)1.25V,上移2.5V,输出正弦电压区间为: +3.75 ~ +1.25V
//中心点为+2.5V,这三个点(3.75,2.5,1.25)对应的DA值为(3072,2048,1024)
const INT16U SIN_DATA[100] = 
{
    2048, 2112, 2176, 2239, 2302, 2364, 2424, 2483, 2541, 2596, 
    2649, 2700, 2748, 2794, 2837, 2876, 2912, 2945, 2974, 3000, 
    3021, 3039, 3053, 3063, 3069, 3072, 3069, 3063, 3053, 3039, 
    3021, 3000, 2974, 2945, 2912, 2876, 2837, 2794, 2748, 2700, 
    2649, 2596, 2541, 2483, 2424, 2364, 2302, 2239, 2176, 2112, 
    2048, 1984, 1920, 1857, 1794, 1732, 1672, 1613, 1555, 1500, 
    1447, 1396, 1348, 1302, 1259, 1220, 1184, 1151, 1122, 1096, 
    1075, 1057, 1043, 1033, 1027, 1024, 1027, 1033, 1043, 1057, 
    1075, 1096, 1122, 1151, 1184, 1220, 1259, 1302, 1348, 1396, 
    1447, 1500, 1555, 1613, 1672, 1732, 1794, 1857, 1920, 1984
};
INT8U d;
//SPI数据传输(启动数据传输,然后等待传输结束,最后返回SSPBUF)
#define SPI_Transmit(x) { SSPBUF = x; while(!BF); d = SSPBUF; }
//-----------------------------------------------------------------
// SPI主机初始化
//-----------------------------------------------------------------
void SPI_MasterInit()
{



}
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{ 




}

//-----------------------------------------------------------------
// 定时器中断程序
//-----------------------------------------------------------------
void interrupt INT_ISR()
{    
    static INT8U idx = 0;          //待发送的D/A传输数字索引
    if (TMR2IF == 1)
    {   




    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -