|
里面有代碼 有仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (12.63 KB, 下載次數(shù): 133)
下載附件
2019-4-18 00:25 上傳
單片機(jī)源程序如下:
- #include "PCF8591.h"
- #include "delay.h"
- sbit SCL=P2^1; //串行時(shí)鐘輸入端
- sbit SDA=P2^0; //串行數(shù)據(jù)輸入端
- uchar flag=0;
- void start()//開始信號(hào)
- {
- SDA=1;
- delay();
- SCL=1;
- delay();
- SDA=0;
- delay();
- }
-
- void stop() //停止信號(hào)
- {
- SDA=0;
- delay();
- SCL=1;
- delay();
- SDA=1;
- delay();
- }
-
-
- void respons()//應(yīng)答 相當(dāng)于一個(gè)智能的延時(shí)函數(shù)
- {
- uchar i;
- SCL=1;
- delay();
- while((SDA==1)&&(i<250))
- i++;
- SCL=0;
- delay();
- }
-
- void init() //初始化
- {
- SDA=1;
- delay();
- SCL=1;
- delay();
- }
-
- void write_byte(uchar date) //寫一字節(jié)數(shù)據(jù)
- {
- uchar i,temp;
- temp=date;
- for(i=0;i<8;i++)
- {
- temp=temp<<1; //左移一位 移出的一位在CY中
- SCL=0; //只有在scl=0時(shí)sda能變化值
- delay();
- SDA=CY;
- delay();
- SCL=1;
- delay();
- }
- SCL=0;
- delay();
- SDA=1;
- delay();
- }
-
-
-
- void write_add(uchar control,uchar date)
- {
- start();
- write_byte(PCF8591); //10010000 前四位固定 接下來(lái)三位全部被接地了 所以都是0 最后一位是寫 所以為低電平
- respons();
- write_byte(control);
- respons();
- write_byte(date);
- respons();
- stop();
-
- }
復(fù)制代碼- #include "wave.h"
- #include "PCF8591.h"
- #include "delay.h"
- uchar time1;
- uchar a,range=100;
- void triangular(void) //三角波
- {
- write_add(0x40,a);
- delay_1ms(time1);
- a++;
- if(a>range)
- while(a>0)
- {
- a--;
- write_add(0x40,a);
- delay_1ms(time1);
- }
-
-
- }
- void triangular1(void)//鋸齒波
- {
- write_add(0x40,a);
- delay_1ms(time1);
- a++;
- if(a>range)
- a=0;
- }
- void square(void) //方波
- {
- a=range;
- write_add(0x40,a);
- delay_1ms(time1);
- a=0;
- write_add(0x40,a);
- delay_1ms(time1);
- }
復(fù)制代碼
所有資料51hei提供下載:
波形發(fā)生器protues仿真 PCF8591仿真源程序 正弦波 三角波等可調(diào).zip
(123.62 KB, 下載次數(shù): 469)
2019-4-17 19:38 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|