单片机课程设计

发布 2022-10-05 00:00:28 阅读 2984

《单片机原理与应用设计》

课程设计报告。

数字**盒设计。

专业。班级。

姓名。指导教师。

年月日。目录。

1设计目的2

2设计要求2

3方案设计及确定2

4电路工作原理及操作方法3

5电路图36设计框图4

7程序**5

8程序调试**现的问题及解决的办法12

9设计总结13

10参考书目13

数字**盒设计。

一、设计目的。

单片机原理与应用课程设计是在理论教学与有关的实验完成之后进行的,其目的是培养学生程序设计和实际应用单片机技术的能力。通过此实践环节,使学生能够校熟练设计常用的各类汇编语言程序,掌握设计调试单片机应用系统基本方法和步骤,能够利用所学的知识设计一个中等难度的单片机应用系统,为后续实践课程奠定基础。

本文是应用at89s52单片机原理和控制理论来设计**盒的硬件电路。通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的**,再利用延迟来控制发音时间的长短。该程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的**。

这种控制电路结构简单,可靠性高,应用性强;软件程序适应范围广,对于不同的**只需要改变相应的乐谱和定时常数即可。

二、设计要求。

1.利用i/o口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)。

2.采用数码管显示歌曲序号。

3.可通过功能键选择乐曲,暂停,**。

三、方案设计及确定。

方案1:用四个按键控制**的**。3个按键选择3首不同的****,另一个按键控制**的停止。

按下**键,用一点简单的控制之后,才开始****。比如,用定时器控制,亮灯倒计时10秒然后触发****。但是我们却只能选择3首**,局限性太强了,故排除此方案。

方案2:用4*4小键盘来实现**的选择**,1~a按键控制**10首**,c~f按键分别实现欢迎页面、上一首、下一首、停止**。由于个人所学知识有限、实践经验太少等原因,我们仅实现了歌曲的**、开机画面、停止,未能实现歌曲的上一首、下一首选择**,故排除此方案。

方案3:为了充分利用实验板的功能,进一步扩充**盒的功能。设计开机时用七段led显示数码管显示**时歌曲序号。

按键一为上电复位按钮,另外三个按键分别实现上一首、下一首、暂停/**。考虑到实验的复杂度和时间上的局限,故使用方案三。

四、电路工作原理及操作方法。

1、硬件电路中用p2.0~p2.6控制段led共阳数码管。

2、用p1.0口控制蜂鸣器。

3、用p3.0,p3.2,p3.4控制三个选项按键,其中上下一首****用定时器t0控制,暂停/**用中断into控制。

4、第九管脚接复位电路。

5、电路为12mhz晶振频率工作,起振电路中c1,c2均为30pf。

6、电路图如下:

7、设计框图:

8、程序**:

#include<>定义8051暂存器的标头档。

#define seg p2定义七段数码管接至port 2

char code tab[4]=;

/ 声明七段数码管驱动信号阵列(共阳),数字1-4

sbit buzzer=p1^0声明蜂鸣器接至p1.0

sbit pb1=p3^0声明按钮1接至p3.0

sbit pb2=p3^4声明按钮2接至p3.4

sbit pb3=p3^2声明按钮2接至p3.2

unsigned char i,j,k,tone_h,tone_l;//声明计时量变量

void beat_125(unsigned char声明节拍函数

void play1(void声明play1函数

void play2(void声明play2函数

void play3(void声明play3函数

void play4(void声明play4函数

void debouncer(void声明防弹跳函数

void choose声明选择曲目函数。

/==歌谱、节拍、音阶数组unsigned char code song1=

unsigned char code beat1=

unsigned char code song2=

unsigned char code beat2=

unsigned char code song3=

unsigned char code beat3=

unsigned char code song4=

unsigned char code beat4=

unsigned int code tone=音阶定义

/==主函数。

main主程序开始

buzzer=1蜂鸣器初始值

ie=0x83启用int0、timer0

tmod=0x01设定timer0工作方式为mode1

k=0声明变量k初值为0

p2=0数码管全开。

pb3=1规划输入端口。

seg=tab[0输出数字至七段数码管

play1程序开始,七段数码管显示1,同时**第一首歌。

while(1程序无限循环。

pb1=pb2=1; /规划输入端口

choose收到按键输入**曲目,显示歌曲编号。

while循环结束

主函数结束

/==选择曲目函数。

void choose选择曲目函数开始。

if(pb1==0判断pb1是否按下

debouncer呼叫防弹跳函数

k= (k<3)? k+1:0; /若k<3则k=k+1,若k>=3清除为0

seg=tab[k输出数字至七段数码管。

while(pb1==0pb1是否按住?

单片机课程设计

可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...

单片机课程设计

目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...

单片机课程设计

1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...