仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
部分源码:完整见附件
- #include <reg52.h>
- #include <intrins.h>
- /*定义I/O端口*/
- sbit CLK = P0^0; //串行时钟,下降沿有效
- sbit DAT = P0^1; //串行数据
- sbit LOAD = P0^7; //串行数据加载,下降沿有效
- sbit LDAC = P0^3; //DAC更新锁存控制,下降沿有效
- /*函数申明*/
- void delayms(unsigned char ms);
- void TCL5628_Write(unsigned char addr, bit rng, unsigned char dat);
- void Init_TLC5628();
- void jichiWave();
- void delay5us(void); //误差 0us
- /*函数定义*/
- /*延时函数*/
- void delayms(unsigned char ms)
- {
- unsigned char i;
- while(ms--)
- {
- for(i = 0; i < 250; i++)
- {
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- }
- }
- void delay5us(void) //误差 0us
- {
- unsigned char a;
- for(a=1;a>0;a--);
- }
- /*TCL5628 driver*/
- void TCL5628_Write(unsigned char addr, bit rng, unsigned char dat)
- {
- unsigned char n;
- // 发送通道地址
- n = 3;
- do
- {
- DAT = (bit)(addr & 0x02);
- addr <<= 1;
- CLK = 0;
- CLK = 1;
- }while(--n != 0);
- //发送RNG位
- DAT = rng;
- CLK = 0;
- CLK = 1;
- //发送8位DAC数据
- n = 8;
- do
- {
- DAT = (bit)(dat & 0x80);
- dat <<= 1;
- CLK = 0;
- CLK = 1;
- }while(--n != 0);
-
- //加载数据
- LOAD = 0;
- // delay5us();
- LOAD = 1;
- // delay5us();
- LDAC = 0;
- // delay5us();
- LDAC = 1;
- }
- /*初始化TLC5628*/
- void Init_TLC5628()
- {
- DAT = 1;
- CLK = 1;
- LDAC = 1;
- LOAD = 1;
- }
- ///*方法一:采样设计
- // TLC5628转换一次大概要12.5us
- // 即最高80KHz
- // 但是用51单片机,晶振为12MHz
- // 最快产生一个方波为2us,即最高频率为500KHz
- //
- // 正弦波产生函数
- // 用32个点
- //*/
- //void juchiWave()
- //{
- // /*根据曲线光滑来选取采样点*/
- // code unsigned char juchiTab[] =
- // {
- // 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250
- // };
- // unsigned char n;
- // for(n = 0; n < 25; n++)
- // {
- // TCL5628_Write(0,0,juchiTab[n]);
- // delayms(1);
- // }
- //}
- //void main()
- //{
- // Init_TLC5628();
- // while(1)
- // {
- // juchiWave();
- // }
- //
- //}
- /*方法二:算法设计*/
- void juchiwave()
- {
- unsigned char n;
- for(n=0;n<50;n++)
- {
- TCL5628_Write(0,0,n);
- delayms(1);
- }
- }
- void main()
- {
- Init_TLC5628();
- while(1)
- {
- juchiWave();
- }
-
- }
复制代码 完整源码和proteus仿真文件:
信号发生器.zip
(108.2 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|