PCF8591芯片做的可以輸出方波,三角波,正炫波等
0.png (56.1 KB, 下載次數: 40)
下載附件
2017-6-27 15:31 上傳
單片機源程序如下:
- #include <reg52.h>
- #include "i2c.h"
- #define AddWr 0x90 //寫數據地址
- #define AddRd 0x91 //讀數據地址
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit duan=P2^6;
- sbit wei=P2^7;
- sbit P1_3=P1^3;
- sbit P1_7=P1^7;
- sbit P3_4=P3^4;
- sbit beep=P2^3;
- int a,b,c,d,e,f,frq,range,t,temp;
- double range2;
- uint zhouqi;
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- void delay(uint x)
- {
- int i,j; //延時xms程序
- for(i=x;i>0;i--)
- for(j=112;j>0;j--);
- }
- void delay_us(uint time) //延時xus程序
- {
- while(time--);
- }
- extern bit ack;
- bit WriteDAC(unsigned char dat);
- uchar code sintab[64]={
- 135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,
- 146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128
- };
- uchar code fangbotab[64]={
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- };
- uchar code juchitab[64]={
- 0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
- 146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255
- };
- uchar code sanjiaotab[64]={
- 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
- 248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
- };
-
- void display(int a,int b,int c,int d,int e,int f)
- {
- duan=1;
- P0=table[a];
- duan=0;
- wei=1;
- P0=0xfe;
- wei=0;
- delay(1);
- duan=1;
- P0=table[b];
- duan=0;
- wei=1;
- P0=0xfd;
- wei=0;
- delay(1);
- duan=1;
- P0=table[c];
- duan=0;
- wei=1;
- P0=0xfb;
- wei=0;
- delay(1);
- duan=1;
- P0=table[d];
- duan=0;
- wei=1;
- P0=0xf7;
- wei=0;
- delay(1);
- duan=1;
- P0=table[e]+0x80;
- duan=0;
- wei=1;
- P0=0xbf;
- wei=0;
- delay(1);
- duan=1;
- P0=table[f];
- duan=0;
- wei=1;
- P0=0x7f;
- wei=0;
- delay(1);
- }
- void fangbo()
- {
- int i;
- while(1)
- {
- P1_3=1;
- delay_us(zhouqi);
- P1_3=0;
- delay_us(zhouqi);
- for(i=0;i<64;i++)
- {
- WriteDAC((fangbotab[i]/5)*range2);
- }
- // beep=1;
- }
- }
- void sanjiaobo()
- {
- int i;
- while(1)
- {
- for(i=0;i<64;i++)
- {
- WriteDAC((sanjiaotab[i]/5)*range2);
- }
- }
- }
- void juchibo()
- {
- int i;
- while(1)
- {
- for(i=0;i<64;i++)
- {
- WriteDAC((juchitab[i]/5)*range2);
- }
- }
- }
- void zhengxianbo()
- {
- int i;
- while(1)
- {
- for(i=0;i<64;i++)
- {
- WriteDAC((sintab[i]/5)*range2);
- }
- }
- }
- void rjia1()
- {
- range=range+10;
- if(range>=50)
- {
- range=50;
- }
- }
- void rjian1()
- {
- range=range-10;
- if(range<=0)
- {
- range=0;
- }
- }
- void rjia2()
- {
- range++;
- if(range>=50)
- {
- range=50;
- }
- }
- void rjian2()
- {
- range--;
- if(range<=0)
- {
- range=0;
- }
- }
- int jianpan()
- {
- P3=0x0f;
- if(P3!=0x0f)
- {
- P3=0xfe;
- if(P3!=0xfe)
- {
- switch(P3)//第一行鍵盤,切換模式,分別對應1,2,3,4鍵
- {
- case 0xee:fangbo();break;
- case 0xde:sanjiaobo();break;
- case 0xbe:juchibo();break;
- case 0x7e:zhengxianbo();break;
- }
- }
- P3=0xfd;
- if(P3!=0xfd)
- {
- P3=0xfd;
- delay(10);
- if(P3!=0xfd)
- {
- switch(P3)//第二行鍵盤,調頻率?
- {
- case 0xed:frq=10;break;
- case 0xdd:frq=100;break;
- case 0xbd:frq=500;break;
- case 0x7d:frq=1000;break;
- }
- }
- }
- P3=0xfb;
- if(P3!=0xfb)
- {
- P3=0xfb;
- delay(10);
- if(P3!=0xfb)
- {
- switch(P3)//第三行鍵盤,調峰峰值
- {
- case 0xeb:rjia1();break;
- case 0xdb:rjian1();break;
- case 0xbb:rjia2();break;
- case 0x7b:rjian2();break;
- }
- }
- while(P3!=0xfb);
- }
- }
- return frq;
- return range;
- }
- void init()
- {
- frq=500;
- range=20;
- }
- void fuzhi()
- {
- a=frq/1000;
- b=frq%1000/100;
- c=frq%100/10;
- d=frq%10;
- e=range/10;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
單片機參考程序.rar
(419.79 KB, 下載次數: 96)
2017-6-27 09:52 上傳
點擊文件名下載附件
51單片機 下載積分: 黑幣 -5
|