本科单片机c语言实验手册实验报告可编辑修改word版.docx

上传人:b****3 文档编号:5064234 上传时间:2022-12-12 格式:DOCX 页数:37 大小:302.64KB
下载 相关 举报
本科单片机c语言实验手册实验报告可编辑修改word版.docx_第1页
第1页 / 共37页
本科单片机c语言实验手册实验报告可编辑修改word版.docx_第2页
第2页 / 共37页
本科单片机c语言实验手册实验报告可编辑修改word版.docx_第3页
第3页 / 共37页
本科单片机c语言实验手册实验报告可编辑修改word版.docx_第4页
第4页 / 共37页
本科单片机c语言实验手册实验报告可编辑修改word版.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

本科单片机c语言实验手册实验报告可编辑修改word版.docx

《本科单片机c语言实验手册实验报告可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《本科单片机c语言实验手册实验报告可编辑修改word版.docx(37页珍藏版)》请在冰豆网上搜索。

本科单片机c语言实验手册实验报告可编辑修改word版.docx

本科单片机c语言实验手册实验报告可编辑修改word版

 

《单片机C语言程序设计》

实验手册

 

院系信息工程学院

专业物联网工程

学生姓名宋增

学号5006130037

指导教师王闯

 

许昌学院信息工程学院

实验情况一览表

实验序号

实验名称

实验性质

学时

性质

实验一

单片机最小系统

验证性实验

2

必做

实验二

点亮一盏灯

验证性实验

2

必做

实验三

流水灯

验证性实验

2

必做

实验四

脉冲触发外部中断

验证性实验

2

必做

实验五

电平触发外部中断

验证性实验

2

必做

实验六

定时器

综合性实验

2

必做

实验七

定时器方波脉冲

验证性实验

2

必做

实验八

计数器

验证性实验

2

必做

实验九

数码管显示

验证性实验

2

必做

实验十

键盘扫描

验证性实验

2

必做

实验十一

串行通信

验证性实验

2

必做

实验十二

液晶显示1602

验证性实验

2

必做

实验十三

I2C串行总线

验证性实验

2

必做

实验十四

A/D转换ADC0809

验证性实验

2

必做

实验十五

D/A转换DAC0832

验证性实验

2

必做

实验一单片机最小系统

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

掌握51单片机工作的最基本电路,理解最小系统的硬件电路连接。

二、实验要求

用Proteus画出最小系统电路图。

三、实验仿真(画出实验电路)

 

 

四、总结

 

碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

 

五、评语

实验二点亮一盏灯

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解二极管的显示原理,掌握二极管显示的编程方法,理解二极管与单片机的硬件电路连接。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,

结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#defineuintunsignedint

#defineucharunsignedcharsbitled=P2^7;

voidmain()

{

while

(1)

{

led=1;

}

}

 

五、总结:

 

单片机课是一门实践性很强的课程,仅有课堂上理论知识的学习,对运用好单片机是完全不够的,必须亲自做实验,从实验中吸取教训,总结经验,增加实战经验,加深对单片机的理解,更好的运用单片机。

 

六、评语

实验三流水灯

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解二极管的显示原理,掌握二极管流水显示的编程方法,理解二极管与单片机的硬件电路连接。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真

实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#include#defineuintunsignedint

#defineucharunsignedcharvoiddelay(uint);

voidmain()

{

P2=0x01;

while

(1)

{

delay(500);

P2=_crol_(P2,1);

}

}

voiddelay(uintx)

