基于单片机的太阳能采集系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的太阳能采集系统设计
摘要
为践行保护环境节约能源的基本国策,开发新能源已成为发展的首要任务。
太阳能具有无污染﹑储量大但利用率较低的特点,因此对太阳能发电方面的研究具有很大的价值。
本设计采用STC89C52单片机作为主控元件,利用传感器(光敏电阻)将接收到的光信号转换成电信号,输入以PCF8591为核心的AD转换电路进行DA转换,然后经过AD电压采样并输入单片机,经处理后最后经过驱动电路从而控制步进电机的正反转,使太阳板始终垂直于太阳光线。
太阳能板将所接收的太阳能转换为电能,并通过稳压电路最后存入电池以供本系统及其他用电器件的使用。
经仿真及实验证明,本系统具有太阳能跟踪采集的功能,能做到同时对高度角和方位角进行跟踪,可根据用户的需求自行选择自动跟随或者手动控制。
关键词:单片机,光敏电阻,太阳能跟踪,步进电机
Abstract
In order to implement the basic national policy of protecting the environment and saving energy, the development of new energy has become the primary task. Based on the characteristics of non-pollution, renewable, large reserves but low utilization rate of solar energy, it has great value for the research of solar power generation.
In this design, STC89C52 single chip computer is used as the main control element, and the sensor (photoresistor) is used to convert the received optical signal into electrical signal. The AD conversion circuit with PCF8591 as the core is input for DA conversion. Then the AD voltage is sampled and input into the control core single chip computer. After processing, the driver chip is used to control the forward and reverse of the stepper motor, so that the solar panel is always connected with the Tai. The sunlight line is vertical.The solar panel converts the received solar energy into electricity, and finally stores it in the battery through a voltage stabilizing circuit for the use of the system and other electrical devices.
The simulation and experiment prove that the system has the function of solar energy tracking and acquisition. It can track the altitude angle and azimuth angle at the same time. It can automatically follow or manually control according to the needs of users.
Key words:Single Chip Microcomputer;photosensitive resistance;he sun tracking; stepper motor
目录
摘要 (II)
Abstract (III)
目录 (IV)
1 引言 (1)
1.1 背景及意义 (1)
1.2 国内外研究现状 (1)
2 系统的总体设计及方案选择 (2)
2.1 系统总体设计要求 (2)
2.2 系统总体设计分析 (2)
2.3 方案选择 (3)
2.3.1 太阳跟踪方式 (3)
2.3.2 主控模块 (3)
2.3.3 数据采集模块 (4)
2.3.4 输入模块 (4)
3 软硬件介绍 (5)
3.1 软件介绍 (5)
3.1.1 Keil C51编译软件 (5)
3.1.2 Proteus仿真软件 (5)
3.2 硬件介绍 (5)
3.2.1 STC89C52单片机 (5)
3.2.2 PCF8591 (6)
3.2.3 ULN2803 (6)
4 硬件电路设计 (8)
4.1 单片机控制电路 (8)
4.2 光电转换电路 (8)
4.3 AD转换电路 (9)
4.4 步进电机驱动电路 (10)
4.5 单片机外围电路 (10)
4.5.1 电源模块电路 (10)
4.5.2 按键电路 (10)
4.5.3 指示灯电路 (11)
4.6 系统总电路 (11)
4.7 系统实物平台搭建............................ 错误!未定义书签。
5 系统软件设计 (13)
5.1 按键部分子程序 (13)
5.2 指示灯部分子程序 (14)
5.3 主程序模数转换 (14)
5.4 驱动电路子程序 (14)
5.5 AD电压采样子程序............................ 错误!未定义书签。
6 仿真与调试 (16)
6.1 仿真 (16)
6.1.1 初始状态 (16)
6.1.2 自动模式 (16)
6.1.3 手动模式及按键控制 (17)
6.2 调试 (18)
6.2.1 初始状态 (18)
6.2.2 自动模式 (19)
6.2.3 手动模式 (19)
结论 (21)
参考文献 (22)
附录 (23)
致谢 (43)
咸阳师范学院2019届本科毕业论文(设计)
1引言
1.1背景及意义
随着社会的飞速发展,人类对电的使用越发广泛,所以对能源的需求也极速增长。
全世界在25年间消耗的能源增长了69.7%,未来人类对能源的需求若一直如此速度增长,那地球上的石油将在40年间被使用完,加上天然气和煤也不过数百年的期限。
不仅如此,我们大量使用化石能源已经开始造成全球气候变暖,严重污染了我们的生活环境[1]。
因此,在当今能源短缺的情况下,对新型可再生能源的开发是各国迫在眉睫的工作,风能、水能、潮汐能、生物质能等它们都属于可再生能源,且都来自于太阳能,所以,太阳能是那些可再生能源中最主要的基本能源[2]。
而太阳能作为一种储量极其丰富,具有普遍性、经济性且清洁无污染的能源,在能源利用方面具有独特的优势[3,4]。
我国疆土辽阔,资源丰富,尤其是太阳能资源极其丰富,充分利用太阳能的优势,对于解决我国能源短缺问题有着非常重要的意义[5]。
由于太阳能存在着光能密度低、间歇性、空间分布不断变化的缺点,因此,提高太阳能发电系统的太阳能利用率、降低发电系统建造成本是太阳能应用领域面临的两个主要难题,太阳跟踪系统为解决这一问题提供了可能[6]。
1.2国内外研究现状
国外对太阳能跟踪研究较为领先。
早在二十世纪50年代,太阳能的开发领域已经出现了两大技术突破:一是1954年在美国贝尔的实验室研制出6%实用型单晶硅电池,二是1955年以色列Tabor提出选择性吸收表面概念和理论并研制成功选择性太阳吸收涂层。
在此之后,1997年美国的Blackace研制出了单轴的跟踪器,此装置是根据赤道坐标系下的太阳运行原理完成东西方向的自动跟踪,但南北方向则需要通过手动的调节,接收器的接收效率提高了15%。
我国很多科学家也都陆续展开了这方面的研究。
1994年《太阳能》杂志简述了单轴液压的自动跟踪器,完成了单向跟踪,国家气象局计量站在1990年研制出了FST型全自动太阳跟踪器,成功用于太阳辐射观测。
基于单片机的太阳能采集系统设计
2系统的总体设计及方案选择
2.1系统总体设计要求
本课题的要求是结构简单,性价比高;电路设计应力求简单整洁,并且整个系统要便于安装和维护;考虑到使用过程中的天气变幻所产生的影响,执行器件要求耐用且抗干扰性强,避免频繁发生故障。
本设计的目的是提高太阳能的利用率,通常情况下太阳的位置总是不停变化的,若采用固定的接收装置,则不能始终垂直太阳光,只有在固定的时间段内可以吸收到较强烈的太阳能,而这段时间之外太阳能板的采光面积则大大减小。
因此,若需太阳能吸收效率有所提高,必须要使太阳能吸收装置与太阳运行轨迹一致,从而可以持续吸收太阳能[7]。
设计要求如下:
1.本系统能够被人为控制,不需要其工作时可以进行关闭。
2.在跟踪过程中,确保太阳能板所接受光源的面积达到最大。
在本设计中,要求硬件部分和软件部分能准确合理的配合和工作。
2.2系统总体设计分析
图5 系统总体设计方案
本部分主要介绍总体设计的思路及主要电路模块,其中主要电路模块有光电转换电路,AD转换电路,单片机控制电路,电机驱动电路。
软件方面:以单片机为主控模块,先经过数模转,再经由单片机识别及处理,输出控制数字信号以控制电机的正反转。
硬件方面:采用双轴电机对于方位角和高度角同时进行跟踪,由光敏电阻,控制及驱动电路,方位角及高度角调整机构组成。
光敏电阻将接收到的光信号转换成电信号,然后经过信号处理及控制电路后,由控制电路输出脉冲信号驱动方
咸阳师范学院2019届本科毕业论文(设计)
位角调整机构和高度角调整机构实现相应的位置调整[8]。
2.3方案选择
2.3.1太阳跟踪方式
常用的基于单片机的太阳能跟踪方式有两种:光电跟踪和太阳角度跟踪(也称视日运动轨迹跟踪)[9]。
方案一:光电跟踪
光电跟踪是利用光敏传感器(如光敏电阻)对太阳光的特性,光敏电阻经阳光照射输出微弱电信号,经过放大电路放大之后输入信号处理电路,由执行机构相应调整角度以完成对太阳光的追踪。
光电追踪能在较好的天气条件下提供较高的精度,结构设计也较为简单。
方案二:视日运动轨迹跟踪
视日运动轨迹,,即根据系统时钟获取实时时间,然后通过预先设定的函数计算出太阳的高度角和方位角优点是结构简单,但是由于入射光线不能始终与主光轴平行,收集太阳能的效果并不理想[9]。
本设计采用方案一中的光电跟踪,利用两个电机对太阳高度角和方位角同时跟踪,提高设备追踪的灵敏度。
2.3.2主控模块
本模块以单片机为核心元件,而常用单片机分别有AT89C5X系列和STC89C5X 系列,由于本设计所编写程序较多,所以可在AT89C52和STC89C52之间进行选择。
方案一:AT89C52
AT89C52是ATmel公司生产的一款老式单片机,必须通过编程器编程,12T模式导致运行速度过慢,8K固定程序空间不可以选择并且4.75V-5.25V的工作电压范围较窄。
方案二:STC89C52
STC89C52为宏晶公司生产,该单片机具有低功耗、高性能、应用广泛、使用寿命长等主要特点,功能上相较于AT89C52增加了AD数模转换,集成度更高,且具有ISP(在系统可编程),无需专用编程器,可通过串口(P3.0/P3.1)直接下载用户程序,工作电压为3.3V-5.5V。
为了使用方便,系统要求可以进行在线改写,尽可能少使用外围扩展芯片,提高系统运行的可靠性,要求使用的单片机具有片内电擦除可编程只读存储器,基于以上原因,选用STC89C52单片机[10]。
基于单片机的太阳能采集系统设计
2.3.3数据采集模块
本设计需要对现场光线进行采集,系统采用光电传感器进行采集,根据传感器种类有两种采集方案,方案一是选用光电管,方案二是光敏电阻,具体方案如下所示:
方案一:光电管
光电管作为光电转换器件,其原理是基于外光电效应,可将光信号转换为电信号。
光电管灵敏度低、体积大且易破损,已被固体光电器件所代替。
方案二:光敏电阻
光敏电阻也是光敏传感器中最简单的电子器件。
它是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,当它受到光的照射时,半导体片(光敏层)内就激发出电子—空穴对,参与导电,使电路中电流增强[11]。
光敏电阻因为其环氧树脂胶封装,可靠性好,反应速度快,灵敏度高,体积小,光谱特性好的特点,得到了广泛的应用。
例如在太阳能草坪灯、监控器、摄像头、航标、卷带自停装置及防盗报警装置中等。
结合以上方案,由于方案一中对于电路设计需要灵敏度高、体积小、反应快等特性,而光电管不符和目的实现,因此选择方案二。
2.3.4输入模块
本设计中的输入模块功能是设置手动复位及手动调整太阳能板的转动方向,系统采用按键来进行电机转动的以及模式切换。
根据按键种类确定有两种方案,方案一是采用独立式按键,方案二是采用矩阵式按键。
方案一:独立式按键
独立式按键构成的按键电路比较简单,设计按键程序也比较容易,但按键数量不宜太多,原因是容易混杂。
方案二:矩阵式按键
矩阵式按键适用于控制芯片接口多的系统,对于输入模块可实现较多功能。
结合以上方案得出方案一更适用于本设计,缘于单片机接口相对较少,而且本设计的输入模块所涉及的按键数目不多,因此选择方案一。
3软硬件介绍
3.1软件介绍
3.1.1 Keil C51编译软件
Keil C51是一款不仅可以使用C语言而且还能够使用汇编语言进行编程的编译开发软件。
在功能上,Keil C51包括了程序编写、查错、以及仿真调试等功能。
在使用过程,其对编译所用语言有一定的偏差,与汇编语言相比,采用C 语言所编写的目标系统软件具有更强的结构性以及代码可读性,极大地缩短开发周期,对程序的改进和扩充也更加方便[12]。
另外其兼容单片机C语言,并且有一套丰富的库函数系统。
本文设计采用此软件进行单片机C语言编写并生成hex 文件。
3.1.2 Proteus仿真软件
Proteus是一款基于Windows操作系统下的集电路图绘制、模数电路仿真、分析集成电路等功能于一体的仿真软件,应用十分广泛,操作方便。
在硬件仿真方面,Protues不仅可以对现今大部分的单片机控制系统以及各种各样的外部设备电路进行仿真,而且其元件库里元器件种类繁多,囊括了市面上绝大部分。
对于软件调试操作上,Protues可以对市面上常见的编译器进行编译,比如MATLAB、KEIL以及IAR等,并且对于具体的调试操作,它有多种调试方式,比如全速调试、单步调试以及断点调试等。
本设计采用该软件进行电路图绘制并将hex程序文件导入进行仿真。
3.2硬件介绍
3.2.1 STC89C52单片机
STC89C52是单片机领域一款常见的微型处理器,该单片机与工业标准的MCS-51相兼容,内含8 K字节可编程闪速存储器,片上集成512字节RAM,通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,共3个16位定时器/计数器,即定时器T0、T1、T2,外部中断4路,下降沿中断或低电平触发电路。
STC89C51拥有空闲及掉电保护两种可以进行选择使用的节电模式[13]。
STC89C52引脚图如下所示:
图1 STC89C52单片机
3.2.2 PCF8591
PCF8591 是一个单片集成、单独供电、低功耗、8-bit CMOS 数据获取器件。
PCF8591 为单一电源供电(2.5 6 V)典型值为 5 V; 1 路 8 位 D/A 输出,内含有 DAC的数据寄存器。
PCF8591 的功能包括多路模拟输入、内置跟踪保持、8-bit 模数转换和 8-bit 数模转换。
PCF8591内部结构及引脚图如下所示:
图2 PCF8591
3.2.3 ULN2803
ULN2803是由8个NPN达林顿晶体管构成,非常适合逻辑接口电平数字电路(例如 TTL,CMOS 或 PMOS 上/ NMOS)和较高的电流/电压,所有设备功能由集电极输出和钳位二极管瞬态抑制。
该电路为反向输出型,即要使输出端导通工作需要输入低电平电压。
ULN2803内部结构及引脚图如下所示:
图4 ULN2803引脚图及内部结构图
4硬件电路设计
4.1单片机控制电路
由STC89C52单片机、时钟电路以及复位电路构成单片机最小系统,加上外围扩展电路能够实现对绝大多数较为复杂的问题处理。
STC89C52单片机是最早期也最典型的产品,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了通用编程器,而且速度更快[14]。
图6 单片机最小系统
4.2光电转换电路
光敏电阻将光信号转换成电信号,经过信号处理并传入单片机,由单片机识别处理并发出控制信号控制步进电机旋转,使得太阳能板始终垂直于入射光线,从而使太阳能的利用效率达到最高。
其中光电检测A对左远离光线进行检测,当光线远离电池板时A检测会给单片机信号,单片机控制驱动芯片驱动电机M1正转使电池板跟随光线左转;光电检测B对右远离光线进行检测,当光线远离电池板时B检测到并实时传输给单片机信号,单片机控制驱动芯片驱动电机M1反转使电池板跟随光线右转;光电检测C与D对太阳垂直角度的变化进行检测,并将检测到的光线变化信号传输给单片机,单片机进行进一步处理后控制驱动芯片驱动电机M2的正反转,从而实现电池板垂直角度的调整[15]。
光敏电阻的分布如图所示:
图7 光敏电阻模型
图8 光电转换电路
4.3AD转换电路
1.AD转换模块的组成
AD转换电路包括电压信号输入,AD转换,AD电压采样以及信号输出。
2.AD转换原理及电路设计
由光电转换电路所得到的信号为模拟信号,所以采用AD转换器,将模拟信号转换为数字信号,然后通过单片机进行处理。
本设计以PCF8591芯片为AD转换模块的核心器件,在与 CPU的信息传输过程中仅靠时钟线 SCL 和数据线 SDA 就可以实现。
具体电路如下图所示:
图9 AD转换模块电路
4.4步进电机驱动电路
步进电机转动并不只是依靠电源,必须连接合适的驱动电路才能实现功能。
步进电机驱动电路由逻辑电路与功率电路(power stage)组成,驱动电路以ULN2803为核心芯片构成。
基本工作原理:步进电动机的工作电压一般为5V,驱动芯片ULN2803的10脚接步进电动机的工作电压5V,输入信号接单片机P2口,由单片机输出控制信号来决定电机的转向。
驱动电路如下图所示:
图10 驱动电路
4.5单片机外围电路
4.5.1电源模块电路
其中SW1是六脚开关按键。
图11 电源电路
4.5.2按键电路
其中开关S1用来进行自动和手动模式的切换,默认状态为为自动模式;手动模式下,S2,S3,S4,S5则根据需求用来控制步进电机的正反转。
图13 按键电路
4.5.3指示灯电路
系统默认模式为自动模式,启动系统后只有LED1点亮,当按下切换按键S1时,处于手动模式,LED2点亮,LED1随之熄灭。
图14 指示灯电路
4.6系统总电路
本系统的总电路图如下所示,图中左上位置分别是AD转换电路、指示灯电路与复位电路,左下为按键电路及晶振电路。
右边从上至下分别是光信号采集电路,电能存储电路和电机驱动电路,正中间是核心处理器STC89C52单片机。
图14 总电路图
5系统软件设计
本设计采用STC89C52单片机作为核心元件,通过keil编程软件编写程序,对于电机转动的步进值,可设上下左右四个方向的光敏电阻的电压值分别为U1、U2、U3、U4,设精度为10。
将写好的程序运行至无错误出现,再烧入仿真软件中进行仿真,确保仿真能够顺利进行之后将程序直接烧入单片机中。
画流程图如下:
图15 软件流程图
5.1按键部分子程序
按键电路默认状态为自动模式。
if(!ENTER)
{
Delay_ms(20);
while(!ENTER);
k++;
}
5.2指示灯部分子程序
LED1输出高电平说明此装置在自动模式下,LED2同理。
if(k%2 == 0)
{
LED1 = 1;
LED2 = 0;
5.3主程序模数转换
数模转换也是本设计的重要组成部分,光电转换电路采集的电压值输入到AD模块后,经由PCF8951电压采样输出数字控制信号,再将信号输入单片机,从而控制步进电机正反转。
流程图如下:
图4.2 AD模块流程图
本设计以PCF8951作为AD转换模块的核心芯片,它有4路8位A/D输入,自带ADC数据寄存器,所以程序分为以下四种情况。
Case0是用来读取PCF8591芯片第一通道采集的模拟量;0x41是控制发送的字节;在AD模块中,利用芯片PCF8951,输入和输出都进行了电压保持采样,保证了输入和输出数据相同,确保数据的准确性;ADC是用来寄存每一通道输出的数据。
其余通道同理,程序中最后一个if语句是指在手动模式下的操作。
5.4驱动电路子程序
本系统中四个光敏电阻分布在上下左右四个方向,将精度值设置为10,在
阳光照射下产生电压,下方电压小于上方电压或者两方电压值差大于10,或者手动模式下按下向下的按键,水平电机反转;若下方电压大于上边电压或者两边电压值差大于10,或者手动模式下按下向上的按键,水平电机正转,左右同理。
6仿真与调试
6.1仿真
在Windows10/64位操作系统的PC上,主频1.9GHZ、内存4GB,用Protues8和Keil4进行仿真。
6.1.1初始状态
初始化状态的仿真如下图所示,默认初始状态为自动模式,图中指示灯电路的黄色发光二极管亮起,蓝色发光二极管熄灭;光电转换模块中的四个光敏电阻分布在上下左右,其中上下左右的模拟光照强度初始值设10;右下角为按键模块,其中最中间的为自动手动切换按钮,其余四个分别用来控制电机转向;步进电机接通电源,由于光信号采集及处理需要过程,两个电机初始转动角度皆为零。
图12 初始状态
6.1.2自动模式
自动模式仿真如下图所示,图中指示灯电路的黄色发光二极管亮起,表示此时为自动模式,分别改变上下左右光敏电阻所采集的光照强度以模拟太阳光的位置及强度变化。
如图所示上下左右皆为20,步进电机则根据光照强度的变化进
行转动,控制上下转动的电机角度为+34.1,控制左右转动的电机角度为+34.0。
图13 自动模式
6.1.3手动模式及按键控制
手动模式下仿真如下图所示,图中蓝色指示灯亮起,表示此时为手动模式,手动模式下光照强度的变化则不再影响电机转向,太阳能板所朝方向可通过上下左右四个按钮来调节,如仿真图中通过手动调节使得上下电机转动角度为-118,左右电机转动角度为+210。
如下图所示:
图14 手动模式
6.2调试
本系统调试上是对太阳能进行实时跟踪采集,有自动和手动两种模式可供用户选择,并将采集到的太阳能转换为电能,一部分用来为本系统供电,另一部分则可以供其他设备使用。
6.2.1初始状态
系统上电以后,绿色指示灯亮起,默认状态为自动模式。
如下图所示:
图19 开机状态
6.2.2自动模式
在正常工作下,由于默认初始状态为自动模式,系统上电以后绿色指示灯点亮,太阳能板自动转向光源所在方向,改变光源的位置,太阳能板也随之改变如下图所示:
(a)正常工作
图20 自动模式
6.2.3手动模式
按下中间的切换按钮由自动模式切换至手动模式,通过上下左右四个按钮来控制步进电机(即太阳能板)的转动方向。
如下图所示分别为四个方向的控制:
(a )上 (b )下
图21 手动模式
结论
本设计采软硬件相结合的设计方法,以STC89C52单片机作为整个系统的核心控制芯片,它的程序指令快速简单,硬件设计也相对简单方便,内涵资源丰富,驱动力强,保证系统有快速、灵敏的反应。
在本次课题研究中发现了许多设计之初未考虑到的问题,而在不断地实验和检测过程中不仅解决了大多数问题,同时也学到了相当丰富的知识,尤其是实物的焊接不但需要足够的耐而且逻辑条理清晰也更为重要。
经实验证明,本系统具有太阳能跟踪采集的功能,能做到同时对高度角和方位角进行跟踪,可根据用户的需求自行选择自动跟随或者手动控制。
广泛适用于家庭、道路草坪以及各种具有用电需求的地方。
由于时间不足,本设计尚有一定需要改进的方向,在下一步的研究中可以继续完善其未开发的功能。
参考文献
[1]Cedric Philibert(2005).”The Present and Future use of Solar Thermal
Energy as a Primary Source of Energy ”.IEA.Archived from the original on[M] 2011-12-12.
[2]李申生.太阳能[M].北京:北京人民教育出版社,1988:12-14.
[3]李仁浩,龚思敏,杨帆.基于单片机控制太阳能智能跟踪控制系统的设计[J].仪表技术与传感器,2015(4):51-53.
[4]刘剑,李彤,陈兆华.太阳能电池板自动跟踪系统[J].现代建筑电气,2016
(2):58-61.
[5]韩竺秦,牛王元,李玉华.基于STC89C52的太阳能跟踪系统设计[J].电子质量,2016(2):31-34.
[6]廖锦城.计算机控制双周太阳能跟踪及系统其偏差检测[D].武汉理工大学,2008年.
[7]陈维,李戬洪.太阳能利用中的跟踪控制方式的研究[J].能源工程,2003,(03):18-21.
[8]王雪文.太阳能电池板自动跟踪控制系统设计[J].西北大学学报(自然科学版). 2004,34(2):163-164.
[9]孙茵茵,鲍剑斌,王凡.太阳自动跟踪器的研究[J].机械设计与制造,2005(7): 157-159
[10]薛建国.基于单片机的太阳能电池自动追踪系统的设计[J].长春师范学院学报,2005,24(3):26-30.
[11]周兴华.光敏器件[J].电子世界,1999,(12):53-54.
[12]李亚明. 多功能电路板检测系统研究[D].长春理工大学, 2013
[13]张公忠.智能建筑技术与应用(第一版)[M].北京:中国建筑工业出版社,
2001.
[14]James F.Cox.Fundamentals of linear electronics:integrated and discrete. Cengage Learning[M]. 26 June 2001[20 August 2011].
[15]余泽通,宋长源.硅光电池板自动跟踪太阳机械装置的设计[J].新乡学院学报,2008(3):70-71
附录
#include<reg52.h>
#include<stdio.h>
#include "PCF8591.H"
#define uchar unsigned char
#define uint unsigned int
#define PCF8591 0x90 //PCF8591 地址
sbit ENTER = P3^6;
sbit UP = P3^4;
sbit DOWN = P3^5;
sbit LEFT = P3^3;
sbit RIGHT = P3^7;
sbit LED1 = P1^0;
sbit LED2 = P1^1;
uchar Motor_Down[4]={0x08,0x04,0x02,0x01}; uchar Motor_Up[4]={0x01,0x02,0x04,0x08};
uchar Motor_Right[4]={0x10,0x20,0x40,0x80}; uchar Motor_Left[4]={0x80,0x40,0x20,0x10};
unsigned char AD_CHANNEL;
//延时函数
void Delay_ms(uint jj)
{
uint ii;
while(jj--)
for(ii=0;ii<125;ii++);
}
void UART_Init(void)
{
TMOD = 0x20; //定时器模式选择
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
}
/******************************************************* *************
* 名称: PSend_Hex()
* 功能: 发送字符串函数,可控制发送长度
* 变量: 无
* 返回值: 无
******************************************************** ************/
void Send_Hex(unsigned char *p,unsigned char num)
{
while(num--) //剩余发送的字符数。