交流调压源示例:AD任务程序实现与驱动控制

需积分: 9 1 下载量 176 浏览量 更新于2024-07-12 收藏 444KB PPT 举报
本文档主要介绍了如何在C8051微控制器平台中实现一个应用实例——交流可调稳压源的AD(Analog-to-Digital Converter)任务程序。首先,我们关注的是`task_ad()`函数,这是程序的核心部分,用于处理ADC采样数据并进行电压转换。 该函数首先检查`b_ev_adc`标志位,如果ADC事件发生(表示已完成一次AD转换),则清除标志并将256次AD读取的数值存储到`adc_buf`中。接着,通过将`adc_buf`与预设的`ADC_K`系数相乘,然后除以2^16(即65536)来计算出电压值。这个过程中,使用了联合体`union`来处理数据类型转换,确保取到的电压值精度。最后,将处理后的电压值赋给`ac_v`,这是一个16位变量,除以65536后得到最终的电压值。 稳压源系统由以下几个部分组成: 1. **系统框图**: - 这部分描述了一个简单的硬件接口,通过MOVDPRT指令设置端口地址为4000H,然后循环遍历该地址的数据,执行相应的操作,如取反、比较等,这可能是控制开关的状态检测。 2. **电路框图**: - 提供了交流可调稳压源的电路设计,包括主控单元、显示单元、驱动单元以及两个按键(升压步进和降压步进开关)和两个马达控制信号。 3. **软件框架**: - 包括了C8051的寄存器定义(如ADCON和ADC)和标志位(如`b_ev_adc`、`b_key_pressed`等),这些用于管理ADC的触发、按键输入处理和稳压源的动作控制。 - 定义了多个定时器变量,用于精确的时间控制,这对于实时系统至关重要。 - 电压值的计算、显示步骤的更新、按键事件处理和动作状态管理也在此部分体现。 4. **动作管理**: - 根据`act`变量,程序能够根据按键输入(`b_key_pressed`)以及马达控制信号(`MOTOR0`和`MOTOR1`)执行相应的操作,比如调整电压输出或切换稳压源方向。 通过以上分析,我们可以看到此程序的主要知识点包括: - C8051单片机的AD转换操作,特别是使用联合体处理多字节数据转换。 - 微控制器的中断管理和事件处理,如ADC事件标志`b_ev_adc`的检测和清除。 - 系统时间管理,利用定时器进行10ms和1/4s周期的计时。 - 用户交互,通过按键控制和显示系统的调节过程。 - 简单的稳压源控制系统设计,涉及硬件电路布局和软件逻辑的协同工作。