单片机实验报告史昊卿杨_第1页
单片机实验报告史昊卿杨_第2页
单片机实验报告史昊卿杨_第3页
单片机实验报告史昊卿杨_第4页
单片机实验报告史昊卿杨_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.单片机实验报告学院:班级:交通运输工程学院交设1403姓名:史昊卿杨学号:1指导老师:傅勤毅2017年5月20日目录第一章单片机简介.错误味定义书签第二章实验要求.错误!未定义书签第三章实验设备.错误!未定义书签第四章实验安排.错误!未定义书签第五章实验内容.错误!未定义书签实验一:LED流水灯实验.错误!未定义书签实验二步进电机.错误!未定义书签实验三独立按键.错误!未定义书签实验兀矩阵键盘.错误!未定义书签实验五静态数码管显示.错误!未定义书签实验六动态数码管显示.错误味定义书签0文档收集于互联网,如有不妥请联系删除文档来源为:

2、从网络收集整理.word版本可编辑.欢迎下载支持.实验七NE555脉冲发生器.错误味定义书签。实验八RS232串口实验.错误!未定义书签。六、心得体会错误!未定义书签。第一章单片机简介单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM只读存储器ROM多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M

3、的高速单片机。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,1文档收集于互联网,如有不妥请联系删除.常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。单片机(Microcontrollers)

4、诞生于1971年,经历了SCMMCUSoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS5係列MCI系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片机主频已经

5、超过300MHz性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。第二章实验要求1学习KeilC51集成开发工具的操作及调试程序的方法,包括:仿真调试与2文档收集于互联网,如有不妥请联系删除.脱机运行间的切换方法2熟悉TD-51单片机系统板及实验系统的结构及使用3进行MCS5单片机指令系统软件编程设计与硬件接口功能设4学习并掌握KeilC51软件联机

6、进行单片机接口电路的设计与编程调试5完成指定MCS5单片机综合设计题第三章实验设备HC600S-51单片机开发板KeilC51普中自动下载软件第四章实验安排LED灯实验步进马达试验独立按键控制LED实验矩阵键盘实验静态数码管实验动态数码管实验NE555脉冲发生器实验(定时/计数器)RS232串口通信实验(接收与发送)第五章实验内容实验一:LED流水灯实验一、实验目的:掌握Keil软件的使用方法。掌握普中下载软件的使用方法。加深理解单片机I/O引脚以及内存结构。重新熟悉C语言编程法则。二、实验要求编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮

7、D1,再点亮D2、D3D8、D1,循环点亮。每点亮一个LED,采用软件延时一段时间。三、实验内容1、实验程序设计如图1-1为发光二极管的内部连接图,本次设计使用P1口进行连接。发光二极管内部连接图用KEIL软件设计程序如下:#include#include#defineunitunsignedint#defineucharunsignedcharuchartemp;sbitbeep=P2A3;/定义蜂鸣voiddelay(unitz);参数类型一定要写,参数名可以不写voidmain()文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.beep=0;temp=0 xfe;while

8、(1)/死循环P仁temp;temp=_crol_(temp,1);循环左移一位delay(200);P1=temp;voiddelay(unitz)unitx,y;/局部变量for(x=200;x0;x-)for(y=200;y0;y-);/延时程序编译程序后生成.hex文件。2、实验连线如图,将P1口与锁存器74C53相连。再利用普中科技软件将编译好.hex文件下载到单片机中。可观察到流水灯连续闪烁的现象。流水灯实验文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.实验二步进电机一、实验目的i熟悉步进机的工作原理。通过编写指令控制步进机工作,进一步熟悉单片机I/O引脚功能。熟悉

9、实验板及相关软件操作。二、实验要求P1口作为输出口控制步进电动机的四相绕组,编写程序,控制步进电动机每1s正向转动一步。晶振频率12MHz。解:步距角:Bb=360/mZ()电机转速:n=60f/mZ(r/min)上式中:f为脉冲频率,单位:Hz或步/s。m为拍数,本例中m=4。Z为转子齿数,本例中Z=5。则步距角Bb=18。题目要求步进电动机每1s正向转动一步,即T=1s,f=1Hz,电机转速n=3r/min。三、实验内容1、步进电机工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即

