本科单片机c语言实验手册实验报告可编辑修改word版.docx
- 文档编号:5064234
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:37
- 大小:302.64KB
本科单片机c语言实验手册实验报告可编辑修改word版.docx
《本科单片机c语言实验手册实验报告可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《本科单片机c语言实验手册实验报告可编辑修改word版.docx(37页珍藏版)》请在冰豆网上搜索。
本科单片机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
#defineucharunsignedcharsbitled=P2^7;
voidmain()
{
while
(1)
{
led=1;
}
}
五、总结:
单片机课是一门实践性很强的课程,仅有课堂上理论知识的学习,对运用好单片机是完全不够的,必须亲自做实验,从实验中吸取教训,总结经验,增加实战经验,加深对单片机的理解,更好的运用单片机。
六、评语
实验三流水灯
班级、姓名、学号、指导教师
实验学时数、实验位置、实验日期年月日
一、实验目的
了解二极管的显示原理,掌握二极管流水显示的编程方法,理解二极管与单片机的硬件电路连接。
二、实验要求
用proteus画出电路图,用keil软件编程,并生成HEX文件,在proteus上面仿真
实现,结果无误,在试验箱上下载验证。
三、实验仿真(画出实验电路)
四、实验程序
#include
#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
#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
#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
#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
#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
#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
#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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 单片机 语言 实验 手册 报告 编辑 修改 word