单片机实验报告3.docx
《单片机实验报告3.docx》由会员分享,可在线阅读,更多相关《单片机实验报告3.docx(11页珍藏版)》请在冰点文库上搜索。
单片机实验报告3
XXXXXXXXXXX
实验指导书
(微电子技术系)
编写
电子科技大学成都学院
2010年10月
学号:
姓名:
院系:
微电子技术系
专业:
集成电路设计与集成系统
教师:
李海
目录
实验一灯的闪烁
实验二IO口的端口读写实验
实验三流水灯
实验四数码管动态显示字符“0123”
实验五学号的显示
实验六定时器/计数器T1的使用
实验七定时器/计数器T0的使用
试验八实验板的PCB图
实验一:
灯的闪烁
实验时间:
2010年8月实验地点:
二实验楼405同组人员:
陈亚军
一、实验目的
1、认识和使用keil、ISP软件。
2、学会运用延时程序和掌握端口变量控制。
3、培养动手能力和单片机的学习兴趣。
二、实验原理和内容
通过端口的高低电平来控制发光二极管导通和截止。
并用延时程序使在一定的时间上导通和截止,即可得到闪烁效果。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
#include
voiddelay(unsignedcharms)
{
unsignedcharx,y;
for(ms=1;ms>0;ms--)
for(y=71;y>0;y--)
for(x=2;x>0;x--);
}
sbitLED=P0^0;
main()
{
LED=1
while
(1)
{
delay
(1);
LED=~LED;
}
}
五、实验总结
通过本次实验,学会了使用keil和ISP软件,学会了单片机怎样控制灯的亮与灭。
实验二:
I/O口的读写实验
实验时间:
2010年9月实验地点:
二实验楼405同组人员:
梁娅娇
一、实验目的
1、掌握I/O口的读写操作
二、实验原理和内容
用单片机的P1口去控制P2口的输出。
在P1口并联接八个按键,P2并联接八个共阳极LED灯。
按下P1^0则LED1亮,以此类推,按下P1^8,则LED8亮。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
#include
#defineuintunsignedint
sbitp20=P2^0;
sbitp10=P1^0;
voiddelay(uintx);
voidmain()
{while
(1)
{
if(p20==0)
delay(10);
if(p20==0)
p10=0;
elsep10=1;
}
}
voiddelay(uintx)
{
uinta,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
实验三:
流水灯
实验时间:
2010年10月实验地点:
二实验楼405同组人员:
梁娅娇
一、实验目的
1、掌握实用的流水灯设计方法。
二、实验原理和内容
通过不同时刻,点亮不同的发光二极管,使其给人一种流水灯的感觉。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
#include
#include
voiddelayms(unsignedcharms)//延时程序
{
unsignedchari;
while(ms--)
{
for(i=0;i<240;i++);
}
}
main()
{
unsignedcharLED;
LED=0xfe;//位选信号,用来选择发光二极管
P0=LED;
while
(1)
{
delayms(250);
LED=_crol_(LED,1);//位选左循环实现循环位选
P0=LED;
}
}
实验四:
数码管动态显示字符“0123”
实验时间:
2010年10月实验地点:
二实验楼405同组人员:
梁娅娇
:
一、实验目的
1、掌握实用的数码管的动态显示的设计方法。
二、实验原理和内容
通过点亮7个不同的发光二极管形成一个数码,同时用一个端口控制不同时刻的数码管显示,实现数码的动态显示。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
#include
#include
#include
unsignedcharcodedis_code[]={0xc0,0xf9,0xa4,0xb0};
unsignedchardatadis_buf[4];
unsignedchardatadis_index;
unsignedchardatadis_digit;
voiddelay(intt)
{
inti;
while(t--){
for(i=0;i<120;i++);
}
}
voidmain()
{
P0=0xff;
P2=0;
TMOD=0x01;
TH0=0x8C;
TL0=0x8B;
IE=0x8A;
dis_buf[0]=dis_code[0x0];
dis_buf[1]=dis_code[0x1];
dis_buf[2]=dis_code[0x2];
dis_buf[3]=dis_code[0x3];
dis_digit=0x01;
dis_index=0;
TR0=1;
while
(1);
}
voidtimer0()interrupt1
{
TH0=0x8C;
TL0=0X8B;
P2=0;
if(dis_digit==0x10)
P0=dis_buf[dis_index];
P2=dis_digit;
dis_digit=_crol_(dis_digit,1);
delay(500);
dis_index++;
dis_index&=0x03;
}
实验五:
学号的显示
实验时间:
2010年11月实验地点:
二实验楼405同组人员:
梁娅娇
一、实验目的
二、实验原理和内容
通过点亮7个不同的发光二极管形成一个数码,同时用一个端口控制不同时刻的数码管显示,实现数码的动态显示。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
实验六:
定时器/计数器T1的使用
实验时间:
2010年11月实验地点:
二实验楼405同组人员:
梁娅娇
一、实验目的
1熟悉和学习定时器/计数器的用法。
二、实验原理和内容
通过定时计数器T1在工作方式2计数(检测到从高电平跳变到低电平计数器自动加1),判断TF1,若为真,则有益出,益出后就点亮发光二极管。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
#include
sbitled=P3^0;
main()
{
TMOD=0x60;
TL1=0xf0;
TH1=0xf3;
TR1=1;
led=1;
while
(1)
{if(TF1)
led=0;
else
led=1;
}
}
实验七:
定时器/计数器T0的使用
实验时间:
2010年11月实验地点:
二实验楼405同组人员:
梁娅娇
一、实验目的
1、熟悉掌握利用定时器定时较大的时间。
二、实验原理和内容
1、内容:
实现八位数码管动态显示0——F,动态显示时间间隔为0.5秒。
2、原理:
利用定时器定时1ms中断一次,若要实现定时0.5s,则可设计中断500次,此后再做所要求的操作。
三、实验步骤
1、编写代码,编译,修改直至通过,然后生成HEX文件。
2、在实验箱上连接好电路,将下载器连接到实验箱。
3、将代码下载到实验箱
4、观察结果。
四、实验代码
#include
#include
#include
unsignedcharcodedis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x84,0x8e};
unsignedchardatadis_digit;
unsignedchardatadis_buf[16];
unsignedchardatadis_index;
unsignedchardatacount;
voidmain()
{
P0=0xff;
P2=0;
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
EA=1;
ET0=1;
dis_buf[0]=dis_code[0x0];
dis_buf[1]=dis_code[0x1];
dis_buf[2]=dis_code[0x2];
dis_buf[3]=dis_code[0x3];
dis_buf[4]=dis_code[0x4];
dis_buf[5]=dis_code[0x5];
dis_buf[6]=dis_code[0x6];
dis_buf[7]=dis_code[0x7];
dis_buf[8]=dis_code[0x8];
dis_buf[9]=dis_code[0x9];
dis_buf[0x0a]=dis_code[0x0a];
dis_buf[0x0b]=dis_code[0x0b];
dis_buf[0x0c]=dis_code[0x0c];
dis_buf[0x0d]=dis_code[0x0d];
dis_buf[0x0e]=dis_code[0x0e];
dis_buf[0x0f]=dis_code[0x0f];
dis_digit=0x01;
dis_index=0;
count=500;
TR0=1;
while
(1);
}
voidtimer0()interrupt1
{
TH0=0xfc;
TL0=0X18;
count--;
if(count>0);
else
{P2=0;
P0=dis_buf[dis_index];
P2=dis_digit;
dis_digit=_crol_(dis_digit,1);
dis_index++;
dis_index&=0x0f;
}
}
试验八实验板的PCB图
实验时间:
2010年12月实验地点:
二实验楼406
同组人员:
梁娅娇向文学刘赛
1.灯的闪烁(时间间隔为0.5S)
2.IO口的读写实验
3.流水灯
4.数码管动态显示字符“0123”
5.学号的显示
6.定时器/计数器T1的使用
7.定时器/计数器T0的使用
8.蜂鸣器的使用
9.实验板的PCB图