找回密码
 立即注册
搜索
热搜: 中医 针灸 咳嗽
查看: 185|回复: 0

[电源变换芯片] LM138

[复制链接]

3711

主题

1

回帖

1万

积分

管理员

积分
11949
发表于 2023-3-1 08:55:28 | 显示全部楼层 |阅读模式
  1. /**************************************************************

  2. 文件名:main.c
  3. 作者:ChatGPT
  4. 日期:2023-03-01
  5. 描述:该代码是关于使用外部芯片LM138的单片机程序。
  6. LM138是一个高性能可调正/负电压稳压器芯片,其具有高精度、
  7. 低漂移、短路保护等特性。本程序将LM138的功能封装在
  8. 不同的函数内,main函数直接调用。使用时应注意电压和温度
  9. 范围。
  10. 器件:LM138
  11. 作用:可调正/负电压稳压器
  12. 电压宽度:1.2V - 33V
  13. 温度范围:0℃ - 125℃
  14. 注意事项:1. 电压范围应在1.2V - 33V之间
  15.      2. 温度应在0℃ - 125℃之间
  16. **************************************************************/

  17. #include <reg52.h>

  18. // LM138芯片控制引脚定义
  19. sbit LM138_ADJ = P1 ^ 0; // 调节引脚
  20. sbit LM138_OUT = P1 ^ 1; // 输出引脚
  21. sbit LM138_IN  = P1 ^ 2; // 输入引脚

  22. // 函数声明
  23. void LM138_SetVoltage(unsigned int voltage);
  24. void LM138_Enable();
  25. void LM138_Disable();
  26. void delay(unsigned int t);

  27. void main()
  28. {
  29.     LM138_Enable();       // 使能LM138芯片
  30.     LM138_SetVoltage(5);  // 设置输出电压为5V
  31.     delay(5000);          // 延时5秒
  32.     LM138_SetVoltage(12); // 设置输出电压为12V
  33.     delay(5000);          // 延时5秒
  34.     LM138_Disable();      // 禁用LM138芯片
  35.     while (1)
  36.         ;
  37. }

  38. /**************************************************************

  39. 函数名:LM138_SetVoltage
  40. 描述:设置LM138的输出电压
  41. 输入:voltage - 设置的电压值
  42. 输出:无
  43. **************************************************************/
  44. void LM138_SetVoltage(unsigned int voltage)
  45. {
  46.     unsigned int dac = voltage * 16.5;                    // 计算DA转换值
  47.     LM138_ADJ        = 1;                                 // 设置调节引脚为高电平
  48.     P0               = (P0 & 0xF0) | ((dac >> 8) & 0x0F); // 设置高四位
  49.     P2               = dac & 0xFF;                        // 设置低八位
  50.     LM138_ADJ        = 0;                                 // 设置调节引脚为低电平
  51. }
  52. /**************************************************************

  53. 函数名:LM138_Enable
  54. 描述:使能LM138芯片
  55. 输入:无
  56. 输出:无
  57. 注意:在使用LM138芯片前必须先调用该函数
  58. **************************************************************/
  59. void LM138_Enable()
  60. {
  61.     LM138_ADJ = 0; // 设置调节引脚为低电平
  62.     LM138_OUT = 0; // 设置输出引脚为低电平
  63.     delay(5);      // 延时5毫秒等待芯片稳定
  64. }

  65. /*
  66. LM138_Enable函数会将输出引脚和调节引脚设置为低电平,使芯片进入关断状态。

  67. LM138_SetVoltage函数首先计算出DA转换值,然后将高四位和低八位分别设置到P0和P2口,最后将调节引脚设置为高电平,使芯片开始工作。

  68. delay函数用于实现延时,输入参数t表示延时的毫秒数。

  69. 在main函数中,首先调用LM138_Enable函数使能芯片,然后调用LM138_SetVoltage函数分别将输出电压设置为5V和12V,延时5秒后再次调用LM138_SetVoltage函数将输出电压设置为12V,最后调用LM138_Disable函数禁用芯片。

  70. /**************************************************************

  71. 函数名:LM138_Disable
  72. 描述:禁用LM138芯片
  73. 输入:无
  74. 输出:无
  75. **************************************************************/
  76. void LM138_Disable()
  77. {
  78.     LM138_ADJ = 1; // 设置调节引脚为高电平
  79.     LM138_OUT = 1; // 设置输出引脚为高电平
  80. }
  81. /**************************************************************

  82. 函数名:delay
  83. 描述:实现延时
  84. 输入:t - 延时的毫秒数
  85. 输出:无
  86. **************************************************************/
  87. void delay(unsigned int t)
  88. {
  89.     unsigned int i, j;
  90.     for (i = 0; i < t; i++) {
  91.         for (j = 0; j < 125; j++)
  92.             ;
  93.     }
  94. }
复制代码


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

本版积分规则

Archiver|手机版|小黑屋|私人站点 ( 冀ICP备2023028127号-2 )

GMT+8, 2025-8-23 06:09 , Processed in 0.070420 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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