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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的波形發生器和電子密碼鎖仿真與源碼

[復制鏈接]
跳轉到指定樓層
樓主
這里面包含了波形發生器和電子密碼鎖的防真及程序,暫時只是部分圖片瀏覽詳細大家可以去看壓縮包。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



所有資料51hei提供下載:
caiwenjun.rar (253.27 KB, 下載次數: 35)


單片機源程序如下:
  1.                                                  
  2.                                           #include<reg52.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int


  5. sbit csda=P3^2;                                                                                          //定義DA的CS端口
  6. sbit wr=P3^6;
  7.                                                                                                 //定義DA的WR端口
  8. sbit s1=P3^4;
  9. sbit s2=P3^5;                                                                                          //定義兩個按鍵

  10. uchar k=0,p=0,delay=0;
  11. uchar bxxz=0;pinglv=0;
  12. uchar a=1,b=0,c=0,d=0,e=0;

  13. uchar code sin[64]={
  14. 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,
  15. 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
  16. };                                                                                                                 //正弦波
  17. uchar code juxing[64]={
  18. 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,
  19. 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
  20. };                                                                                                                //矩形波
  21. uchar code juchi[64]={
  22. 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,
  23. 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
  24. };                                                                                                                //鋸齒波
  25. uchar code tixing[64]={
  26. 0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,208,221,234,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
  27. 247,247,247,247,247,247,247,242,229,216,203,190,177,164,151,138,125,112,99,86,73,60,47,34,21,8
  28. };                                                                                                                //梯形波
  29. uchar code sanjiao[64]={
  30. 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,
  31. 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
  32. };                                                                                                                //三角波
  33. void delay1()                                                                               
  34. {
  35.         int a,b;
  36.         for(a=1;a>0;a--)
  37.                 for(b=122;b>0;b--);                                                                //延時函數
  38. }
  39. void key1(void)                                                                                        //頻率選擇,獨立按鍵1
  40. {       
  41.         if(s1==0)
  42.         {
  43.                 delay1();
  44.                 if(s1==0)                                                                          //按鍵按下               
  45.                 {
  46.                         p++;                                                                         //p頻率選擇參數
  47.                         if(p==8)
  48.                         p=0;
  49.                         switch(p)
  50.                         {
  51.                                 case 1 :
  52.                                         pinglv=3;
  53.                                         break;
  54.                                 case 2 :
  55.                                         pinglv=6;
  56.                                         break;       
  57.                                 case 3 :
  58.                                         pinglv=9;
  59.                                         break;
  60.                                 case 4 :
  61.                                         pinglv=12;
  62.                                         break;
  63.                                 case 5 :
  64.                                         pinglv=15;
  65.                                         break;
  66.                                 case 6 :
  67.                                         pinglv=18;
  68.                                         break;
  69.                                 case 7 :
  70.                                         pinglv=21;
  71.                                         break;                               
  72.                                 default :
  73.                                         pinglv=0;
  74.                                         break;
  75.                         }
  76.                         while(!s1);                                                   ///等待按鍵松開       
  77.                 }
  78.         }
  79. }
  80. void key2(void)                                                                        //波形選擇,按鍵2
  81. {                       
  82.         if(s2==0)
  83.         {
  84.                 delay1();
  85.                 if(s2==0)
  86.                 {               
  87.                         bxxz++;                                                        //波形類型++
  88.                         if(bxxz==5)
  89.                                 bxxz=0;
  90.                         switch(bxxz)
  91.                         {
  92.                                 case 0 :
  93.                                         {a=1,b=0,c=0,d=0,e=0;}
  94.                                         break;
  95.                                 case 1 :
  96.                                         {a=0,b=1,c=0,d=0,e=0;}
  97.                                         break;
  98.                                 case 2 :
  99.                                         {a=0,b=0,c=1,d=0,e=0;}
  100.                                         break;       
  101.                                 case 3 :
  102.                                         {a=0,b=0,c=0,d=1,e=0;}
  103.                                         break;
  104.                                 case 4 :
  105.                                         {a=0,b=0,c=0,d=0,e=1;}
  106.                                         break;
  107.                         }
  108.                         delay1();
  109.                         while(!s2);                                                //等待按鍵松開       
  110.                 }
  111.         }
  112. }
  113. void keyscan(void)
  114. {
  115.         key1();                                                                         //頻率
  116.         key2();                                                                         //波形
  117. }       


  118. /*----------------------main----------------*/
  119. /*----------------------main----------------*/
  120. /*----------------------main----------------*/
  121. /*----------------------main----------------*/
  122. /*----------------------main----------------*/
  123. /*----------------------main----------------*/

  124. void main()
  125. {
  126.         csda=0;                                        //選通DAC0832
  127.         wr=0;                                        //WR有效
  128.         while(1)
  129.         {
  130.                 keyscan();                        //調用按鍵掃描
  131.                 if(a)
  132.                 {
  133.                         delay=pinglv;
  134.                         P0=sin[k];
  135.                         k++;
  136.                         if(k==64)
  137.                         k=0;
  138.                         while(delay)            
  139.                             delay--;
  140.                 }
  141.                 if(b)
  142.                 {
  143.                          delay=pinglv;
  144.                         P0=juxing[k];
  145.                         k++;
  146.                         if(k==64)
  147.                                 k=0;
  148.                         while(delay)           
  149.                             delay--;
  150.                 }
  151.                 if(c)
  152.                 {
  153.                          delay=pinglv;
  154.                         P0=juchi[k];
  155.                         k++;
  156.                         if(k==64)
  157.                                 k=0;
  158.                         while(delay)            
  159.                             delay--;
  160.                 }
  161.                 if(d)
  162.                 {
  163. ……………………

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


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 粉色午夜视频 | 精品国产青草久久久久福利 | 国产一区精品在线 | 国产一区二区三区四区在线观看 | 精久久久| 能免费看的av | 国产精品成人国产乱一区 | 成人在线播放 | 一级特黄在线 | 黄色免费在线观看网址 | 色姑娘av| xxxxx黄色片 欧美一区免费 | 91精品国产综合久久婷婷香蕉 | 欧美成人精品 | 日韩波多野结衣 | 欧美色综合一区二区三区 | 亚洲国产成人精品女人久久久 | 91精品国产一区二区三区动漫 | 国产成人99久久亚洲综合精品 | 久久久久久中文字幕 | 欧美激情一区 | 91在线一区 | 成人久久18免费网站 | 一区二区三区国产好的精 | 在线一区二区观看 | 国产一区二区在线免费视频 | 国产精品免费一区二区三区四区 | 伊人超碰在线 | 午夜网站视频 | 女女百合av大片一区二区三区九县 | 国产精品久久久久久久久免费桃花 | 欧美日韩在线免费观看 | 亚洲精品黑人 | 欧美久久一区二区 | 91精品成人久久 | 91大神在线资源观看无广告 | 九九热在线免费视频 | 国产精品视频导航 | 91久久电影 | 午夜影视网 | 久久这里只有精品首页 |