单片机原理实验指导书.doc_第1页
单片机原理实验指导书.doc_第2页
单片机原理实验指导书.doc_第3页
单片机原理实验指导书.doc_第4页
单片机原理实验指导书.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

浙江科技学院信息学院 单片机实验指导书目录实验一、单片机概况与调试流程实验2实验二、数码管动态显示实验13实验三、单片机延迟方式实验18实验四、44矩阵式键盘识别实验24实验五、I/O 交通灯实验28实验六、单片机串口实验33实验七、A/D转换器基本应用实验44实验八、数字时钟实验53实验一、单片机概况与调试流程实验一、实验目的1、 了解Keil调试环境。2、 学会使用调试工具对程序的跟踪排错。3、 深刻理解单片机中汇编语言的执行情况。4、 深刻理解单片机工作的核心要素。二、实验原理KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,他能能嵌入汇编语言保留了汇编代码高效,快速的特点。KEIL C51编译器的功能不断增强。使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。以下是不使用KEIL C51集成开发环境项目管理方式开发应用程序的步骤:进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界图1.1启动Keil C51时的屏幕图1.2进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。 1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定. 4)完成上一步骤后,屏幕如下图所示 到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项 新建文件后屏幕如下图所示 此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。6)回到编辑界面后,单击“Target 1”前面的“”号,然后在“Source Group 1”上单击右键,弹出如下菜单然后单击“Add File to Group Source Group 1” 屏幕如下图所示选中Test.c,然后单击“Add”屏幕好下图所示 注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同 7)现在,请输入如下的C语言源程序: #include /包含文件#include void main(void) /主函数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会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示8)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示 9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果,其结果如下图所示至此,我们在Keil C51上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢? 10)单击“Project”菜单,再在下拉菜单中单击“ ” 在下图中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。 三、单片机C51简介1、数据类型Keil C 有ANSI C 的所有标准数据类型除此之外为了更加有利的利用8051 的结构还加入了一些特殊的数据类型下表显示了标准数据类型在8051 中占据的字节数数据类型 大小Bit 1bitchar/unsigned char 8 bitint/unsigned int 16 bitlong/unsigned long 32 bitfloat/double 32 bitgeneric pointer 24 bit2、特殊功能寄存器特殊功能寄存器用sfr 来定义而sfr16 用来定义16 位的特殊功能寄存器如DPTR通过名字或地址来引用特殊功能寄存器地址必须高于80H 可位寻址的特殊功能寄存器的位变量定义用关键字sbit SFR 的定义如sfr SCON=0X98; /定义 SCONsbit SM0=0X9F; /定义 SCON 的各位3、一个完整的程序/*- 名称:定时器1 编写:师访 日期:2009.5 修改:无 内容:通过定时让LED灯闪烁-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED=P12; /定义LED端口/*- 定时器初始化子程序-*/void Init_Timer1(void) TMOD |= 0x10; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 TH1=0xFF; /给定初值,这里使用定时器最大值从0开始计数一直到65535溢出 TL1=0xF0; EA=1; /总中断打开 ET1=1; /定时器中断打开 TR1=1; /定时器开关打开/*- 主程序-*/main() Init_Timer1(); while(1);/*- 定时器中断子程序-*/void Timer1_isr(void) interrupt 3 TH1=0xFF; /重新赋值 TL1=0xF0; LED=LED; /LED闪烁4、中断服务8051 的中断系统十分重要,C51 使你能够用C 来声明中断和编写中断服务程序(当然你也可以用汇编来写) 中断过程通过使用 interrupt 关键字和中断号(0 到31)来实现.中断号告述编译器中断程序的入口地址。IE 寄存器中的使能位和C 中的中断号 中断源0 外部中断01 定时器0 溢出2 外部中断13 定时器1 溢出4 串行口中断5 定时器2 溢出void timer0(void) interrupt 1 TR0=0; / 停止定时器0TH0=RELOADVALH; / 50ms后溢出TL0=RELOADVALL;TR0=1; / 启动 T0tick_count+; / 时间计数器加1printf(tick_count=%05un, tick_count);四、试验箱介绍1、连接线方法2、程序烧写A、找到烧写软件B、烧写步骤1、选择芯片类型2、打开需要烧写的HEX文件3、选择对应的COM口4、点击“下载”,关闭开发板电源,然后稍等片刻打开,等待下载完毕。(顺序非常重要)五、实验设备1、 微机一台2、 单片机试验箱一套六、预习思考题1、 安装好Keil软件。2、 学习Keil软件基本使用。3、 预习基本的C51语言编写格式。七、实验内容与步骤1、 根据Keil编程流程,编写一个简短程序。程序要求:汇编语言合格规范,编程习惯良好,完成把05H立即数送A寄存器,A加上立即数EFH,把P1设置成低电平。2、 调试程序在软件中打开特殊功能寄存器查看器和寄存器查看器以及外部端口查看器。通过单步执行观察各个寄存器的变化,深刻理解C语言执行过程。八、实验注意事项1、 正确区分05H和05H之间的区别。2、 注意立即数如果是以字母开头的要前面加0。3、 在运算过程中若有数据溢出则可以在PSW中检测。九、实验报告1、 根据实验要求完成程序,写出自己在写程序过程中的各个错误环节以及原因。2、 通过单步执行调试,详细写出每条语句对相关寄存器的影响,以及其产生的原因。实验二、数码管动态显示实验一、实验目的1、理解数码管显示的原理。2、理解动态显示的原理。3、进一步加强汇编编程能力。二、实验原理1、七段数码管原理在单片机中显示器件主要有LED和LCD两种。LED就是所谓的发光二极管,LCD是我们通常看到的液晶显示器。显示数字的话我们一般可以用数码管来显示,这种器件是有8个发光管组成。数码管的亮和暗的组合可以组合成不同的数字和字母。LED的种类有上述的最常用的,还有米字型的和奇异型的。其中数码管有共阴和共阳两种。数码管代码表3、 动态显示原理本电路设计:图2-1 8位8段LED动态显示器电原理图在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。8位8段LED动态显示器电原理图如图2-1所示。图2-1所示为一个8位8段LED动态显示器电路原理图。其中段选线占用一个74HC138三八译码器,位选线占用一个译码器的I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选通状态的话,8位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示出字符,而其它位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他的位选线处于关闭状态。如此循环下去,就可以使各位“同时”显示出将要显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的。4、 软件设计三、实验设备1、微机一台2、单片机试验台一套四、预习思考题1、熟悉实验装置的使用。2、理解动态显示的原理。3、用汇编语言来控制动态显示。4、学会查表程序设计。五、实验内容与步骤1、根据实验理解动态显示试验电路。2、根据原理图写一个显示一位数据的汇编程序并在实验装置中调试。3、完成动态显示八位数据。4、发挥部分,编写099的计数器。六、实验注意事项1、理解动态显示与静态显示之间的区别。2、动态显示过程中要求有50Hz以上的刷新率。七、实验报告1、正确理解数码管。2、明确动态显示的原理。3、编写动态显示程序。4、给出动态显示的实验结果。八、动态显示程序清单C源程序:/*- 名称:数码管动态扫描 编写:师访 日期:2009.5 修改:无 内容:数码管使用动态扫描显示,所以可以同时看到数码管同时显示数字或者字符,扫描原理可以参考说明书或者视频教程。-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义unsigned char const dofly=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值01234567unsigned char code seg=0,1,2,3,4,5,6,7;/分别对应相应的数码管点亮,即位码/*-延时子程序-*/void delay(unsigned int cnt) while(-cnt);/*- 主函数-*/main() unsigned char i; while(1) P0=doflyi;/取显示数据,段码 P2=segi; /取位码 delay(20000); /扫描间隙延时,时间太长会闪烁,太短会造成重影,这里使用长时间方便了解显示原理 i+; if(8=i) /检测8位扫描完全? i=0; 汇编源程序;动态扫描数码显示程序ORG 00HMOV 20H,#3FHMOV 21H,#06HMOV 22H,#5BHMOV 23H,#4FHMOV 24H,#66HMOV 25H,#6DHMOV 26H,#7DHMOV 27H,#07HSTART:CALL SCAN JMP STARTSCAN: MOV A,#0 ;扫描子程序 MOV R0,#20H MOV R2,#8LOOP: MOV P2,A MOV P0,R0 INC R0 CALL DELAY ADD A,#01H DJNZ R2,LOOP MOV R2,#8 CLR A RETDELAY:MOV R3,#1 ;扫描延时D1:MOV R4,#2D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET END实验三、单片机延迟方式实验一、实验目的1、 掌握时钟延迟和软件延迟的用法。2、 掌握单片机实现音频输出。二、实验原理1、 单片机的节拍通过T0中断发生。2、 单片机的频率用软件延迟产生。3、 程序流程图是开始初始化T0初始化数据获取曲调获取节拍P3.3取反检测歌曲结束延迟半个周期检测节拍结束等待1妙钟否是否三、实验设备1、 PC机 2、 单片机实验箱四、预习思考题1、 预先调试程序。2、 理解程序。五、实验内容与步骤1、 完成硬件电路图的搭建。2、 调通程序。六、实验注意事项1、在调试过程中采用合适的蜂鸣器。2、程序流程需要注意。七、实验报告1、理解实验原理。2、画出实验流程图。3、给出程序和调试结果。八、程序清单ORG 0000HLJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETIorg 0100HSTART: MOV SP,#50HMOV TH0,#0D8HMOV TL0,#0EFHMOV TMOD,#01HMOV IE,#82H ;EA=1,ET0=1MUSIC0:NOPMOV DPTR,#DAT ;表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0MUSIC1:NOPCLR AMOVC A,A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,A ;音调放入R6INC DPTRCLR AMOVC A,A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:CPL P3.3MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否? ;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTR ; INC BLJMP MUSIC1MUSIC3:NOPCLR TR0 ;休止100毫秒MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MUSIC1END0:NOPMOV R2,#64H ;歌曲结束,延时1秒后继续MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6LJMP MUSIC0DEL:NOPDEL3: MOV R4,#02HDEL4: NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT:db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20hdb 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20hdb 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10hdb 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20hdb 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20hdb 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20hdb 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10hdb 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80hdb 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20hdb 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20hdb 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10hdb 20h,10h,2bh,10h,26h,30h,30h,80h,00HEND九、C语言程序/*- 名称:音乐播放 编写:师访 日期:2009.5 修改:无 内容:-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit speaker=P12; /定义音乐输出端口,需要连接到对应的喇叭,请参考电路图unsigned char timer0h,timer0l,time; /世上只有妈妈好数据表code unsigned char sszymmh= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1, 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ; / 音阶频率表 高八位code unsigned char FREQH= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位code unsigned char FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;/*/* 延时函数 */*/void delay(unsigned char t) unsigned char t1; unsigned long t2; for(t1=0;t1t;t1+) for(t2=0;t28000;t2+) ; TR0=0; /*/* 定时器中断函数 */*/void t0int() interrupt 1 TR0=0; speaker=!speaker; TH0=timer0h; TL0=timer0l; TR0=1; /*/* 音乐处理函数 */*/void song() TH0=timer0h; TL0=timer0l; TR0=1; delay(time); /*/* 主函数 */*/ void main(void) unsigned char k,i; TMOD=1; /置CT0定时工作方式1 EA=1; ET0=1;/IE=0x82 /CPU开中断,CT0开中断 while(1) i=0; while(i100) /音乐数组长度 ,唱完从头再来 k=sszymmhi+7*sszymmhi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=sszymmhi+2; i=i+3; song(); 实验四、44矩阵式键盘识别实验1 实验任务如图4.11.2所示,用AT89S51的并行口P1接44矩阵键盘,以P3.0P3.3作输入线,以P3.4P3.7作输出线;在数码管上显示每个按键的“0F”序号。对应的按键的序号排列如图4.11.1所示图4.11.12 硬件电路原理图图4.11.23 系统板上硬件连线(1 把“单片机系统“区域中的P3.0P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的H1H4L1L4端口上;(2 把“单片机系统”区域中的P0.0/AD0P0.7/AD7端口用8芯排线连接到“四路动态数码显示模块”区域中的任一个ah端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,P0.7/AD7对应着h。位选接地。4 程序设计内容(1 44矩阵键盘识别处理(2 每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。5 程序框图P3=FFH,P3.0=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键P3=FFH,P3.1=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键P3=FFH,P3.2=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键P3=FFH,P3.3=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键图4.14.36 C语言源程序/*- 名称:矩阵键盘 编写:师访 日期:2009.5 修改:无 内容:通过反转法循环扫描矩阵键盘,并通过数码管显示数据-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char#define uint unsigned intunsigned char const dofly=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71;/0-F/*- 函数声明-*/ uchar keyscan(void);/键盘扫描void delay(uint i); /演示程序/*- 主函数-*/void main() uchar key; P2=0x00; /1数码管亮 按相应的按键,会显示按键上的字符 while(1) key=keyscan(); /调用键盘扫描, switch(key) case 0x7e:P0=dofly0;break;/0 按下相应的键显示相对应的码值 case 0x7d:P0=dofly1;break;/1 case 0x7b:P0=dofly2;break;/2 case 0x77:P0=dofly3;break;/3 case 0xbe:P0=dofly4;break;/4 case 0xbd:P0=dofly5;break;/5 case 0xbb:P0=dofly6;break;/6 case 0xb7:P0=dofly7;break;/7 case 0xde:P0=dofly8;break;/8 case 0xdd:P0=dofly9;break;/9 case 0xdb:P0=dofly10;break;/a case 0xd7:P0=dofly11;break;/b case 0xee:P0=dofly12;break;/c case 0xed:P0=dofly13;break;/d case 0xeb:P0=dofly14;break;/e case 0xe7:P0=dofly15;break;/f /*- 键盘扫描程序-*/uchar keyscan(void) /键盘扫描函数,使用行列反转扫描法 uchar cord_h,cord_l;/行列值中间变量 P3=0x0f; /行线输出全为0 cord_h=P3; /读入列线值 if(cord_h!=0x0f) /先检测有无按键按下 delay(100); /去抖 cord_h=P3; /读入列线值 if(cord_h!=0x0f) cord_h=P3; /读入行线值00001101 P3=0xf0; /输出当前列线值cord_l=P3; /读入列线值11010000while(P3!=0xF0); return(cord_h+cord_l);/键盘最后组合码值 return(0xff); /返回该值/*- 延时程序-*/void delay(uint i) /延时函数while(i-);实验五、I/O 交通灯实验一、实验目的和要求:1、学习在单片机系统中扩展简单I/O 接口的方法;2、学习数据输出程序的设计方法;3、学习模拟交通灯控制的实现方法;4、学习外部中断技术的基本使用方法;5、学习中断处理程序的编程方法。二、实验内容和原理或涉及的知识点:1、输入/输出接口2、外部中断源的使用,包括触发方式、中断向量、中断服务程序的编写;3、交通灯的变化规律。三、实验条件:1、单片机试验台一套四、实验设计方案:1、以两个74LS273 作为输出口,控制12 个LED 发光二极管的亮和灭,模拟交通信号灯的管理;在此基础上,增加允许急救车优先通过的要求。五、实验过程1、根据实验预习部分的实验设计方案,设计如下电路原理图:2、编写程序,流程图如下。六、实验数据和实验结果记录1、根据前面设计的程序流程图,编写程序如下。/*- 名称:红绿灯 编写:师访 日期:2009.5 修改:无 内容:1、程序目的:使用定时器学习 倒计时 红绿灯原理 主要程序和倒计时一样 2、硬件要求:数码管、晶振12M-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义bit red,green,yellow,turnred;/定义红绿黄灯标志位code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴数码管 0-9 unsigned char Dis_Shiwei;/定义十位unsigned char Dis_Gewei; /定义个位/*/* 延时函数 */*/void delay(unsigned int cnt) while(-cnt);/*/* 主函数 */*/main()TMOD |=0x01;/定时器设置 10ms in 12M crystalTH0=0xd8;TL0=0xf0;IE

温馨提示

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

评论

0/150

提交评论