1 / 50
文档名称:

单片机整套实验及程序.doc

格式:doc   大小:1,462KB   页数:50页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机整套实验及程序.doc

上传人:夏天教育 2022/10/10 文件大小:1.43 MB

下载得到文件列表

单片机整套实验及程序.doc

文档介绍

文档介绍:该【单片机整套实验及程序 】是由【夏天教育】上传分享,文档一共【50】页,该文档可以免费在线阅读,需要了解更多关于【单片机整套实验及程序 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
实验1赛马灯实验
一、实验目
初步学会ProteusISIS和uVision2单片机集成开发环境使用;
初步掌握采纳汇编语言与C语言开发单片机系统程序结构;
掌握80C51单片机通用I/O口使用;
掌握单片机内部准时/计数器使用及编程方法以及中断办理程序编写方法。
二、实验设备及器件
硬件:PC机,HNIST-1型单片机实验系统
软件:ProteusISIS单片机仿真环境,uVision2单片机集成开发环境
三、实验内容
编写一段程序,采纳P1口作为控制端口,使与P1口相接四个发光二极管(D1、
D2、D3、D4)依据必定方式点亮。如点亮方式为:先点亮D1,延时一段时间,再次序点亮D2D4,而后又是D4D1,同时只好有一个灯亮;而后每隔一段时
间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪耀三次,接着循环变化。
基于ProteusISIS仿真环境完成上述功能仿真。
基于uVision2单片机集成开发环境与硬件平台完成程序脱机运行。
四、实验原理图

