流水灯的软硬件控制设计new_第1页
流水灯的软硬件控制设计new_第2页
流水灯的软硬件控制设计new_第3页
流水灯的软硬件控制设计new_第4页
流水灯的软硬件控制设计new_第5页
已阅读5页,还剩56页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前 言为了解决初学者对于单片机的入门难问题,本书依据CDIO(conceive构思、design设计、implement实现、operate运作)理念,体现在做中学,把工程师职场环境作为工程教育环境,为学生提供丰富的设计实现的项目,让学生在实践中和主动学习的情况下更好地掌握理论知识。在项目驱动下学习一“做中学”;在设计项目和有针对性的环境中学习一“用中学”;在实训实习中学习一“练中学”;教育创造学生价值的理念,基于CDIO的教育教学改革是“实学”PK“虚学”、“动学”PK“静学”、“活学”PK“死学”的一场革命。老师们表示,将积极参与这场全校性的教育教学改革,提高教学质量。而并非传统的内容教育

2、。单片机的学习并非像传统电子线路那样直观,它是软/硬件结合的技术。单片机开发人员既要懂单片机的硬件结构,又要懂的软件编程才能驾驭单片机。单片机教学必须摒弃传统教材,顺应新技术发展的潮流,利用现有的良好软硬件开发环境,实行“理论紧密结合实践”的单片机教学改革,大力培养应用型人才本教材利用proteus单片机仿真软件,提供一个比较真实的实验环境,初学者可以不做任何硬件投资,自己设计硬件电路和自己设计的程序载入仿真系统,进行逼真的实验,体验成功的喜悦,但是在具体硬件设计中还需要进行必要的硬件补充和完善。本书以教学内容为指导,以工程理念为准则进行了小工程的模块设计,通过每一个简单实例,使读者在一开始就

3、能熟悉单片机的整个开发过程,消除对单片机的“畏惧感”然后采用“边理论、边实践,学一样、会一样”的工程案例教学模式,使单片机的硬件结构在实例学习和设计中逐步掌握和熟练操作。为了进一步的提高学生的动手能力,本实验指导书设计了十块模拟的开放式单片机电路板,供同学们设计操作使用。 目 录第 1 章 概 述21.1单片机基础21.2 Proteus使用介绍41.3 keil使用教程101.4 STC下载软件使用说明17第 2 章 实验项目设计212.1流水灯的软硬件控制设计212.2数码管的显示系统设计332.3矩阵键盘的控制设计362.4 点阵显示屏的软硬件系统设计432.5 继电器控制技术设计472

4、.6 RS232串口通信技术软硬件系统设计502.7 0832D/A转换系统设计57第 1 章 概 述1.1单片机基础1、单片机概述单片机,专业名称Micro Controller Unit(微控制器件),它是由大名鼎鼎的INTEL公司发明的,最早的系列是MCS-48,后来有了MCS-51,现在还有MCS-96系列 。我们经常说的51系列单片机就是MCS-51,它是一种8位的单片机,而MCS-96系列则是一种16位的单片机。后来INTEL公司把它的核心技术转让给了世界上很多的小公司,所以世界上就有许多公司生产51系列兼容单片机,比如飞利浦的87 LPC系列,华邦的W78L系列,达拉斯的DS87

5、系列,现代GSM97系列等等。目前在我国比较流行的就是美国ATMEL公司的89C51它是一种带Flash ROM的单片机,我们就是以该型号的单片机来作实验的。讲到这里,也许有的人会问:我平时在各种书上看到全是讲解8031,8051等型号的单片机,它们又有什么不同呢?其实它们同属于一个系列,只是89C51的单片机更新型一点(事实上,89C51目前正在用89S51代替,我们的实验系统采用就是89S52的,兼容89C52)。 2主要单片机的分类 再给大家介绍一下我们经常在各种刊物上看到的AVR系列和PIC系列单片机是怎么回事?以便让大家对单片机的发展有一个较全面的认识。在没有学习单片机之前,这是一个

6、令很多初学者非常困惑的问题,这么多的单片机我该先学哪一种呢? AVR系列单片机也是ATMEL公司生产的一种8位单片机,它采用的是一种叫RISC(精简指令集单片机)的结构,所以它的技术和51系列有所不同,开发设备也和51系列是不通用的,它的一条指令的运行速度可以达到纳秒级(即每秒1000000000次),是8位单片机中的高端产品。 说完了AVR的,再来说说另一种-PIC系列单片机,它是美国MICROCHIP公司,唉,又是老美,叫微芯公司的生产的另一种8位单片机,它采用的也是RISC的指令集,它的指令系统和开发工具与51系列更是不同,但由于它的低价格和出色性能,目前国内使用的人越来越多,国内也有很

