找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1558|回复: 0
打印 上一主题 下一主题
收起左侧

单片机+DAC0832产生波形程序 通过按键选择 Proteus仿真

[复制链接]
跳转到指定楼层
楼主
上篇的升级版!proteus仿真图和代码:



单片机源程序如下:

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include<ABSACC.H>         
  4. #define uchar unsigned char
  5. #define  data_OUT  XBYTE[0x7FFF]
  6. char code dat[]={
  7.      0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE,
  8.      0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,
  9.      0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,
  10.      0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  11.      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,
  12.      0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDF,0xDD,0xDA,
  13.      0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1,
  14.      0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80,
  15.      0x80,0x7C,0x79,0x76,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51,
  16.      0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27,
  17.      0x25,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A,
  18.      0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  19.      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
  20.      0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x25,
  21.      0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E,
  22.      0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x7E
  23. };
  24. bit flag=0;
  25.   void delay(unsigned  int N)  
  26.   {
  27.   int i;
  28.   for(i=0;i<N;i++);
  29.   }

  30. void conversion_once_0832(unsigned char out_data)
  31.            {
  32.            data_OUT=out_data; //输出数据
  33.            delay(10);         //延时等待转换
  34.             }
  35. uchar  keyscan()
  36. {
  37. uchar key;
  38. if(P1!=0xff)
  39.   {
  40.    delay(61);
  41.    key=P1;
  42.    if(key!=0xff)
  43.     flag=~flag;
  44.     return(key);
  45.   }

  46. }
  47. void triangle()
  48. {
  49.   uchar k;
  50.   for(k=0;k<255;k++)
  51.     conversion_once_0832(k);
  52.   for(;k>0;k--)
  53.      conversion_once_0832(k);
  54. }
  55. void square()
  56. {
  57. conversion_once_0832(0xff);
  58. delay(1000);
  59. conversion_once_0832(0x00);
  60. delay(1000);

  61. }
  62. void juchibo()
  63. {
  64.   uchar j;
  65.   for(j=0;j<255;j++)
  66.    conversion_once_0832(j);
  67. }
  68. void sin()
  69. {
  70. uchar i;
  71. for(i=0;i<255;i++)
  72.    {
  73.     conversion_once_0832(dat[i]);
  74.    }
  75. }
  76. void main()
  77. {
  78. uchar temp;
  79. while(1)
  80.   {
  81.    temp=keyscan();
  82.    switch(temp)
  83.      {
  84.            case 0xfe: do{
  85.                                     triangle();
  86.                                         }while(keyscan()&&(flag==1));break;
  87.            case 0xfd: do{
  88.                                     square();
  89.                                         }while(keyscan()&&(flag==1));break;
  90.            case 0xfb: do{
  91.                                     juchibo();
  92.                                         }while(keyscan()&&(flag==1));break;
  93.        case 0xf7: do{
  94.                                     sin();
  95.                                         }while(keyscan()&&(flag==1));break;
  96.            default: break;
  97.          }
  98.   }

  99. }
  100.             
复制代码

仿真代码51hei附件下载:
DAC0832(总).7z (70.4 KB, 下载次数: 40)


评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表