,~,发光二极
管依据必定次序发光,相邻发光二极管发光时间间隔可以经过准时器控制,还可以通
过软件延时实现。
五、软件流程图与参照程序
主程序流程图以下:
开始
初始化(准时器、中
断、标记位设置)
N
Flag=1?
Y
流水灯操作
结束
参照程序
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedint
ucharaa,num,speed,flag;
ucharcodetable[]={0x0e,0x0d,0x0b,0x07};
ucharcodetable1[]={0x0a,0x05,0x09,0x06};
ucharcodetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};
voiddelay(uintz)//延时函数
{
uintx;
uchary;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
voidinit()//条件初始化函数
{flag=0;speed=10;//控制赛马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//打开总中断
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
ET0=1;//打开外中断0
TR0=1;
}
voidmain()
{
init();//调用初始化函数
while(1)
{
if(flag)
{
delay(2000);//调用延时函数
for(num=0;num<4;num++)//从左至右间隔一个挨次闪耀
{
P1=table[num];
delay(2000);
}
for(num=3;num>0;num--)//从左至右间隔一个挨次闪耀
{
P1=table[num];
delay(2000);
}
for(num=0;num<4;num++)//从左至右间隔两个挨次闪耀
{
P1=table1[num];
delay(2000);
}
for(num=3;num>0;num--)//从左至右间隔两个挨次闪耀
{
P1=table1[num];
delay(2000);
}
for(num=0;num<6;num++)//两个,三个,四个赛马灯挨次闪耀
{
P1=table2[num];
delay(2000);
}
for(num=0;num<5;num++)//闪耀5次
{
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
P1=0xff;//全暗
delay(2000);
P1=0X00;//全亮
delay(2000);}
speed=speed-3;//变速
if(speed==4)
{speed=10;}
}
}
}
voidtimer0()interrupt1//中断函数
{
TH0=(65535-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==speed)
{
aa=0;
flag=1;
}
}
六、实验思虑题
请用汇编指令完成本实验内容,深刻理解汇编语言程序设计结构。
在本实验中,I/O口作为输出口使用,假如把I/O口某些口线作为输进口使
用时,如何获取输入引脚状态?请举例说明。
在画软件流图时,各种不一样形式方框意义能否同样?请举例示之。
请简要表达中断服务程序功能并画出其流程图。
在采纳I/O口作为输出口时要考虑哪些要素?假如负载变化,如何设计单
片机与负载之间接口电路?
实验2交通灯实验
一、实验目
进一步掌握ProteusISIS和uVision2单片机集成开发环境使用;
进一步掌握单片机内部准时/计数器使用及编程方法以及中断办理程序编写
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
方法
掌握单片机I/O口编程使用。
二、实验设备及器件
硬件:PC机,HNIST-1型单片机实验系统,USB下载线一根、连接线若干
软件:ProteusISIS单片机仿真环境,uVision2单片机集成开发环境
三、实验内容
编写一段程序,实现用单片机I/O口控制12个发光二极管(四组,每组有红
绿蓝三个发光二极管),使发光二极管依据必定规则模拟交通灯功能。
基于ProteusISIS仿真环境完成上述功能仿真。
基于uVision2单片机集成开发环境与硬件平台完成程序脱机运行。
四、实验原理

用单片机IO口控制4组红绿蓝共12个发光二极管,使发光二极管依据必定规则
与次序发光与闪亮以实现模拟交通灯功能。假设初始状态为:(南北通行状态)南北绿灯、东西红灯(25s);后转为过分状态:南北黄灯、东西红灯(5s);再转为东西通行状态:东西绿灯、南北红灯25(s)。再转为过渡状态:东西黄灯、南北红灯(5s),而后循环往复。
。,所以在电源与二
极管之间加一个电阻,目是保护二极管;实验中利用准时计数器实现1S准时,而后
在此基础上实现所需要准不时间。
五、软件流程图与参照源程序
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
软件设计思想:在编程时,我们一般把一个独立功能设计成一个子程序
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
也许说函数。对于不一样设计者而言,对软件功能划分角度不一样,对应函数功能也存在差异。
开始
南北绿灯
东西红灯25
南北黄灯
准时器
东西红灯5
东西绿灯
南北红灯25
东西黄灯
南北红灯5
结束

参照源程序以下:
#include<>//头文件
#defineuintunsignedint
#defineucharunsignedchar//定义下方便使用
sbitkong=P1^4;//位申明数码管锁存控制端
ucharcodetable[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//数字
0-9编码
uinttt,temp=0;
/
延时函数
/
voiddelay(uintx)
{
uchari,k;
for(i=0;i<x;i++)
for(k=0;k<100;k++)
;
}
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
/
初始化函数
*/
voidinit()
{
temp=0;
tt=0;
TMOD=0x01;//准时器工作方式
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//装初值
EA=1;//开总中断
ET0=1;//开准时器中断
TR0=1;//启动准时器中断
}
/*
数码管显示函数
*/
voiddisplay(uintx1)
{
uchari,c;
uintcod[4];
cod[3]=x1/1000;
cod[2]=x1%1000/100;
cod[1]=x1%1000%100/10;
cod[0]=x1%10;//求个数码管值
c=0x01;
for(i=0;i<4;i++)
{
P1=c;//数码管显示选择
P0=table[cod[i]];//送要显示值
kong=1;//打***存
c=c<<1;//左移一位选择下一个数码管
kong=0;//关闭锁存
delay(10);
}
}
/
交通灯驱动函数
*/
voidjiaotong()
{//uintt=0;if(temp==0)
temp=60;//给temp装值,也即是交通灯循环一次要时间
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
if(temp>30)
{
if(temp<=35)
{
display(temp-30);
P2=0Xf5;//南北黄灯、东西红灯(5s)
}
else
{
display(temp-30);
P2=0xdd;//南北绿灯、东西红灯(
25s)
}
}
else
{if(temp<=5)
{
display(temp);
P2=0xee;//东西黄灯、南北红灯(5s)
}
else
{
display(temp);
P2=0xeb;//东西绿灯、南北红灯
25(s)
}
}
if(tt==20)//判断时间能否过了1s
{
tt=0;
temp--;//倒计数
}
}
/
主函数
/
voidmain()
{
init();//初始化函数调用
while(1)//主循环
{
jiaotong();//交通灯函数调用
}
}
//中断函数
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//重新装初值
tt++;
}
六、实验思虑题
如何实现扩大功能,实现救护车优先经过十字路口?请表达硬件设计与软件设计原理。
在利用单片机片内准时器实现精确准不时,能否会产生偏差?假如存在偏差请解析偏差产生原由以及减小偏差方法。
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
实验3数码管动向显示实验
一、实验目
掌握数码管静态显示与动向显示原理以及数码管与单片机接口原理。
学会利用单片机I/O口实现数码管动向显示。
二、实验仪器
硬件:PC机、HNIST-1型单片机实验系统
软件:ProteusISIS单片机仿真环境,uVision2单片机集成开发环境
三、实验内容
编写一段程序,采纳P1口某些口线作为4位数码管位控制端;采纳P0口输出段码,实现4位数码管测试(让4位数码管同时输出0~F);
编写程序,让4位数码管循环显示1—2—3—4(即让第一位显示”1,”而后第一位熄灭,第二位显示”2”)
四、实验原理
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
使用

LED

数码显示器时,要注意划分数码管两种不一样接法(共阴

LED

和共阳
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
LED),为了显示数字或字符,一定对数字或字符进行编码。七段数码管加上一个小
数点,共计8段,所以为LED显示器供给编码正好是一个字节。八段LED数码管显
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
示器原理与结构以以下图

。对于共阴接法,要使某位

LED

显示相应数码,则
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
使

LED

对应段点亮,则对应控制电平为高,如:要显示数字

”0,”假如

a~dp分别受
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序
~,则LEDa,b,c,,d,e,f需点亮,对应驱动电平为”1,”其余为”0,”则对应数码”0段”码为”FCH”。
g
fGNDa
b
+5V
a
a
a
b
b
c
f
b
c
g
d
d
c
e
e
e
dpf
f
d
·
g
dp
g
e
dGNDc
dp
dp
(a)
(b)
共阴极
共阳极

八段LED数码管原理与结构图
LED显示器工作方式有两种:静态显示方式和动向显示方式。静态显示特
点是每个数码管段码一定需要一个数据锁存器锁存,当送入字形码后,显示字形
可向来保持,直到送入新字形码为止,显示亮度较强。而动向显示是多个LED轮流
显示,但因为人眼视觉惰性,令人感觉各LED同时显示不一样字符。
单片机整套实验及程序
单片机整套实验及程序
单片机整套实验及程序