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

下载本文档

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

文档简介

1、单片机技术基础实验报告学 院: 自动化学院 专 业:电气工程及其自动化 班 级: 学 号: 姓 名: 杨 鹏 任课教师: 实验 1:Proteus软件快速入门一、实验目的与要求:1、认识Proteus 软件;2、掌握用 Proteus 软件建立文件;3、掌握如何使用 Proteus 软件元件库; 二、实验设备、仪器、工具:安装有Proteus 和 Keil 软件的微机。三、实验步骤:在 Proteus 软件中画原理图四、实验结果:实验 2 :Keil uVision 软件快速入门一、实验目的与要求:1、认识 Keil uVision 软件;2、掌握用 Keil uVision 软件建立工程;3

2、、掌握用 Keil uVision 软件进行仿真调试;二、实验设备、仪器、工具:安装有 proteus 和 keil 软件的电脑。三、实验步骤:1、在 proteus 软件中画原理图;2、keil 软件下编写源程序并编译形成可执行文件.hex;3、载源程序;4、仿真。四、实验结果:六、源程序代码:ORG 0000HAJMP MAIN1ORG 0003HMAIN1:MOV A,#0FEHMAIN: MOV P0,ARL AAJMP MAINEND实验 3:单片机最小应用系统一、实验目的与要求:1. 掌握单片机最小系统的设计方法;2. 掌握如何使用Proteus软件元件库;二、实验设备、仪器、工具

3、:安装有 Proteus和Keil 软件的微机。三、实验内容:1. 设计 AT89C51(或 STC89C51)单片机最小系统;2. 实现编码 4×4键盘及8位LED 显示驱动;四、实验步骤:1. 在 Proteus 软件中画原理图;2. Keil 软件下编写源程序并编译形成可执行文件.hex;3. 载源程序;4. 仿真。五、实验结果:六、源程序代码:#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delayms( uint x) uchar i; while(x-) fo

4、r(i=0;i<120;i+); void main(void) while(1) P0=0xfd; delayms(100); 实验 4 :单片机最小应用系统软件编程一、实验目的与要求:1. 掌握单片机指令及其编程方法;2. 掌握Keil C使用方法;二、实验设备仪器工具:安装有 Proteus 和 Keil 软件的微机。三、实验内容:1. 编程实现4x键盘扫描编码;2. 编程实现8位LED显示子程序;四、实验步骤:1. Keil软件下编写源程序并编译形成可执行文件.hex;2. 载源程序;3. 仿真。五、实验结果:六、源程序代码:#include<reg51.h>#inc

5、lude<intrins.h>#define uchar unsigned char#define uint unsigned intP0=0x7f; for(i=0;i<8;i+) delayms(100); P0=_cror_(P0,1); P0=0x7f; delayms(100);P0=0xfe; delayms(100);P0=0xfe; delayms(100);P0=0x00; delayms(100);P0=0xff;void delayms(uint x) uchar i;while(x-) for(i=0;i<120;i+);void main( v

6、oid)uint i; while(1) P0=0xfe;for(i=0;i<8;i+) delayms(100); P0=_crol_(P0,1); 实验5 :单片机LED 数码管显示实验一、 实验目的:1. 熟悉 keil 仿真软件;2. proteus 仿真软件、软件仿真板的使用;3. 了解并熟悉一位数码管与多位 LED 数码管的电路结构、与单片机的连接方法及其应用原理。4. 学习 proteus 构建 LED 数码管显示电路的方法,5. 掌握 C51 中单片机控制 LED 数码管动态显示的原理与编程方法。二、实验设备、仪器、工具:安装有 Proteus 和 Keil 软件的微机。

7、三、实验步骤:1、在 Proteus 软件中画原理图;2、Keil 软件下编写源程序并编译形成可执行文件.hex;3、载源程序;4、仿真四、实验结果:单数码管:多数码管:六、源程序代码:多数码管:单数码管:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint table=0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F;void delayms(uint x) uchar i;while(x-) for(i=0

8、;i<120;i+); void main( void)uint i,wei=0x01;P0=0x00; while(1) for(i=0;i<8;i+) P2=0xFF;P0=tablei;P2=wei;wei=_crol_(wei,1);delayms(500); #include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x