10、给电机加一个脉冲信号,电机则转过一个步距角。2、程序设计根据步进电机的工作原理,设计步进电动机的控制状态与P1口的控制码的对应关系如下表2-1所示。表2-1控制状态P1口控制码P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0D相C相B相A相A相、B相03H00000011文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.绕组通电B相、C相绕组通电06H00000110C相、D相绕组通电0CH00001100D相、A相绕组通电09H000010013、程序:#inelude#defineuintunsignedintvoidDelayms(uintx);main()w

11、hile(1)while(1)A相、B相绕组通电B相、C相绕组通电C相、D相绕组通电D相、A相绕组通电/死循环P1=0 x03;Delayms(1000);P1=0 x06;Delayms(1000);P1=0 x0c;Delayms(1000);P仁0 x09;Delayms(1000);voidDelayms(uintx)/延时函数uintn;for(;x0;x-)for(n=0;n123;n+);文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.4、实验连线将程序下载到单片机中,可以看到步进电机转动。实现现象如图2-1所示:步进电机实验实验三独立按键一、实验目的熟悉C51包含

12、的头文件。掌握独立按键的工作原理。学习按键去抖动问题。二、实验要求通过开发板上的8个独立按键控制8个LED灯,实现按下按键对应的LED灯亮,其他灯灭的效果。三、实验内容3.1独立式按键问题1、独立式按键:其特点是每个按键单独占用一根I/O口线。每个按键工作不会影响其他I/O口线的状态,多用于所需按键不多的场合。2、按键去抖问题:按键的抖动时间约为510ms,抖动会引起CPU对一次键操作进行多次处理,从而错误的键响应。软件去抖动:检测到按键按下/释放后,延时10ms后再确认该键是否确实按下/释放,消除抖动影响。3、实验程序设计#include/此文件中定义了51的一些特殊功能寄存器#includ

13、e/-定义要使用的IO口-/#defineGPIO_KEYP1/独立键盘用P1口#defineGPIO_LEDP0/led使用P0口/-声明全局函数-/voidDelay10ms(unsignedintc);/延时10msunsignedcharKey_Scan();10文档收集于互联网,如有不妥请联系删除.文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.voidmain(void)unsignedcharledValue,keyNum;ledValue=0 x01;while(1)keyNum=Key_Scan();/扫描键盘switch(keyNum)case(0 xFE):

14、/返回按键K1的数据ledValue=0 x01;break;case(0 xFD):/返回按键K2的数据ledValue=0 x02;break;case(0 xFB):/返回按键K3的数据ledValue=0 x04;break;case(0 xF7):/返回按键K4的数据ledValue=0 x08;break;case(0 xEF):/返回按键K5的数据ledValue=0 x10;break;case(0 xDF):/返回按键K6的数据ledValue=0 x20;break;case(0 xBF):/返回按键K7的数据ledValue=0 x40;break;case(0 x7F)

15、:/返回按键K8的数据ledValue=0 x80;break;default:break;GPIO_LED=ledValue;/点亮LED灯unsignedcharKey_Scan()unsignedcharkeyValue=0,i;/保/存键值/-检测按键1-/if(GPIO_KEY!=0 xFF)/检测按键K1是否按下Delay10ms(1);/消除抖动if(GPIO_KEY!=0 xFF)/再次检测按键是否按下keyValue=GPIO_KEY;i=0;while(i0;c-)for(b=38;b0;b-)for(a=130;a0;a-);3.3实验现连线将程序下载到单片机中,可以看到