7、多的公司在推广它,不过它的影响力远没有51系列的大,所以作为初学者,51系列当然(不,绝对)是首选。 以上几种只是比较多见的系列,其实世界上还有许多的公司生产各种各样的单片机,比如:MOTOROLA的MC68H系列(老牌的单片机),TI的MSP430C系列(极低功耗的单片机),还有日本的TOSHIBA,日立的HITACH,德国的西门子SIEMENS等等,它们都有各自的结构体系,并不与51系列兼容。为了不搞大家的脑筋,这里就不介绍了,等大家入门了以后自己再去研究它吧!现在我们还是回来了解一下51系列单片机到底是个什么东西,它有那些部分组成,请接着往下看。3单片机的结构及组成 单片机到底是一种什么

8、东东,它究竟能做什么呢?其实它就是一种能进行数学和逻辑运算,根据不同使用对象完成不同控制任务的面向控制而设计的集成电路。 此话好象有点绕口,没关系,大家都应该知道我们经常使用的电脑吧,在电脑上,我们可以用不同的软件在相同的硬件上实现不同的工作。比如我们用WORD可以打字,用PROTEL可以设计图纸等等,单片机其实也是如此,同样的芯片可以根 据他不同的要求做出截然不同的产品,只不过电脑是面向应用的,而单片机是面向控制的,比如控制一个指示灯的亮和灭,控制一台电机的启动和停止等等。 那么它的内部究竟由哪些部件组成的呢?大家都知道我们的电脑有很多的零件,比如CPU(中央处理),RAM(内存),ROM(

9、程序存储器),输入输出设备(并行串行口)等等,在单片机中这些部件都有,而且还把它们全部做到了一块芯片上(这就是单片机名称的由来)。 讲到这里,您一定会想,这么多零件集成在一块芯片上,那为什么单片机的价格会这么便宜(89S51每块才10元左右),其实原因很简单-功能有强弱,就象我们平时用的PLC,控制一台数控机床要用128点的,而控制一台电机有几点的就足够了,另外这种芯片的产量很大,技术也非常的成熟,自然价格也就很低了。那么单片机是如何来工作的,我们学习单片机又需要做哪些准备呢?对于一个初学者来说这是很有必要了解的:4学习单片机的准备工作 首先您需要一台电脑,这是最基本的,配置嘛,P2以上的就可

10、以了;然后您需要一套开发单片机的软件,这个软件叫KEIL C51,它是美国Keil Software公司专门为MCS-51系列单片机开发的第三方软件,安装时选择Uvision2,虽然有2K代码的限制,但足以满足我们学习的需要; 其次,您还需要一台编程器,它一种把程序写进单片机芯片的设备,这种设备品种很多,操作也很简单,大家既可以买现成的产品,也可以自己制作;有了这两样东西还不行,为了看到程序执行的结果,我们还需要一块实验板。 好在现在出现了一种支持在线下载的单片机,只要满足一定的外部条件,就能够直接把汇编的程序下载到目标单片机中。经过反复的实验,我们开发设计了这样的一套实验系统,它采用了一套集

11、源代码编辑、软件汇编、程序下载于一体的专业软件,采用具有在线下载功能的FLASH ROM单片机89S52,配合本教程,可以完成教程中的每一个实验。这样既免去了您添置编程器和仿真器等设备的昂贵费用,又可以直接在实验板上看到程序执行的结果,更由于采用的是FLASH ROM的存储器,烧写次数可以达到1000次以上。 1.2 Proteus使用介绍一、 开始所有程序Proteus 7 ProfessionalISIS 7 Professional,进入Proteus界面,如图1-1-1所示:图1-1-1 Proteus界面二、 点击右上角的P,进入Pick Devices界面选择合适的元件,Pick

12、Devices界面如图1-1-2所示:图1-1-2 Pick Devices界面三、在Pick Devices界面左边选择类别,中间会显示出相应的器件,右面示相应的引脚图和封装图。如选择80C52芯片,类别处选Microprocessor ICs, 然后中间选择80C52,双击使80C52导入备用框。选择Microprocessor ICs后界面如图1-1-3所示:图1-1-3 Microprocessor ICs界面同样的方法找到220R电阻和打光LED,关闭Microprocessor ICs界面,原界面下会出现导入的备用元件,如图1-1-4所示:图1-1-4 DEVICES选项界面四、