9、7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x73,0x3E,0x31,0x6E,0x76,0x38,0xFF,0x00;void delayms(uint x) uchar i;while(x-) for(i=0;i<120;i+); void main( void)uchar i;P0=0x00; while(1) i=0; for(;i<=21;i+) P0=tablei; delayms(300); 实验六:单片机键盘接口技术实验一、 实验目的:1. 掌握单片机与键盘接口技术2. 掌握用Proteus设计仿真基于单片机与键盘接口的设计方法;

10、3. 掌握独立键盘、矩阵键盘动态扫描及按键的软件消抖编程二、实验设备、仪器、工具:安装有 Proteus 和 Keil 软件的微机。三、 实验要求:1. 设计基于Proteus单片机接口与键盘输入电路原理图(4 个独立键盘4X4 矩阵键盘);2. 根据电路图对 4X4 矩阵键盘动态扫描及软件消抖进行编程,并将按键代码通过 LED 数码管显示。四、实验结果:5、 源程序代码:显示一位:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint ta

11、ble=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,void main( void)uint i;P0=0x80;A9=1;A9=0;P0=0x3F;A8=1;A8=0; while(1) for(i=0;i<10;i+) P0=tablei;A8=1;A8=0;delayms(400); 0x7F,0x6F ;sbit A8=P20;sbit A9=P21;void delayms(uint x) uchar i;while(x-) for(i=0;i<120;i+);显示两位:#include<intrins.h>#define

12、uchar unsigned char#define uint unsigned intvoid dp(uchar wei,uchar duan);uint table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ;uint wei_1=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;sbit A8=P20;sbit A9=P21; while(1) for(i=0;i<8;i+) dp(i,i); void dp(uchar wei,uchar duan)P0=tableduan;A8=1;A8=0

13、;delayms(200);P0=wei_1wei;A9=1;A9=0;delayms(200);P0=0x00;A8=1;A8=0;delayms(200);P0=0x00;A9=1;A9=0;delayms(200); void delayms(uint x) uchar i;while(x-) for(i=0;i<120;i+);void main( void)uint i;P0=0x80;A9=1;A9=0;P0=0x3F;A8=1;A8=0;实验 7 :单片机定时器的使用与编程一、实验目的:掌握定时器 T0、T1 的方式选择和编程方法,了解中断服务程设计方法,学会实时程序的调试

14、技巧。二、实验原理:MCS51 单片机内设置了两个可编程的16位定时器 T0和 T1, 通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串口的波特率发生器。定时器 T0 由特殊功能寄存器 TL0 、TH0 构成,定时器 T1由TH1 和 TL1 构成,特殊功能寄存器 TMOD 控制定时器的工作方式,TCON 控制其运行。定时器的中断由中断允许寄存器IE,中断优先权寄存器 IP 中的相应位进行控制。定时器 T0 的中断入口地址为 000BH,T1的中断入口地址为 001BH。定时器的编程包括:1) 置工作方式。2) 置计数初值。3) 中断设置。4) 启动定时器。定时器/计数器由四种工

15、作方式, 所用的计数位数不同, 因此, 定时计数常数也就不同。在编写中断服务程序时,应该清楚中断响应过程:CPU 执行中断服务程序之前,自动将程序计数器 PC 内容(即断点地址)压入堆栈保护(但不保护状态寄存器 PSW,更不保护累加器 A 和其它寄存器内容) , 然后将对应的中断矢量装入程序计数器 PC 使程序转向该中断矢量地址单元中以执行中断服务程序。定时器 T0 和 T1 对应的中断矢量地址分别为 000BH和 001BH。中断服务程序从矢量地址开始执行,一直到返回指令“RETI”为止。RETI指令的操作一方面告诉中断系统该中断服务程序已经执行完毕, 另一方面把原来压入堆栈保护的断点地址从

16、栈顶弹出,装入到程序计数器 PC,使程序返回到被到中断的程序断点处,以便继续执行。因此,在编写中断服务程序时注意。1 在中断矢量地址单元放一条无条件转移指令, 使中断服务程序可以灵活地安排在 64K字节程序存储器的任何空间。2在中断服务程序中应特别注意用软件保护现场,以免中断返回后,丢失原寄存器、累加器的信息。3若要使执行的当前中断程序禁止更高优先级中断,可以先用软件关闭 CPU 中断,或禁止某中断源中断,在返回前再开放中断。三、实验内容:1. 编写并调试一个程序,用单片机的 T0 工作方式 1 产生 1s 的定时时间,作为秒计数时间,当 1s 产生时,秒计数加 1;秒计数到 60 时,自动从

