资源描述
.. -
单片机应用系统设计安装与调试
课程设计说明书〔论文〕
设计题目: 课程设计
所属学院: 电气工程学院
专 业: 电气自动化
姓 名: 王洋
学 号: 01
班 级: 电气自动化试点班
起讫时间:
指导教师: 田浩鹏
职业学院
. . word.zl-
.. -
目录
摘 要 I
1 工程概述和要求1
1.1 单片机根底知识1
1.2 单片机的开展趋势1
1.3 工程设计任务与要求3
2 系统设计4
2.1 框图设计4
2.2局部硬件方案论述4
2.3电路原理图4
2.4元件清单5
芯片5
字符型LCD16026
按键控制模块8
其它元件8
3软件设计9
3.1 程序流程图9
3.2 程序关键问题的局部代码11
4 系统的仿真与调试16
4.1 硬件调试16
4.2 软件调试16
4.3 软硬件调试16
5总结17
参考文献18
1 工程概述和要求
1.1 单片机根底知识
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格廉价、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与构造的最正确选择。
现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。
单片机能大提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的构造更先进,功能更强,在原来的根底上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进展理论根底学习。MCS-51系列单片机主要包括8031、8051和8751等通用产品。
1.2 单片机的开展趋势
单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。
纵观单片机的开展过程,可以预示单片机的开展趋势,大致有:
一、微型单片化
现在常规的单片机普遍都是将中央处理器〔CPU〕、随机存取数据存储〔RAM〕、只读程序存储器〔ROM〕、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW〔脉宽调制电路〕、WDT〔看门狗〕、有些单片机将LCD〔液晶〕驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD〔外表封装〕越来越受欢送,使得由单片机构成的系统正朝微型化方向开展。
二、低功耗CMOS化
MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商根本都采用了CMOS〔互补金属氧化物半导体工艺〕。像80C51就采用了HMOS〔即高密度金属氧化物半导体工艺〕和CHMOS〔互补高密度金属氧化物半导体工艺〕。CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS那么具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机开展的主要途径。
三、主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以89C51为核心的单片机占主流,兼容其构造和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国的Winbond系列单片机。所以89C51占据了半壁江山。而Microchip公司的PIC精简指令集合〔RISC〕也有着强劲的开展势头,中国的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。在一定的时期,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同开展的道路。
九十年代以后,单片机在构造上采用双CPU或部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。芯片向高度集成化、低功耗方向的开展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。
1.3 工程设计任务与要求
n 设计任务:利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器。做一小段时间倒计数,当倒计数为0时,那么发出一段音乐声响,通知倒计数终了,该做应当做的事。
n 设计要求:
1. 字符型LCD(16×2)显示器,显示格式为“TIME 分分:秒秒〞。
2. 用4个按键操作来设置当前想要倒计数的时间。
3. 一旦按下键那么开场倒计数,当计数为0时,发出一阵音乐声。
4. 程序执行后工作指示灯LCD闪动,表示程序开场执行,按下操作键K1~K4动作如下:
l K1---可调整倒计数的时间1~60分钟。
l K2---设置倒计数的时间为5分钟,显示“0500〞。
l K2---设置倒计数的时间为10分钟,显示“1000〞。
l K2---设置倒计数的时间为20分钟,显示“2000〞。
5. 复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,那么在LCD上显示出设置画面。此时,假设:
n 按K2键---增加倒计数的时间1分钟。
n 按K2键---减少倒计数的时间1分钟。
n 按K4键---设置完成。
n [扩大功能]:
n 增加时钟及闹钟功能。
n 增加秒表计数功能。
2 系统设计
2.1 框图设计
框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。
本系统设计的框图如下列图2-1所示。
2.2局部硬件方案论述
◆LCD1602显示方式的方案比拟。
方案一:采用把戏显示,把戏显示是指LCD显示某一屏字符时,采取从左到右或者是从右到左的整屏移动的显示方式。在这种显示方式下,给人的感觉就是程序是在执行的,同时如果控制好了移动一屏的时间间隔的话,在整体视觉上可以到达很好的效果。
方案二:采用静态显示,静态显示是指LCD显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。便于控制,同时能够满足正常的显示效果。
由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。基于以上各种特点,我选择了方案二。
2.3电路原理图
电路原理图如图2-2所示。
图2-2 电路原理图
2.4元件清单
芯片
AT89C51芯片图如下列图2-3所示。
图2-3 AT89C51芯片图
①简介:
AT89C51是一种带4K字节闪存可编程可擦除只读存储器〔FPEROM—Flash Programmable and Erasable Read Only Memory〕的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
②主要特性:与MCS-51 兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保存时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;128×8位部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片振荡器和时钟电路。
字符型LCD1602
字符型lcd1602如下列图2-4所示。
图2-4 lcd1602图
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,各引脚符号及其功能表如下表2-1所示。
表2-1 LCD各引脚及其功能表
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源〔+5V〕
3
V0
液晶显示器比照度调整端,接正电源时比照度最弱,接地电源时比照度最高〔比照度过高时会产生“鬼影〞,使用时可以通过一个10K的电位器调整比照度〕。
4
RS
RS为存放器选择,高电平1时选择数据存放器、低电平0时选择指令存放器。
5
R/W
R/W为读写信号线,高电平(1)时进展读操作,低电平(0)时进展写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
底4位三态、双向数据总线 0位〔最低位〕
8
DB1
底4位三态、双向数据总线 1位
9
DB2
底4位三态、双向数据总线 2位
10
DB3
底4位三态、双向数据总线 3位
11
DB4
高4位三态、双向数据总线 4位
12
DB5
高4位三态、双向数据总线 5位
13
DB6
高4位三态、双向数据总线 6位
14
DB7
高4位三态、双向数据总线 7位〔最高位〕〔也是busy flag〕
15
BLA
背光电源正极
16
BLK
背光电源负极
按键控制模块
按键用于控制数码显示、LCD显示、扬声器等模块的工作。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进展工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式。
在多功能系统设计的试验中我们使用四个按键分别与单片机的p1.4、p1.5、p1.6、p1.7相连。通过按下相应的按键来处理相应的程序。如下列图2-5所示。
图2-5 按键控制模块图
其它元件图如下列图2-6所示。
图2-6 其它元件图
. . word.zl-
.. -
3软件设计
3.1 程序流程图
主程序开场初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,LCD显示新值。当复位键有按下时,计数器复位为初值,重新倒计数。当计数器值倒计为0时,蜂鸣器发出声音,计数器停顿倒计,程序完毕。主程序流程图、lcd显示流程图和按键流程图分别如下列图3-1、图3-2和图3-3所示。
图3-1 主程序流程图
开场
初始化
按键扫描
有键按下
按键处理,确定模式
时间显示模式
根据按键状态显示相应时间段
时间修改模式
根据按键状态修改时间
NO
NO
YES
YES
图3-3 按键流程图
3.2 程序关键问题的局部代码
◆LCD显示代码:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define DataPort P0
#define Busy 0x80
sbit RS=P3^4;
sbit RW=P3^6;
sbit E=P0;
void Delay(void)
{
uchar i,j;
for(i=255; i>0; i--)
for(j=255; j>0; j--)
{_nop_();}
}
void CheckBusy(void)
{
DataPort=0xff;
RS=0;
RW=1;
_nop_();
E=1;
_nop_();
_nop_();
while((DataPort&Busy)==Busy)
{
E=0;
E=1;
}
E=0;
}
void WriteIR(uchar CMD,uint check)
{
if(check)
CheckBusy();
_nop_();
_nop_();
RS=0;
RW=0;
_nop_();
DataPort=CMD;
_nop_();
E=1;
_nop_();
_nop_();
E=0;
}
void WriteChar(short Xpos, char c)
{
short temp=0x80;
temp|=Xpos;
WriteIR(temp,1);
CheckBusy();
_nop_();
_nop_();
RS=1;
RW=0;
_nop_();
DataPort=c;
_nop_();
E=1;
_nop_();
_nop_();
E=0;
Swich(1)
{
Case s1: time=1;time++;
Case s2: time=5;ch[]={‘0500’};
Case s3: time=10;ch[]={‘1000’};
Case s4: time=20;ch[]={‘2000’}
}
void LCDReset(void)
{
Swich(1)
{
Case s2: time++;
Case s3: time--;
Case s4: break;
}
}
void main(void)
{
uint i;
char time;
uchar ch[]={"20050510,mon,00:00"};
while(1)
{
LCDReset();
Delay();
for(i=0; i<10; i++)
{
WriteChar(i,ch[i]);
Delay();
}
}
}
◆音乐播放如下〔局部〕:
Void music_paly(unsigned char *msc)
{
Unsigned char music_long;
Unsigned cha music_data=0;
Temp_TH1=0xff;
Temp_TL1=0xea;
TH1=temp_TH1;
TL1=temp_TL1;
TR1=1;
While(*msc !=0x00&&N_Ring==1)
{
Music_data=*msc & 0x07;
Music_long=*msc>>4;
//…………………………
If(music_long !=0)
{
Temp_TH1=music_freq_tab[music_data *2];
Tenp_TH1=music_freq_tab[music_data *2=1];
Music_delay(music_1_tab[music_long&0x07]);
}
Msc++;
}
TR1=0;
PIN_MSC=1;
}
. . word.zl-
.. -
4 系统的仿真与调试
4.1 硬件调试
硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。
静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。
动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为假设干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的围;故障去除后,把各个模块合在一起进展联调,即可完成整个硬件调试工作。
4.2 软件调试
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
4.3 软硬件调试
软硬件联调是指把调试无误的软件程序烧制进单片机芯片部,通上电源后,检查硬件工作是否有预期的效果,如果没有那么需要检测软件是否在实现功能上有欠缺。假设有错误,通过改写软件来调试,直至到达预期效果,那么设计圆满成功。
本课程设计调试结果如下列图4-1所示。
图4-1 调试结果图
5总结
经过将近一个月的课程设计,简单带有LCD显示的音乐倒数计数器根本完成,系统根本功能根本实现,测试运行也根本正常。该系统根本上完成了日期的显示与计数的功能。
当然这个系统还存在许多有待完善的地方:
▲ 功能相对较少,有待于添加,比方说时钟与闹钟功能;
▲ 界面设计得不够精致完美;
这次课程设计的时间虽然不算很长,但使我对很多东西有了更深刻的认识。总结如下:
● 查阅资料和阅读相关文献的重要性。
● 向同学请教的重要性,团结协作的重要性。
● 勤动手的重要性,自己动手,丰衣足食!在一次次调试代码的过程中,我才明白“代码不是写出来的,是跳出来的〞的道理。
● 对待任何事情都要有耐心和恒心,遇到问题要冷静地思考,积极找出症结所在,逐个解决。
通过本次课程设计,我更深刻的认识到了教学实践在大学课程中的重要性,同时也觉察到了自己在学习方面存在的许多缺乏之处,在以后的学习中我会努力改良这些缺乏,不断提高自己的动手实践能力。
参考文献
[1]康华光,大钦. 电子技术根底—模拟局部〔第五版〕[M].:高等教育,2005
[2]朝青.单片机原理及接口技术〔第3版〕[M].航空航天大学,2005
[3]兰吉昌.51单片机应用设计百例.[M].:化学工业,2009
[4] baike.baidu./view/1270245.htm?fr=ala0_1_1
. . word.zl-
展开阅读全文