{

uinti,j;for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

 

五、总结:

 

单片机实验课让我将课堂上学到的理论知识运用到实验当中去,在实验中发现问题,解决问题,强化理论知识的运用。

 

六、评语

实验四脉冲触发外部中断

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解中断的原理,掌握脉冲触发方式中断的编程方法,理解编写中断程序用到的寄存器。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#include#defineuintunsignedint

#defineucharunsignedcharvoiddelay(uint);

voidmain()

{

EA=1;

EX0=1;

IT0=1;

P1=0x00;

P2=0x01;

while

(1)

{

delay(500);

P2=_crol_(P2,1);

}

}

voidINT0_tiaobian()interrupt0

{

uinti;

EA=0;

for(i=0;i<3;i++)

{

P1=0xff;delay(500);P1=0x00;

delay(500);

}EA=1;

}

voiddelay(uintx)

{

uinti,j;for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

 

五、总结:

 

学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。

 

六、评语

 

实验五电平触发外部中断

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解中断的原理,掌握电平触发方式中断的编程方法,理解编写中断程序用到的寄存器。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#include#defineuintunsignedint

#defineucharunsignedcharvoiddelay(uint);

voidmain()

{

EA=1;

EX0=1;

IT0=0;

//TCON=0x00;

P1=0x00;

P2=0x01;

while

(1)

{

delay(500);

P2=_crol_(P2,1);

}

}

voidINT0_didianping()interrupt0

{

uinti;

EA=0;

for(i=0;i<3;i++)

{

P1=0xff;delay(500);P1=0x00;

delay(500);

}

EA=1;

}

voiddelay(uintx)

{

uinti,j;for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

 

五、总结:

 

俗话说“好的开始是成功的一半”。

说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目,其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。

最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。

 

六、评语

 

实验六定时器

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

掌握定时器的工作原理,编程实现定时器1s的精准延时。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

四、实验程序

#include#defineuintunsignedint

#defineucharunsignedcharucharnum,temp,shi,ge;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};

voidmiao(uchar,uchar);voidmain()

{

TMOD=0X01;TH0=(65536-45872)/256;TL0=(65536-45872)%256;EA=1;

ET0=1;TR0=1;

while

(1)

{

miao(shi,ge);

}

}

voidmiao(ucharshi,ucharge)

{

P0=table[shi];P2=table[ge];

}

voidTO_jishi()interrupt1

{

TH0=(65536-50000)/256;TL0=(65536-50000)%256;

num++;if(num==18)

{

num=0;temp++;

if(temp==100)temp=0;

shi=temp/10;ge=temp%10;

}

}

 

五、总结:

在实验过程中,使我接触了许多我以前没接触过的元件,提高了自己的动手能力。

而且在编程时重新温习了刚学不久的51单片机,不仅让我学习了一些新的知识,而且对以前所学内容进行了巩固,让我懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是所学的理论知识得到验证,更能加深对理论知识的理解,让我受益匪浅。

六、评语

实验七定时器方波脉冲

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

掌握定时器的工作原理,利用定时器T0和T1产生定时中断,在P1.0与P1.1端口分别输出500Hz和1000Hz的方波脉冲信号。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#defineuintunsignedint

#defineucharunsignedcharuinti;

sbita=P1^0;sbitb=P1^1;voidmain()

{

TMOD=0x11;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;ET0=1;

ET1=1;TR0=1;TR1=1;EA=1;

while

(1);

}

voidt0_500()interrupt1

{

TH0=(65536-2000)/256;TL0=(65536-2000)%256;

a=~a;

}

voidt1_1000()interrupt3

{

TH1=(65536-1000)/256;TL1=(65536-1000)%256;

b=~b;

}

 

五、总结:

 

中断的精髓是在于使用,在电路设计中使用中断来控制单片机的工作,使之更好的达到所需目的。

 

六、评语

 

实验八计数器

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

掌握定时器工作在计数器的工作原理,编程实现T0和T1引脚接受外部脉冲信号,T0引脚每收到3个上升沿脉冲信号,数码管显示值加1;T1引脚每收到6个上升沿脉冲信号,数码管显示值加1。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#defineuintunsignedint

#defineucharunsignedcharuintnum;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

voidmain()

{

TMOD=0x66;

TH0=0xff;TL0=0xfd;TH1=0xff;TL1=0xfa;TR0=1;TR1=1;ET0=1;ET1=1;EA=1;

while

(1)

{

P0=table[num];if(num>9)

num=0;

}

}

voidT0_jishu3()interrupt1

{

TH0=0xff;//ÖØ×°³õÖµTL0=0xfd;

num++;

}

voidT1_jishu6()interrupt3

{

TH1=0xff;//ÖØ×°³õÖµTL1=0xfa;

num++;

}

 

五、总结:

通过本次实验我更加熟练的掌握了中断的使用。

六、评语

实验九数码管显示

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解数码管的动态显示和静态显示,掌握数码管的动态显示编程,理解数码管与单片机的硬件电路连接。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,

结果无误,在试验箱上下载验证。

三、实验仿真(画出实验电路)

 

四、实验程序

#include#defineuintunsignedint

#defineucharunsignedcharucharnum;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

voiddelay(uint);voidmain()

{

while

(1)

{

P3=0xfe;P2=table[1];delay(5);P3=0xfd;P2=table[2];delay(5);P3=0xfb;P2=table[3];delay(5);P3=0xf7;

P2=table[4];delay(5);P3=0xef;P2=table[5];delay(5);P3=0xdf;P2=table[6];delay(5);

}

}

voiddelay(uintx)

{

uinti,j;for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

 

五、总结:

要注意细节。

细节决定成败,这句话在这次课题中不仅一次得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。

因此我们不仅仅要有整体意识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。

六、评语

实验十键盘扫描

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解键盘扫描原理,掌握键盘的延时去抖、识别方法,理解键盘与单片机的硬件电路连接,掌握键盘的编程方法。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实

现,结果无误,在试验箱上下载验证。

三、实验仿真(画出电路图)

四、实验程序

#include

#defineuintunsignedint#defineucharunsignedcharucharnum;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

voiddelay(uint);voidmain()

{

while

(1)

{

uchartemp;

P3=0x0f;

if(P3==0x0e)

{

delay(10);if(P3==0x0e)

{P3=0xf0;

temp=P3;switch(temp)

{

case0xe0:

P2=table[0];break;

case0xd0:

P2=table[1];

break;case0xb0:

P2=table[2];break;

case0x70:

P2=table[3];

break;

}

}

}

 

P3=0x0f;

if(P3==0x0d)

{

delay(10);if(P3==0x0d)

{P3=0xf0;

temp=P3;switch(temp)

{

case0xe0:

P2=table[4];break;

case0xd0:

P2=table[5];

break;

case0xb0:

P2=table[6];

break;case0x70:

P2=table[7];break;

}

}

}

 

P3=0x0f;

if(P3==0x0b)

{

delay(10);if(P3==0x0b)

{P3=0xf0;

temp=P3;switch(temp)

{

case0xe0:

P2=table[8];break;

case0xd0:

P2=table[9];

break;case0xb0:

P2=table[10];

break;

case0x70:

P2=table[11];

break;

}

}

}

 

P3=0x0f;if(P3==0x07)

{

delay(10);if(P3==0x07)

{P3=0xf0;

temp=P3;switch(temp)

{

case0xe0:

P2=table[12];break;

case0xd0:

P2=table[13];

break;case0xb0:

P2=table[14];break;

case0x70:

P2=table[15];

break;

}

}

}

 

}

}

voiddelay(uintx)

{

uinti,j;for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

 

五、总结:

 

做事要多动脑,选出最好的方法。

一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。

 

六、评语

实验十一串行通信

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

了解串行通信工作原理,掌握工作方式1下的编程方法。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真

实现,结果无误,在试验箱上下载验证。

三、实验仿真(画出电路图)

 

四、实验程序

#include

#defineuintunsignedint#defineucharunsignedcharucharflag,a,i;

ucharcodetable[]="Iget";voidinit()

{

TMOD=0x20;

TH1=0xff;

TL1=0xf1;

TR1=1;

REN=1;

SM0=0;

SM1=1;

EA=1;

ES=1;

}voidmain()

{

init();while

(1)

{

if(flag==1)

{

ES=0;

for(i=0;i<6;i++)

{

SBUF=table[i];while(!

TI);

TI=0;

}SBUF=a;

while(!

TI);

TI=0;

ES=1;

flag=0;

}

}

}

voidser()interrupt4

{

RI=0;a=SBUF;

flag=1;

}

五、总结:

 

要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。

 

六、评语

实验十二液晶显示1602

班级、姓名、学号、指导教师

实验学时数、实验位置、实验日期年月日

一、实验目的

掌握液晶显示的工作原理,理解1602液晶模块与单片机的硬件电路连接,掌握液晶显示的编程方法。

二、实验要求

用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真实现,结

果无误,在试验箱上下载验证。

三、实验仿真(画出电路图)

 

四、实验程序

#include

#defineuintunsignedint#defineucharunsignedchar

ucharcodetable[]="Hellodanpianji";ucharcodetable1[]="XCU--wulianwang";sbitlcden=P1^6;

sbitlcdrs=P1^7;ucharnum;

voiddelay(uintx)

{

uinti,j;for(i=x;i>0;i--)

for(j=50;j>0;j--);

}

voidwrite_com(ucharcom)

{

lcdrs=0;P3=com;delay

(1);lcden=1;delay

(1);lcden=0;

}

voidwrite_data(uchardate)

{

lcdrs=1;P3=date;delay

(1);

lcden=1;delay

(1);lcden=0;

}

voidinit()

{

lcden=0;write_com

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

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

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