PIC单片机led灯左移右移
- 格式:docx
- 大小:206.17 KB
- 文档页数:6
新疆农业大学机械交通学院《单片机技术与应用》课程设计说明书题目:广告灯(LED灯左移右移)电路设计专业班级:学号:学生姓名:指导教师:时间:目录1 设计目的 (3)2 设计内容 (3)2.1 设计任务及要求 (3)2.2 设计方案及原理 (3)3设计步骤 (3)3.1硬件电路设计 (3)3.2 硬件电路组成框图 (4)3.3 各个硬件电路及工作原理 (4)3.3.1 晶振电路 (4)3.3.2 LED灯电路 (5)3.3.3 复位电路 (5)3.4 绘制原理图 (6)3.5 元件参数计算 (6)3.6 元件清单列表 (6)3.7程序设计 (7)3.7.1 绘制程序原理图 (8)3.7.2汇编程序 (9)4 调试与仿真 (9)5 硬件调试结果 (10)5.1面包板电路的搭建测试 (11)5.2电路调试结果 (12)6 心得体会 (14)广告灯(LED灯的左移右移)电路设计作者:秦春旺指导老师:艾海提・赛买提李春兰1 设计目的(1)会利用软件绘制流水广告灯电路原理图。
(2)通过单片机课程设计,熟练汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
(3)会用Keil C51软件对源程序进行编译调试及与proteus软件联调,实现电路的仿真。
2 设计内容广告灯是一种常见的装饰,常用与街上的广告及舞台装饰灯场合。
最简单的流水广告灯就是各个灯依次发光。
本任务利用STC89C51单片机来实现这一功能。
2.1 设计任务及要求输出“0”时,发光二极管亮,开始时按照P1.0、 P1.1 、…P1.7的顺序依次点亮发光将8个发光二极管D1-D8接在单片机的P1.0-P1.7端口上,当对应的P1口二极管,然后再按照P1.7、P1.6… P1.0的顺序依次点亮发光二极管,重复循环。
2.2 设计方案及原理单片机CPU芯片STC89C51,工作环境为常温。
发光二极管,工作环境为常温通过对单片机STC89C51系统的学习,如果要让接在STC89C51芯片P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的灯熄灭,把P1.0口的电平变为低电平就可以;同理。
利用三菱SFTL和SFTR(位左移指令;位右移指令)实现小灯循环点亮的程序;
6个小灯循环点亮启动,可加快,可减缓。
X0减慢点亮速度;
X1加快点亮速度;
X2反转启动;
X3正转启动;
X4停止;
X5启动控制;
程序如下:
此种编程方法不唯一,也可以使用计数器编写此程序,只是相对来说比较复杂。
编程思路,上电初始化程序;防止再次启动时程序出错;
利用变量D0控制定时器的时间,控制循环周期,
利用累加器实现增长时间秒冲;
利用减计数器减少时间秒冲;
利用M30的起保停电路控制位左移、位右移指令的切换;利用M20再次复位M0使下次扫描到M0时为0.
利用M10、M15和M30的组合,使下次扫描到M0时为1.。
用单片机实现广告灯的左移右移摘要广告灯,就是所谓的光影传媒,是能把任何图案以光的形式投影在广场或各种楼体上,投影的图案既有动态效果,也有静态效果,各种图案都可以订做,很容易吸引众人的眼光,关注率非常高。
广告灯是一种新生的传媒,成本低,投射方便,是各种广告公司的新宠。
广告灯还能在一些传统媒体无法投放的地方发生作用,并会有意想不到的效果,如地面,马路边上。
广告灯可运用色彩的对比手法,从而产生与众不同的色彩感觉与色彩组合,并有助于作品形象区别于周围事物与环境,形成色彩视觉冲击力,引发注意。
不同的色彩对比组合,可以营造鲜艳夺目、明亮活泼,也可以是庄重高雅、雍容华贵,在作品与消费者接触的一刹那中,打动消费者,增强注意的力度,在形成广告的第一印象时,色先夺人,并留下深刻的印象。
广告灯主要应用于广告牌、建筑泛光照明、网球场、停车场、体育馆、堆场及码头等。
本文中的广告灯采用来了AT89C52单片机进行控制。
关键词:AT89C52单片机,广告灯的左移右移目录第一章引言 (1)1.1 广告灯的概述 (1)第二章器件介绍 (2)2.1 AT89C52单片机及其引脚说明 (2)2.2 功能特性描述 (3)2.3 AT89C52各引脚功能及管脚电压 (4)2.4 AT89C52的引脚图 (6)第三章系统硬件设计 (7)3.1 设计要求 (7)3.2 系统硬件连线 (7)3.3 硬件原理图 (8)第四章软件设计 (9)4.1 程序设计内容 (9)4.2 软件程序流程图 (10)4.3 延时程序的设计 (10)4.4 软件使用说明 (11)4.4.1 Keil软件使用说明 (11)4.4.2 Proteus 6 Professional软件使用说明 (11)4.5 设计任务仿真结果 (12)4.5.1 设计任务一仿真图如图4.5.1所示 (12)4.5.2 设计任务二仿真图4.5.2所示 (13)4.6 结论及其心得体会 (14)参考文献 (15)致谢 (16)附录 (17)附录1 程序清单 (17)设计任务一的程序 (17)设计任务二的程序 (18)附录2 元器件清单表 (20)附录3 原理图 (20)第一章引言当代计算机是微电子技术与计算机数学相结合的产物。
按键控制LED 灯左右移动#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器#include <intrins.h>sbit K1 = P1^0; //对应按钮K1sbit K2 = P1^1; //对应按钮K2#define GPIO_LED P0 //led使用P0口void Delay10ms(unsigned int c); //延时10msunsigned char Key_Scan();void main(void){unsigned char ledValue, keyNum;ledValue = 0x01;while (1){keyNum = Key_Scan(); //扫描键盘if (keyNum == 1) //如果键值返回1{ledValue = _crol_(ledValue, 1); //左循环}else if (keyNum == 2){ledValue = _cror_(ledValue, 1); //右循环}GPIO_LED = ledV alue;//点亮LED灯}}unsigned char Key_Scan(){unsigned char keyValue = 0 , i; //保存键值//--检测按键1--//if (K1==0) //检测按键K1是否按下{Delay10ms(1);//消除抖动if (K1==0) //再次检测按键是否按下{keyValue = 1;i = 0;while ((i<25) && (K1==0)) //检测按键是否松开{Delay10ms(1);i++;}}}//--检测按键2--//if (K2==0) //检测按键K1是否按下{Delay10ms(1);//消除抖动if (K2==0) //再次检测按键是否按下{keyValue = 2;i = 0;while ((i<50) && (K2==0)) //检测按键是否松开{Delay10ms(1);i++;}}}return keyValue; //将读取到键值的值返回}void Delay10ms(unsigned int c) //误差0us{unsigned char a, b;for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);}}}。
1当左移移出的是“1”而不是0时,你该怎么想?2当左移的操作数是一个sign型是,你该怎么想?3在单片机中和在C语言中是完全一样的吗?4左移与右移在内存中的关系?5什么时候左移相当于乘2?6有兴趣的话可以研究一下单片机汇编中的循环左右移!左移先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:int i = 1;i = i << 2; //把i里的值左移2位也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因)需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0正1负,那么移位的时候就会出现溢出,例如:int i = 0x40000000; //16进制的40000000,为2进制的01000000 (0000)i = i << 1;那么,i在左移1位之后就会变成0x80000000,也就是2进制的100000...0000,符号位被置1,其他位全是0,变成了int类型所能表示的最小值,32位的int这个值是-2147483648,溢出.如果再接着把i左移1位会出现什么情况呢?在C语言中采用了丢弃最高位的处理方法,丢弃了1之后,i的值变成了0.左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:int i = 1, j = 0x80000000; //设int为32位i = i << 33; // 33 % 32 = 1 左移1位,i变成2j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃在用gcc编译这段程序的时候编译器会给出一个warning,说左移位数>=类型长度.那么实际上i,j移动的就是1位,也就是33%32后的余数.在gcc下是这个规则,别的编译器是不是都一样现在还不清楚.总之左移就是: 丢弃最高位,0补最低位在keil c51中,内部函数库INTRINS.H中_crol_(m,n)表示将m循环左移n位,与m<<n的效果不同。
51 单片机流水灯左移右移控制程序电路很简单8 位流水灯接在单片机的P1 口.如下是源代码://============================================================= //程序名:LLL22_4.C //程序功能:流水灯控制左移右移//============================================================== #include//头文件L_M(); //流水灯左移控制程序R_M();//流水灯右移控制程序//=============================================================== main() //主函数{ while(1) //无限循环{L_M(); //调用左移程序R_M(); //调用右移程序} } //========左移控制程序============================================== L_M() //左移主函数{ unsigned char i,temp,a,b; //声明无符号字符型变量A,TEMP I,B unsigned int s; //声明无符号整型变量S temp=0xfe; //左移初始值P1=temp; //P1 输出信号点亮发光管for( s=0;s>(8-i) ; //数据右移(8-I)位P1=a|b ; //逻辑或运算,并输出到P1 口for(s=0;s>i;b=temp<<(8-i); //数据右移(8-I)位P1=a|b; //逻辑或运算,并输出到P1 口for(s=0;s<30000;s++); //延时程序} }//=======================================================================tips:感谢大家的阅读,本文由我司收集整编。
pic单⽚机流⽔灯循环右移c语⾔,PIC单⽚机LED流⽔灯程序PIC 单⽚机 LED流⽔灯程序;*************************************************************include;**************************************************__CONFIG 3F39H;设置配置位中振荡⽅式为XT,其它全部禁⽌或关闭;*----MODESEL equ 20hMODESELB equ 21hCount equ 22hCount1 equ 23hCount2 equ 24hPORTDB equ 25h;*-----org 0nopgoto startorg 4goto ISRorg 10startclrf PORTC ;清c⼝MOV lw 00hMOV wf MODESEL ;初始化模式选择寄存器MOV wf MODESELBMOV lw b'10010000'MOV wf INTCON ;初始化中断控制bsf STATUS,RP0clrf TRISC ;设C⼝全为输出MOV lw b'10111111'MOV WF OPTION_REG ;选择INT下降沿有效bcf STATUS,RP0call FMselMOV wf PORTDBMOV wf PORTCmainbtfsc PORTB,0 ;\goto $+6 ; \call Delay ; 按键去抖动btfsc PORTB,0goto $+3 ; /call FMsel ;/MOV wf PORTDBMOV f MODESELB,W ;MOV wf MODESEL ;call LongDelaybcf STATUS,Crlf PORTDB,1btfsc STATUS,Cbsf PORTDB,0MOV f PORTDB,WMOV wf PORTCgoto main;*----------Delay ; call指令占⽤2个指令周期clrf Count ; 清 Count占⽤1个指令周期Dloopdecfsz Count,f ; 这两⾏指令将延时goto Dloop ; (256 * 3) -1 个指令周期return ; return占⽤2个指令周期;*----------------LongDelayclrf Countclrf Count1MOV lw 0x01MOV wf Count2LDloopdecfsz Count,fgoto LDloopdecfsz Count1,f goto LDloopdecfsz Count2,f goto LDloopreturn;*---------------FMselMOV f MODESEL,w MOV wf MODESELB MOV f MODESEL,w addwf PCLretlw b'11111000' retlw b'11110000' retlw b'11100000' retlw b'11000000' retlw b'10000000' MOV lw 00hMOV wf MODESELB bsf INTCON,GIE retlw b'11111000' return;*-------------ISRbtfss INTCON,INTF goto $+3bcf INTCON,INTF incf MODESELretfieend。
简易广告灯广告灯左移右移设计集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]郑州科技学院单片机课程设计题目简易广告灯设计学生姓名 X X专业班级 11级自动化一班学号院(系)电气工程学院指导教师王继红完成时间 2014年 11月 14日郑州科技学院单片机课程设计任务书专业 11自动化班级 1班学号姓名 XX一、设计题目简易广告灯设计二、设计任务与要求利用单片机外加辅助元件对发光二极管的亮灭进行控制,从而实现LED灯的左右移动的效果。
要求做单一灯的左移右移,八个发光二极管L1-L8分别接在单片机的-接口上,输出“0”时,发光二极管亮,开始时→→→→┅→→→┅→亮,重复循环。
三、主要参考文献[1] 皮大能.单片机课程设计指导书[M]. 北京:北京理工大学出版社, 2010,10.[2] 张毅刚.单片机原理及接口技术[M]. 哈尔滨:哈尔滨工业大学出版社,1990,1.[3] 李秀华.单片机原理及实践[M]. 沈阳:东北大学出版社,2006,4.[4] 艾运阶,建华.MCS-51单片机项目教程[M]. 北京:北京理工大学出版社,2012,1.四、设计时间2014 年11 月 3日至 2014 年 11月 14 日指导教师签名:年月日目录1 实验产品简介广告灯,也叫广告流水灯,就是能把任何图案以光的形式投影在广场或各种楼体上的一种电子产品,投影的图案既有动态效果,也有静态效果,各种图案都可以订做,很容易吸引众人的眼光,关注率非常高。
在现在诸多的娱乐场所、理发店、宾馆、饭店、公司等的门外,都可以看到各式各样的广告流水灯。
广告灯这是一种新生的传媒,成本低,投射方便,是各种广告公司的新宠。
广告灯还能在一些传统媒体无法投放的地方发生作用,并会有意想不到的效果,如地面,马路边上。
广告灯可运用色彩的对比手法,从而产生与众不同的色彩感觉与色彩组合,并有助于作品形象区别于周围事物与环境,形成色彩视觉冲击力,引发注意。
单片机原理移轴在单片机应用中,移轴是一种常见的操作,它可以实现数据的位移和移动。
通过移轴操作,我们可以改变数据的位置,实现数据的重新排列和处理。
在本文中,我们将深入探讨移轴的原理和实现方法。
移轴操作常见于数据处理和算法设计中。
通过移动数据的位置,我们可以实现数据的排序、过滤、压缩等操作。
在单片机应用中,移轴操作通常通过位运算来实现。
下面我们将介绍几种常见的移轴操作方法。
1. 逻辑移位逻辑移位是最基本的移轴操作,它通过将数据的每一位进行平行移动来改变数据的位置。
逻辑移位分为左移和右移两种方式。
左移将数据的每一位向左平行移动一定的位数,右移则是向右平行移动。
逻辑移位操作可以通过移位运算符来实现,例如在C语言中,左移可以使用"<<"运算符,右移可以使用">>"运算符。
2. 循环移位循环移位是一种特殊的移轴操作,它将数据的位移动到另一端后重新出现。
循环移位可以实现数据的循环排列和循环移动。
在单片机应用中,循环移位通常通过逻辑移位和位与运算来实现。
例如,将一个8位的数据循环左移3位,可以通过将数据左移3位后与0xFF进行位与运算来实现。
3. 逻辑旋转逻辑旋转是一种特殊的移轴操作,它将数据的位移动到另一端后重新出现,并且同时改变数据的顺序。
逻辑旋转可以实现数据的循环排列和循环移动,并且改变了数据的顺序。
在单片机应用中,逻辑旋转通常通过逻辑移位和位或运算来实现。
例如,将一个8位的数据逻辑左旋3位,可以通过将数据左移3位后与原数据右移5位进行位或运算来实现。
4. 字节交换字节交换是一种特殊的移轴操作,它将数据的字节位置进行交换。
字节交换可以实现数据的字节顺序转换,例如将大端序数据转换为小端序数据。
在单片机应用中,字节交换通常通过移位和位与运算来实现。
例如,将一个16位的数据的高字节和低字节位置进行交换,可以通过将数据左移8位和数据右移8位后进行位或运算来实现。