1、最新版单片机控制LED及蜂鸣器毕业课程设计报告武汉*大学单片机设计报告课 程 单片机课程设计设计题目 LED 灯及蜂鸣器年级专业 信息与计算科学09级学 号 学生姓名 指导教师 2012年04 月17 日设计题目:、要求1.了解LED显示流水灯的原理。2.能够在LED上显示和控制蜂鸣器的工作3.熟悉掌握keil软件的使用。二、 分析本设计使用AT89C52R做为主控制模块,利用简单的外围电路来驱动LED蝴蝶。设计分为三个模块:单片机控制模块,输出显示模块 和驱动模块,单片机控制模块以单片机为核心,以软件 KEIL编程实 现信号输出,以驱动LED及蜂鸣器为目的。三、 设计1、硬件方面(1)、LE
2、D驱动模块图文显示有静态和动态两种方案, 本设计中静动态都用到了。动 态扫描的意思简单的说就是轮流点亮。 具体就图案来说,把内部同行 的发光管的阳极相连在一起,先送出对应行的发光管亮灭的数据并锁 存,然后选通其它行使其燃亮相同的时间,然后熄灭。反复循环。蜂鸣器的控制则是加入三极管接在 VCC单片机的第20引脚和 负极上,以此来控制蜂鸣器的工作。(2)、硬件设计实验板上设计一个蝴蝶状的 LED显示,可用于简单的图形图像。 蝴蝶的图案是由74个LED绿灯、8个红灯、10个黄灯拼接而成。其中绿灯直接接到正负极上,黄灯和红灯接到单片机的 P2 口,来控制其闪动。2、软件编程(包括流程图、完整的汇编源程
3、序及其注释)1.电路图本软件要求实现如下要求:外圈绿灯亮度明亮,红灯和黄灯都 不停地闪动,蜂鸣器自动播放歌曲。电 路 图 如 下:2.主程序本设计的系统软件能使系统LED各点亮度均匀,充足,可显示清 晰图案,并且闪动。系统主程序开始后,首先是对系统环境初始化,包括设置串 口,中断和端口;然后闪动红黄灯,由于单片机没有停机指令,所 以可以设置系统程序不断循环。3.序代码如下:#in elude #in elude #in elude #i nclude vintrin s.h#defi ne uchar un sig ned char#defi ne uint un sig ned int#de
4、fine DY_PORT P2 / 设置 LED连接的 I/O 组#define DY_SPEED 100 /设置每一个明亮级的停留时间(值域:065535)struct music_type uchar tone;uchar delay;;void delay (un sig ned int a) / 1ms 延时程序un sig ned int i;while( -a != 0)for(i = 0; i 600; i+);/STC 单片机在外部晶振为 12MHz时i值上限为600 /AT89C51单片机在外部晶振为12MHz时i值上限为125uint code tonetab= /D 调
5、7 声音阶 3 个 8度64704, / 低音 1765120, / 中音 1765328 / 高音 17;/ ”三十里铺”/曲谱,每个音符两项数据:第1项为音高,第2项为节拍(以1/4拍为 单位)struct music_type code no tetab=曲谱1 + 14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1 + 14,0x04,6+7,0x0255+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1 + 14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1 + 14,0x04,6+7,0
6、x0255+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1 + 14,0x02,4+7,0x04,5+7,0x02,1 + 14,0x02,1 + 14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,1 + 14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1 + 14,0x04,6+7,0x02
7、55+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1 + 14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1 + 14,0x04,6+7,0x0255+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1 + 14,0x02,4+7,0x04,5+7,0x02,1 + 14,0x02,1 + 14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,1+
8、7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,0,0x00;sbit P10=P1A0;/*sbit SDAT二卩3八4;存器sbit SCLK二P3A5;*/volatile uchar tl1,th1;参数uint led=0x0001;bit dir=0;void T1_sev() in terrupt 3蜂鸣器发声频率 TL1=tl1;TH1=th1;P10=!P10;void INT1_serv() in terrupt 2LED流水方向标志 dir二!dir;void ini t() _task_ 0/连接无源蜂鸣器/连接显示数码的移位寄/存
9、控制定时器1定时/LED初始显示数据/LED流水方向控制标志/定时器T1中断:控制/重装定时数据/蜂鸣器驱动倒相/外中断1,改变/流水方向控制标志改变/任务0:初始化,激活任务13 TMOD|=0x10;ET1 = 1;IT 仁1;EX1 = 1;os_create_task(1);/* os_create_task(2);*/os_create_task(3);os_delete_task(0);void disled() _task_ 1显示 un sig ned int temp;un sig ned int i;while(1) temp=0xA0;for(i=0;i8;i+) /8D
10、Y_PORT=temp; delay(DY_SPEED); temp=1;temp=OxAO;for(i=0;i8;i+) /8 个流水灯依次全部点亮DY_PORT=temp;delay(DY_SPEED); / 调用延时函数 uchar i,j;while(1) i=0;while( no tetabi.delay) if(!notetabi.tone) TR1=0; / 音高数据为 0else /音高数据不为0 th 仁TH仁 to netab no tetabi.to ne-1/256; / 用定时参数控制T1的振荡频率(音高)tl仁 TL 仁to netab no tetabi.to
11、ne-1%256;3、调试说明使用LEIL软件编译调试代码,确保无误后下载到单片机里,硬 件电路连接p2 口 LED的所有跳帽,下载生成的hex文件,即可看到 LED屏幕上能够出现明亮的蝴蝶图案并且有歌曲的伴随。4、设计结果及错误分析能够在LED屏上清晰显示蝴蝶图案,但是没有达到流水灯和歌曲 同时实现的目的,经努力修改程序代码还是没能实现。 直到主动找老 师询问后,才知道是因为应该用10中断来控制程序的并发进行,以 后会吸取教训,认真落实老师给的任务,不懂即问。四、总结在此次设计中,我得到以下体会:1.这次图案设计的过程让我进一步熟悉了 KEIL软件的使用。2.通过这次设计,重新复习并进一步学习了 51单片机的优点, 明确了单片机在显示生活中的应用是十分广泛的。3.让我明白任何一件事情都必须小心谨慎,稍有差错变不会得出 正确的结论。就像程序代码,错一点,整个程序也就错了。所 以我们应该养成严谨学习习惯。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1