用单片机控制的LED摇摇棒程序设计.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用单片机控制的LED摇摇棒程序设计

本摇摇棒为开发套件,全部采用直插的器件。显示的LED采用了5mm超高亮30度聚光发光二极管,共32只。控制芯片采用宏晶单片机STC11F03E,其内部有3K的程序存储空间,256字节的数据存储空间,另外其内部还有2K的EEPROM空间。设计可以通过串口,把下载的画面数据到内部的EEPROM,掉电后,也不会丢失。 本遥遥棒设计采用4节5号电池,可是普通电池(供电电压每节1.5V),也可以是可充电电池(供电电压每节1.2V)。设计中有一个电源开关。两个按键,两个LED指示灯(可以用单片机控制)。 设计原理: 32只LED,采用74HC595串联控制,数据是串进并出的。由单片机控制是只有三个数据线,DAT,CLK,RCK。DAT为串行数据输入引脚,CLK为串行数据的时钟,上升沿把数据存入74HC595芯片。RCK为二级锁存信号,上升沿把并行的数据输出到74HC595,来控制32个LED。设计原理图如下。 在控制电路上,检测摇摇棒左右方向上,设计采用了一个水银开关,安装在摇摇棒的顶部,在摇摇棒左右摆到的时候,到底左边时,里面的水银把这个开关的触短路,通过上拉电阻,短路时,输出低电平。输出的低电平,接到单片机的中断引脚。 单片机的工作电路,就是复位电路,晶振电路。按键电路,按下低电平。LED指示灯电路,低电平亮。 程序控制: 控制32个LED的程序: void display() { unsigned long add=0; //数据地址入口 unsigned char num; //串行数据临时存放 unsigned int i; add=n+prictur*256; //计算切换图片地址入口 num=tab2[add]; //取出单行数据 for(i=0;i8;i++) { CLK=0; //串行数据时钟,置低电平 DAT=!(0x80num); //把1位数据输出,经过取反与提取数据格式有关 CLK=1; //串行数据时钟,置高电平,与上面低电平,产生上升沿 num=1; //数据左移 } num=tab2[add+W_U]; for(i=0;i8;i++) { CLK=0; DAT=!(0x80num); CLK=1; num=1; } num=tab2[add+2*W_U]; for(i=0;i8;i++) { CLK=0; DAT=!(0x80num); CLK=1; num=1; } num=tab2[add+3*W_U]; for(i=0;i8;i++) { CLK=0; DAT=!(0x80num); CLK=1; num=1; } RCK=0; //二级锁存,低电平 RCK=1; //二级锁存,高电平,产生上升沿,并行控制LED } 程序要控制,当检测到传感器有低电平的时候,产生中断,先加一个延时,消除传感器抖动。然后把数据分时送到32只LED,利用人眼视觉残留。就会显示一幅画面。 详细程序见附件。 使用说明 本套件为可二次开发的套件,设计中引出了单片机的下载引脚。为套件中的4个排针。引脚的顺序为VCC,TX,RX,GND。 控制按键及指示灯的引脚列表: 编号 功能 单片机引脚号 引脚名字 备注 S4 KEY 1 8 P3.4 按下低电平 S2 KEY 2 9 P3.5 按下低电平 D34 LED 2 19 P1.7 低电平亮 D33 LED 1 18 P1.6 低电平亮 主程序: // chenjie //2010.07.04 //taobao: // eeprom test program #include #include #includeeeprom.h #includead.h #define W_U 64 #define W_D 64 sbit DAT=P1^0; sbit CLK=P1^1; sbit RCK=P1^2; sbit LED_R=P1^6; sbit LED_L=P1^7; sbit KEY1=P3^4; sbit KEY2=P3^5; sbit DSEN=P3^2; int n=0; unsigned long cnt=0; unsigned long cnt1; unsigned long cnt2; unsigned int flag_dis=0; unsigned int flag_dis2=0; unsigned char code tab[]={ 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff,0xf0,0x0f,0x55 }; unsigned char code tab2[]={ 0x00,0x01,0x01,0x01,0x0F,

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档