找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机实现MAX517芯片的D/A转换 程序+电路图。按一次KO键,数字量加一

[复制链接]
跳转到指定楼层
楼主
  1. /*****************************************************************************/
  2. /*功能:实现MAX517芯片的D/A转换。没按一次KO键,数字量加一,******************/
  3. /*显示的模拟量增加一个单位*/
  4. /****************************************************************************/
  5. #include <reg51.h>
  6. #include<intrins.h>
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9. sbit SCL=P1^0;
  10. sbit SDA=P1^1;
  11. sbit K0=P2^0;
  12. void start(void)
  13. {
  14. SDA=1;
  15. SCL=1;
  16. _nop_();
  17. SDA=0;
  18. _nop_();
  19. }
  20. void stop(void)
  21. {
  22. SDA=0;
  23. SCL=1;
  24. _nop_();
  25. SDA=1;
  26. _nop_();
  27. }
  28. void ack(void)
  29. {
  30. SDA=0;
  31. _nop_();
  32. SCL=1;
  33. _nop_();
  34. SCL=0;
  35. }
  36. void send(uchar ch)
  37. {
  38. uchar BitCountter =8;
  39. uchar tmp;
  40. do
  41. {
  42. tmp=ch;
  43. SCL=0;
  44. _nop_();
  45. if((tmp&0x80)==0x80)
  46. SDA=1;
  47. else
  48. SDA=0;
  49. SCL=1;
  50. tmp=ch<<1;
  51. ch=tmp;
  52. BitCountter--;
  53. }
  54. while(BitCountter);
  55. SCL=0;
  56. }
  57. void DACout(uchar ch)
  58. {
  59. start();
  60. send(0x58);
  61. ack();
  62. send(0x00);
  63. ack();
  64. send(ch);
  65. ack();//
  66. stop();
  67. }
  68. void main(void)
  69. {
  70. uchar i;
  71. i=0xff;
  72. while(1)
  73. {
  74. if(!K0)
  75. {
  76. i++;
  77. while(!K0);
  78. }
  79. DACout(i);
  80. }
  81. }
复制代码



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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