13、然后在绘图栏空白处右键放置器件82C52,绘图框出现红色80C52元件,单击绘图框合适位置,摆放好元件,如图1-1-5所示:图1-1-5 80C52元件摆放图同理,摆放好发光LED和220R电阻。如图1-1-6所示:图1-1-5 80C52、发光LED和220R电阻元件摆放图五、左边单击选择列表(如图1-1-6)中的POWER,在绘图框单击,会出现,双击该元件会弹出Edit Terminal Label界面,在Label标签下的标号选VCC,如图1-1-7所示:图1-1-6 列表选项图1-1-7 Edit Terminal Label界面六、用导线把元器件连起来,连好后如图1-1-8所示:图1

14、-1-8 元器件连接图七、双击80C52元件,进入编辑元件界面,如图1-1-9所示:图1-1-9 编辑元件界面在Program File:导入hex程序,在Clock Frequency选择好仿真所需的经侦频率,如下:图1-1-10 Clock Frequency经侦频率选择界面点击确定。八、仿真调试:点击调试开始/重新启动调试。九、保存文件:文件保存设计输入文件名单击保存。1.3 keil使用教程KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程。他能能嵌入汇编语言保留了汇编代码高效,快

15、速的特点。KEIL C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。下面介绍Keil C51软件的使用方法,这应该算一个入门教程,51奉献给大家进入 Keil C51 后,屏幕如下图所示。几秒

16、钟后出现编辑界,如图1-2-1所示:图1-2-1 Keil C51启动界面图1-2-2 Keil C51编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。1、 建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项 图1-2-3 Keil C51建立一个新工程2、 然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存. 图1-2-4 Keil C51建立一个新工程3、这时会弹出

17、一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图1-2-5所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.图1-2-5 Keil C51选择单片机的型号4、完成上一步骤后,屏幕如下图1-2-6所示 图1-2-6 Keil C51界面到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。5、在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项 。如图1-2-7所示:图1-2-7 Keil C51新建文件选项界面 新建

18、文件后屏幕如下图1-2-8所示 图1-2-8 Keil C51新建文件界面此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。 图1-2-9 Keil C51保存文件界面6、回到编辑界面后,单击“Target 1”前面的“”号,然后在“Source Group 1”上单击右键,

19、弹出如下单 :图1-2-10 Keil C51“Source Group 1”上单击右键选项然后单击“Add File to Group Source Group 1” 屏幕如下图所示 图1-2-10 单击“Add File to Group Source Group 1” 后屏幕界面选中Test.c,然后单击“Add ”屏幕好下图1-2-11所示 :图1-2-11 单击“Add ”屏幕界面注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同7、现在,请输入如下的C语言源程序:#include /包含文件void main(vo

20、id) /主函数SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; /此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. n”); /打印程序执行的信息 printf(“I will be your friend.n”); while(1); 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示: 图1-2-11 C语言源程序界面8、在上图中,单击“Project”菜单,再在下拉菜单中单击“B

21、uilt Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示 图1-2-12 “Start/Stop Debug Session”界面9、单击“Project”菜单,再在下拉菜单中单击“ ” 在下图中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。图1-2-12 Create HEX File界面1.4 STC下载软件使用说明1. 打开STC-I

22、SP的图标。图1-3-1 STC-ISP图标2. STC-ISP整体界面如下。图1-3-2 STC-ISP整体界面3.然后在步骤一中选择单片机型号,可以选择(STC89C51RC)。图1-3-3 STC-ISP选择单片机型号界面4.点“Open File”然后根据自己所存程序的路径选择所要下载的程序,选的是Hex 文档。图1-3-3 STC-ISP Open File界面5. (1)选择端口,选择根据自己电脑的硬件端口。(如COM1) 图1-3-4 STC-ISP 硬件端口设置界面(2) 然后选MaxBuad中选择波特率。 图1-3-5 STC-ISP 波特率设置界面6. 选择可以不管(因为本

23、实验板符合默认的模式)。 图1-3-6 STC-ISP 步骤4界面7. 按下“Download/下载”。给开发板断电后在上电。图1-3-7 STC-ISP Download/下载界面8.下载完成。 图1-3-8 STC-ISP下载完成界面第 2 章 实验项目设计2.1流水灯的软硬件控制设计一、 实验目的:1、通过实验,熟悉并掌握试验系统原理与使用方法。2、通过实验掌握51单片机的I/O口使用方法。二、 实验内容:1、利用51单片机的I/O口作用,设置流水灯。2、掌握使用keil环境编程。3、掌握下载keil编译好的程序到51单片机中。三、 实验步骤:1、了解并熟悉实验设备,掌握51单片机与外设

