还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
前言 为了解决初学者对于单片机的入门难问题,本书依据CDIO(con__ive构思、design设计、implement实现、operate运作)理念,体现在做中学,把工程师职场环境作为工程教育环境,,为学生提供丰富的设计实现的项目,让学生在实践中和主动学习的情况下更好地掌握理论知识在项目驱动下学习一“做中学”;在设计项目和有针对性的环境中学习一“用中学”;在实训实习中学习一“练中学”;教育创造学生价值的理念,基于CDIO的教育教学__是“实学”PK“虚学”、“动学”PK“静学”、“活学”PK“死学”的一场__老师们表示,将积极参与这场全校性的教育教学__,提高教学质量而并非传统的内容教育 单片机的学习并非像传统电子线路那样直观,它是软/硬件结合的技术单片机__人员既要懂单片机的硬件结构,又要懂的软件编程才能驾驭单片机单片机教学必须摒弃传统教材,顺应新技术发展的潮流,利用现有的良好软硬件__环境,实行“理论紧密结合实践”的单片机教学__,大力培养应用型人才 本教材利用proteus单片机仿真软件,提供一个比较真实的实验环境,初学者可以不做任何硬件投资,自己设计硬件电路和自己设计的程序载入仿真系统,进行逼真的实验,体验成功的喜悦,但是在具体硬件设计中还需要进行必要的硬件补充和完善 本书以教学内容为指导,以工程理念为准则进行了小工程的模块设计,通过每一个简单实例,使读者在一开始就能熟悉单片机的整个__过程,消除对单片机的“畏惧感”然后采用“边理论、边实践,学一样、会一样”的工程案例教学模式,使单片机的硬件结构在实例学习和设计中逐步掌握和熟练操作 为了进一步的提高学生的动手能力,本实验指导书设计了十块模拟的开放式单片机电路板,供同学们设计操作使用 目录TOC\o1-3\h\z\u第1章概述
21.1单片机基础
21.2Proteus使用介绍
41.3keil使用教程
101.4STC下载软件使用说明17第2章实验项目设计
212.1流水灯的软硬件控制设计
212.2数码管的显示系统设计
332.3矩阵键盘的控制设计
362.4点阵显示屏的软硬件系统设计
432.5继电器控制技术设计
472.6RS232串口通信技术软硬件系统设计
502.70832D/A转换系统设计57第1章概述
1.1单片机基础
1、单片机概述单片机,专业名称—MicroControllerUnit微控制器件,它是由大名鼎鼎的INTEL公司发明的,最早的系列是MCS-48,后来有了MCS-51,现在还有MCS-96系列我们经常说的51系列单片机就是MCS-51,它是一种8位的单片机,而MCS-96系列则是一种16位的单片机后来INTEL公司把它的核心技术转让给了世界上很多的小公司,所以世界上就有许多公司生产51系列兼容单片机,比如飞利浦的87LPC系列,华邦的W78L系列,达拉斯的DS87系列,现代G__97系列等等目前在我国比较流行的就是美国ATMEL公司的__C51它是一种带Flash ROM的单片机,我们就是以该型号的单片机来作实验的讲到这里,也许有的人会问我平时在各种书上看到全是讲解8031,8051等型号的单片机,它们又有什么不同呢?其实它们同属于一个系列,只是__C51的单片机更新型一点事实上__C51目前正在用__S51代替,我们的实验系统采用就是__S52的,兼容__C522.主要单片机的分类 再给大家介绍一下我们经常在各种刊物上看到的__R系列和PIC系列单片机是怎么回事?以便让大家对单片机的发展有一个较全面的认识在没有学习单片机之前,这是一个令很多初学者非常困惑的问题,这么多的单片机我该先学哪一种呢? __R系列单片机也是ATMEL公司生产的一种8位单片机,它采用的是一种叫RISC(精简指令集单片机)的结构,所以它的技术和51系列有所不同,__设备也和51系列是不通用的,它的一条指令的运行速度可以达到纳秒级(即每秒_____00000次),是8位单片机中的高端产品说完了__R的,再来说说另一种--PIC系列单片机,它是美国MICROCHIP公司,唉,又是老美,叫微芯公司的生产的另一种8位单片机,它采用的也是RISC的指令集,它的指令系统和__工具与51系列更是不同,但由于它的低__和出色性能,目前国内使用的人越来越多,国内也有很多的公司在__它,不过它的影响力远没有51系列的大,所以作为初学者,51系列当然不,绝对是首选 以上几种只是比较多见的系列,其实世界上还有许多的公司生产各种各样的单片机,比如MOTOROLA的MC68H系列(老牌的单片机),TI的MSP430C系列(极低功耗的单片机),还有__的TOSHIBA,日立的HITACH,德国的西门子SIEMENS等等,它们都有各自的结构体系,并不与51系列兼容为了不搞大家的脑筋,这里就不介绍了,等大家入门了以后自己再去研究它吧!现在我们还是回来了解一下51系列单片机到底是个什么东西,它有那些部分组成,请接着往下看 3.单片机的结构及组成 单片机到底是一种什么东东,它究竟能做什么呢?其实它就是一种能进行数学和逻辑运算,根据不同使用对象完成不同控制任务的面向控制而设计的集成电路此话好象有点绕口,没关系,大家都应该知道我们经常使用的电脑吧,在电脑上,我们可以用不同的软件在相同的硬件上实现不同的工作比如我们用WORD可以打字,用PROTEL可以设计图纸等等,单片机其实也是如此,同样的芯片可以根据他不同的要求做出截然不同的产品,只不过电脑是面向应用的,而单片机是面向控制的,比如控制一个指示灯的亮和灭,控制一台电机的启动和停止等等 那么它的内部究竟由哪些部件组成的呢?大家都知道我们的电脑有很多的零件,比如CPU(__处理),RAM(内存),ROM(程序存储器),输入输出设备(并行串行口)等等,在单片机中这些部件都有,而且还把它们全部做到了一块芯片上(这就是单片机名称的由来) 讲到这里,您一定会想,这么多零件集成在一块芯片上,那___单片机的__会这么便宜(__S51每块才10元左右),其实原因很简单----功能有强弱,就象我们平时用的PLC,控制一台数控机床要用128点的,而控制一台电机有几点的就足够了,另外这种芯片的产量很大,技术也非常的成熟,自然__也就很低了那么单片机是如何来工作的,我们学习单片机又需要做哪些准备呢?对于一个初学者来说这是很有必要了解的4.学习单片机的准备工作首先您需要一台电脑,这是最基本的,配置嘛,P2以上的就可以了;然后您需要一套__单片机的软件,这个软件叫KEILC51,它是美国KeilSoftware公司专门为MCS-51系列单片机__的第三方软件,__时选择Uvision2,虽然有2K代码的限制,但足以满足我们学习的需要; 其次,您还需要一台编程器,它一种把程序写进单片机芯片的设备,这种设备品种很多,操作也很简单,大家既可以买现成的产品,也可以自己制作;有了这两样东西还不行,为了看到程序执行的结果,我们还需要一块实验板 好在现在出现了一种支持在线下载的单片机,只要满足一定的外部条件,就能够直接把汇编的程序下载到目标单片机中经过反复的实验,我们__设计了这样的一套实验系统,它采用了一套集源代码编辑、软件汇编、程序下载于一体的专业软件,采用具有在线下载功能的FLASH ROM单片机__S52,配合本教程,可以完成教程中的每一个实验这样既免去了您添置编程器和仿真器等设备的昂贵费用,又可以直接在实验板上看到程序执行的结果,更由于采用的是FLASH ROM的存储器,烧写次数可以达到1000次以上
1.2Proteus使用介绍
一、开始→所有程序→Proteus7Professional→ISIS7Professional进入Proteus界面,如图1-1-1所示图1-1-1Proteus界面
二、__右上角的P,进入PickDevi__s界面选择合适的元件,PickDevi__s界面如图1-1-2所示图1-1-2PickDevi__s界面
三、在PickDevi__s界面左边选择类别,中间会显示出相应的器件,右面示相应的引脚图和封装图如选择80C52芯片,类别处选Micropro__ssorICs,然后中间选择80C52,双击使80C52导入备用框选择Micropro__ssorICs后界面如图1-1-3所示图1-1-3Micropro__ssorICs界面同样的方法找到220R电阻和打光LED,关闭Micropro__ssorICs界面,原界面下会出现导入的备用元件,如图1-1-4所示图1-1-4DEVI__S选项界面
四、然后在绘图栏空白处右键→放置→器件→82C52,绘图框出现红色80C52元件,单击绘图框合适位置,摆放好元件,如图1-1-5所示图1-1-580C52元件摆放图同理,摆放好发光LED和220R电阻如图1-1-6所示图1-1-580C
52、发光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软件的使用方法,这应该算一个入门教程,51hei.com奉献给大家进入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的__C51来说明如下图1-2-5所示选择__C51之后右边栏是对这个单片机的基本的说明然后__确定.图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”,在下拉菜单中选中“S__eAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名注意,如果用C语言编写程序,则扩展名为.c;如果用汇编语言编写程序,则扩展名必须为.a__然后,单击“保存”按钮图1-2-9KeilC51保存文件界面
6、回到编辑界面后,单击“Target1”前面的“+”号,然后在“Sour__Group1”上单击右键,弹出如下单图1-2-10KeilC51“Sour__Group1”上单击右键选项然后单击“AddFiletoGroup‘Sour__Group1’”屏幕如下图所示图1-2-10单击“AddFiletoGroup‘Sour__Group1’”后屏幕界面选中Test.c,然后单击“Add”屏幕好下图1-2-11所示图1-2-11单击“Add”屏幕界面注意到“Sour__Group1”文件夹中多了一个子项“Text
1.c”了吗?子项的多少与所增加的源程序的多少相同
7、现在,请输入如下的C语言源程序: #include //包含文件 void__invoid //主函数 {SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; //此行及以上3行为PRINTF函数所必须 printf“HelloIamKEIL.\n”; //打印程序执行的信息 printf“Iwillbeyourfriend.\n”; while1; }在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率程序输入完毕后,如下图所示图1-2-11C语言源程序界面
8、在上图中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5)屏幕如下所示图1-2-12“Start/StopDebugSession”界面
9、单击“Project”菜单,再在下拉菜单中单击“”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用把程序下载到AT__S51单片机中图1-2-12CreateHEXFile界面
1.4STC下载软件使用说明
1.打开STC-ISP的图标图1-3-1STC-ISP图标
2.STC-ISP整体界面如下图1-3-2STC-ISP整体界面
3.然后在步骤一中选择单片机型号,可以选择(STC__C51RC)图1-3-3STC-ISP选择单片机型号界面
4.点“OpenFile”然后根据自己所存程序的路径选择所要下载的程序,选的是Hex文档图1-3-3STC-ISPOpenFile界面
5.1选择端口,选择根据自己电脑的硬件端口如COM1图1-3-4STC-ISP硬件端口设置界面2然后选__xBuad中选择波特率图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、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、通过实验掌握51单片机的I/O口使用方法
2、实验内容
1、利用51单片机的I/O口作用,设置流水灯
2、掌握使用keil环境编程
3、掌握下载keil编译好的程序到51单片机中
3、实验步骤
1、了解并熟悉实验设备,掌握51单片机与外设流水灯的接法
2、用keil编程环境,编写流水灯程序
3、在keil编译好的程序下载到51单片机中,使流水灯依次点亮
4、编写实现各种典型程序,熟悉并掌握程序设计方法
5、完成实验报告
4、实验原理图
5、实物图
六、实验程序//ex1-1:使用P1口流水点亮8位LED#includereg
51.h//包含单片机寄存器的头文件/****************************************函数功能延时一段时间*****************************************/voiddelayvoid{unsignedcharij;fori=0;i250;i++forj=0;j250;j++;}/*******************************************************函数功能主函数********************************************************/void__invoid{while1{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#includereg
51.h//包含单片机寄存器的头文件/*****************************函数功能延时一段时间*****************************/voiddelayvoid{unsignedintn;forn=0;n30000;n++;}/*****************************函数功能主函数*****************************/void__invoid{unsignedchari;while1{P1=0xfe;delay;fori=0;i8;i++//设置循环次数为8{P1=P11|0x01;//每次循环P1的各二进位左移1位低位与1或delay;//调用延时函数}}}//ex1-3用字符型数组控制P0口8位LED流水点亮#includereg
51.h//包含单片机寄存器的头文件/****************************************函数功能延时约60ms3*100*200=60000μs****************************************/voiddelay60msvoid{unsignedcharmn;form=0;m100;m++forn=0;n200;n++;}/****************************************函数功能主函数****************************************/void__invoid{unsignedchari;unsignedcharcodeTab[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};//定义无符号字符型数组while1{fori=0;i8;i++{P1=Tab[i];//依次引用数组元素,并将其送P1口显示delay60ms;//调用延时函数}}}//ex-4:内部函数intrins.h应用举例#includereg
51.h//包含51单片机寄存器定义的头文件#includeintrins.h//包含函数isalpha()声明的头文件/*************************************************函数功能延时约150ms*************************************************/voiddelayvoid{unsignedcharmn;form=0;m200;m++forn=0;n250;n++;}/*************************************************函数功能主函数*************************************************/void__invoid{P1=0xfe;//P1=11111110Bwhile1{P1=_crol_P11;//将P1的二进制位循环左移1位后再赋给P1delay;//调用延时函数}}//ex1-5:用定时器T0查询方式P1口8位控制LED#includereg
51.h//包含51单片机寄存器定义的头文件/**************************************************************函数功能主函数**************************************************************/void__invoid{inti=0;TMOD=0x01;//使用定时器T0的模式1TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值TR0=1;//启动定时器T0TF0=0;P1=0xff;while1//无限循环等待查询{whileTF0==0;//等待溢出TF0=0;i++;ifi==8i=0;switchi{case0:P1=0xfe;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case1:P1=0xfd;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case2:P1=0xfb;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case3:P1=0xf7;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case4:P1=0xef;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case5:P1=0xdf;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case6:P1=0xbf;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;case7:P1=0x7f;TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值break;}}}//ex1-6:用定时器T0的中断控制1位LED#includereg
51.h//包含51单片机寄存器定义的头文件inti;/****************************************函数功能延时一段时间*****************************************/voiddelayvoid//两个void意思分别为无需返回值,没有参数传递{unsignedintij;//定义无符号整数,最大取值范围65535fori=0;i200;i++forj=0;j200;j++;}/**************************************************************函数功能主函数**************************************************************/void__invoid{P1=0xfe;EA=1;//开总中断ET0=1;//定时器T0中断允许TMOD=0x01;//使用定时器T0的模式2TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值TR0=1;//启动定时器T0while1;//无限循环等待中断}/**************************************************************函数功能定时器T0的中断服务程序进入流水灯程序**************************************************************/voidTime0voidinterrupt1using0//“interrupt”声明函数为中断服务函数//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{inttemp;P1=P11|0x01;//P1左移一位,低位移入0与1相或temp=P1;iftemp==0xff//如果P1=11111111BP1=0xfe;//P1=11111110TH0=65536-46083/256;//定时器T0的高8位赋初值TL0=65536-46083%256;//定时器T0的高8位赋初值}//ex1-7:用指针数组控制P1口8位LED流水点亮#includereg
51.h/*************************************************函数功能延时约150ms3*200*250=150000μs=150ms*************************************************/voiddelay150msvoid{unsignedcharmn;form=0;m200;m++forn=0;n250;n++;}/*************************************************函数功能主函数*************************************************/void__invoid{unsignedcharcodeTab[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};unsignedchar*p[]={Tab
[0]Tab
[1]Tab
[2]Tab
[3]Tab
[4]Tab
[5]Tab
[6]Tab
[7]};//指针变量指向数组unsignedchari;//定义无符号字符型数据while1{fori=0;i8;i++{P1=*p[i];delay150ms;}}}
2.2数码管的显示系统设计
一、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、通过实验掌握51单片机的I/O口使用方法
3、掌握数码管引脚接法,和使用方法
二、实验内容
1、利用51单片机的I/O口作用,点亮数码管
2、掌握使用keil环境编程
3、掌握下载keil编译好的程序到51单片机中
三、实验步骤
1、进一步了解并熟悉实验设备,掌握51单片机与外设数码管的接法
2、用keil编程环境,编写点亮数码管的程序
3、在keil编译好的程序下载到51单片机中,使数码管点亮
4、完成实验报告
四、实验原理图
五、实物图
六、实验程序#includereg
52.h//程序头文件/****************************************函数功能主函数*****************************************/void__in{while1{P2=0xaa;P3=0xff;}}
2.3矩阵键盘的控制设计
1、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、通过实验掌握51单片机的I/O口使用方法
3、掌握矩阵键盘的原理,和使用方法
4、进一步掌握数码管引脚接法,和使用方法
2、实验内容
1、利用51单片机的I/O口作用,实现矩阵键盘,并在数码管上显示
2、掌握使用keil环境编程
3、掌握下载keil编译好的程序到51单片机中
3、实验步骤
1、进一步掌握51单片机与外设数码管的接法和矩阵键盘的使用原理
2、用keil编程环境,编写矩阵键盘的程序
3、在keil编译好的程序下载到51单片机中,使矩阵键盘按下时,数码管上显示相应的数字
4、完成实验报告
四、实验原理图
五、实物图
六、实验程序#includereg
52.h//头文件#defineuintunsignedint#defineucharunsignedcharucharcodetable[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x7120};//对应的
0、
1、、、、、、f的断码uinttempkey;/****************************************函数功能延时Zms*****************************************/voiddelayuintz{uintij;fori=z;i0;i--forj=110;j0;j--;}/****************************************函数功能数码管显示*****************************************/voiddisplayuintx{P1=table[x];}/****************************************函数功能主函数*****************************************/void__in{while1//大循环{P2=0xfe;temp=P2;iftemp0xf0!=0xf0//检查第一行是否有键按下{delay5;//延时一段时间去抖P2=0xfe;temp=P2;iftemp0xf0!=0xf0//再次检查第一行是否有键按下{switchtemp{case0xee:key=0;break;//第一列有键按下case0xde:key=1;break;//第二列有键按下case0xbe:key=2;break;//第三列有键按下case0x7e:key=3;break;//第四列有键按下whiletemp0xf0!=0xf0//检测按键是否松开{temp=P2;}displaykey;//数码管显示}}P2=0xfd;temp=P2;iftemp0xf0!=0xf0{delay5;P2=0xfd;temp=P2;iftemp0xf0!=0xf0{switchtemp{case0xed:key=4;break;case0xdd:key=5;break;case0xbd:key=6;break;case0x7d:key=7;break;}whiletemp0xf0!=0xf0{temp=P2;}displaykey;}}P2=0xfb;temp=P2;iftemp0xf0!=0xf0{delay5;P2=0xfb;temp=P2;iftemp0xf0!=0xf0{switchtemp{case0xeb:key=8;break;case0xdb:key=9;break;case0xbb:key=10;break;case0x7b:key=11;break;}whiletemp0xf0!=0xf0{temp=P2;}displaykey;}}P2=0xf7;temp=P2;iftemp0xf0!=0xf0{delay5;P2=0xf7;temp=P2;iftemp0xf0!=0xf0{switchtemp{case0xe7:key=12;break;case0xd7:key=13;break;case0xb7:key=14;break;case0x77:key=15;break;}whiletemp0xf0!=0xf0{temp=P2;}displaykey;}}}}
2.4点阵显示屏的软硬件系统设计
一、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、掌握点阵的原理,和使用方法
二、实验内容
1、实现点阵显示字
2、了解点阵的使用原理和引脚接法
3、掌握使用keil环境编程
4、掌握下载keil编译好的程序到51单片机中
三、实验步骤
1、掌握51单片机与外设点阵的引脚接法和使用原理
2、用keil编程环境,编写点阵显字的程序
3、在keil编译好的程序下载到51单片机中,使点阵显示“太”字
4、完成实验报告
四、实验原理图
五、实物图8X8点阵内部结构图
六、实验程序//P1口接行,P3口接列,8*8点阵显示太字#includereg
52.h//包含单片机寄存器的头文件#defineucunsignedchar//定义uc为unsignedchar型longj;//定义j为long型/****************************************函数功能延时一段时间*****************************************/voiddelay{forj=0;j10;j++;}uctable1[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};//从第一行开始扫描uctable2[]={0x100x100xff0x180x240x420x850x00};//每一行对应的列扫描/*******************************************************函数功能主函数********************************************************/void__in{chari;while1{fori=0;i8;i++//扫描8次{P1=table1[i];//扫描行P3=table2[i];//扫描对应的列delay;//延时一段时间}}}
2.5继电器控制技术设计
一、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、通过实验掌握51单片机的I/O控制继电器的方法
3、掌握继电器的原理和使用方法
二、实验内容
1、实现继电器控制发光二极管的亮灭
2、掌握使用keil环境编程
3、掌握下载keil编译好的程序到51单片机中
三、实验步骤
1、用51单片机的P
1.0口控制继电器
2、用keil编程环境,编写控制继电器使用的程序
3、在keil编译好的程序下载到51单片机中使发光二极管闪烁
4、完成实验报告
四、实验原理图
五、实物图
六、实验程序#includereg
52.h//头文件/****************************************函数功能延时一段时间*****************************************/voiddelay{longi;fori=0;i_____;i++;}/****************************************函数功能主函数*****************************************/void__in{while1{P1=0x00;delay;P1=1;delay;}}
2.6RS232串口通信技术软硬件系统设计
一、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、通过实验掌握51单片机的串口使用方法
3、掌握__x232使用及引脚接法
4、掌握VB编写界面,实现与单片机通讯
二、实验内容
1、利用51单片机的串口协议,与电脑进行通信
2、掌握使用keil环境编程
3、掌握下载keil编译好的程序到51单片机中
4、了解VB编程,实现电脑与单片机是通信
三、实验步骤
1、连接51单片机与__x232的接法
2、用keil编程环境,编写串口通信程序
3、在keil编译好的程序下载到51单片机中
4、用VB编写界面,编写代码,实现与51单片机通信
5、完成实验报告
四、实验图
1、原理图(见下页)
2、VB界面各对象主要属性控件属性1属性2属性3文本框1Name(text1)Text(“”)Alig__ent
(1)标签1Name(Label1)Caption(“采集数据”)Alig__ent
(1)MSCommName(MSComm1)Comport(“1”)Inputmode
(1)
五、实物图
六、实验程序
1、单片机程序//ex99单片机数据发送程序#includereg
51.h//包含单片机寄存器的头文件/*****************************************************函数功能向PC发送一个字节数据***************************************************/voidSendunsignedchardat{__UF=dat;whileTI==0;TI=0;}/*****************************************************函数功能延时1ms3j+2i=3×33+2×10=1010微秒,可以认为是1毫秒***************************************************/voiddelay1ms{unsignedcharij;fori=0;i10;i++forj=0;j33;j++;}/*****************************************************函数功能延时若干毫秒***************************************************/voiddelay__sunsignedcharx{unsignedchari;fori=0;ix;i++delay1ms;}/*****************************************************函数功能主函数***************************************************/void__invoid{unsignedchari;TMOD=0x20;//定时器T1工作于方式2TH1=0xfd;//根据规定给定时器T1赋初值TL1=0xfd;//根据规定给定时器T1赋初值PCON=0x00;//波特率9600TR1=1;//启动定时器t1SCON=0x40;//串口工作方式1while1{fori=0;i200;i++//模拟检测数据{Sendi;//发送数据idelay__s100;//100ms发送一次检测数据}}}
2、VB程序PrivateSubForm_ClickForm
1.Scale-10240-320-10Form
1.Line0-10-0240Form
1.Line-100-3200Form
1.CurrentX=4Form
1.CurrentY=230Form
1.PrintYForm
1.CurrentX=290Form
1.CurrentY=12Form
1.PrintXEndSubPrivateSubForm_LoadMSComm
1.Co___ort=1MSComm
1.Settings=9600n81MSComm
1.PortOpen=TrueMSComm
1.RThreshold=1MSComm
1.InputLen=1EndSubPrivateSubForm_ResizeForm
1.ClsCallForm_ClickEndSubPrivateSubMSComm1_OnCommIfMSComm
1.CommEvent=2Thenx=AscBMSComm
1.InputEndIfy=-x-150*x-150/100+230Text
1.Text=yForm
1.PSetxyRGB000Ifx=200ThenForm
1.ClsCallForm_ClickEndIfMSComm
1.InBufferCount=0EndSub
2.70832D/A转换系统设计
1、实验目的
1、通过实验,熟悉并掌握试验系统原理与使用方法
2、通过实验掌握AD转换原理及实现方法
3、掌握0832芯片
二、实验内容
1、实现AD转换,通过发光二极管显示
2、掌握使用keil环境编程
3、掌握下载keil编译好的程序到51单片机中
三、实验步骤
1、用51单片机的P0进行数字输入,从0832的Iout1口输出
2、用keil编程环境,编写数模转换程序
3、在keil编译好的程序下载到51单片机中使发光二极管有暗变亮
4、完成实验报告
四、实验原理图
五、实物图
六、实验程序#includereg
52.h#defineucharunsignedchar#defineuintunsignedintuchari;voiddelayuintz{uintt1y;fort1=z;t10;t1--fory=110;y0;y--;}voidinit;void__in{init;while1{fori=0;i250;i++P0=i+20;delay15;ifi249i=0;}}voidinit{P0=0;}。