16、不同按键下相应的led灯点亮。实现现象如图所示:独立按键实验文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.实验四矩阵键盘一、实验目的充分理解4x4矩阵键盘内部接线图,并根据其结构进行程序设计试比较独立按键与矩阵键盘的区别。进一步掌握单片机程序设计办法。、实验要求按下矩阵键盘按键,1602显示其键值。三、实验内容1、矩阵键盘矩阵键盘是进行逐行扫描的。每一个按键的两端,都分别接在某一个列线和行线上,即:“行线和列线是通过某个按键的按下和抬起实现联通和断开的”,和“导线两端上的信号是经过“与”的关系再体现到导线上的。”图4-1矩阵键盘2、程序设计根据表4-1K0K15键码表以及独立按

17、键的程序用KEIL软件设计如下程序:表4-1K0K15键码表K0:OxeeK1:0 xde1110111011011110K4:0 xedK5:0 xdd1110110111011101K8:0 xebK9:0 xdb1110101111011011K12:0 xe7K13:0 xd71110011111010111K2:0 xbeK3:0 x7e1011111001111110K6:0 xbdK7:0 x7d1011110101111101K10:0 xbbK11:0 x7b1011101101111011K14:0 xb7K15:0 x771011011101110111#include#

18、includelcd.h/-定义使用的IO口-/#defineGPIO_KEYP1/-定义全局变量-/unsignedcharPuZh17=Thekeyvalueis:;unsignedcharKeyValue;/用来存放读取到的键值voidKeyScan(void);/-声明全局函数-/voidDelay10ms(unsignedintc);/误差0usvoidmain(void)unsignedchari;LcdInit();for(i=0;i17;i+)if(i=14)LcdWriteCom(0 x80+0 x40);LcdWriteData(PuZhi);while(1)KeyScan

