单片机原理与应用实验报告.docx
《单片机原理与应用实验报告.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
![单片机原理与应用实验报告.docx](https://file1.bdocx.com/fileroot1/2022-10/29/f74fd645-17b7-424e-a9d2-2da10fdb943b/f74fd645-17b7-424e-a9d2-2da10fdb943b1.gif)
单片机原理与应用实验报告
《单片机原理与应用》课程
实验报告
北京理工大学机电学院
实验一P1口基本实验
一、实验目的
掌握如何建立项目,并用KeilC51软件调试程序。
二、实验内容
掌握P1口基本实验中的编程方法,调试程序。
三、实验程序
#include
unsignedcharL;
delay(unsignedintms){
unsignedcharj;
unsignedinti;
for(i=0;ifor(j=0;j<60;j++);
}
}
voiddisplay(){
P1=~L;
delay(1000);
}
main(){
unsignedchari;
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
unsignedcharL;
delay(unsignedintms){
unsignedcharj;
unsignedinti;
for(i=0;ifor(j=0;j<60;j++);
}
}
voiddisplay(){
P1=~L;
delay(1000);
}
main(){
unsignedchari;
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
delay(unsignedintms){
unsignedcharj;
unsignedinti;
for(i=0;ifor(j=0;j<60;j++);
}
}
main(){
unsignedcharK;
P1=0x00;
delay(1000);
P1=0xff;
delay(1000);
while
(1){
K=P1&0x03;
switch(K){
case0:
P1=0xff;break;
case1:
P1=0xf3;delay(1000);P1=0xff;delay(1000);break;
case2:
P1=0xcf;delay(1000);P1=0xff;delay(1000);break;
case3:
P1=0x03;delay(1000);P1=0xff;delay(1000);break;
default:
break;
}
}
}
实验三简单I/O口扩展实验
——交通灯控制实验
一、实验目的
学习在单片机系统中扩展简单I/O接口的方法。
二、实验内容
掌握交通灯控制的编程方法,调试程序。
三、实验程序
#include
unsignedcharxdata*codeL=0xCFA0;
delay(unsignedintms){
unsignedcharj;
unsignedinti;
for(i=0;ifor(j=0;j<60;j++);
}
}
main(){
unsignedchari;
*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
unsignedcharxdata*codeL=0xCFB0;
sbitflag=P3^2;
delay(unsignedintms){
unsignedcharj;
unsignedinti;
for(i=0;ifor(j=0;j<60;j++);
}
}
voidsevice_int0()interrupt0using2{
unsignedchari=10;
flag=1;
while(i--){
*L=0x7e;
delay(1000);
}
}
main(){
unsignedchari;
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
sbitcontrol=P1^0;
sbitlight=P1^7;
timer0()interrupt1using1{
control=!
control;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
timer1()interrupt3using2{
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
unsignedinti=0,a=0;
unsignedintl[16]={0x18,0x3C,0x7E,0xFF,0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF,0x7E,0x3C,0x18,0x00};
unsignedintb[16]={0x81,0x00};
delay(unsignedintms){
unsignedintj;
unsignedinti;
for(i=0;ifor(j=0;j<60;j++);
}
}
voidsevice_int0()interrupt0using2{
inti;
for(i=0;i<10;i++){
P1=~b[0];
delay(200);
P1=~b[1];
delay(200);
}
}
timer0()interrupt1using1{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
if(i>=5){
i=0;
if(a>15){
a=0;
}
P1=~l[a];
a++;
}
}
main(){
inta;
IP=0x01;
IE=0x83;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while
(1);
}
实验七数码显示实验
一、实验目的
学习数码管显示数字的原理。
二、实验内容
掌握动态扫描键盘的方法,调试程序。
三、实验程序
#include
unsignedcharBUF=0;/*定时器每中断一次BUF加1*/
unsignedcharSBF0=0,SBF1=0,MBF0=0,MBF1=0;/*秒、分各位清零*/
unsignedcodetable[11]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};/*数码管真值表*/
unsignedxdata*L=0xcfa0;/*74LS273端口地址*/
delay(unsignedintms)/*延时子程序*/
{unsignedcharj;
unsignedin