17、 0 开始。计算初值公式 定时模式 1 th0=(216 -定时时间)/256tl0=(216 -定时时间) mod 256;2. 编写并调试一个程序,在第一项内容的基础上,完成时钟显示。显示格式:hh-mm-ss(时-分-秒)。四、实验结果:实验 8 :单片机外部中断实验一、实验目的1. 熟悉keil仿真软件、proteu仿真软件的使用和单片机外部中断的使用。2. 了解并熟悉 51 单片机中中断的概念,中断处理系统的工作原理。3. 理解51单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。4. 熟悉中断处理特别是外部中断处理的过程,5. 掌握中断处理子程序的编程和使用方法。

18、二、实验环境:硬件:微机、单片机实验板软件:KEIL C51 单片机仿真调试软件,proteus 系列仿真调试软件;三、实验内容 :1. 利用外部中断 INT0 控制数码管显示 0 到 9。2. 利用外部中断 INT0 控制两个数码管显示 00 到 99。四、实验步骤:1. 打开 Proteus,绘制电路图,2. 根据实验内容的要求,编写程序、仿真、调试。五、实验结果:6、 源程序代码:void main( void)P0=0x00; while(1) P1=0xf0;if(P1!=0xf0)key_scan(); if(pre_keyno!=keyno)P0=tablekeyno;pre_k

19、eyno=keyno; delayms(20); #include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x73,0x3E,0x31,0x6E,0x76,0x38,0xFF,0x00;uchar pre_keyno=16,keyno=16;void delay

20、ms(uint x) uchar i; while(x-) for(i=0;i<120;i+); void key_scan()uchar tt;P1=0x0f;delayms(5);tt=P10x0f;switch(tt)case 1:keyno=0;break;case 2:keyno=1;break;case 4:keyno=2;break;case 8:keyno=3;break;P1=0xf0;delayms(5);tt=P1>>40x0f;switch(tt)case 1:keyno=keyno+0;break;case 2:keyno=keyno+4;break

21、;case 4:keyno=keyno+8;break;case 8:keyno=keyno+12;break; 实验 9 :单片机串口通信实验一、实验目的与要求:1、掌握单片机串行口工作原理;2、单片机串行口与 PC 机的通信工作原理及编程方法。二、实验设备、仪器、工具:安装有 Proteus 和 Keil 软件的微机、单片机开发板。三、实验内容 :1. 实验板上有 RS-232 接口,将该接口与 PC 机的串口连接,可以实现单片机与 PC 机的串行通信,进行双向数据传输。2. 本实验要求当PC机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC机上显示,并用串口助手工具软件进行

22、调试。四、实验结果:5、 源程序代码:#include<reg51.h>#define uchar unsigned char#define uint unsigned intUint code DSY_CODE=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;uchar count=0;uchar DSY_BUFFER=0,0,0;sbit clear_key=P36;void show_count() DSY_BUFFER2=count/100; DSY_BUFFER1=count%100/10; DSY_BUFFER0=co

23、unt%10;if(DSY_BUFFER2=0) DSY_BUFFER2=0x3f; if(DSY_BUFFER1=0) DSY_BUFFER1=0x3f; P0=DSY_CODEDSY_BUFFER0;P1=DSY_CODEDSY_BUFFER1;P2=DSY_CODEDSY_BUFFER2; void main(void)P0=0x00;P1=0x00;P2=0x00;IE=0x81;IT0=1;while(1)if(clear_key=0) count=0;show_count(); void inter0() interrupt 0count+; 考 试实验结果:源程序代码:#incl

24、ude<reg51.h>#define uchar unsigned char#define uint unsigned intvoid display(uchar wei,uchar duan)Uchar code duan_1=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40;uchar code wei_1=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;sbit A8=P20;sbit A9=P21;bit m1;bit m2;sbit s1=P22;sbit s2=P23;sbit s3=P24;

温馨提示

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

评论

0/150

提交评论