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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的波形發生器代碼和仿真文件

[復制鏈接]
跳轉到指定樓層
樓主
內附程序代碼和程序文件以及仿真文件,這次偷懶沒寫報告




單片機源程序:
  1. #include <reg51.h>
  2. #include <stdio.h>
  3. #include <absacc.h>
  4. #define uchar unsigned char
  5. uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. uchar code tab1[8]={0x3f,0x7f,0x40,0x5b,0x06,0xdb,0x3f,0x6d};
  7. uchar code
  8. tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
  9.             0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,
  10.                         0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,
  11.                         0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
  12.                         0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,
  13.                         0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,
  14.                         0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,
  15.                         0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,
  16.                         0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,
  17.                         0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,
  18.                         0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,
  19.                         0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  20.                         0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
  21.                         0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,
  22.                         0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,
  23.                         0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};
  24. uchar b=0,c=0,d=0,e=0,i,k,tl,th;
  25. int ww=0,qw=0,bw=8,sw=8,gw=8,zkgw=0,zksw=5;
  26. int t,f,m,choice=1,zk=50;
  27. void delay100ms()
  28. {
  29.         unsigned char i,j;
  30.         for(i=200;i>0;i--);
  31.                 for(j=248;j>0;j--);
  32. }
  33. void chushihua(void)
  34. {
  35.         P3=0xfe;
  36.         P2=tab1[0];
  37.         for(i=0;i<=60;i++);
  38.         P3=0xfd;
  39.         P2=tab1[1];
  40.     for(i=0;i<=60;i++);
  41.         P3=0xfb;
  42.         P2=tab1[2];
  43.     for(i=0;i<=60;i++);
  44.         P3=0xfb;//小數點顯示P2=0x00;
  45.     for(i=0;i<=60;i++);
  46.         P3=0xf7;
  47.         P2=tab1[3];
  48.     for(i=0;i<=60;i++);
  49.         P3=0xef;P2=tab1[4];
  50.         for(i=0;i<=60;i++);
  51.         P3=0xdf;
  52.         P2=tab1[5];
  53.     for(i=0;i<=60;i++);
  54.         P3=0xbf;P2=tab1[6];
  55.     for(i=0;i<=60;i++);
  56.         P3=0x7f;
  57.         P2=tab1[7];
  58.     for(i=0;i<=60;i++);}
  59.         void key1(void)
  60. {
  61.   if(choice<4)
  62.           choice=choice+1;
  63.   else
  64.           choice=1;}/*個位頻率調整*/
  65.     void key2(void)
  66. {
  67.         if(gw<9)
  68. gw=gw+1;
  69.         else
  70.                 gw=0;}
  71.         void key3(void)
  72.         {
  73.                 if(sw<9)
  74.                         sw=sw+1;
  75.                 else
  76.                         sw=0;}/*百位頻率調整*/
  77.         void key4(void)
  78.         {
  79.                 if(bw<9)
  80.                         bw=bw+1;
  81.                 else
  82.                         bw=0;}
  83.         void key5(void)
  84.         {
  85.                 if(qw<9)
  86.                         qw=qw+1;
  87.                 else
  88.                         qw=0;}/*萬位頻率調整*/
  89.         void key6(void)
  90.         {
  91.                 if(ww<5)
  92.                         ww=ww+1;
  93.                 else
  94.                         ww=0;}/*方波占空比加大*/
  95.         void key7(void)
  96.         {
  97.                 if (zk<100)
  98.         zk=zk+1;
  99.         else
  100.                 zk=0;}
  101.         void key8(void)
  102.         {
  103.                 if(zk>=1)
  104.                         zk=zk-1;
  105.                 else
  106.                         zk=0;
  107.         }
  108.         void jisuan(void)
  109.         {TR0=0;//關閉定時器
  110.     f=100000*ww+1000*qw+100*bw+10*sw+gw;
  111.         t=1000000/f;
  112.         th=-t/256;
  113.         tl=-t%256;
  114.         ww=f/10000;
  115.         f=f%10000;
  116.         qw=f/1000;
  117.         f=f%1000;
  118.         bw=f/100;
  119.         f=f%100;
  120.         sw=f/10;
  121.         gw=f%10;
  122.         zkgw=zk%10;
  123.         zksw=zk/10;
  124.         TR0=1;}
  125.         void display (void)
  126.         {
  127.                 P3=0xfb;
  128.                 P2=tab[choice];
  129.                 for(i=0;i<=60;i++);
  130.                 P3=0xfb;
  131.         P2=0x80;//小數點顯示
  132.         for(i=0;i<=60;i++);
  133.         P3=0xf7;
  134.                 P2=tab[ww];
  135.                 for(i=0;i<=60;i++);
  136.                 P3=0xef;
  137.                 P2=tab[qw];
  138.                 for(i=0;i<=60;i++);
  139.                 P3=0xdf;P2=tab[bw];
  140.                 for(i=0;i<=60;i++);
  141.                 P3=0xbf;
  142.                 P2=tab[sw];
  143.                 for(i=0;i<=60;i++);
  144.                 P3=0x7f;
  145.                 P2=tab[gw];
  146.                 for(i=0;i<=60;i++);
  147.                 if(choice==3)
  148.                 {P3=0xfd;
  149.                 P2=tab[zkgw];
  150.                 for(i=0;i<=60;i++);
  151.                 P3=0xfe;
  152.                 P2=tab[zksw];
  153.                 for(i=0;i<=60;i++);
  154.         P3=0xfd;
  155.         P2=0x80;//小數點顯示
  156.                 for(i=0;i<=60;i++)        ;
  157.                 }}
  158.         void judge (void)
  159.         {
  160.                 {unsigned char X,Y,Z;
  161.                 P1=0xff;
  162. P1=0x0f;//先對P3置數行掃描
  163. if(P1!=0x0f)//判斷是否有鍵按下
  164. {delay100ms();//延時,軟件去干擾
  165. if(P1!=0x0f)//確認按鍵按X=P1;
  166. {
  167.         X=P1;//保存行掃描時有鍵按下時狀態
  168.         P1=0xf0;//列掃描
  169. Y=P1;//保存列掃描時有鍵按下時狀態
  170. Z=X|Y;//取出鍵值
  171. switch (Z)//判斷鍵值(那一個鍵按下)
  172. {
  173.    case 0x7d: key1(); break;
  174.    case 0xee: key2(); break;//對鍵值賦值
  175.    case 0xde: key3(); break;
  176.    case 0xbe: key4(); break;
  177.    case 0x7e: key5(); break;
  178.    case 0xed: key6(); break;
  179.    case 0xdd: key7(); break;
  180.    case 0xbd: key8();break;
  181.                 }}}
  182.         }}
  183. void main (void)
  184. {
  185.         int n;
  186.      for(n=0;n<600;n++)
  187.          {
  188.                  chushihua();
  189.          }
  190. TMOD=0X01;
  191. TR0=1;
  192. th=-t/256;
  193. tl=-t%156;
  194. TH0=th;
  195. TL0=tl;
  196. ET0=1;
  197. EA=1;
  198. while(1)
  199. {
  200.         jisuan();
  201.         for(i=0;i<=50;i++);
  202.         display();
  203.         judge();
  204. }
  205. }
  206. void time0_int(void)
  207. interrupt 1//中斷服務程序
  208. {
  209.         TR0=0;
  210.         if(choice==1)
  211. {
  212.                 P0=tosin[b];//正弦波
  213.                 b++;
  214.         }
  215. else
  216. if(choice==2)//三角波
  217. {if(c<=128)P0=c;
  218. else
  219. P0=255-c;
  220. c++;
  221. }
  222. else
  223. if(choice==3)//方波
  224. {k=zk*256/100;d++;
  225. if(d<=k)P0=0x00;
  226. else
  227. P0=0xff;}
  228. else
  229. if(choice==4)//鋸齒波

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

全部資料下載地址:
波形發生器.rar (39.34 KB, 下載次數: 103)


評分

參與人數 2黑幣 +60 收起 理由
KITE89757 + 10 絕世好帖!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:213573 發表于 2017-6-22 08:39 | 只看該作者
下載來試一下
回復

使用道具 舉報

板凳
ID:364207 發表于 2018-7-5 23:12 | 只看該作者
請問這些個波形怎么調出來
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久一起草 | 欧美日韩亚洲视频 | 久久久av| 日本黄色大片免费看 | 免费观看www7722午夜电影 | 国产精品久久精品 | 欧美专区在线 | 欧美性视频在线播放 | 一区二区中文 | 99色综合 | 亚洲精品久久久久中文字幕欢迎你 | 青娱乐av| www.日韩| 午夜电影网址 | 亚洲精品视频一区 | 久久综合一区二区三区 | 亚洲精品在线播放 | 欧美日韩不卡合集视频 | 国产精品久久久久久52avav | 97精品超碰一区二区三区 | 国产精品亚洲二区 | 国产日韩欧美激情 | www.中文字幕.com | 久久99精品久久久水蜜桃 | 亚洲欧美国产一区二区三区 | 亚洲精品欧美一区二区三区 | 中文字幕亚洲在线 | av片免费 | 美女视频h | 日韩一区二区三区精品 | 国产精品视频一二三区 | 精品不卡 | 日韩久久久久久久久久久 | 国产一区二区小视频 | 久久99深爱久久99精品 | 国产乱码一区 | 久草综合在线视频 | 免费久久久 | 91久久久久久久久久久 | 色啪网 | 午夜精品一区二区三区在线视 |