找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机怎么通过键盘来给DA设置模拟电压 在线等求助

[复制链接]
跳转到指定楼层
楼主
10黑币
怎么通过键盘来给DA设置模拟电压,这是原理图


  1. /**************************************************************************************
  2. *                DA-PWM输出实验              *
  3. 实现现象: 具体接线操作请参考视频
  4.    下载程序后DA模块上的指示灯呈呼吸灯效果,由暗变亮再由亮变暗
  5. 注意事项:要将AD/DA模块上的短接片将OUT和LED短接,板子丝印上有。                     
  6. ***************************************************************************************/
  7. #include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器
  8. typedef unsigned int u16;   //对数据类型进行声明定义
  9. typedef unsigned char u8;
  10. //--定义使用的IO口--//
  11. sbit PWM=P2^1;
  12. bit DIR;
  13. //--定义一个全局变量--//
  14. u16 count,value,timer1;
  15. /*******************************************************************************
  16. * 函 数 名         : Timer1Init
  17. * 函数功能     : 定时器1初始化
  18. * 输    入         : 无
  19. * 输    出         : 无
  20. *******************************************************************************/
  21. void Timer1Init()
  22. {
  23. TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
  24. TH1 = 0xFF;
  25. TL1 = 0xff;   //1us
  26.   
  27. ET1=1;//打开定时器1中断允许
  28. EA=1;//打开总中断
  29. TR1=1;//打开定时器   
  30. }

  31. /*******************************************************************************
  32. * 函 数 名       : main
  33. * 函数功能   : 主函数
  34. * 输    入       : 无
  35. * 输    出      : 无
  36. *******************************************************************************/
  37. void main()
  38. {
  39. Timer1Init();  //定时器1初始化
  40. while(1)
  41. {
  42.   if(count>100)      
  43.   {  
  44.    count=0;
  45.    if(DIR==1)        //DIR控制增加或减小
  46.    {
  47.      value++;
  48.    }   
  49.    if(DIR==0)
  50.    {
  51.      value--;
  52.    }
  53.    
  54.   }
  55.   if(value==1000)
  56.   {
  57.     DIR=0;
  58.   }
  59.   if(value==0)
  60.   {
  61.     DIR=1;
  62.   }
  63.    
  64.   if(timer1>1000)  //PWM周期为1000*1us
  65.   {
  66.    timer1=0;
  67.   }
  68.   if(timer1 <value)
  69.   {
  70.    PWM=1;
  71.   }
  72.   else
  73.   {
  74.    PWM=0;
  75.   }  
  76. }  
  77. }
  78. /*******************************************************************************
  79. * 函 数 名       : Time1
  80. * 函数功能   : 定时器1的中断函数
  81. * 输    入       : 无
  82. * 输    出       : 无
  83. *******************************************************************************/
  84. void Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
  85. {
  86. TH1 = 0xFF;
  87. TL1 = 0xff;   //1us
  88. timer1++;
  89.     count++;

  90. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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