谁会能写段STM32关于红外遥控控制器LED灯的程序

stm32 中断串口控制LED灯
12:59:37来源: 51hei 关键字:&&&&
#include "f10x.h"
#include "usart.h"
#include "led.h"
/***********************************************************************
***********************************************************************/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
//void delay(vu32 nCount) //软件延时
// for(; nCount != 0; nCount--);&&&
/***********************************************************************
************************************************************************/
&RCC_Configuration();//系统时钟配置
&NVIC_Configuration();//中断配置
&GPIO_Configuration();//GPIO口配置
&LED_Init();
&while(1)&&&&&&&&&
& while(usart_rx_sta&0x80)
&& a=usart_rx_buf[1];
&& if(a == 0x01)
&&& GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_SET);
&&& GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_RESET);
//&&& usart_rx_sta=0;
//&&& usart_rx_time=0;
//&&& usart_tx_buf[0]=0x01;&&&&& //将接收到的串口数据,发送出
//&&& usart_tx_time=1;
//&&& USART1_SEND();
&&&&&& printf("绿灯灭,红灯亮
&&& usart_rx_buf[1]=0x00;&&
&& if(a == 0x02)
&&& GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_RESET);
&&& GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_SET);
//&&& usart_rx_sta=0;
//&&& usart_rx_time=0;
//&&& usart_tx_buf[0]=0x02;&&&&& //将接收到的串口数据,发送出
//&&& usart_tx_time=1;
//&&& USART1_SEND();&
&&&&&& printf("绿灯亮,红灯灭
&&& usart_rx_buf[1]=0x00;&&&&&&&&&&&&&&&&
&&& usart_rx_sta=0;
&&& usart_rx_time=0;&&&
&& }&&&&&&&&&
& }&&&&&&&&
//发送AA 01 AB BB(注:串口助手发 使用16进制);绿灯灭,红灯亮(注:串口助手收 不使用16进制)
//发送AA 02 A8 BB(注:串口助手发 使用16进制);绿灯亮,红灯灭(注:串口助手收 不使用16进制)
/*****************************************************************************
*****************************************************************************/
注:使用的ALIENTEK开发板,参考正点原子部分子程序
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
网友正在学习IC视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
STM32学习之路-LCD(3)
相关关键词
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。我的STM32主控红外遥控双轮平衡小车
&&我的红外遥控双轮平衡小车程序初步完整,STM32F103ZET6主控,整个LCD显示,MPU6050数据读取,角度计算,卡尔曼滤波,PID算法,PWM输出,红外遥控,都已完成,还剩下最后PID的几个具体参数的调试了,这个需要等我的硬件部分完成之后开始,下面附上我初步的工程程序的链接,已经编译OK了的。,
后面会继续更新。包括硬件部分。
最近在硬件调试时,电路哥哥模块都链接好之后,接上12V驱动电机的电源之后,把我的STM32的板子给烧了,具体原因还在找,估计得加上光耦隔离。需要做好足够的保护措施才是,确实我的STM32在连接那个L298N的驱动时候就遇到了显示的问题,开始没太在意,最后给L298N接上12V的时候,整个就烧了,虽然没有和STM32直接相连。最开始接上6V(给L298N芯片供电的,理论上应该是5V)时,TFT显示等等都是没有问题的,然后给编码器接上电池(3.7V的,3V到5V的都可以),接着给L298N接上12V的,然后TFT屏就白了,不能显示东西了,但这个时候烧录程序什么的都是可以进行的,而且,烧录我原来的程序,也就是没有驱动电机的,而只是单纯地显示MPU6050参数的程序是可以正常运行的,而且TFT是可以正常显示的,烧录进后面完整的通过定时中断方式输出PWM的程序时,屏幕就无法显示了,我后来认为是那个编码器的电源没有与单片机共地,然后我引了一条线与单片机共地,再接上12V电源,再给单片机供电时,发现板子上没有任何反应了,并且发现UART模块发热很严重,一插上板子,那上面的灯就不亮了,板子上的灯根本没有反应了,通过其他端口供电也米有反应,果然是电源端与地段短路了,通过万用表也测出来了,但无法找出是哪里发生短路了,估计是哪里被击穿了吧。后来我看了下这个板子的系统电路图,他们的电源端和地端之间都是接有电容的,我想很可能是某个电容被击穿了,导致短路。电机启动瞬间会产生尖峰脉冲会对控制器产生影响。
复制他人(如图为L298组成的电机控制,MCU是STM32F103RBT6,电源12V,经过LM2676转换5V供给板上5V的芯片,5V经过LM1117输出3.3V给STM32,电机运行的情况下将产生50V的反向电动势,这个电动势将在续流二极管SK24的作用下回馈到电源VIN消耗掉,也就是这样会抬高输入的12V电压,假使这个50V的反压会通过LM2676到达+5V电压,在L298的+5V端通过L298的IO作用到STM32的IO,
第一个问题,看到STM32的IO说明图里面有保护二极管,这个保护二极管是内部带的吗?这个二极管吧高压回馈到STM32的电源,会不会烧芯片,手册上的“VDD_FT&对5&伏兼容I/O&脚是特殊的”,VDD_FT是如何连接的,什么原理能使他兼容5V输入,。是不是兼容5V就去掉了内部的上拉保护二极管。它与VDD&不同手册所说的ESD保护2000V是否能保护我现在这种情况的发生。
第二个问题,我现在L298用的5V逻辑电压,STM32用的3.3V,这种情况下STM32做输出会产生什么不好的因素,如何避免。设置为OD吗?
经过试验,现在很快烧毁了两片103RBT6,实在是无法也不太敢在原来电路基础上做实验,望各位多多指教,)
解决任何问题必须下定决心,一定要一定要!!!不然拖拖拉拉!
我认为编码器与单片机是需要共地的,需要参考定位点,宽且编码器的电源并不是导致TM32烧掉的原因,罪魁祸首应当还是那个12V电源!
给平衡小车编码器供电时需要跟单片机共地么
肯定需要共地的。
不然你编码器返回的脉冲和你单片机参考电平不一致
这样单片机就不能得到有效的电平信息
所有的类似的需要两个系统之间通讯的,在使用一套电源的前提下都是需要共地
STM32的IO口是要先进行时钟定义然后初始化的。
在我对IO口初始化后,再在main函数中写入PWM_INT()之后,我的车子受PWM轮子可以转了。
终于进入最后的PID参数的调节。
此时的小车程序代码如下,当然我还没有接上红外遥控模块,但PWM可以正常输出控制电机了。
平衡小车matlab建模:
建模、控制算法及PD调节的取值参考:
硬件及软件参考如下网站资料;
matlab(matlab需要2008版,旧的6.5版打不开)里打开NXT.mdl,输入NXT.m.txt内容回车,K_f的四个值就是所需的PD调节比例;详细参考NXT的文档;
主控制板说明:
&1:新布置的,因为修改了一些不合理的地方,和我使用的不一样,主控制板上RS232硬件部分还未调试过,所以使用时需要注意;
&2:可调电位器用来调试修改PD参数;
&3:另外几个接口可以用来改成遥控输入,比例遥控可以用AD采样口实现,但需要增加滤波;
&4:车轮速度我进行了低通滤波,否则可能会发抖;
马达控制板说明:
&1:同样重新修订,PCB最好自己优化并检查;
&2:马达控制板最好是使用IR2184,因为直接兼容5V电平,IR2111需要使用12V输入,我直接在单片机输出口接12V上拉电阻,也可以使用,但不推荐;
上位机只是简单的查看滤波效果和车速是否正确取得,VB编写的,大家可做完善;
辛苦了大概两个多月,之前一直都调不好。中间也遇到了很多的问题,但当问题解决后每次都是重大的突破。现在就介绍一下,制作过程中遇到的问题。
1、关于加速度计的转换系数
要制作自平衡车,角度和角速度的计算就很重要。关于加速度计和陀螺仪的使用就不多说了,他们一个用来测加速度计,一个用来测角速度。
把从加速度计读出来的数据转换成角度,要乘以一个比例系数。在转换成角度角度的过程中,可以完全不用三角函数(因为车的倾角其实不会超过正负10度,后面会提到),直接把(最大值-最小值)/90(/2如果有正负的话)作为比例系数就可以了(这样可以和真实角度比较)。其实理论上这个比例系数是什么都可以,因为后面陀螺仪转换系数是根据加速度计的转换比例系数跳出来的,所以加速度计的比例系数无论是什么值都没有影响。
2、关于陀螺仪转换系数
陀螺仪的转换系数需要根据滤波的波形来调(我是在飞思卡尔公布的官方方案中看到的,经实践千真万确),陀螺仪的转换系数不用去算,只需要通过看波形去调就可以了,直到不超调也不滞后就可以了,具体的可以看附件官网方案中的93页(第二版)。
3、关于滤波
角度滤波有很多方案,我所知道的是互补滤波、官网的方案和卡尔曼滤波,我的感想是什么滤波都不重要,重要的是参数要调好。
互补滤波:这是很简单也很实用的方法,其实和官网的方案有一点类似的地方,在网上有一个很著名的20页的PPT文件The Balance
Filter,介绍的是互补滤波,相信大家看了之后都会明白的。在文件中,作者把高通滤波系数a和时间常数T(涛,不知道怎么打出来)及采样周期dt用一个公式建立了联系,而我的经验是,我们不要用这个公式去计算。高通滤波系数取0.98(不能比0.98再小了,会不平滑),采样周期根据你程序的需要是多少就多少(5ms的效果会比10ms好很多,越小越好),滤波可以通过调陀螺仪的转换系数达到很好的效果。也就是说,用互补滤波的关键调试参数是陀螺仪转换系数,把加速度计转换系数、高通滤波系数和采样周期定好之后,只需要调试陀螺仪转换系数就可以达到满意的效果了
PS:互补滤波的效果一定不差,我看过网上用互补滤波和单纯的P控制达到很好的效果的。
官网滤波方案:我总觉得官网的和互补滤波有些相似,经实验,效果也是很好的。具体的公式在参考方案里面也有。调试的关键就是陀螺仪转换系数。
卡尔曼滤波:一直没用过,也不会用,主要是没弄懂。我不喜欢用一知半解的东西,因为出现问题的时候排查不出来或者不知道怎么解决问题。网上也有很多卡尔曼滤波的程序,因为一直看不懂,就连试也没试。如果会用的话,效果应该是好的,但我不会用。如果有谁用兴趣的话还请多多指教,互相交流一下。
4、关于控制
当然有再好的角度和角速度控制不好的话也是站不好的。控制就用一般的PID控制,PWM=P*角度+D*角速度,这里没用积分控制,效果已经很好了。
在官网的方案中,还加上了死区电压,我的最大的体会就是,这个死区电压是可以不要的,而且不要更好(或者去一个小一点的值)。
这样的话就要把P调的很大。具体是多大呢,至少是电机满值的十分之一(五分之一甚至三分之一都是没问题的),例如电机最大输出是1的话,P取0.1、0.2、0.3都是没问题的(官网的方案好像是取的0.3),如果点击最大输出是5000的话,那么P取500、都是可以的,(当然前提是加速度计转换系数转换出来的角度值和真实值相当,否则另当别论)。所以车模的角度应该不会超过正负十度,因为当P=0.3的时候,车模有三度多的偏差时电机就满电压输出了。我之前就是一直用一个很小的P去调,原来所有的问题就在于把P调大就可以了。
至于D的话,大概在P的七十分之一或八十分之一之间都是可以有很好的效果的。这个关系就和加速度转换系数没有关系了。比如官网中P=0.3则D=0.3*1/75=0.004,在我这里P=1000,则D==13.3,效果都是很好的。PS:这个关系只是在车模静止平衡时的关系,行进中的关系我还没有实验过。
(1)陀螺仪的过冲是一个严重问题,高通滤波的那个电容是不可取的,要把它去掉才好。
(2)每一步都是关键,要真正理解原理才会知道怎么调。
(3)资料不知道怎么上传,他总是说附件超过大小了,有需要的可以留言
&&&下一步打算把速度控制加上,谁有好的又不是很贵的编码器可以推荐下,谢谢!
总结得也是相当到位的,现在才渐渐看懂。现在才渐渐意识到核心不是PID的调节了,是滤波还有转换系数等等。
下面一张截图是我目前小车调到最好时的滤波,可以明显感受到滤波前和滤波后的不一样,也深深地感受到滤波信号处理的厉害与重要。
这个波形的显示的扯个串口调试助手还是用山外的好,那个SSCOM32以后建议不用了,直接用这个,功能非常强大,支持自动搜索串口等等,包括发送字符也支持16进制的显示。完爆SSCOM32,也谢谢学长的推荐,我也附上合格山外串口调试助手的下载链接,里面有使用说明文档。
经过串口调试显示波形再调试参数等等,现在车子可以达到稳定十几秒最高纪录42秒了。(连续几十个小时彻夜的参数调试),下面附上目前调的最好的一组参数的程序,至少可以让小车保持基本(十几秒几十秒)的平衡,当然我最终目标是永久的平衡。下面是程序链接:
附上我小车的图片吧(硬件上已经完成的)
本来是想自己把串口引出来,后来才发现那个手机数据线插口下载程序的就是串口,可以共用哈哈。
我觉得我之后要好好研究下滤波了,对于这个小车,还远没有结束,只是开始,我要它像那天晚上我见到的四轴飞行器一样平稳!我觉得滤波是关键中的关键!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。当前位置: >>
LS373控制LED流水灯课设
课 程 设 计 任 务 书专 业 自动化 班 级 ** 姓 名 **设 计 起 止 日 期 设计题目:多路流水灯控制程序的设计 设计任务(主要技术参数) :~按要求设计出模拟多路流水灯控制系统。通过 8086 系统总线单 元和输入输出并行接口 8255 单元、 74LS373 以及 LED 显示单元进行连 接,并应用所设计的程序使连接好的线路工作正常。指导教师评语:成绩:签字: 年 月 日 课程设计说明书1 引言NO.1随着科学技术的不断发展 ,在高精尖科技的面前微型计算机的应用是无处不在的, 所以要学好微机原理及其应用。对于本次课程设计,按要求通过汇编语言设计出模拟热 水器控制系统。 根据提供的 8086 系统总线单元、 输入输出并行接口 8255 单元、 74LS373 以及 LED 显示进行连接,并应用所设计的程序使连接好的线路工作正常。 本次课程设计的题目为“多路流水灯控制程序的设计” ,并行通信就是把一个字符 的各位同时用几根线进行传输。传输速度快,信息率高。电缆要多,随着传输距离的增 加,电缆的开销会成为突出的问题,所以,并行通信用在传输速率要求较高,而传输距 离较短的场合。 应用程序设计的具体内容如下: 在本实验中要求用 8255A 的 B 口做为输出,接 16 个发光二极管,从而实现 16 位流水灯的显示效果,故基本的接线。在 PA0-PA7 口分别对应的接八个发光二极管。在 PB0-PB7 口分别对应的接八个发光二极管。使 16 只彩灯从左往右依次点亮然后熄灭。使 16 只彩灯从右往左依次点亮后熄灭。使 16 只彩灯闪烁。接着重复以上动作,这样一直 循环下去。2 设计方案论证2.1 设计原理本次课程设计的内容为模拟流光灯控制系统设计与实现。根据需要,需选择的芯片 有 74LS373 变换芯片,8255 可编程并行接口。 1)设计题目分析 编写程序,使用 8255 的 A 口和 B 口均为输出,实现 16 位流水灯显示效果 2)功能扩展 i:将流水灯设计成可以正着流水,也可以倒着流水 ii:通过开关对流水灯闪烁的速度进行控制,高电平时为快,低电平时为慢速沈 阳 大 学 课程设计说明书3)总体方案设计分析NO.2要求用 8255 的 A 口和 B 口做为输出,接 16 个发光二极管,从而实现 16 位流水灯 的显示效果,基本的界限可如下图 A 所示,在 C 口的地两位接两个开关,实现两个扩展 功能的控制。 i:基本流水灯显示电路 A 口和 B 口两个端口不能同时复制,从而在试验中可以用 BX 进行需要复制的数据的 存储,因为 BX 可以分从 BH BL 两个部分进行独立的操作,在本次试验中用 BH 对 A 口进 行赋值,用 BL 对 B 口进行赋值,通过演示一段时间再对 BH BL 进行移位和输出,实现 流水灯的效果。 ii:正反方向选择 把 PC.0 口接在开关上,编写程序对 C 端口的数据进行读取,并进行判断,使得当 PC.0 为高电平的时候则灯进行左移,同时 B 口与 A 口相反。 iii:快慢速度控制 把 PC.1 口接在开关上,编写程序对 C 端口的数据进行读取,并进行判断,使得当 PC.1 为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候 则进行延时的时间变长,使得流水灯的流水速度加快。2.2 设计环境及设备PC 机一台、windows XP 系统、实验箱,导线若干。 8255 并口:用做接口芯片,与数码管相连。 74LS373:用于锁存数据。 LED:用作彩灯。2.3 模拟流光灯工作原理1)左向移动流水灯 (1) 现象 左向移动流水灯的实验现象是首先最左边的灯亮,然后是最左边的灯灭,此时左起 第二个灯亮,依次轮流亮,直到第八个灯亮。然后循环上述过程。沈 阳 大 学 课程设计说明书(2) 原理NO.3左向移动流水灯是根据发光二极管的显示原理,首先点亮最右的二极管,然后进位 置一,通过带进位的循环左移指令编写程序以实现模拟流水灯的左向移动。 2)右向移动流水灯 (1) 现象 右向移动流水灯的实验现象是首先最右边的灯亮,然后是最右边的灯灭,此时右起 第二个灯亮,依次轮流亮,直到第八个灯亮。然后循环上述过程。 (2) 原理 右向移动流水灯是根据发光二极管的显示原理,首先点亮最左的二极管,然后进位 置一,通过带进位的循环右移指令编写程序以实现模拟流水灯的右向移图 1 设计系统框图3 系统硬件设计3.1 8086 简介Intel8086 是 16 位的微处理器(其内部总线为 16 位,外部总线为 8 位,故称为准 16 位微处理器) ,它采用 HMOS 工艺 40 条引脚封装。8086 工作时使用 5V 电源,时钟 频率 5MHz(8086-1 为 10MHz,8086-2 为 8MHz)它有 20 根地址线,故可寻址的内存 空间为 1MB【2】 。沈 阳 大 学 课程设计说明书(1)8086 的主要特性NO.4IntelCPU 是 Intel 公司推出的高性能的微处理器,具体如下主要特性: (a)8086CPU 数据总线为 16 位,8088CUP 数据总线为 8 位。 (b)地址总线都是 20 位,低 16 位用于数据总线复用,可直接寻址为 1MB 的存储空 间。 (c)有 16 位的端口地址,可以寻址 64KB 的 I/O 端口。 (d)有 99 条基本指令,指令功能强大。 (e)有 9 种基本寻址方式。 (f)可以处理内部和外部中断,外部中断源多达 256 个。 (g)兼容性好, 在源程序一级兼容。 (h) 标准主频为 5MHz, 主频为 8MH【3】 。 (i)支持单处理器或多处理器系统工作。 (2)8086CPU 寄存器结构 8086CPU 中有 14 个 16 位的寄存器,其中有 4 个 16 位的通用寄存器,2 个 16 位指针 寄存器,2 个 16 位变址寄存器,1 个 16 位指令指针及 1 个 16 位标志寄存器【8】 。 通用寄存器包括累加器 AX,基址寄存器 BX,计数寄存器 CX,数据寄存器 DX 四个寄 存器,位于 CPU 的 EU 中,每个数据寄存器可存放 16 位操作数, 也可拆成两个 8 位寄 存器,用来存放 8 位操作数。 指针和变址寄存器包括:堆栈指针 SP、基址指针 BP、源变址寄存器 SI、和目的变 址寄存器 DI 四个 16 位寄存器,可以来存放数据和地址。段寄存器包括:代码段寄存器 CS,数据段寄存器 DS,附加段寄存器 ES,堆栈段寄存器 SS【4】 。3.2 8255 简介8255 可编程外围接口芯片是 Intel 公司生产的通用并行 I/O 接口芯片, 它具有 A、 B、C 三个并行接口,并行接口是以数据的字节为单位与 I/O 设备或被控制对象之间传 递信息。CPU 和接口之间的数据传送总是并行的,即可以同时传递 8 位、16 位、32 位 等。用+5V 单 电源供电,能在以下三种方式下工作:方式 0--基本输入/出方式、方式沈 阳 大 学 课程设计说明书NO.51--选通输入/出方式、方式 2--双向选通工作方式。8255 的内部结构及引脚图如图 2 所示。图 2 8255 内部结构及引脚图具体的各引脚功能如下【3】: D0~D7 为双向数据信号线,用来传送数据和控制字。 RD 为读信号线, 与其它信号线一起实现对 8255 接口的读操作通常接系统总线的 IOR 信号。 WR 为写信号线,与其它信号一起实现对 8255 的写操作,通常接系统总线的 IOW。 CS 为片选信号线, 当它为低电平 (有效) 时, 才能选中该 8255 芯片, 也才能对 8255 进行操作。 A0,A1 为口地址选择信号线。8255 内部有 3 个口;A 口,B 口,C 口,还有一个控沈 阳 大 学 课程设计说明书寄存器,具体规定如表 1 所示。表 1 8255 的寻址方式NO.6制寄存器,它们可由程序寻址.A0,A1 上的不同编码可分别寻址上述 3 个口和一个控制A1 0 0 1 1A0 0 1 0 1选择 A口 B口 C口 控制寄存器通常 A0,A1 分别接系统总线 A0 和 A1,它们与 CS 一起来决定 8255 的接口地址。 RESET 为复位输入信号。此端上的高电平可使 8255 复位。复位后,8255 的 A 口,B 口,C 口均被定为输入状态。 PA0~PA7 为 A 口的 8 条输入输出信号线。 PB0~PB7 为 B 口的 8 条输入输出信号线。 PC0~PC7,8 条线根据其工作方式可作为数据的输入或输出线,也可以用作控制信 号的输出或状态信号的输入线【7】 。 8255 工作方式控制字和 C 口按位置位/复位控制字格式如图 3 所示。图 3 置位/复位控制字格式沈 阳 大 学 课程设计说明书NO.78255 的寻址:8255 占外设编址的 4 个地址,即 A 口,B 口,C 口和控制寄存器各占一个 外设接口地址。对同一个地址分别可以进行读写操作。例如,读 A 口可将 A 口的数据读 出;写 A 口可将 CPU 的数据写入 A 口并输出。 如表 2 为方式 0 下系统的输入输出组合,其中分为 A,B 组,A 组分为 A 口和 C 口,B 组 分为 B 口和 C 口。表 2 方式 0 下,8255 的 16 种输入输出组合A 组 入 入 入 入 入 入 入 入 出 出 出 出 出 出 出 出 入 入 入 入 出 出 出 出 入 入 入 入 出 出 出 出 入 入 出 出 入 入 出 出 入 入 出 出 入 入 出 出B组 入 出 入 出 入 出 入 出 入 出 入 出 入 出 入 出A 口(PA0---PA7) C 口(PC4---PC7) B 口(PB0---PB7) C 口(PC0---PC3)3.3 74LS373 主要功能74ls373 是常用的地址锁存器芯片, 它实质是一个是带三态缓冲输出的 8D 触发器, 在单 片机系统中为了扩展外部存储器,通常需要一块 74ls373 芯片沈 阳 大 学 课程设计说明书NO.8图 4 内部结构和引脚3.4LED 介绍制造 LED 的材料不同,可以产生具有不同能量的光子,借此可以控制 LED 所发 出光的波长,也就是光谱或颜色。历史上第一个 LED 所使用的材料是砷(As)化镓(Ga) , 其正向 PN 结压降(VF, 可以理解为点亮或工作电压)为 1.424V, 发出的光线为红外光谱。 另一种常用的 LED 材料为磷(P)化镓(Ga), 其正向 PN 结压降为 2.261V, 发出的光线为绿 光。同波长特性和大致分为紫红、纯红、橙红、橙、橙黄、黄、黄绿、纯绿、翠绿、蓝 绿、纯蓝、蓝紫等,橙红、黄绿、蓝紫色较纯红、纯绿、纯蓝价格上便宜很多。三个原 色中绿色最为重要, 因为绿色占据了白色中 69%的亮度, 且处于色彩横向排列表的中心。 因此在权衡颜色的纯度和价格两者之间的关系时,绿色是着重考虑的对象。图 5LED 彩灯沈 阳 大 学 课程设计说明书4 模拟流水灯软件设计4.1 主程序设计NO.9首先对 8255 进行初始化,然后开始读取阻值变化模拟温度,然后进行 A/D 转换, 8086 系统总线进行总控制,8255 读取数据然后通过数码管显示进行温度读取,然后比 较,再进一步判断。主程序流程图如图 7 所示。图 6 主程序流程图沈 阳 大 学 课程设计说明书4.2 编程程序实现CODE SEGMENT ASSUME CS:CODE START: MOV AL,01H MOV BX,00FAH MOV AH,0AH JMP OBA0 OBA0: MOV DX,00H OUT DX,AL JMP OBA1 OBA1: MOV DX,02H OUT DX,AL MOV CX,9FFFH LOOP $ ROL AL,1 DEC BX CMP BX,00F2H JZ OBA4 JMP OBA0 CHU: MOV AL,00FEH JMP OBA2 OBA2: MOV DX,00H OUT DX,AL JMP OBA3 OBA3: MOV DX,02H OUT DX,AL MOV CX,9FFFH LOOP $ DEC AH CMP AH,02H JZ START ROR AL,1 JMP OBA2NO.10沈 阳 大 学 课程设计说明书OBA4: MOV DX,00H MOV AL,00FFH OUT DX,AL MOV CX,9FF0H LOOP $ MOV CX,9FF0H LOOP $ MOV DX,02H OUT DX,AL MOV CX,9F20H LOOP $ MOV CX,9F20H LOOP $ MOV DX,00H MOV AL,0000H OUT DX,AL ;; ;; MOV DX,02H MOV AL,0000H OUT DX,AL MOV CX,9F20H LOOP $ MOV CX,9F20H LOOP $ ;;;第二次 MOV DX,00H MOV AL,00FFH OUT DX,AL MOV CX,9FF0H LOOP $ MOV CX,9FF0H LOOP $ MOV DX,02H OUT DX,AL MOV CX,9F20HNO.11沈 阳 大 学 课程设计说明书LOOP $ MOV CX,9F20H LOOP $ MOV DX,00H MOV AL,0000H OUT DX,AL ;; ;; MOV DX,02H MOV AL,0000H OUT DX,AL MOV CX,9F20H LOOP $ MOV CX,9F20H LOOP $ ;; JMP OBA5 OBA5: MOV DX,00H MOV AL,00FFH OUT DX,AL MOV DX,02H OUT DX,AL MOV CX,9FF0H LOOP $ MOV CX,9FF0H LOOP $ MOV DX,00H MOV AL,0000H OUT DX,AL MOV DX,02H OUT DX,AL ;第二次 MOV DX,00H MOV AL,00FFH OUT DX,AL MOV DX,02H OUT DX,AL MOV CX,9FF0H LOOP $NO.12沈 阳 大 学 课程设计说明书MOV CX,9FF0H LOOP $ MOV DX,00H MOV AL,0000H OUT DX,AL MOV DX,02H OUT DX,AL JMP CHUNO.13CODE ENDS END START5 仿真图图 7 仿真效果图沈 阳 大 学 课程设计说明书6 结果分析NO.14本系统在硬件设计的基础上,在软件编程上选择查询方式,再进行相关的软件设计 和开发,所设计系统测试结果满足设计要求。 在本系统设计中,用8255作为并行接口,通过外部程序扩展电路来实现大容量的软 件程序的输入承载量,通过数据采集通道来实现对热水器内各处温度的检测,在键盘及 显示电路一体化的情况下来实现对数据的输入及对采集到的数据进行显示。在CPU中把 数据进行进一步处理后一方面送去显示,并判断是否需要报警; 另一方面与给定值进行 比较,然后根据偏差值进行控制计算。本设计一方面结合实际应用经验,力求做到较为 系统和全面的介绍系统设计与实施技术;另一方面尽可能反应出温控系统的发展趋势, 以及其先进性和实用性。7 设计体会通过近两个星期对本课设项目的制作,我充分锻炼了做自己的数电构建能力和 操作能力,同时也清楚地看到了自己的知识薄弱的方面,各个知识点没有联会贯穿,有 些芯片的掌握不够准确。 为了理解各个芯片以及自己项目的功能我又特意重新看了遍教 材,并且在网上搜寻了许多参考资料,这些都帮助我加深了对数电的理解。 在做此项目的过程中,我有充分体会到了实际操作以及与同学沟通的重要性。 如果没有同学的指点和交流,可能自己会在一些地方打转弯,浪费掉很多时间。同 学间的协作以及在各自方案上的互通有无对自己思路的发散,自己项目的借鉴都起 到了极大地作用。通过这次课程设计,可以很好的把各个章节的模块融合到一起, 对以后的学习,设计很有帮助。 最后,感谢指导老师及各位同学在方案设计时提供的各种帮助。沈 阳 大 学 课程设计说明书NO.15参考文献[1]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,-319 [2]范立南,张乐.微型计算机原理及应用[M].北京:清华大学出版社,-54 [3] 杨 立 , 邓 振 杰 , 荆 淑 霞 . 微 型 计 算 机 原 理 与 接 口 技 术 [M]. 北 京 : 中 国 铁 道 出 版 社,-89 [8]王永山,杨宏五,杨婵娟.微型计算机原理与应用[M].西安:西安电子科技大学出版 社,-253 [9]赵全利.微型计算机原理及接口技术[M].北京:机械工业出版社, [10]杨记文.汇编语言程序设计教程[M]清华大学出版社,-70沈 阳 大 学
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 红外遥控原理 的文章

 

随机推荐