24、流水灯的接法。2、用keil编程环境,编写流水灯程序。3、在keil编译好的程序下载到51单片机中,使流水灯依次点亮。4、编写实现各种典型程序,熟悉并掌握程序设计方法。5、完成实验报告。四、 实验原理图:五、 实物图:六、实验程序:/ ex1-1:使用P1口流水点亮8位LED #include /包含单片机寄存器的头文件/*函数功能:延时一段时间*/void delay(void)unsigned char i,j;for(i=0;i250;i+) for(j=0;j250;j+);/*函数功能:主函数 */void main(void) while(1) P1=0xfe; /第一个灯亮del

25、ay(); /调用延时函数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 /包含单片机寄存器的头文件/*函数功能:延时一段时间*/vo

26、id delay(void) unsigned int n; for(n=0;n30000;n+);/*函数功能:主函数*/void main(void) unsigned char i; while(1) P1=0xfe; delay(); for(i=0;i8;i+)/设置循环次数为8 P1=(P11)|0x01); /每次循环P1的各二进位左移1位,低位与1或 delay(); /调用延时函数 /ex1-3用字符型数组控制P0口8位LED流水点亮#include /包含单片机寄存器的头文件/*函数功能:延时约60ms (3*100*200=60000s)*/void delay60ms(

27、void)unsigned char m,n;for(m=0;m100;m+)for(n=0;n200;n+);/*函数功能:主函数*/void main(void) unsigned char i;unsigned char code Tab =0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /定义无符号字符型数组 while(1)for(i=0;i8;i+) P1=Tabi;/依次引用数组元素,并将其送P1口显示 delay60ms();/调用延时函数 /ex-4:内部函数intrins.h应用举例#include /包含51单片机寄存器定义的头文件#in

28、clude /包含函数isalpha()声明的头文件/*函数功能:延时约150ms*/void delay(void)unsigned char m,n;for(m=0;m200;m+)for(n=0;n250;n+);/*函数功能:主函数*/void main(void)P1=0xfe; /P1=1111 1110Bwhile(1)P1=_crol_(P1,1);/ 将P1的二进制位循环左移1位后再赋给P1delay(); /调用延时函数/ex1-5:用定时器T0查询方式P1口8位控制LED#include / 包含51单片机寄存器定义的头文件/*函数功能:主函数*/void main(vo

29、id) int i = 0;TMOD=0x01; /使用定时器T0的模式1TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0TF0=0;P1=0xff; while(1)/无限循环等待查询 while(TF0=0);/等待溢出 TF0=0; i+; if(i =8) i =0; switch(i) case 0 : P1=0xfe; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位

30、赋初值 break; case 1 : P1=0xfd; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 break; case 2 : P1=0xfb; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 break;case 3 : P1=0xf7; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值

31、break;case 4 : P1=0xef; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 break;case 5 : P1=0xdf; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 break;case 6 : P1=0xbf; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 break;

32、case 7 : P1=0x7f; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 break; /ex1-6:用定时器T0的中断控制1位LED#include / 包含51单片机寄存器定义的头文件int i;/*函数功能:延时一段时间*/void delay(void) /两个void意思分别为无需返回值,没有参数传递unsigned int i,j; /定义无符号整数,最大取值范围65535for(i=0;i200;i+)for(j =0;j200;j+); /*函数功能:主函数*/void

33、 main(void) P1 =0xfe;EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0while(1);/无限循环等待中断 /*函数功能:定时器T0的中断服务程序,进入流水灯程序*/void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

34、int temp;P1 = (P11)|0x01);/P1左移一位,低位移入0与1相或temp =P1;if(temp = 0xff) /如果P1=1111 1111BP1 =0xfe; /P1 = 1111 1110TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值 /ex1-7:用指针数组控制P1口8位LED流水点亮#include/*函数功能:延时约150ms (3*200*250=150 000s=150ms*/void delay150ms(void)unsigned char m,n;fo

35、r(m=0;m200;m+)for(n=0;n250;n+);/*函数功能:主函数*/void main(void) unsigned char code Tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char *p =&Tab0,&Tab1,&Tab2,&Tab3,&Tab4,&Tab5, &Tab6,&Tab7;/指针变量指向数组unsigned char i; /定义无符号字符型数据while(1)for(i=0;i8;i+)P1=*pi;delay150ms();2.2数码管的显示系统设计一 、实验目的:1、通过实验,熟悉并掌