19、();LcdWriteCom(0 x80+0 x44);if(KeyValue10)LcdWriteData(0+KeyValue);elseLcdWriteData(7+KeyValue);/A的ASCII码的前10位是7,所以用7做基数voidKeyScan(void)chara=0;GPIO_KEY=0 x0f;if(GPIO_KEY!=0 x0f)/读取按键是否按下Delay10ms(1);延时10ms进行消抖if(GPIO_KEY!=0 x0f)/再次检文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.测键盘是否按下/测试列GPIO_KEY=0X0F;switch(GPI

20、O_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=4;break;case(0X0d):KeyValue=8;break;case(0X0e):KeyValue=12;break;/测试行GPIO_KEY=0XF0;switch(GPIO_KEY)case(0X70):KeyValue=KeyValue+3;break;case(0Xb0):KeyValue=KeyValue+2;break;case(0Xd0):KeyValue=KeyValue+1;break;case(0Xe0):KeyValue=KeyValue;break;w

21、hile(a0;c-)for(b=38;b0;b-)for(a=130;a0;a-);附1:Icd.c(包含main函数中Icdinit函数)#includelcd.hvoidLcd1602_Delay1ms(uintc)/误差0usuchara,b;for(;c0;c-)for(b=199;b0;b-)for(a=1;a0;a-);#ifndefLCD1602_4PINS/当没有定义这个LCD1602_4PINS时voidLcdWriteCom(ucharcom)/写入命令LCD1602_E=0;/使能LCD1602_RS=0;/选择发送命令LCD1602_RW=0;/选择写入LCD1602

22、_DATAPINS=com;/放入命令Lcd1602_Delay1ms(1);/等待数据稳定LCD1602_E=1;/写入时序Lcd1602_Delay1ms(5);/保持时间LCD1602_E=0;#elsevoidLcdWriteCom(ucharcom)/写入命令LCD1602_E=0;/使能清零LCD1602_RS=0;/选择写入命令LCD1602_RW=0;/选择写入LCD1602_DATAPINS=com;/由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E=1;/写入时序Lcd1602_Delay1ms(5);LCD

23、1602_E=0;Lcd1602_Delay1ms(1);LCD1602_DATAPINS=com4;/发送低四位Lcd1602_Delay1ms(1);LCD1602_E=1;/写入时序Lcd1602_Delay1ms(5);LCD1602_E=0;#endif#ifndefLCD1602_4PINSvoidLcdWriteData(uchardat)/写入数据LCD1602_E=0;/使能清零LCD1602_RS=1;/选择输入数据LCD1602_RW=0;/选择写入LCD1602_DATAPINS=dat;/写入数据Lcd1602_Delay1ms(1);LCD1602_E=1;/写入时

24、序Lcd1602_Delay1ms(5);/保持时间LCD1602_E=0;#elsevoidLcdWriteData(uchardat)/写入数据LCD1602_E=0;/使能清零LCD1602_RS=1;/选择写入数据LCD1602_RW=0;/选择写入LCD1602_DATAPINS=dat;/因4位的接线是接到P0口的高四位,传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E=1;/写入时序Lcd1602_Delay1ms(5);LCD1602_E=0;LCD1602_DATAPINS=dat4;/写入低四位Lcd1602_Delay1ms(1);LCD1602

25、_E=1;/写入时序Lcd1602_Delay1ms(5);LCD1602_E=0;#endif#ifndefLCD1602_4PINSvoidLcdInit()/LCD初始化子程序LcdWriteCom(0 x38);/开显示LcdWriteCom(0 x0c);/开显示不显示光标LcdWriteCom(0 x06);/写一个指针加1LcdWriteCom(0 x01);/清屏LcdWriteCom(0 x80);/设置数据文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.指针起点义,使用8位取消这个定义*/#elsevoidLcdInit()/LCD初始化子程序LcdWrite

26、Com(0 x32);/将8位总线转为4位总线LcdWriteCom(0 x28);/在四位线下的初始化LcdWriteCom(0 x0c);/开显示不显示光标LcdWriteCom(0 x06);/写一个指针加1LcdWriteCom(0 x01);/清屏LcdWriteCom(0 x80);/设置数据指针起点#endif附2:Icd.h(上述两个程序引用的头文件)#ifndef_LCD_H_#define_LCD_H_/*当使用的是4位数据传输的时候定3、实验连线#defineLCD1602_4PINS/*包含头文件*/#incIude/-重定义关键词-/#ifndefuchar#defi

27、neucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#defineLCD1602_DATAPINSP0sbitLCD1602_E=P27;sbitLCD1602_RW=P2A5;sbitLCD1602_RS=P2A6;voidLcd1602_DeIay1ms(uintc);/误差0us/*LCD1602写入8位命令子函数*/voidLcdWriteCom(ucharcom);/*LCD1602写入8位数据子函数*/voidLcdWriteData(uchardat);/*LCD1602初始化子程序*/voidLcdIn

28、it();#endif将程序下载到单片机中,连接液晶显示器,可以看到按下不同键,1602显示出不同的键值,实验完成。矩阵键盘实验文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.实验五静态数码管显示一、实验目的充分理解数码管显示原理。2能够利用延迟循环函数使数码管值连续变化。二、实验要求下载程序后,静态数码管流动显示数字09三、实验内容1、静态显示接口一个并行I/O口接一个数码管。特点:编程较简单,但占用I/O口线多,般用于显示位数较少的场合。图5-1静态数码管显示结构2、实验程序设计通过KEIL软件进行程序设计如下:显示段与段码位对应表段码位D7D6D5D4D3D2D1D0显示段

29、hgfedcba#include#defineGPIO_DIGP0voidDelay10ms(unsignedintc);误差0usunsignedcharcodeDIG_CODE16=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71;voidmain(void)unsignedchari=0;文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.while(1)GPIO_DIG=DIG_CODEi;i+;if(i=16)i=0;Delay10m

30、s(50);voidDelay10ms(unsignedintc)/误差0usunsignedchara,b;for(;c0;c-)for(b=38;b0;b-)for(a=130;a0;a-);3.3实验现象将程序下载到单片机中,可以看到静态数码管从0F连续循环变化,实验正确。文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.静态数码管实验六动态数码管显示一、实验目的充分理解多位数码管应用于某一系统时的“位选”与“段选”。通过程序加深对数码管的动态扫描显示的理解。二、实验要求设计编写程序出现以下现象:第一个数码管显示0,间隔一段时间关闭它,立即让第二个数码管显示1一直到最后一个数

31、码管显示8,再间隔一段时间后关闭它,立即让第一个数码管显示,一直这样循环下去。三、实验内容1、动态显示方式所有数码管的ah段同名端连在一起,每一个数码管的公共极COM各自独立地受I/O线控制。任一时刻只有一位显示,依次循环扫描,轮流显示。由于人眼的视觉滞留效应,看起来与静态的效果基本一样。特点:占用I/O端口线少,电路较简单,但扫描过程不能停,占用CPU的时间长,适合显示位数较多的场合。2、实验程序设计显示原理:设待显的6个数放在内部RAM的mDS0:5中。从左至右一位一位地显示。P1.x=0:x段亮。P2.y=1:y位选通。通过P22、P23、P24控制3-8译码器来对数码管进行位选,通过P

32、0口经过573的驱动控制数码管的段选,通过P13控制573的使能端,为低电平时573才会有输出。3、程序:#include#defineGPIO_DIGP0sbitLSA=P2A2;sbitLSB=P2A3;24文档收集于互联网,如有不妥请联系删除.sbitLSC=P2A4;unsignedcharcodeDIG_CODE17=/-定义全局变量-/0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、

33、E、F的显示码unsignedcharDisplayData8;voidDigDisplay();/动态显示函数voidmain(void)unsignedchari;for(i=0;i8;i+)DisplayDatai=DIG_CODEi;while(1)DigDisplay();voidDigDisplay()unsignedchari;unsignedintj;for(i=0;i8;i+)switch(i)/位选,选择点亮的数码管,case(0):LSA=O;LSB=O;LSC=O;break;/显示第0位case(1):LSA=1;LSB=0;LSC=0;break;/显示第1位cas

34、e(2):LSA=0;LSB=1;LSC=0;break;/显示第2位case(3):LSA=1;LSB=1;LSC=0;break;/显示第3位case(4):LSA=0;LSB=0;LSC=1;break;/显示第4位case(5):LSA=1;LSB=0;LSC=1;break;/显示第5位case(6):LSA=0;LSB=1;LSC=1;break;/显示第6位case(7):LSA=1;LSB=1;LSC=1;break;/显示第7位GPIO_DIG=DisplayDatai;/发送段码j=10;/扫描间隔时间设定while(j-);GPI0_DIG=0 x00;消隐4、实验连线将

35、程序下载到单片机中,可以看到各数码管按照顺序从0F依次显示,实验完成。动态数码管实验实验七NE555脉冲发生器一、实验目的学习了解ne555用作定时器构成的时基电路。通过学习ne555内部结构以及单片机定时/计数器功能编写相关程序。4.再次熟悉使用1602液晶显示器。二、实验要求编写相关程序,使得在1602显示脉冲频率,调节电位器可改变频率。三、实验内容1、ne555定时器ne555的内部结构可等效成23个晶体三极管.17个电阻。两个二极管组成了比较器、RS触发器。等多组单元电路。特别是由三只精度较高5k电阻构成了一个电阻分压器。为上、下比较器提供基准电压所以称之为555。ne555属于emo

36、s工艺制造。由555定时器和外接元件R1、R2、C构成多谐振荡器,脚2与脚6直接相连。电路没有稳态,仅存在两个暂稳态,电路亦不需要外接触发信号,利用电源通过R1、R2向C充电,以及C通过R2向放电端De放电,使电路产生振荡。电容C在2/3Vcc和1/3Vcc之间充电和放电,从而在输出端得到一系列的矩形波,对应的波形如图7-1所示。图7-1ne555定时器的电路结构与震荡波形图2、程序设计1)NE555:outP3.5T1的输入端作为计数器输入定时器T1做计数器,工作方式1(16位定时器),由TR1打开计数器2)每1秒内,输入脉冲的个数由T0提供时间基准定时器T0做定时器,工作方式1(16位定时

37、器),由TR0打开定时器TMOD=0 x51;3)/-设置定时器TO的初值:例如晶振为12MHZ时定时50ms,需要20倍频输出-/TH0=0 x3C;TL0=0 xB0;开放中断、定时器TO、计数器T1中断函数voidTimer0()interrupt1提供倍频、1秒时间到的信息。如果1秒时间到,则提供主函数的计算/显示频率的标识:例如用TRO=O信号/停止定时器中断函数voidTimer1()interrupt3计数到65536,未到计算频率的时机,脉冲数+65536主函数扫描标识TR0:计算/显示频率。3、程序代码#include#includelcd.h#defineucharunsi

