ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:184.23KB ,
资源ID:18379909      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18379909.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机实验报告史昊卿杨.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机实验报告史昊卿杨.docx

1、单片机实验报告史昊卿杨单片机实验报告 学院:交通运输工程学院 班级: 交 设1403 姓名: 史昊卿杨 学号: 1 指导老师: 傅勤毅 2017年5月20日第一章 单片机简介单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高

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

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

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

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

6、D3D8、D1,循环点亮。每点亮一个LED,采用软件延时一段时间。三、实验内容1、实验程序设计如图1-1为发光二极管的内部连接图,本次设计使用P1口进行连接。发光二极管内部连接图用KEIL软件设计程序如下:#include#include#define unit unsigned int#define uchar unsigned charuchar temp;sbit beep=P23;/定义蜂鸣void delay(unit z);/参数类型一定要写,参数名可以不写void main() beep=0; temp=0xfe; while(1) /死循环 P1=temp; temp=_cro

7、l_(temp,1);/循环左移一位 delay(200); P1=temp; void delay(unit z) unit x,y; /局部变量 for(x=200;x0;x-) for(y=200;y0;y-); ;/延时程序编译程序后生成.hex文件。2、实验连线如图,将P1口与锁存器74C53相连。再利用普中科技软件将编译好.hex文件下载到单片机中。可观察到流水灯连续闪烁的现象。流水灯实验实验二 步进电机一、实验目的1.熟悉步进机的工作原理。2.通过编写指令控制步进机工作,进一步熟悉单片机I/O引脚功能。3.熟悉实验板及相关软件操作。二、实验要求P1口作为输出口控制步进电动机的四相

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

9、设计根据步进电机的工作原理,设计步进电动机的控制状态与P1口的控制码的对应关系如下表2-1所示。表2-1控制状态P1口控制码P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0D相C相B相A相A相、B相绕组通电03H00000011B相、C相绕组通电06H00000110C相、D相绕组通电0CH00001100D相、A相绕组通电09H000010013、程序:#include #define uint unsigned int void Delayms (uint x);main ( ) while(1) /死循环 P1=0x03; Delayms(1000); /A相、B相绕组通

10、电 P1=0x06; Delayms(1000); /B相、C相绕组通电 P1=0x0c; Delayms(1000); /C相、D相绕组通电 P1=0x09; Delayms(1000); /D相、A相绕组通电 void Delayms (uint x) /延时函数 uint n; for( ;x 0; x-) for(n=0;n123;n+) ; 4、实验连线将程序下载到单片机中,可以看到步进电机转动。实现现象如图2-1所示:步进电机实验实验三 独立按键一、实验目的1.熟悉C51包含的头文件。2.掌握独立按键的工作原理。3.学习按键去抖动问题。二、实验要求通过开发板上的8个独立按键控制8个

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

12、ine GPIO_LED P0 /led使用P0口/-声明全局函数-/void Delay10ms(unsigned int c); /延时10msunsigned char Key_Scan();void main(void) unsigned char ledValue, keyNum; ledValue = 0x01; while (1) keyNum = Key_Scan(); /扫描键盘 switch (keyNum) case(0xFE) : /返回按键K1的数据 ledValue = 0x01; break; case(0xFD) : /返回按键K2的数据 ledValue =

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

14、 default: break; GPIO_LED = ledValue;/点亮LED灯 unsigned char Key_Scan() unsigned char keyValue = 0 , i; /保存键值 /-检测按键1-/ if (GPIO_KEY != 0xFF) /检测按键K1是否按下 Delay10ms(1); /消除抖动 if (GPIO_KEY != 0xFF) /再次检测按键是否按下 keyValue = GPIO_KEY; i = 0; while (i0;c-) for (b=38;b0;b-) for (a=130;a0;a-); 3.3实验现连线将程序下载到单片

15、机中,可以看到不同按键下相应的led灯点亮。实现现象如图所示:独立按键实验实验四 矩阵键盘一、实验目的1.充分理解4x4矩阵键盘内部接线图,并根据其结构进行程序设计。2.试比较独立按键与矩阵键盘的区别。3.进一步掌握单片机程序设计办法。二、实验要求按下矩阵键盘按键,1602显示其键值。三、实验内容1、矩阵键盘矩阵键盘是进行逐行扫描的。每一个按键的两端,都分别接在某一个列线和行线上,即:“行线和列线是通过某个按键的按下和抬起实现联通和断开的”,和“导线两端上的信号是经过“与”的关系再体现到导线上的。”图4-1 矩阵键盘2、程序设计根据表4-1 K0K15键码表以及独立按键的程序用KEIL软件设计

