单片机课程设计指导书课程设计指导手册Word格式.docx
- 文档编号:20417830
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:21
- 大小:967.21KB
单片机课程设计指导书课程设计指导手册Word格式.docx
《单片机课程设计指导书课程设计指导手册Word格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计指导书课程设计指导手册Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
下载程序时稍有不同!
AT89C系列需要用并行编程器下载其程序,接线多且复杂;
而AT89S系列却能支持ISP下载,可以在AT89S52的系统板上预留出ISP下载接口,再用廉价且方便的下载线连接电脑USB口就可以利用软件将hex文件下载至AT89S52了。
二、应用单片机最小系统实现基本电子时钟
1、课设目的
(1)掌握51单片机的工作原理及使用方法,学会使用编译环境和下载器(含相关软件),会用其调试和下载程序;
(2)掌握一般硬件电路的设计方法和常用电子元器件的选用原则;
(3)熟悉印制电路板(PCB)的设计过程,掌握常用元件的焊接方法和技巧;
(4)掌握单片机系统的设计过程及其调试过程,增加对实际电路的感性认识;
(5)培养学生发现问题、独立思考并解决问题的能力,最终提高其实践能力。
2、课设内容
本课程设计的内容是利用51单片机最小系统设计一个电子时钟,时钟采用24小时制,设有按键,可设置时钟参数,并利用LCD进行显示。
其具体要求如下:
(A)熟悉硬件电路原理,掌握各部分电路功能,焊接好单片机最小系统;
(B)编写程序,调试LED,实现流水灯控制;
(C)编写程序,调试LCD(显示数字或英文字符),使其显示正常;
(D)编写程序,实现电子时钟显示,时钟采用24小时制。
3、课程设计计划
该次课程设计共一周时间,下面对每一天的安排作出详细规划如下表:
日期
工作内容
星期一
(1)指导教师讲解课程设计的目的、任务、要求、注意事项等;
(2)发放工具、元器件及通用印制电路板;
(3)焊接电路;
(4)根据图纸,检查所焊元件是否正确,方向是否正确,连线是否正确;
(5)指导教师解答学生们提出或存在的问题。
星期二
(1)系统上电测试,检查电路板是否有问题;
(2)排除系统硬件问题;
(3)利用仿真器调试软件及硬件;
(4)首先调试LED流水灯显示程序;
(5)然后调试LCD显示程序;
(6)编写基础时钟程序;
(7)调试该软件程序及硬件。
星期三
(1)编写基础时钟程序;
(2)调试该软件程序及硬件。
星期四
星期五
(1)验收检查;
(2)整理并且提交课设报告;
(3)答辩考核。
4、设计思路
(1)最小系统
本次课设选用STC89C52RC单片机作为系统核心,其封装是DIP-40。
要使单片机正常工作,就必须有相应的外围电路,能使单片机正常工作的最简化外围电路系统,就称之为:
单片机的最小系统,通常包括:
电源电路、复位电路、晶振电路等。
最小系统再扩展,可扩展以下一些功能模块:
键盘(独立、矩阵)、显示(LED、LCD)、通信(RS232、UART等)、总线(SPI、I2C等)、通用IO(LED、蜂鸣器、继电器等)、前向通道、后向通道等。
(2)显示电路
鉴于液晶显示越来越普遍,故本次课设特选用驱动方便的COG型1602液晶显示模块。
常见的液晶显示模块可以分为:
字符型、点阵型等,该1602模块属于字符型液晶。
该模块是一种用5×
7点阵图形来显示字符的液晶显示器,其显示容量为2行16个字,故称之为1602。
其14针接口为通用接口:
1号管脚:
GND。
模块的接地。
2号管脚:
VCC。
模块的供电,+5V供电。
3号管脚:
VO。
液晶模块对比度调整端,接正电源时对比度最低,接地时对比度最高,对比度过高或过低都不能使液晶达到最佳显示效果,因此在使用时可以通过一个10K的电位器来调整对比度。
4号管脚:
RS。
为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
5号管脚:
RW。
为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW都为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
6号管脚:
EN。
为使能端,当EN端由高电平跳变成低电平时,液晶模块执行命令。
7~14号管脚:
D0~D7。
为8位双向数据线。
此外,该液晶模块还配有背光,所以还有单独的两根背光电源线:
红线为正电源,黑线接地。
注意!
该1602模块背光供电电源为4.2V,若要在5V系统中用5V供电的话,需串入一个10欧姆的限流电阻,防止背光模块损坏。
1602液晶模块内的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、日文的假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
1602液晶模块内部的控制器共有11条控制指令,如下表所示:
1602的读写操作以及屏幕和光标的操作都是通过指令编程来实现的。
说明:
1为高电平,0为低电平。
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置。
I/D:
光标移动方向,高电平右移,低电平左移;
S:
屏幕上所有文字是否左移或者右移,高电平表示有效,低电平表示无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示;
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标;
B:
控制光标是否要闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位。
S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令。
DL:
高电平时为4位总线,低电平时为8位总线;
N:
低电平时单行显示,高电平时双行显示;
F:
低电平时显示5×
7的点阵字符,高电平时显示5×
10的点阵字符。
有些1602模块DL定义为:
高电平是8位总线,低电平是4位总线。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址。
BF:
忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平则表示不忙,可以进行操作。
指令10:
写数据。
指令11:
读数据。
一个典型的1602液晶模块与单片机的接口电路如下:
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要先确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下表是该1602液晶模块的内部显示地址:
比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?
NO!
因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是:
01000000B(0H)+10000000B(80H)=11000000B(C0H)。
(3)软件定时
时钟由定时器T0完成定时。
当时钟晶体振荡器为6MHz时,由于T0的最大定时达不到1s,故为方便计算及实现,取定时0.1s。
这样每0.1s中断1次,中断10次为1s。
0.1s的定时值为3CB0H。
5、参考流程图
(A)主程序流程图:
(B)中断处理流程图:
第2章单片机系统软硬件调试
一、硬件焊接步骤
在焊接前请同学们认真对照原理图,了解开发板电路原理图(参见开发板说明书)和开发板各器件的对应关系,仔细查看印刷电路板,找到对应元件的功能区后,开始准备元件和工具。
此电路板焊接要求使用25W左右尖烙铁。
1.根据电路元件及电路原理图进行合理布局;
2.将集成电路插座按管脚方向布局;
3.注意电阻、电容、开关以及三极管等布局,电阻色环朝同一方向,电容有字面统一朝外方向,便于查看参数,开关个三级管按相同方向摆放;
4.焊接电阻、电容、开关以及三极管等;
5.每次焊接时,烙铁头与焊盘接触时间不应超过3秒,焊点应饱满。
二、硬件调试步骤
1.焊接完后,检查布局是否正确,特别是集成电路的管脚方向;
2.用万用表测试电源和地是否存在短路现象;
3.测试开发板电源部分器件是否正常;
4.用万用表检查是否存在焊接错误、虚焊等现象;
5.插上AT89S52、液晶和其他集成电路,注意芯片方向;
6.通电,利用硬件测试程序,对焊接电路进行测试;
7.若出现故障,则断电,根据故障现象,找出对应电路部分,进行排除。
三、软件调试
STC单片机ISP下载步骤:
1、安装下载线驱动程序。
见文件:
支持STC下载的PL2303HX驱动
2、安装STC单片机ISP下载软件:
STC烧写软件(中文版).exe
3、编写程序,编译,生成.hex文件备用。
4、双击烧写软件图标
,进入软件,如下图:
5、进行设置:
(1)
选择STC89C52RC;
(2)
点击“OpenFile”,选择相应路径,打开第三步生成的.hex文件。
如下图:
(3)首先打开电脑的设备管理器,查看USB转TTL设备(下载线)所在的串口号,再选择相应的COM和波特率。
(4)用杜邦线连好下载线和实验板:
下载线的GND接实验板的GND;
下载线的TXD接实验板的RXD(P3.0);
下载线的RXD接实验板的TXD(P3.1);
(5)接好线后千万不能先上实验板的电!
应先:
点击:
Download/下载,
出现下图:
出现:
请给MCU上电后,再给实验板上电!
(6)实验板上电后,窗口如下图:
当出现下图时,即代表下载完毕。
即可见调试效果。
附录1液晶按键测试参考程序
#include<
reg52.h>
stdio.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
uchara;
staticucharaddress=0x01;
staticucharaddress_1=0x05;
staticucharaddress_2=0x41;
ucharXPOS,YPOS;
sbitRS=P2^5;
//Pin4
sbitRW=P2^6;
//Pin5
sbitE=P2^7;
//Pin6
sbitCLK=P3^6;
//txd
sbitDATA=P3^5;
//RXD
sbitSH_LD=P3^7;
//
ucharcodetable[]={'
W'
'
E'
L'
C'
O'
M'
};
ucharcodetable_1[]={'
.'
X'
A'
-'
P'
B'
N'
ucharcodetable_2[]={"
"
ucharcodetable_3[]={"
saosao"
#defineDataP0//数据端口
/******************************************************************/
/*函数声明*/
/******************************************************************//***************************************************************/
voidDelayUs(unsignedcharus)//delayus
{
unsignedcharuscnt;
uscnt=us>
>
1;
/*Crystalfrequencyin12MHz*/
while(--uscnt);
}
voidDelayMs(unsignedcharms)//delayMs
while(--ms)
{
DelayUs(250);
}
voidWriteCommand(unsignedcharc)
DelayMs(5);
//shortdelaybeforeoperation
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
/****************************************************************/
voidWriteData(unsignedcharc)
//shortdelaybeforeoperation
RS=1;
/*********************************************************************/
voidShowChar(unsignedcharpos,unsignedcharc)
unsignedcharp;
p=pos+0x80;
//是第二行则命令代码高4位为0x8
WriteCommand(p);
//writecommand
WriteData(c);
//writedata
voidInitLcd()
DelayMs(15);
WriteCommand(0x38);
//displaymode
WriteCommand(0x0f);
WriteCommand(0x06);
//显示光标移动位置
WriteCommand(0x0c);
//显示开及光标设置
WriteCommand(0x01);
//显示清屏
ucharget_data()
{
ucharvalue=0x00;
uintcnt;
SH_LD=1;
SH_LD=0;
for(cnt=0;
cnt<
8;
cnt++)
{value=value<
<
DATA=1;
CLK=1;
_nop_();
CLK=0;
if(DATA)
{
value|=0x01;
}
CLK=1;
CLK=1;
SH_LD=1;
returnvalue;
voidwelcom()
uinti,j;
for(i=0;
i<
6;
i++)
{ShowChar(address_1++,table[i]);
DelayMs(5);
for(j=0;
j<
13;
j++)
{ShowChar(address_2++,table_1[j]);
voidwelcom1()
{ShowChar(address_1++,table_2[i]);
{ShowChar(address_2++,table_3[j]);
voidcharge(uchardate)
{inti;
switch(date)
case0x10:
for(i=0;
100;
i++);
ShowChar(address++,'
1'
);
break;
case0x20:
2'
break;
case0x40:
ShowChar(address++,'
3'
case0x80:
4'
case0x08:
5'
case0x04:
6'
case0x02:
7'
case0x01:
8'
default:
ShowChar(0x00,'
_'
}
if(address==0x10){address=0x40;
DelayMs(60);
/////////////////////////////////////////////////////////////////
voidmain(void)
{uintb=0;
InitLcd();
while
(1)
{
DelayMs(15);
a=get_data();
P1=0x00;
if(b==0)
welcom();
while(a==0x00){a=get_data();
}WriteCommand(0x01);
b=1;
charge(a);
附录2单片机系统电路原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 指导书 指导 手册