久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4816|回復: 4
打印 上一主題 下一主題
收起左側

51單片機+PCF8591函數信號發生器程序

[復制鏈接]
跳轉到指定樓層
樓主
PCF8591芯片做的可以輸出方波,三角波,正炫波等


單片機源程序如下:
  1. #include <reg52.h>               
  2. #include "i2c.h"

  3. #define AddWr 0x90   //寫數據地址
  4. #define AddRd 0x91   //讀數據地址


  5. #include <reg52.h>

  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. sbit duan=P2^6;
  9. sbit wei=P2^7;
  10. sbit P1_3=P1^3;
  11. sbit P1_7=P1^7;
  12. sbit P3_4=P3^4;
  13. sbit beep=P2^3;

  14. int a,b,c,d,e,f,frq,range,t,temp;
  15. double range2;

  16. uint zhouqi;

  17. uchar code table[]={
  18. 0x3f,0x06,0x5b,0x4f,
  19. 0x66,0x6d,0x7d,0x07,
  20. 0x7f,0x6f,0x77,0x7c,
  21. 0x39,0x5e,0x79,0x71};

  22. void delay(uint x)
  23. {
  24.         int i,j;                                                //延時xms程序
  25.         for(i=x;i>0;i--)
  26.                 for(j=112;j>0;j--);
  27. }


  28. void delay_us(uint time)         //延時xus程序
  29. {
  30.       while(time--);
  31. }

  32. extern bit ack;
  33. bit WriteDAC(unsigned char dat);

  34. uchar code sintab[64]={
  35. 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,
  36. 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
  37. };

  38. uchar code fangbotab[64]={
  39. 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,
  40. 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
  41. };

  42. uchar code juchitab[64]={
  43. 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,
  44. 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
  45. };


  46. uchar code sanjiaotab[64]={
  47. 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,
  48. 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
  49. };



  50. void display(int a,int b,int c,int d,int e,int f)
  51. {
  52.         duan=1;
  53.         P0=table[a];
  54.         duan=0;
  55.         wei=1;
  56.         P0=0xfe;
  57.         wei=0;
  58.         delay(1);       
  59.         duan=1;
  60.         P0=table[b];
  61.         duan=0;
  62.         wei=1;
  63.         P0=0xfd;
  64.         wei=0;
  65.         delay(1);
  66.         duan=1;
  67.         P0=table[c];
  68.         duan=0;
  69.         wei=1;
  70.         P0=0xfb;
  71.         wei=0;
  72.         delay(1);
  73.         duan=1;
  74.         P0=table[d];
  75.         duan=0;
  76.         wei=1;
  77.         P0=0xf7;
  78.         wei=0;
  79.         delay(1);
  80.         duan=1;
  81.         P0=table[e]+0x80;
  82.         duan=0;
  83.         wei=1;
  84.         P0=0xbf;
  85.         wei=0;
  86.         delay(1);
  87.         duan=1;
  88.         P0=table[f];
  89.         duan=0;
  90.         wei=1;
  91.         P0=0x7f;
  92.         wei=0;
  93.         delay(1);
  94. }

  95. void fangbo()
  96. {       
  97.     int i;
  98.         while(1)
  99.         {
  100.                         P1_3=1;
  101.                         delay_us(zhouqi);
  102.                         P1_3=0;
  103.                         delay_us(zhouqi);
  104.                 for(i=0;i<64;i++)
  105.                 {
  106.                         WriteDAC((fangbotab[i]/5)*range2);
  107.                 }
  108.                 //        beep=1;

  109.         }
  110. }

  111. void sanjiaobo()
  112. {   
  113.         int i;
  114.         while(1)
  115.         {
  116.                 for(i=0;i<64;i++)
  117.                 {
  118.                         WriteDAC((sanjiaotab[i]/5)*range2);
  119.                 }
  120.         }
  121. }

  122. void juchibo()
  123. {   
  124.         int i;
  125.         while(1)
  126.         {
  127.                 for(i=0;i<64;i++)
  128.                 {
  129.                         WriteDAC((juchitab[i]/5)*range2);
  130.                 }
  131.         }
  132. }


  133. void zhengxianbo()
  134. {   
  135.         int i;
  136.         while(1)
  137.         {
  138.                 for(i=0;i<64;i++)
  139.                 {
  140.                         WriteDAC((sintab[i]/5)*range2);
  141.                 }
  142.         }
  143. }
  144. void rjia1()
  145. {
  146.          range=range+10;
  147.          if(range>=50)
  148.          {
  149.                  range=50;
  150.          }
  151. }
  152. void rjian1()
  153. {
  154.          range=range-10;
  155.          if(range<=0)
  156.          {
  157.                  range=0;
  158.          }
  159. }
  160. void rjia2()
  161. {
  162.          range++;
  163.          if(range>=50)
  164.          {
  165.                  range=50;
  166.          }
  167. }
  168. void rjian2()
  169. {
  170.          range--;
  171.          if(range<=0)
  172.          {
  173.                  range=0;
  174.          }
  175. }
  176. int jianpan()
  177. {
  178.         P3=0x0f;
  179.         if(P3!=0x0f)
  180.         {
  181.                 P3=0xfe;
  182.                 if(P3!=0xfe)
  183.                 {
  184.                         switch(P3)//第一行鍵盤,切換模式,分別對應1,2,3,4鍵       
  185.                         {
  186.                                 case 0xee:fangbo();break;
  187.                                 case 0xde:sanjiaobo();break;
  188.                                 case 0xbe:juchibo();break;
  189.                                 case 0x7e:zhengxianbo();break;       
  190.                         }
  191.                 }
  192.                 P3=0xfd;
  193.                 if(P3!=0xfd)
  194.                 {
  195.                         P3=0xfd;
  196.                         delay(10);
  197.                         if(P3!=0xfd)
  198.                         {
  199.                                 switch(P3)//第二行鍵盤,調頻率?
  200.                                 {
  201.                                         case 0xed:frq=10;break;
  202.                                         case 0xdd:frq=100;break;
  203.                                         case 0xbd:frq=500;break;
  204.                                         case 0x7d:frq=1000;break;       
  205.                                 }
  206.                         }
  207.                 }
  208.                 P3=0xfb;
  209.                 if(P3!=0xfb)
  210.                 {
  211.                         P3=0xfb;
  212.                         delay(10);
  213.                         if(P3!=0xfb)
  214.                         {
  215.                                 switch(P3)//第三行鍵盤,調峰峰值       
  216.                                 {
  217.                                         case 0xeb:rjia1();break;
  218.                                         case 0xdb:rjian1();break;
  219.                                         case 0xbb:rjia2();break;
  220.                                         case 0x7b:rjian2();break;       
  221.                                 }
  222.                         }
  223.                         while(P3!=0xfb);
  224.                 }
  225.         }
  226.         return frq;
  227.         return range;
  228. }

  229. void init()
  230. {
  231.         frq=500;
  232.         range=20;
  233. }
  234. void fuzhi()
  235. {
  236.                 a=frq/1000;
  237.                 b=frq%1000/100;
  238.                 c=frq%100/10;
  239.                 d=frq%10;
  240.                 e=range/10;
  241. ……………………

  242. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
單片機參考程序.rar (419.79 KB, 下載次數: 96)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:266991 發表于 2017-12-26 11:17 | 只看該作者
謝謝樓主
回復

使用道具 舉報

板凳
ID:238579 發表于 2018-1-3 14:02 | 只看該作者
沒有圖嗎
回復

使用道具 舉報

地板
ID:459456 發表于 2019-1-1 19:08 | 只看該作者
感謝樓主請問沒有仿真圖嗎
回復

使用道具 舉報

5#
ID:774876 發表于 2020-6-15 10:15 | 只看該作者
沒有proteus仿真圖嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产综合久久婷婷香蕉 | 天天干天天操 | 国产在线视频在线观看 | 神马久久久久久久久久 | 亚洲精品视频久久 | 免费在线观看一级毛片 | 天天干天天爱天天爽 | 天天久久 | 久久久精品视频一区二区三区 | 99这里只有精品视频 | 欧洲精品码一区二区三区免费看 | 成人妇女免费播放久久久 | av中文在线 | 亚洲国产第一页 | 婷婷色国产偷v国产偷v小说 | 中文字幕在线视频免费观看 | 欧美11一13sex性hd | 国产成人免费视频网站高清观看视频 | 色999视频 | 黑人精品欧美一区二区蜜桃 | 4h影视| 欧美成人精品一区二区三区 | 日韩一区二区在线观看 | 久久精品国产免费一区二区三区 | 国产精品午夜电影 | 日韩视频精品在线 | av影音在线 | 黄色一级免费观看 | 国产成人久久精品 | 一级做a | caoporn国产精品免费公开 | 久久99久久99精品免视看婷婷 | 伊人久久成人 | 可以免费看的毛片 | 久久久精品网 | 亚洲成av人片在线观看无码 | 欧美精品一区二区三区四区 在线 | 成人免费福利视频 | 成人在线视频免费观看 | 国产精品久久视频 | 日韩欧美视频 |