流水灯的软硬件控制设计.docx
- 文档编号:5695831
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:54
- 大小:1.89MB
流水灯的软硬件控制设计.docx
《流水灯的软硬件控制设计.docx》由会员分享,可在线阅读,更多相关《流水灯的软硬件控制设计.docx(54页珍藏版)》请在冰豆网上搜索。
流水灯的软硬件控制设计
前言
为了解决初学者对于单片机的入门难问题,本书依据CDIO(conceive构思、design设计、implement实现、operate运作)理念,体现在做中学,把工程师职场环境作为工程教育环境,,为学生提供丰富的设计实现的项目,让学生在实践中和主动学习的情况下更好地掌握理论知识。
在项目驱动下学习一“做中学”;在设计项目和有针对性的环境中学习一“用中学”;在实训实习中学习一“练中学”;教育创造学生价值的理念,基于CDIO的教育教学改革是“实学”PK“虚学”、“动学”PK“静学”、“活学”PK“死学”的一场革命。
老师们表示,将积极参与这场全校性的教育教学改革,提高教学质量。
而并非传统的内容教育。
单片机的学习并非像传统电子线路那样直观,它是软/硬件结合的技术。
单片机开发人员既要懂单片机的硬件结构,又要懂的软件编程才能驾驭单片机。
单片机教学必须摒弃传统教材,顺应新技术发展的潮流,利用现有的良好软硬件开发环境,实行“理论紧密结合实践”的单片机教学改革,大力培养应用型人才
本教材利用proteus单片机仿真软件,提供一个比较真实的实验环境,初学者可以不做任何硬件投资,自己设计硬件电路和自己设计的程序载入仿真系统,进行逼真的实验,体验成功的喜悦,但是在具体硬件设计中还需要进行必要的硬件补充和完善。
本书以教学内容为指导,以工程理念为准则进行了小工程的模块设计,通过每一个简单实例,使读者在一开始就能熟悉单片机的整个开发过程,消除对单片机的“畏惧感”然后采用“边理论、边实践,学一样、会一样”的工程案例教学模式,使单片机的硬件结构在实例学习和设计中逐步掌握和熟练操作。
为了进一步的提高学生的动手能力,本实验指导书设计了十块模拟的开放式单片机电路板,供同学们设计操作使用。
第1章概述
1.1单片机基础
1、单片机概述
单片机,专业名称—MicroControllerUnit(微控制器件),它是由大名鼎鼎的INTEL公司发明的,最早的系列是MCS-48,后来有了MCS-51,现在还有MCS-96系列。
我们经常说的51系列单片机就是MCS-51,它是一种8位的单片机,而MCS-96系列则是一种16位的单片机。
后来INTEL公司把它的核心技术转让给了世界上很多的小公司,所以世界上就有许多公司生产51系列兼容单片机,比如飞利浦的87LPC系列,华邦的W78L系列,达拉斯的DS87系列,现代GSM97系列等等。
目前在我国比较流行的就是美国ATMEL公司的89C51它是一种带Flash ROM的单片机,我们就是以该型号的单片机来作实验的。
讲到这里,也许有的人会问:
我平时在各种书上看到全是讲解8031,8051等型号的单片机,它们又有什么不同呢?
其实它们同属于一个系列,只是89C51的单片机更新型一点(事实上,89C51目前正在用89S51代替,我们的实验系统采用就是89S52的,兼容89C52)。
2.主要单片机的分类
再给大家介绍一下我们经常在各种刊物上看到的AVR系列和PIC系列单片机是怎么回事?
以便让大家对单片机的发展有一个较全面的认识。
在没有学习单片机之前,这是一个令很多初学者非常困惑的问题,这么多的单片机我该先学哪一种呢?
AVR系列单片机也是ATMEL公司生产的一种8位单片机,它采用的是一种叫RISC(精简指令集单片机)的结构,所以它的技术和51系列有所不同,开发设备也和51系列是不通用的,它的一条指令的运行速度可以达到纳秒级(即每秒1000000000次),是8位单片机中的高端产品。
说完了AVR的,再来说说另一种--PIC系列单片机,它是美国MICROCHIP公司,唉,又是老美,叫微芯公司的生产的另一种8位单片机,它采用的也是RISC的指令集,它的指令系统和开发工具与51系列更是不同,但由于它的低价格和出色性能,目前国内使用的人越来越多,国内也有很多的公司在推广它,不过它的影响力远没有51系列的大,所以作为初学者,51系列当然(不,绝对)是首选。
以上几种只是比较多见的系列,其实世界上还有许多的公司生产各种各样的单片机,比如:
MOTOROLA的MC68H系列(老牌的单片机),TI的MSP430C系列(极低功耗的单片机),还有日本的TOSHIBA,日立的HITACH,德国的西门子SIEMENS等等,它们都有各自的结构体系,并不与51系列兼容。
为了不搞大家的脑筋,这里就不介绍了,等大家入门了以后自己再去研究它吧!
现在我们还是回来了解一下51系列单片机到底是个什么东西,它有那些部分组成,请接着往下看。
3.单片机的结构及组成
单片机到底是一种什么东东,它究竟能做什么呢?
其实它就是一种能进行数学和逻辑运算,根据不同使用对象完成不同控制任务的面向控制而设计的集成电路。
此话好象有点绕口,没关系,大家都应该知道我们经常使用的电脑吧,在电脑上,我们可以用不同的软件在相同的硬件上实现不同的工作。
比如我们用WORD可以打字,用PROTEL可以设计图纸等等,单片机其实也是如此,同样的芯片可以根据他不同的要求做出截然不同的产品,只不过电脑是面向应用的,而单片机是面向控制的,比如控制一个指示灯的亮和灭,控制一台电机的启动和停止等等。
那么它的内部究竟由哪些部件组成的呢?
大家都知道我们的电脑有很多的零件,比如CPU(中央处理),RAM(内存),ROM(程序存储器),输入输出设备(并行串行口)等等,在单片机中这些部件都有,而且还把它们全部做到了一块芯片上(这就是单片机名称的由来)。
讲到这里,您一定会想,这么多零件集成在一块芯片上,那为什么单片机的价格会这么便宜(89S51每块才10元左右),其实原因很简单----功能有强弱,就象我们平时用的PLC,控制一台数控机床要用128点的,而控制一台电机有几点的就足够了,另外这种芯片的产量很大,技术也非常的成熟,自然价格也就很低了。
那么单片机是如何来工作的,我们学习单片机又需要做哪些准备呢?
对于一个初学者来说这是很有必要了解的:
4.学习单片机的准备工作
首先您需要一台电脑,这是最基本的,配置嘛,P2以上的就可以了;然后您需要一套开发单片机的软件,这个软件叫KEILC51,它是美国KeilSoftware公司专门为MCS-51系列单片机开发的第三方软件,安装时选择Uvision2,虽然有2K代码的限制,但足以满足我们学习的需要;
其次,您还需要一台编程器,它一种把程序写进单片机芯片的设备,这种设备品种很多,操作也很简单,大家既可以买现成的产品,也可以自己制作;有了这两样东西还不行,为了看到程序执行的结果,我们还需要一块实验板。
好在现在出现了一种支持在线下载的单片机,只要满足一定的外部条件,就能够直接把汇编的程序下载到目标单片机中。
经过反复的实验,我们开发设计了这样的一套实验系统,它采用了一套集源代码编辑、软件汇编、程序下载于一体的专业软件,采用具有在线下载功能的FLASH ROM单片机89S52,配合本教程,可以完成教程中的每一个实验。
这样既免去了您添置编程器和仿真器等设备的昂贵费用,又可以直接在实验板上看到程序执行的结果,更由于采用的是FLASH ROM的存储器,烧写次数可以达到1000次以上。
1.2Proteus使用介绍
一、开始→所有程序→Proteus7Professional→ISIS7Professional,进入Proteus界面,如图1-1-1所示:
图1-1-1Proteus界面
二、点击右上角
的P,进入PickDevices界面选择合适的元件,PickDevices界面如图1-1-2所示:
图1-1-2PickDevices界面
三、在PickDevices界面左边选择类别,中间会显示出相应的器件,右面示相应的引脚图和封装图。
如选择80C52芯片,类别处选MicroprocessorICs,然后中间选择80C52,双击使80C52导入备用框。
选择MicroprocessorICs后界面如图1-1-3所示:
图1-1-3MicroprocessorICs界面
同样的方法找到220R电阻和打光LED,关闭MicroprocessorICs界面,原界面
下会出现导入的备用元件,如图1-1-4所示:
图1-1-4DEVICES选项界面
四、然后在绘图栏空白处右键→放置→器件→82C52,绘图框出现红色80C52元件,单击绘图框合适位置,摆放好元件,如图1-1-5所示:
图1-1-580C52元件摆放图
同理,摆放好发光LED和220R电阻。
如图1-1-6所示:
图1-1-580C52、发光LED和220R电阻元件摆放图
五、左边单击
选择列表(如图1-1-6)中的POWER,在绘图框单击,会出现
,双击该元件会弹出EditTerminalLabel界面,在Label标签下的标号选VCC,如图1-1-7所示:
图1-1-6
列表选项
图1-1-7EditTerminalLabel界面
六、用导线把元器件连起来,连好后如图1-1-8所示:
图1-1-8元器件连接图
七、双击80C52元件,进入编辑元件界面,如图1-1-9所示:
图1-1-9编辑元件界面
在ProgramFile:
导入hex程序,在ClockFrequency选择好仿真所需的经侦频率,如下:
图1-1-10ClockFrequency经侦频率选择界面
点击确定。
八、仿真调试:
点击调试→开始/重新启动调试。
九、保存文件:
文件→保存设计→输入文件名→单击保存。
1.3keil使用教程
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程。
他能能嵌入汇编语言保留了汇编代码高效,快速的特点。
KEILC51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。
下面介绍KeilC51软件的使用方法,这应该算一个入门教程,奉献给大家
进入KeilC51后,屏幕如下图所示。
几秒钟后出现编辑界,如图1-2-1所示:
图1-2-1KeilC51启动界面
图1-2-2KeilC51编辑界面
简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习KeilC51软件的基本使用方法和基本的调试技巧。
1、
建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中NewProject选项
图1-2-3KeilC51建立一个新工程
2、
然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存.
图1-2-4KeilC51建立一个新工程
3、这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图1-2-5所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.
图1-2-5KeilC51选择单片机的型号
4、完成上一步骤后,屏幕如下图1-2-6所示
图1-2-6KeilC51界面
到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5、在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项。
如图1-2-7所示:
图1-2-7KeilC51新建文件选项界面
新建文件后屏幕如下图1-2-8所示
图1-2-8KeilC51新建文件界面
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮。
图1-2-9KeilC51保存文件界面
6、回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如下单:
图1-2-10KeilC51“SourceGroup1”上单击右键选项
然后单击“AddFiletoGroup‘SourceGroup1’”屏幕如下图所示
图1-2-10单击“AddFiletoGroup‘SourceGroup1’”后屏幕界面
选中Test.c,然后单击“Add”屏幕好下图1-2-11所示:
图1-2-11单击“Add”屏幕界面
注意到“SourceGroup1”文件夹中多了一个子项“Text1.c”了吗?
子项的多少与所增加的源程序的多少相同
7、现在,请输入如下的C语言源程序:
#include //包含文件
voidmain(void) //主函数
{
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1; //此行及以上3行为PRINTF函数所必须
printf(“HelloIamKEIL.\n”); //打印程序执行的信息
printf(“Iwillbeyourfriend.\n”);
while
(1);
}
在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
程序输入完毕后,如下图所示:
图1-2-11C语言源程序界面
8、在上图中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5),屏幕如下所示
图1-2-12“Start/StopDebugSession”界面
9、单击“Project”菜单,再在下拉菜单中单击“
”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。
把程序下载到AT89S51单片机中。
图1-2-12CreateHEXFile界面
1.4STC下载软件使用说明
1.打开STC-ISP的图标。
图1-3-1STC-ISP图标
2.STC-ISP整体界面如下。
图1-3-2STC-ISP整体界面
3.然后在步骤一中选择单片机型号,可以选择(STC89C51RC)。
图1-3-3STC-ISP选择单片机型号界面
4.点“OpenFile”然后根据自己所存程序的路径选择所要下载的程序,选的是Hex
文档。
图1-3-3STC-ISPOpenFile界面
5.
(1)选择端口,选择根据自己电脑的硬件端口。
(如COM1)
图1-3-4STC-ISP硬件端口设置界面
(2)然后选MaxBuad中选择波特率。
图1-3-5STC-ISP波特率设置界面
6.选择可以不管(因为本实验板符合默认的模式)。
图1-3-6STC-ISP步骤4界面
7..按下“Download/下载”。
给开发板断电后在上电。
图1-3-7STC-ISPDownload/下载界面
8.下载完成。
图1-3-8STC-ISP下载完成界面
第2章实验项目设计
2.1流水灯的软硬件控制设计
一、实验目的:
1、通过实验,熟悉并掌握试验系统原理与使用方法。
2、通过实验掌握51单片机的I/O口使用方法。
二、实验内容:
1、利用51单片机的I/O口作用,设置流水灯。
2、掌握使用keil环境编程。
3、掌握下载keil编译好的程序到51单片机中。
三、实验步骤:
1、了解并熟悉实验设备,掌握51单片机与外设流水灯的接法。
2、用keil编程环境,编写流水灯程序。
3、在keil编译好的程序下载到51单片机中,使流水灯依次点亮。
4、编写实现各种典型程序,熟悉并掌握程序设计方法。
5、完成实验报告。
四、实验原理图:
五、实物图:
六、实验程序:
//ex1-1:
使用P1口流水点亮8位LED
#include
/****************************************
函数功能:
延时一段时间
*****************************************/
voiddelay(void)
{
unsignedchari,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++);
}
/*******************************************************
函数功能:
主函数
********************************************************/
voidmain(void)
{
while
(1)
{
P1=0xfe;//第一个灯亮
delay();//调用延时函数
P1=0xfd;//第二个灯亮
delay();//调用延时函数
P1=0xfb;//第三个灯亮
delay();//调用延时函数
P1=0xf7;//第四个灯亮
delay();//调用延时函数
P1=0xef;//第五个灯亮
delay();//调用延时函数
P1=0xdf;//第六个灯亮
delay();//调用延时函数
P1=0xbf;//第七个灯亮
delay();//调用延时函数
P1=0x7f;//第八个灯亮
delay();//调用延时函数
}
}
//ex1-2:
用左移运算流水点亮P1口8位LED
#include
/*****************************
函数功能:
延时一段时间
*****************************/
voiddelay(void)
{
unsignedintn;
for(n=0;n<30000;n++);
}
/*****************************
函数功能:
主函数
*****************************/
voidmain(void)
{
unsignedchari;
while
(1)
{
P1=0xfe;
delay();
for(i=0;i<8;i++)//设置循环次数为8
{
P1=((P1<<1)|0x01);//每次循环P1的各二进位左移1位,低位与1或
delay();//调用延时函数
}
}
}
//ex1-3用字符型数组控制P0口8位LED流水点亮
#include
/****************************************
函数功能:
延时约60ms(3*100*200=60000μs)
****************************************/
voiddelay60ms(void)
{
unsignedcharm,n;
for(m=0;m<100;m++)
for(n=0;n<200;n++);
}
/****************************************
函数功能:
主函数
****************************************/
voidmain(void)
{
unsignedchari;
unsignedcharcodeTab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义无符号字符型数组
while
(1)
{
for(i=0;i<8;i++)
{
P1=Tab[i];//依次引用数组元素,并将其送P1口显示
delay60ms();//调用延时函数
}
}
}
//ex-4:
内部函数intrins.h应用举例
#include
#include
/*************************************************
函数功能:
延时约150ms
*************************************************/
voiddelay(void)
{
unsignedcharm,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++);
}
/*************************************************
函数功能:
主函数
*************************************************/
voidmain(void)
{
P1=0xfe;//P1=11111110B
while
(1)
{
P1=_crol_(P1,1);//将P1的二进制位循环左移1位后再赋给P1
delay();//调用延时函数
}
}
//ex1-5:
用定时器T0查询方式P1口8位控制LED
#include
/**************************************************************
函数功能:
主函数
**************************************************************/
voidmain(void)
{
inti=0;
TMOD=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流水 软硬件 控制 设计