历史上的今天
今天是:2024年10月28日(星期一)
2019年10月28日 | PIC16F877输出正弦波信号PROTEUS仿真及程序
2019-10-28 来源:51hei
//PIC16F877单片机输出正弦波信号仿真原理图如下

//20MHz晶振,输出500Hz的正弦波,每周波100个点。
//1个周期时间为2ms,二点间隔时间为2000/100=20us
//用TMR2延时,256*Tcy*K=20,Tcy=0.2,取K=1
//PR2计算:(PR2+1)*Tcy*1=20,得PR2=99
#include __CONFIG(0x3F3A); #define CS RB1 #define LDAC RB2 char BUF,N; #define nn 100 const unsigned int SS[100]={ 2048,2111,2173,2235,2297,2357,2416,2474,2530,2584,2636,2685,2733,2777,2819,2857, 2892,2924,2953,2978,2999,3017,3030,3040,3046,3048,3046,3040,3030,3017,2999,2978, 2953,2924,2892,2857,2819,2777,2733,2685,2636,2584,2530,2474,2416,2357,2297,2235, 2173,2111,2048,1985,1923,1861,1799,1739,1680,1622,1566,1512,1460,1411,1363,1319, 1277,1239,1204,1172,1143,1118,1097,1079,1066,1056,1050,1048,1050,1056,1066,1079, 1097,1118,1143,1172,1204,1239,1277,1319,1363,1411,1460,1512,1566,1622,1680,1739, 1799,1861,1923,1985}; //宏定义,最后的读SSPBUF是一定要的! #define SPI_WRITE(A) SSPBUF=A; while(STAT_BF==0); BUF=SSPBUF void main(void) { unsigned int x; TRISB=0b11111001; CS=1;NOP(); LDAC=1; TRISC=0b00010000; //RC3输出(SCK),RC4输入(SDI),RC5输出(SDO) SSPEN=1; //SPI串口使能 CKP=1; //空闲时钟为高电平 SSPM3=0; SSPM2=0; SSPM1=0; SSPM0=0; //SPI主控模式,时钟为Fosc/4 STAT_SMP=1; //在数据输出时间的末端采样输入数据 STAT_CKE=0; //在SCK上升沿传输数据 PR2=99; //按照计算,每20us中断一次 T2CON=0b00000100; N=0; TMR2IE=1; //允许TMR2中断 PEIE=1; GIE=1; while(1); } void interrupt INT_ISR(void) { unsigned int X; char i,j; if (TMR2IF==1) { TMR2IF=0; X=SS[N++]; if (N>=nn) N=0; X+=0x7000; //HSDN=1,参考电压缓冲,放大倍数GA=1 CS=0; //片选有效 i=X>>8; j=X; SPI_WRITE(i); //输出命令的高8位 SPI_WRITE(j); //输出命令的低8位 LDAC=0;NOP(); //DA输出有效 LDAC=1;NOP(); CS=1; } }
下一篇:PIC单片机电子钟程序+仿真电路
史海拾趣
|
在印制板加工厂采用的是自动化的连续作业设备,设备成本昂贵,这在业余条件下是根本不可能做到的。我们在这里推出的是一种接近工厂正规生产工艺流程,但生产工艺相对简单,设备极其低廉,业余条件下比较容易完成操作的方法。郑州东明电子研究所为此 ...… 查看全部问答> |
|
创意幽默的 DIESEL 这次将数位电子錶款带入另一个多彩境界,春夏全新推出「颜色DNA」电子錶款系列。此系列玩色十足,藉由 5 种不同的颜色DNA营造出不同的色彩活力,搭配极具前卫设计感的造型錶身,个性帅性。不论是热情生活的红色、尽情自我的蓝色 ...… 查看全部问答> |
|
有没有人能提供周立功magicarm2410 bootload 源代码? 有没有人能提供周立功magicarm2410 bootload 源代码?串口0坏了,输出全是乱码,没法用超级终端。想用uboot做一个,忙了一个星期头昏眼花也没搞定dm9000驱动,总是ping不通,天天百度也没有发现真正能用的。郁闷!!周立功真草但!!!… 查看全部问答> |
|
【AVR】我都快疯了,哪位大侠帮帮忙关于定时器T0和T1配合产生间隔的38k方波! 小弟用TO做方波产生38k的红外线方波,用T1做延时,这样产生一段一段的方波,再用一体化接头接受,发现无论什么情况下,即T0中的OCR0无论设置什么值,一体化接头都能接受到。我把T1去掉,产生连续的T0方波,发现就正常了,为什么啊?哪为高手解释一 ...… 查看全部问答> |
|
款驱动模块可以驱1.3寸--15寸的TFT屏,使用非常方便,感兴趣的朋友可以给我发邮件所取资料。我的邮箱是 boy_201a@163.com 我的电话是010-62105007-802 13501104029 简单的串行接口,最小系统与用户的连线只需 3 根线( ...… 查看全部问答> |
|
经常是出现一个空心的红圆圈,一运行就报one or more breakpoints could not be resolved.select breakpoints from the debugger menu for details? 还有MAPLAB中一次只能设置一个断点吗?… 查看全部问答> |
|
我现在用例子程序PWMINPUT, 再PA0.1上我外接了一个PWM信号。例程中说:The TIMxCLK frequency is set to 72 MHz, the Prescaler is 0 so the TIM2 counter ...… 查看全部问答> |
|
我(初学者)用DM642怎么移植MPEG-4T算法(毕业设计)? 各位高手,我想请教一下,我正在用DM642移植MPEG-4算法,看了实验包里的 MPEG-2LOOPBACK程序后,有好多不明白: 1、是从哪个地方调用MPEG-2编解码的算法的? 2、DSP/BIOS编程是什么意思? 3、什么是RF-5设计框架?怎么使用? 望各位老师指点,谢谢 ...… 查看全部问答> |