16、如下程序:表4-1 K0K15键码表K0:0xee 1110 1110K1:0xde 1101 1110K2:0xbe 1011 1110K3:0x7e 0111 1110K4:0xed 1110 1101K5:0xdd 1101 1101K6:0xbd 1011 1101K7:0x7d 0111 1101K8:0xeb 1110 1011K9:0xdb 1101 1011K10:0xbb 1011 1011K11:0x7b 0111 1011K12:0xe7 1110 0111K13:0xd7 1101 0111K14:0xb7 1011 0111K15:0x77 0111 0111#inc

17、lude #includelcd.h/-定义使用的IO口-/ #define GPIO_KEY P1/-定义全局变量-/unsigned char PuZh17=The key value is:;unsigned char KeyValue;/用来存放读取到的键值void KeyScan(void); /-声明全局函数-/void Delay10ms(unsigned int c); /误差 0usvoid main(void) unsigned char i; LcdInit(); for(i=0; i17; i+) if(i = 14) LcdWriteCom(0x80 + 0x40);

18、 LcdWriteData(PuZhi); while(1) KeyScan(); LcdWriteCom(0x80 + 0x44); if(KeyValue 10) LcdWriteData(0 + KeyValue); else LcdWriteData(7 + KeyValue); /A的ASCII码的前10位是7,所以用7做基数 void KeyScan(void) char a = 0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f)/读取按键是否按下 Delay10ms(1);/延时10ms进行消抖 if(GPIO_KEY!=0x0f)/再次检测键盘是否按下 /

19、测试列 GPIO_KEY=0X0F; switch(GPIO_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=KeyValu

20、e+1;break; case(0Xe0): KeyValue=KeyValue;break; while(a0;c-) for (b=38;b0;b-) for (a=130;a0;a-); 附1:lcd.c(包含main函数中lcdinit函数)#includelcd.hvoid Lcd1602_Delay1ms(uint c) /误差 0us uchar a,b; for (; c0; c-) for (b=199;b0;b-) for(a=1;a0;a-); #ifndef LCD1602_4PINS /当没有定义这个LCD1602_4PINS时void LcdWriteCom(uch

21、ar com) /写入命令 LCD1602_E = 0; /使能 LCD1602_RS = 0; /选择发送命令 LCD1602_RW = 0; /选择写入 LCD1602_DATAPINS = com; /放入命令 Lcd1602_Delay1ms(1); /等待数据稳定 LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); /保持时间 LCD1602_E = 0;#else void LcdWriteCom(uchar com) /写入命令 LCD1602_E = 0; /使能清零 LCD1602_RS = 0; /选择写入命令 LCD1602_RW = 0;

22、 /选择写入 LCD1602_DATAPINS = com; /由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; Lcd1602_Delay1ms(1); LCD1602_DATAPINS = com 4; /发送低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0;#endif#ifndef LCD1602_4PINS vo

23、id LcdWriteData(uchar dat) /写入数据 LCD1602_E = 0; /使能清零 LCD1602_RS = 1; /选择输入数据 LCD1602_RW = 0; /选择写入 LCD1602_DATAPINS = dat; /写入数据 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); /保持时间 LCD1602_E = 0;#elsevoid LcdWriteData(uchar dat) /写入数据 LCD1602_E = 0; /使能清零 LCD1602_RS = 1; /选择写入数据 LC

24、D1602_RW = 0; /选择写入 LCD1602_DATAPINS = dat; /因4位的接线是接到P0口的高四位,传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; LCD1602_DATAPINS = dat 4; /写入低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0;#endif #ifndef LCD1602_4PINSvoid LcdInit(

25、) /LCD初始化子程序 LcdWriteCom(0x38); /开显示 LcdWriteCom(0x0c); /开显示不显示光标 LcdWriteCom(0x06); /写一个指针加1 LcdWriteCom(0x01); /清屏 LcdWriteCom(0x80); /设置数据指针起点#elsevoid LcdInit() /LCD初始化子程序 LcdWriteCom(0x32); /将8位总线转为4位总线 LcdWriteCom(0x28); /在四位线下的初始化 LcdWriteCom(0x0c); /开显示不显示光标 LcdWriteCom(0x06); /写一个指针加1 LcdWr

26、iteCom(0x01); /清屏 LcdWriteCom(0x80); /设置数据指针起点#endif附2:lcd.h(上述两个程序引用的头文件)#ifndef _LCD_H_#define _LCD_H_/*当使用的是4位数据传输的时候定义,使用8位取消这个定义*/#define LCD1602_4PINS/*包含头文件*/#include/-重定义关键词-/#ifndef uchar#define uchar unsigned char#endif#ifndef uint #define uint unsigned int#endif#define LCD1602_DATAPINS P0sbit LCD1602_E=P27;sbit LCD1602_RW=P25;sbit LCD1602_RS=P26;void Lcd1602_Delay1ms(uint c); /误差 0us/*LCD1602写入8位命令子函数*/void LcdWriteCom(u

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1