收藏 分销(赏)

单片机原理与应用实验报告.doc

上传人:仙人****88 文档编号:11724070 上传时间:2025-08-09 格式:DOC 页数:19 大小:74KB 下载积分:10 金币
下载 相关 举报
单片机原理与应用实验报告.doc_第1页
第1页 / 共19页
单片机原理与应用实验报告.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
《单片机原理与应用》课程 实 验 报 告 北京理工大学机电学院 18 单片机原理与应用实验报告 实验一 P1口基本实验 一、实验目的 掌握如何建立项目,并用Keil C51软件调试程序。 二、实验内容 掌握P1口基本实验中的编程方法,调试程序。 三、实验程序 #include<reg51.h> unsigned char L; delay(unsigned int ms) { unsigned char j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++); } } void display() { P1=~L; delay(1000); } main() { unsigned char i; L=0xFF; display(); L=0x00; display(); while(1) { L=0x01; display(); for(i=0;i<8;i++) { L=L<<1; display(); } L=0x80; display(); for(i=0;i<8;i++) { L=L>>1; /*L右移1位*/ display(); } } } 由两边向中间亮: #include<reg51.h> unsigned char L; delay(unsigned int ms) { unsigned char j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++) ; } } void display() { P1=~L; delay(1000); } main() { unsigned char i; L=0xFF; display(); L=0x00; display(); while(1) { L=0x01; display(); for(i=0;i<8;i++) { L=L<<1; display(); } L=0x80; display(); for(i=0;i<8;i++) { L=L>>1; display(); } } } 实验二 P1口扩展实验 一、实验目的 掌握EL-8051-III型单片机实验系统。 二、实验内容 掌握P1口扩展实验中的编程方法,调试程序。 三、实验程序 #include<reg51.h> delay(unsigned int ms) { unsigned char j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++); } } main() { unsigned char K; P1=0x00; delay(1000); P1=0xff; delay(1000); while(1) { K=P1&0x03; switch(K) { case 0:P1=0xff;break; case 1:P1=0xf3;delay(1000);P1=0xff;delay(1000);break; case 2:P1=0xcf;delay(1000);P1=0xff;delay(1000);break; case 3:P1=0x03;delay(1000);P1=0xff;delay(1000);break; default: break; } } } 实验三 简单I/O口扩展实验 ——交通灯控制实验 一、实验目的 学习在单片机系统中扩展简单I/O接口的方法。 二、实验内容 掌握交通灯控制的编程方法,调试程序。 三、实验程序 #include<reg51.h> unsigned char xdata *code L=0xCFA0; delay(unsigned int ms) { unsigned char j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++); } } main() { unsigned char i; *L=0xff; while(1) { *L=~0x81; delay(3000); for(i=0;i<=9;i++) { *L=~0x21; delay(1000); } *L=~0x01; delay(100); for(i=0;i<=4;i++) { *L=~0x41; delay(200); *L=~0x01; delay(200); } *L=~0x81; delay(500); for(i=0;i<=9;i++) { *L=~0x84; delay(1000); } *L=~0x80; delay(100); for(i=0;i<=4;i++) { *L=~0x82; delay(200); *L=~0x80; delay(200); } } } 实验四 中断实验 ——有急救车的交通灯控制实验 一、实验目的 学习中断处理程序的编程方法。 二、实验内容 掌握急救车的交通灯控制的编程方法,调试程序。 三、实验程序 #include<reg51.h> unsigned char xdata *code L=0xCFB0; sbit flag=P3^2; delay(unsigned int ms) { unsigned char j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++); } } void sevice_int0() interrupt 0 using 2 { unsigned char i=10; flag=1; while(i--) { *L=0x7e; delay(1000); } } main() { unsigned char i; IP=0x01; IE=0x81; *L=0xff; while(1) { for(i=0;i<3;i++) { *L=~0x81; delay(1000); } for(i=0;i<=9;i++) { *L=~0x21; delay(1000); } *L=~0x01; delay(100); for(i=0;i<=4;i++) { *L=~0x41; delay(200); *L=~0x01; delay(200); } *L=~0x81; delay(200); for(i=0;i<=9;i++) { *L=~0x84; delay(1000); } *L=~0x80; delay(100); for(i=0;i<=4;i++) { *L=~0x82; delay(200); *L=~0x80; delay(200); } } } 实验五 内部定时器实验 一、实验目的 学习复合定时的编程方法。 二、实验内容 掌握复合定时的编程方法,调试程序。 三、实验程序 #include<reg51.h> sbit control=P1^0; sbit light=P1^7; timer0() interrupt 1 using 1 { control=!control; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } timer1() interrupt 3 using 2 { light=!light; } main() { TMOD=0x61; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=256-5; TL1=256-5; IP=0x08; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; while(1); } 实验六 内部定时器与中断实验 一、实验目的 学习内部定时器/计数器的使用和编程方法。 二、实验内容 掌握定时器与中断复合编程方法,调试程序。 三、实验程序 #include<reg51.h> unsigned int i=0,a=0; unsigned int l[16]={0x18,0x3C,0x7E,0xFF,0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF,0x7E,0x3C,0x18,0x00}; unsigned int b[16]={0x81,0x00}; delay(unsigned int ms) { unsigned int j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++); } } void sevice_int0() interrupt 0 using 2 { int i; for(i=0;i<10;i++) { P1=~b[0]; delay(200); P1=~b[1]; delay(200); } } timer0() interrupt 1 using 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; i++; if(i>=5) { i=0; if(a>15) { a=0; } P1=~l[a]; a++; } } main() { int a; IP=0x01; IE=0x83; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1); } 实验七 数码显示实验 一、实验目的 学习数码管显示数字的原理。 二、实验内容 掌握动态扫描键盘的方法,调试程序。 三、实验程序 #include<reg51.h> unsigned char BUF=0; /*定时器每中断一次BUF加1*/ unsigned char SBF0=0,SBF1=0,MBF0=0,MBF1=0; /*秒、分各位清零*/ unsigned code table[11]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; /*数码管真值表*/ unsigned xdata *L=0xcfa0; /*74LS273端口地址*/ delay(unsigned int ms) /*延时子程序*/ { unsigned char j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++) /*内循环空操作*/ {;} } } void timer0(void) interrupt 1 using 1 /*定时器0中断服务子程序*/ {TH0=0x3c; /*重置T0初值*/ TL0=0xaf; BUF+=1; /*计数器计数次数*/ if(BUF==10) /*10次为1秒*/ {BUF=0; /*计数次数清零*/ SBF0+=1; /*秒个位加一*/ if(SBF0==10) /*满10秒*/ {SBF0=0; /*秒个位清零*/ SBF1+=1; /*秒十位加一*/ if(SBF1==6) /*秒十位为6*/ {SBF1=0; /*秒十位清零*/ MBF0+=1; /*分个位加一*/ if(MBF0==10) /*分个位为10*/ {MBF0=0; /*分个位清零*/ MBF1+=1; /*分十位加一*/ if(MBF1==6) /*分十位为6*/ {MBF1=0;/*分十位清零*/ } } } } } } main() {unsigned char A[6]; /*存放分秒及分隔符偏移地址*/ unsigned char i,K; A[2]=A[3]=10; /*分隔符偏移地址*/ TMOD=0x01; /*设定定时器工作方式*/ TH0=0x38; /*延时一段时间*/ TL0=0x00; EA=1; /*开中断*/ ET0=1; /*开定时器*/ TR0=1; while(1) {K=0x01; /*初始位LED6*/ for(i=0;i<6;i++) /*移位显示*/ {P1=~K; *L=table[A[i]]; delay(1); K=K<<1; } A[0]=SBF0; /*保存分秒各位值*/ A[1]=SBF1; A[4]=MBF0; A[5]=MBF1; } } 实验八 串行通信实验 一、实验目的 学习串行口方式1的工作方式。 二、实验内容 掌握串行口方式1的工作方式及编程方法,调试程序。 三、实验程序 #include <reg51.h> #include <stdio.h> #define uchar unsigned char uchar i=0; uchar xdata *L=0xCFA0; uchar idata table[18]={ 0x01,0x03,0x07,0x0f,0x1f,0x3f, 0x7f,0xff,0xfe,0xfc,0xf8,0xf0, 0xe0,0xc0,0x80,0x00,0xff,0x00}; void delay(unsigned int ms) { uchar j; unsigned int i; for(i=0;i<ms;i++) { for(j=0;j<60;j++) ; } } void initial(void) { TMOD=0x20; TH1=0xF2; TL1=0xF2; EA=1; ET1=1; TR1=1; SCON=0x50; TI=1; PCON=0x00; } void interrupt_sevice(void) interrupt 4 { while(1) { if(TI) { SBUF=table[i]; i+=1; if(i==18) { i=0; } } TI=0; break; } while(1) { if(RI) { *L=SBUF; break; } } RI=0; delay(500); } main() { *L=0x00; delay(100); initial(); while(1); } 实验小结 请根据做实验的情况,写实验的体会、收获、建议。字数不限,附在实验报告后面。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服