38、gnedchar#defineuintunsignedint#defineulongunsignedlong/-定义LCD显示的文字-/ucharcodeEN_CHAR116=CYMOMETER;ucharcodeEN_CHAR216=FREQ:HZ;/-声明全局函数-/voidTIMER_Configuration();/初始化定时器/-定义全局变量-/ulongFreq;/用来存放要显示的频率值ulongTimeCount;/用于计算1S钟的voidmain()uchari,freqValue6;LcdInit();TIMER_Configuration();/-显示要写的字母-/for(

39、i=0;i16;i+)LcdWriteData(EN_CHAR1i);LcdWriteCom(OxcO);/第二行显示for(i=0;i16;i+)LcdWriteData(EN_CHAR2i);while(1)if(TR0=0)/当计数器停下的时候,表明计数完毕Freq=Freq+TL1;/读取TL的值Freq=Freq+(TH1*256);/读取TH的值LcdWriteCom(0 xc8);/-求频率的个十百千万十万位-/freqValue0=0+Freq%1000000/100000;freqValue1=0+Freq%100000/10000;freqValue2=0+Freq%100

40、00/1000;freqValue3=0+Freq%1000/100;freqValue4=0+Freq%100/10;freqValue5=0+Freq%10;/-显示求得的数值-/for(i=0;i5;i+)/从最高位开始查找不为0的数开始显示(最低位为0显示0)if(freqValuei=0 x30)freqValuei=0 x20;/若为0则赋值空格键elsebreak;for(i=0;i6;i+)LcdWriteData(freqValuei);/-显示完,重新计算下一次频率。-/Freq=O;将计算的频率清零TH1=O;/将计数器的值清零TL1=O;TR0=1;/开启定时器TR1=

41、1;/开启计数器voidTIMER_Configuration()/-定时器T1做计数器,工作方式1(16位定时器),只由TRx打开计数器-/-定时器T0做定时器,工作方式1(16位定时器),只由TRx打开定时器-/TMOD=0 x51;/-设置定时器晶振为12MHZ时定时50ms-/TH0=0 x3C;TL0=0 xB0;/-打开中断-/ET0=1;ET1=1;EA=1;/-打开定时器*/4、实验连线TR0=1;TR1=1;voidTimer0()interrupt1TimeCount+;if(TimeCount=20)/计时到1STR0=0;TR1=0;TimeCount=0;/-12MHZ设置定时50ms的初值-/TH0=0 x3C;TL0=0 xB0;voidTimer1()interrupt3/-进入一次中断,表明计数到了65536-/Freq=Freq+65536;下载程序到单片机,调节电位器可改变频率,实验正确NE555脉冲发生器实验实验八RS232串口实验一、实验目的通过实验了解串口的基本原理及使用,理解并掌握对串口进行初始化;熟悉全双工串口通信方式。理解串口助手的使用方法。二、实验要求通过串口助手发送数据到单片机,同时单片机将接收到的数据发送到串

温馨提示

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

评论

0/150

提交评论