题目1 智能电子钟(LCD 显示)题目2 电子时钟(LCD 显示)题目3 秒表题目4 定时闹钟题目5 音乐倒数计数器题目6 基于数字温度传感器的数字温度计题目7 基于热敏电阻的数字温度计题目8 十字路口交通灯控制题目9 波形发生器设计题目10 电容、电阻参数单片机测试系统的设计题目11 数字频率计题目12 8位竞赛抢答器的设计题目13 单词记忆测试器程序设计题目14 数字电压表设计题目15 可编程作息时间控制器设计题目16 节日彩灯控制器的设计题目17 双机之间的串行通信设计题目18 电子琴设计题目19 数字音乐盒的设计题目20 单片机控制步进电机题目21 单片机控制直流电动机题目1 智能电子钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心,制作一个LCD 显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3) 五路定时输出,可任意关断(最大可到16路)。
(4) 时间、月、日交替显示。
(5) 自定任意时刻自动开/关屏。
(6) 计时精度:误差≤1秒/月(具有微调设置) (7) 键盘采用动态扫描方式查询。
所有的查询、设置功能均由功能键K1、K2完成。
2. 工作原理 本设计采用市场上流行的时钟芯片DS1302进行制作。
DS1302是DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM ,可以通过串行接口与计算机进行通信,使得管脚数量减少。
实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。
DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。
(2) 31B 的8位暂存数据存储RAM 。
(3) 串行I/O 口方式使得引脚数量最少。
(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。
(5) 宽范围工作电压2.0-5.5V 。
(6) 工作电流为2.0A 时,小于300nA 。
(7) 功耗很低,保持数据和时钟信息时功率小于1mW题目2 电子时钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心的时钟,在LCD 显示器上显示当前的时间: 使用字符型LCD 显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
⏹ K1—进入设置现在的时间。
⏹ K2—设置小时。
⏹ K3—设置分钟。
⏹ K4—确认完成设置。
程序执行后工作指示灯LED 闪动,表示程序开始执行,LCD 显示“00:00:00”,然后开始计时。
2. 实验原理 题目难点在于键盘的指令输入,由于每个按键都具有相应的一种或多种功能,程序中需要大量使用do{}while 或while{}循环结构,以检测是否有按键按下。
题目3 秒表 1. 设计要求 用AT89C51设计一个2位的LED 数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。
2. 实验原理 题目难点在于通过对键盘的扫描对时钟的走时/停止进行控制,项目采用定时器T0作为计时器,每10ms 发生一次中断,每100次中断加1s 。
在此期间,如“开始”按键按下,程序方将TR0置为1,从而开启中断,时钟开始走时;如复位”按键按下,程序将TR0置为0,同时将存储时间的变量清零,从而中断停止,并实现复位。
本题目采用专用数码管显示控制芯片MAX7219。
MAX7219是美国MAXIM 公司生产的串行输入/输出共阴极显示驱动器,该芯片最多可驱动8位7段数字LED 显示器或个LED 和条形图显示器。
其引脚图及引脚功能参见有关参考资料。
题目4 定时闹钟 1. 设计要求 使用AT89C51单片机结合字符型LCD 显示器设计一个简易的定时闹钟LCD 时钟,若LCD 选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。
定时闹钟的基本功能如下: ⏹ 显示格式为“时时:分分”。
⏹ 由LED 闪动来做秒计数表示。
⏹ 一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。
⏹ 程序执行后工作指示灯LED 闪动,表示程序开始执行,LCD 显示“00:00”,按下操作键K1~K4动作如下:(1) K1—设置现在的时间。
(2) K2—显示闹钟设置的时间。
(3) K3—设置闹铃的时间。
(4) K4—闹铃ON/OFF 的状态设置,设置为ON 时连续三次发出“哗”的一声,设置为OFF 发出“哗”的一声。
设置当前时间或闹铃时间如下。
(1) K1—时调整。
(2) K2—分调整。
(3)K3—设置完成。
(4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。
本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。
采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。
以对小时的设置的流程为例,其流程如下页图。
题目5 音乐倒数计数器 1. 设计要求 利用AT89C51单片机结合字符型LCD 显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
⏹ 字符型LCD (16 2)显示器。
⏹ 显示格式为“TIME 分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
程序执行后工作指示灯LED 闪动,表示程序开始执行,按下操作键K1~K4动作如下。
K1—可调整倒计数的时间1~60分钟。
K2—设置倒计数的时间为5分钟,显示“0500”。
K3—设置倒计数的时间为10分钟,显示“1000”。
K4—设置倒计数的时间为20分钟,显示“2000”。
复位后LCD 的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD 上显示出设置画面。
此时,若: a. 按操作键K2—增加倒计数的时间1分钟。
b. 按操作键K3—减少倒计数的时间1分钟。
c. 按操作键K4—设置完成。
键盘实现菜单功能的方法,已在题目4详细说明,不再赘述。
本题目最大难点是实现音乐的播放。
作者利用定时计数器,通过载入不同的计数初值,产生频率不同的方波,输入到蜂鸣器(SOUNER )中,使其发出频率不同的声音。
本设计中单片机晶振为 1.0592MHz ,通过计算各音阶频率,可得1、2、3、4、5、6、7共7个音应赋给定时器的初值为64580、64684、64777、64820、64898、64968、65030。
在此基础上,可将乐曲的简谱转化为单片机可以“识别”的“数组谱”,进一步加入对音长、休止符等的控制量后,可以实现音乐的播放。
题目6 基于数字温度传感器的数字温度计 1. 设计要求 利用数字温度传感器DS18B20与单片机结合来测量温度。
利用数字温度传感器DS18B20测量温度信号,计算后在LED 数码管上显示相应的温度值。
其温度测量范围为−55℃~125℃,精确到0.5℃。
数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阳极LED 数码管以串口传送数据,实现温度显示。
2. 实验原理从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。
DS18B20温度传感器是美国DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字读数方式。
DS18B20的性能如下。
独特的单线接口仅需要一个端口引脚进行通信。
多个DS18B20可以并联在串行传输的数据线上,实现多点组网功能。
无须外部器件。
可通过数据线供电,电压范围为3.0~5.5V 。
零待机功耗。
温度以9或12位的数字读数方式。
用户可定义报警设置。
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。
负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
采用3引脚PR-35封装或8引脚SOIC 封装 题目7 基于热敏电阻的数字温度计 1. 设计要求 使用热敏电阻类的温度传感器件利用其感温效应,将随被测温度变化的电压或电流用单片机采集下来,将被测温度在显示器上显示出来: ⏹ 测量温度范围−50℃~110℃。
⏹ 精度误差小于0.5℃。
⏹ LED 数码直读显示。
2 . 实验原理 本题目使用铂热电阻PT100,其阻值会随着温度的变化而改变。
PT 后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
厂家提供有PT100在各温度下电阻值值的分度表,在此可以近似取电阻变化率为 0.385Ω/℃。
向PT100输入稳恒电流,再通过A/D 转换后测PT100两端电压,即得到PT100的电阻值,进而算出当前的温度值。
采用 2.55mA 的电流源对PT100进行供电,然后用运算放大器LM324搭建的同相放大电路将其电压信号放大10倍后输入到AD0804中。
利用电阻变化率0.385Ω/℃的特性,计算出当前温度值。
本题目测温误差主要由以下几点引发: ADC0804为8位ADC 芯片,精度有限;程序假定PT100为完全线性的器件,而即使是厂家推荐的线性值也会存在一定误差;运放电路并非绝对线性。
如使用12位ADC 芯片,采用“四线制”的PT100接法,采用查表法测定温度值,将极大提高温度的测量精度。
题目8 十字路口交通灯控制 1. 设计要求 设计一个十字路口交通灯控制器。
用单片机控制LED 灯模拟指示。
模拟东西方向的十字路口交通信号控制情况。
东西向通行时间为80s ,南北向通行时间为60s ,缓冲时间为3s 。
2. 实验原理 本项目为典型的LED 显示和中断定时电路。
利用定时器T0产生每10ms 一次的中断,每100次中断为1s 。
对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。
值得注意的是,需要意识到,A 方向红灯时间=B 方向绿灯时间+黄灯缓冲时间这一常识。
本项目使用的MAX7219芯片使用方法请参考题目3题目9 波形发生器设计1. 设计要求设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。
2. 实验原理产生指定波形可以通过DAC 来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。
本题目中,方波信号是利用定时器中断产生的,每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff 时依次减1,并实时将数字信号经D/A 转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff 时置为0x00,并实时将数字信号经D/A 转换得到的; 梯形波是将输出的二进制数字信号依次加1,达到0xff 时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A 转换得到的; 正弦波是利用MATLAB 将正弦曲线均匀取样后,得到等间隔时刻的y 方向上的二进制数值,然后依次输出后经D/A 转换得到。