36、握试验系统原理与使用方法。2、通过实验掌握51单片机的I/O口使用方法。3、掌握数码管引脚接法,和使用方法。二、实验内容: 1、利用51单片机的I/O口作用,点亮数码管。2、掌握使用keil环境编程。3、掌握下载keil编译好的程序到51单片机中。三、实验步骤:1、进一步了解并熟悉实验设备,掌握51单片机与外设数码管的接法。2、用keil编程环境,编写点亮数码管的程序。3、在keil编译好的程序下载到51单片机中,使数码管点亮。4、完成实验报告。四、实验原理图:五、实物图:六、实验程序:#include /程序头文件/*函数功能:主函数*/void main()while(1)P2=0xaa;

37、P3=0xff;2.3矩阵键盘的控制设计一、 实验目的:1、通过实验,熟悉并掌握试验系统原理与使用方法。2、通过实验掌握51单片机的I/O口使用方法。3、掌握矩阵键盘的原理,和使用方法。4、进一步掌握数码管引脚接法,和使用方法。二、 实验内容:1、利用51单片机的I/O口作用,实现矩阵键盘,并在数码管上显示。2、掌握使用keil环境编程。3、掌握下载keil编译好的程序到51单片机中。三、 实验步骤:1、进一步掌握51单片机与外设数码管的接法和矩阵键盘的使用原理。2、用keil编程环境,编写矩阵键盘的程序。3、在keil编译好的程序下载到51单片机中,使矩阵键盘按下时,数码管上显示相应的数字。

38、4、 完成实验报告。四、实验原理图:五、实物图:六、实验程序:#include/头文件#define uint unsigned int#define uchar unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,20; /对应的0、1、f的断码uint temp,key;/*函数功能:延时Zms*/void delay(uint z)uint i,j;for(i=z;i0;i-)for(j=110;j0;j-);/*函数功能

39、:数码管显示*/void display(uint x)P1=tablex;/*函数功能:主函数*/void main()while(1) /大循环P2=0xfe;temp=P2;if(temp&0xf0)!=0xf0) /检查第一行是否有键按下delay(5); /延时一段时间去抖P2=0xfe;temp=P2;if(temp&0xf0)!=0xf0) /再次检查第一行是否有键按下switch(temp)case 0xee: key=0; break; /第一列有键按下case 0xde: key=1;break; /第二列有键按下case 0xbe: key=2;break; /第三列有键

40、按下case 0x7e: key=3; break; /第四列有键按下while(temp&0xf0)!=0xf0) /检测按键是否松开 temp=P2; display(key); /数码管显示 P2=0xfd;temp=P2;if(temp&0xf0)!=0xf0)delay(5);P2=0xfd;temp=P2;if(temp&0xf0)!=0xf0)switch(temp)case 0xed: key=4; break;case 0xdd: key=5;break;case 0xbd: key=6;break;case 0x7d: key=7; break;while(temp&0xf

41、0)!=0xf0) temp=P2; display(key); P2=0xfb;temp=P2;if(temp&0xf0)!=0xf0)delay(5);P2=0xfb;temp=P2;if(temp&0xf0)!=0xf0)switch(temp)case 0xeb: key=8; break;case 0xdb: key=9; break;case 0xbb: key=10; break;case 0x7b: key=11; break;while(temp&0xf0)!=0xf0) temp=P2; display(key); P2=0xf7;temp=P2;if(temp&0xf0)

42、!=0xf0)delay(5);P2=0xf7;temp=P2;if(temp&0xf0)!=0xf0)switch(temp)case 0xe7: key=12; break;case 0xd7: key=13; break;case 0xb7: key=14; break;case 0x77: key=15; break;while(temp&0xf0)!=0xf0) temp=P2; display(key); 2.4 点阵显示屏的软硬件系统设计一、实验目的:1、通过实验,熟悉并掌握试验系统原理与使用方法。2、掌握点阵的原理,和使用方法。二、实验内容:1、实现点阵显示字。2、了解点阵的使用原理和引脚接法。3、掌握使用keil环境编程。4、掌握下载keil编译好的程序到51单片机中。三、实验步骤:1、掌握51单片机与外设点阵的引脚接法和使用原理。2、用keil编程环境,编写点阵显字的程序。3、在keil编译好的程序下载到51单片机中,使点阵显示“太”字。4、完成实验报告。四、实验原理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论