《单片机课程设计》报告格式文档格式.docx
《《单片机课程设计》报告格式文档格式.docx》由会员分享,可在线阅读,更多相关《《单片机课程设计》报告格式文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
一是根据应用系统总体设计的参数范围、测控速度与精度等技术指标要求选择单片机。
不同系列单片机或同一系列不同型号单片机芯片内部提供的资源状况各不相同,如ROM、RAM容量,定时/计数器、I/O接口、中断系统等硬件配置,应选择性价比最适合的单片机型。
二是在已选定单片机型号的基础上,根据应用系统的功能要求扩展单片机外部设备的配置,如键盘、打印机、A/D、D/A、报警电路、驱动电路及通用/专用I/O接口等。
3.2主要元器件介绍
名称
数量
7段数码管
2
电阻10kΩ
1
电阻1kΩ
8
键盘开关
1
电容10µ
f
电容30pf
晶振12MHz
89C51
万能板
导线
若干
AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
与MCS-51兼容
·
4K字节可编程FLASH存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz-24MHz
三级程序存储器锁定
128×
8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
·
片内振荡器和时钟电路
特性概述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
3.3原理图电路
4.软件设计
4.1设计思想
待硬件电路接线完成后,通常可先编写简单的测试程序对硬件电路进行测试,排除硬件电路设计中存在的错误。
然后根据设计任务的要求确定系统程序的整体结构,尽可能采用模块化程序设计的方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,如系统管理、数据与信息采集、报警处理、误差处理、标度变换、数据处理、输出控制等;
列出详细的资源划分表,确定各模块的出口和入口状态;
建立必要的数学模型,正确描述出系统中输入和输出间的数学关系;
画出各程序模块的详细流程图;
根据流程图逐一编写程序;
最后将各个模块连接成完整的程序。
4.2软件流程图
4.3源程序
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitkai=P3^0;
sbitjuxu=P3^2;
sbitfuwei=P3^4;
uchara,i;
ucharcodesuzu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelay(uintk)
{
unsignedchari,j;
for(;
k>
0;
k--)
for(i=142;
i>
i--)
for(j=2;
j>
j--);
}
voidmain()
a=0;
i=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=0;
ET0=1;
EA=1;
P0=suzu[0];
P2=suzu[0];
while
(1)
{
delay(10);
if(!
kai)
TR0=1;
if(!
juxu)
TR0=0;
fuwei)
{
P0=suzu[0];
P2=suzu[0];
i=0;
TR0=0;
}
}
voidtimer0()interrupt1
i++;
if(i==20)
{
a++;
if(a==60)
P0=suzu[a/10];
P2=suzu[a%10];
}
5.调试运行
5.1
5.2
6.设计心得体会
通过本次的课程设计,我对单片机的硬件及软件方面又得到了进一步的了解。
我对单片机的了解由原来的被动接受课本上的东西到现在主动设计单片机硬件接线,对于单片机开发的理解感觉比以前更具有信心。
当然,在设计电路的时候也显得更轻松,至少知道从哪些地方入手,怎样判断正确与否,怎样选择引脚。
在设计程序思路时,需先根据要求划分模块,优化结构;
再根据各模块特点确定何为主程序,何为子程序,何为中断服务程序,相互间如何调用;
再根据各模块性质和功能将各模块细化,设计出程序流程图;
最后才根据各模块流程图编制具体程序。
调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往主程序上堆砌,直至各模块联调、统调,实现全部功能。
总的来说,还有很多的不足之处,要在以后的实践中慢慢完善,不断的提高这方面的能力。
参考书目:
[1]肖金球.单片机原理与接口技术.[M].北京:
清华大学出版社,2004.12
[2]《微机原理及其应用》-----------------温淑焕中国农业科学技术出版社
[3]《51单片机快速上手》------------------陈志旺机械工业出版社
[4]《新概念51单片机C语言教程》----------------郭天祥电子工业出版社
[5]《51系列单片机设计实例》--------------楼然苗北京航空航天大学出版社
参考题目
题目1智能电子钟(LCD显示)
设计要求:
以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:
(1)计时:
秒、分、时、天、周、月、年。
(2)闰年自动判别。
(3)五路定时输出,可任意关断(最大可到16路)。
(4)时间、月、日交替显示。
(5)自定任意时刻自动开/关屏。
(6)计时精度:
误差≤1秒/月(具有微调设置)。
题目2电子时钟(LCD显示)
设计要求
以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:
使用字符型LCD显示器显示当前时间。
显示格式为“时时:
分分:
秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
●K1—进入设置现在的时间。
●K2—设置小时。
●K3—设置分钟。
●K4—确认完成设置。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:
00:
00”,然后开始计时。
题目3秒表
用AT89C51设计一个2位的LED数码显示作为“秒表”:
显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。
题目4定时闹钟
使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。
定时闹钟的基本功能如下:
分分”。
由LED闪动来做秒计数表示。
一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。
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基于数字温度传感器的数字温度计
利用数字温度传感器DS18B20与单片机结合来测量温度。
利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。
其温度测量范围为−55℃~125℃,精确到0.5℃。
数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示。
题目6十字路口交通灯控制
设计一个十字路口交通灯控制器。
用单片机控制LED灯模拟指示。
模拟东西方向的十字路口交通信号控制情况。
东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。
工作原理
本项目为典型的LED显示和中断定时电路。
利用定时器T0产生每10ms一次的中断,每100次中断为1s。
对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。
值得注意的是,需要意识到,A方向红灯时间=B方向绿灯时间+黄灯缓冲时间这一常识。
推荐本项目使用MAX7219芯片。
题目7数字电压表设计
以单片机为核心,设计一个数字电压表。
采用中断方式,对2路0~5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。
超过界限时指示灯闪烁。
本题目本质上是以单片机为控制器,ADC0809为ADC器件的AD转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。
为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。
本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为:
而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:
将小数点显示在第二位数码管上,即为实际的电压。
本示例程序将1.25V和2.5V作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。
当AD结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。
题目8节日彩灯控制器的设计
以单片机为核心,设计一个节日彩灯控制器:
●P1.2—开始,按此键则灯开始流动(由上而下)。
●P1.3—停止,按此键则停止流动,所有灯为暗。
●P1.4—上,按此键则灯由上向下流动。
●P1.5—下,按此键则灯由下向上流动。
实验原理
本题目本质上是由按键控制功能的流水灯,LED工作的方式通过键盘的扫描实现。
其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。
题目9单片机双机之间的串行通信设计
两片单片机利用串行口进行串行通信:
串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。
串行口工作方式为方式1的全双工串行通信。
两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定。
故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。
示例程序中将0xaa从主机传输到从机,并显示在从机的数码管上实现串口通讯的验证。
如串口通讯线路过长,可考虑采用MAX232进行电平转换,以延长传输距离。
值得注意的是,为了减少计算载入初值时的误差,本项目最好采用11.0592MHz的晶振。
#include<
}