1、微型计算机技术专业方向课程设计任务书题目名称:基于单片机的方波信号发生器专业 自动化 班级 122姓名 学号 学校: 指导教师:2014 年 12 月 9 日课程设计任务书课程名称:微型计算机技术设计题目:基于单片机的方波信号发生器系统硬件要求:从 P1.0 口输出方波,分四个档:按下 S1 时输出 1HZ,按下 S2 时输出 10HZ,按下 S3 时输出 1KHZ,按下 S4 时输出 10KHZ 的方波,要求误差少于 1%,软件设计:1)主程序设计2)各功能子程序设计其他要求:1、每位同学独立完成本设计。2、依据题目要求,提出系统设计方案。3、设计系统电路原理图。1、调试系统硬件电路、功能程
2、序。2、编制课程设计报告书并装订成册,报告书内容(按顺序)(1)报告书封面(2)课程设计任务书(3)系统设计方案的提出、分析(4)系统中典型电路的分析(5)系统软件结构框图(6)系统电路原理图(7)源程序(8)课设字数不少于 2000 字成绩评语摘 要本实验是基于 AT89C51 单片机单片机所设计的,可以实现四种频率不同的方波信号的发生。本实验方波输出在 89C51 的 P1.0 口,分为四档,按下 S1 时输出 1HZ,按下 S2 时输出 10HZ,按下 S3 时输出 1KHZ,按下 S4 时输出 10KHZ的方波。关键词:51 单片机;方波;四档4目录第一章 前言.5第二章 系统总体设计
3、2.1 系统介绍.52.2 硬件简介.52.3 软件简介.52.4 系统结构框图.5第三章 硬件电路3.1 硬件设计思想.63.2 开关信号采集.63.3 复位电路及晶振电路.83.4 方波输出.8第四章 软件系统4.1 软件系统概述.84.2 各部分程序.10第五章 总结.15附录.165第 1 章 前言本文是以 MCS-51 单片机系统为基础的,通过四个单刀单掷开关控制单片机的 P1.0 口输出四种不同频率的方波信号。即分为四个档,闭合开关 S1 时输出1HZ 方波信号,闭合开关 S2 时输出 10HZ 方波信号,闭合开关 S3 时输出 1KHZ方波信号,闭合开关 S3 时输出 10KHZ
4、 方波信号,并且每组方波信号的误差不大于 1%。第二章 系统总体设计2.1 系统介绍根据开关按键的不同,在 51 单片机的 P1.0 输出不同频率的方波,在无按键按下的时候,保持当前电平输出。2.2 硬件简介硬件核心为 51 单片机以及周围电路,主要有 51 的复位电路,晶振电路,在加上四个单刀单掷开关。2.3 软件简介本实验软件编程使用的 51 系列的汇编语言。2.4 系统结构框图51 单片机复位电路方波信号输出晶振电路开关信号采集系统6第 3 章 硬件电路3.1 硬件设计思想由于只要求四种不同频率方波输出档位,只需要四个开关的状态信息的采集,考虑到系统结构的成本,采用四个开关直接 51 单
5、片机的 P2.0P2.3 口相连的硬件设计,这样的系统结构简单,稳定,易于实现。本系统总共有开关信号采集,复位电路,晶振单路,方波输出模块。其中单片机 VCC 接+5V 电源3.2 开关信号采集采用四个单刀单掷开关和 51 单片机直接相连783.3 复位电路及晶振电路C1:30pF 的无极性电容C2:30pF 的无极性电容C3:1uF 的电解电容R1:10K 的电阻3.4 方波输出第 4 章 软件系统4.1 软件系统概述94.1.1 如何输出方波由于只是要求频率可调,不要求电平,并且在 P1.0 口输出,可以用 P1.0口的高地电平输出方波的上下限电平。4.1.2 如何采集开关状态因为只要求四
6、档不同频率的方波,只有四个开关状态要采集,所以可以直接把四个开关连接到 P2.0 到 P2.3 口上,可以采用对四个口的遍历的方法查询状态。4.1.3 程序总述主程序先对中断定时器 T0 进行相关设置,并对开关第一次信息采集,根据开关信息的不同状态对定时器 T0 进行赋值,然后开启定时,等待中断。因为题目要求频率最低为 1Hz,定时器 T0 选择方式一,TMOD 控制字设置为#01H。S1 按下时:要求频率 1Hz,周期为 1s,定时器要求 500ms,采用方式一,最大定时时间为:= 1us=65.536ms,maxT162这里采用定时 50ms,溢出 10 次改变一次电平重装值的计算公式为:
7、TC= -50ms/1us=3CB0H162S2 按下时:要求频率 10Hz,周期 50ms,采用方式一装值的计算公式为:TC= -50ms/1us=3CB0HS3 按下时:要求频率 1KHz,周期 500us,采用方式一装值的计算公式为:TC= -500us/1u=FEFBH16S3 按下时:要求频率 10KHz,周期 50us,采用方式一装值的计算公式为:TC= -50us/1us=FFCDH210程序流程图4.2 各部分程序4.2.1 主程序主要进行 T0 中断设置,对开关状态的初次响应,并根据不同的开关状态主程序设置 T0根据开关状态的不同,设置相应的 T0 初值,等待中断再次判断开关状态进入相应开关状态的子程序