2009NEC杯大学生电子设计全国二等奖(A题)源代码(单片机部分)
该文件涉及的是2009年NEC杯全国大学生电子设计大赛的一个二等奖项目,主要讲述了使用FPGA(Field-Programmable Gate Array)和单片机实现的光伏并网发电模拟装置的源代码,尤其是单片机部分。在这个项目中,单片机用于采集和处理ADC(Analog-to-Digital Converter)数据,以及与FPGA的通信,以实现对光伏发电系统的监控和调节。 在代码中,可以看到单片机采用了STC12C5A60S2型号,这是一种8位微控制器,具有内置的10位ADC功能。`reg52.h`和`intrins.h`是STC单片机常用的头文件,前者包含了一些特定于STC单片机的寄存器定义,后者则包含了内联汇编指令。 代码中的`POWER`、`FLAG`和`START`是ADC操作相关的标志位。`POWER`表示ADC电源状态,`FLAG`标记ADC采样是否完成,而`START`用于启动ADC采集过程。`P1ASF`是P1口的特殊功能寄存器,用于配置P1.0和P1.1作为ADC输入。`ADC_CONTR`寄存器设置ADC的工作模式和通道选择,`ADC_RES`和`ADC_RESL`分别存储ADC转换得到的高8位和低2位数据。`AUXR1`寄存器用来设定ADC的转换速率。 `Chan_set`函数用于设置ADC采集通道,这里设置了P1.0作为输入,采集周期为70个时钟周期。`Get_dat`函数则负责对输入电压进行10次采样并计算平均值,以提高数据精度。在`main`函数中,单片机根据采集到的电压值(`date`)调整发送给FPGA的SPWM(Pulse Width Modulation)脉宽,以控制光伏发电系统的输出,确保电压稳定在设定范围。 `FPGA_DAT`变量用于存储发送给FPGA的SPWM数据,通过`P0`口输出。当电压过高或过低时,通过增加或减小`FPGA_DAT`的值来调整SPWM的占空比,从而改变输出电压。同时,程序还包含了一个欠压指示灯(`led1`),当检测到电压低于一定阈值时,LED灯会交替闪烁,提示系统存在欠压情况。 这个项目展示了如何使用单片机配合ADC进行电压采样,以及如何基于采样数据通过FPGA的SPWM控制光伏发电系统的电压稳定,同时实现欠压保护功能。整个方案对于理解嵌入式系统在能源管理中的应用以及单片机与FPGA的协同工作具有很好的参考价值。
- bndanshen2012-12-06这也能获奖?
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助