08级智能仪器设计仿真实验.docx
《08级智能仪器设计仿真实验.docx》由会员分享,可在线阅读,更多相关《08级智能仪器设计仿真实验.docx(11页珍藏版)》请在冰豆网上搜索。
08级智能仪器设计仿真实验
实验一:
单片机C51程序设计集成开发环境应用及I/O口编程
一、实验目的
1、了解集成开发环境KeilVision3文件管理的特点。
2、学会使用开发环境新建文件、编辑、编译程序。
。
3、掌握开发环境程序设计相关设置及其意义。
4、掌握单片机普通I/O口的程序设计技术。
5、加深对单片机执行程序机制的理解。
二、实验要求
1、熟练操作开发环境。
2、利用C51相关知识,编写简单程序,生成可执行文件。
3、记录编译错误信息,总结错误原因,写出解决办法。
4、完成花样流水灯程序。
5、利用开发环境的仿真实验电路仿真程序,并得出仿真结果。
三、实验内容
1、认识KeilVision3;新建工程、文件;工程参数设置;程序编辑、编译及调试。
2、编写简单流水灯以及花样流水程序,调试程序。
3、仿真运行观察P1口的8个发光二极管现象,P1寄存器内容的变化,二者变化是否一致。
四、实验步骤
1、启动软件KeilVision3,界面如下图:
2、菜单操作Project>NewProject,在出现的对话框中输入工程名称,设计保存路径,然后保存。
3、出现CPU选择对话框,选择所用的单片机,单击确定。
4、出现加入启动代码文件对话框,单击是。
下图为建立完工程后的界面:
5、菜单操作Project>Optionsfortarget“Target1”或者直接在左侧的Target1文件夹图标上单击右键,选择Optionsfortarget“Target1”,出现下图所示的Optionsfortarget“Target1”对话框。
在Target标签下设置晶振频率、编译模式、ROM大小等,在Output标签下设置目标文件路径,是否产生可执行文件及是否产生其他信息。
6、点击File>New菜单或则点击新建图标
,然后保存,设置保存路径,注意保存文件格式为:
文件名.C。
7、在文件管理窗口中右键单击“SourceGroup1”,选择“AddFilestoGroup‘SourceGroup1’”,选中刚刚新建的程序文件,点“Add”即可把文件加入到工程中。
8、文件管理窗口中双击任何文件名即可把该文件打开,在右边的工作区中可以编辑源程序。
9、程序编辑完成后单击
图标编译,编译通过后的界面下图所示。
输出窗口中为编译信息,若有错误,系统提示错误类型及所在的行,根据此信息进行调试,直至程序编译正确通过。
10、新建工程intprj.Prj,新建c程序源文件并加入到工程中;
11、输入所编写的程序,简单流水和花样流水分别实现;
12、所给的ledkey.dll文件拷贝至Keil\C51\BIN文件夹下
13、设置工程选择project->OptionforTarget'Target1',选Debug页,左侧最下面,DialogDll中一般是DP51.DLL,不用修改,Parameter中是-P51在其后加入-dledkey即该行看起来应该是这样的:
-p51-dledkey-simboard保存即可。
14、输入所编写的程序,实现功能:
定时一秒,隔一秒P1口接的8个发光二极管亮
15、编译程序,若有错误,调试程序直至编译通过。
16、单击
按钮,进入仿真界面。
点击:
Peripherals,其中多出一个“键盘LED实验仿真板”选择该项即可。
17、单击
按钮,运行程序,观察仿真界面能否完成要求的功能。
仿真试验板电路入下图所示:
18、简单流水流程图:
19、简单流水代码:
#include
unsignedchari;
unsignedchartemp;
unsignedchara,b;
voiddelay(void)
{
unsignedcharm,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
voidmain(void)
{
while
(1)
{
temp=0xfe;
P1=temp;
delay();
for(i=1;i<8;i++)
{
a=temp<
b=temp>>(8-i);
P1=a|b;
delay();
}
for(i=1;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
}
}
}
20、花样流水流程图:
21、花样流水参考代码:
#include
unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x00,0xff,0x00,0xff,
0x01};
unsignedchari;
voiddelay(void)
{
unsignedcharm,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
voidmain(void)
{
while
(1)
{
if(table[i]!
=0x01)
{
P1=table[i];
i++;
delay();
}
else
{
i=0;
}
}
}
实验二:
中断程序设计
一、实验目的
1、掌握中断程序设计技术。
2、加深对单片机中断机制的理解。
对实时控制概念有初步的感性认识。
二、实验要求
1、独立完成。
2、描述出中断发生时,中断资源的变化情况,也可以用显示技术表明中断的发生。
三、实验内容
编写中断程序,仿真运行,观察产生中断时单片机相应过程。
四、实验步骤
1、新建工程intprj.Prj,新建c程序源文件并加入到工程中
2、输入所编写的程序,程序需为主循环+中断服务程序结构
3、编译程序,若有错误,调试程序直至编译通过。
4、单击
按钮,进入仿真界面。
5、菜单Peripherials>Interrupt,对话框如下图。
6、单击
按钮仿真运行程序,观察所选的中断资源变化情况。
7、中断程序实例代码:
#include
#defineUcharunsignedchar
sbitP12=P1^2;
UcharIntCnt=5;
voidmain(void)
{
TCON=0X01;//外部中断0边沿触发
EX0=1;
EA=1;//开中断
while
(1);
}
voidExInt0_isr(void)interrupt0
{
TMOD=0x02;//T0。
方式2
TCON=0x00;
TH0=56;
TL0=56;
TR0=1;
}
voidT0_isr(void)interrupt1
{
if(--IntCnt==0)
{
IntCnt=5;
P12=~P12;
}
}
功能:
利用MCS-51的计数器T0,工作于方式2,P3.2作为故障状输入端,当出现1次负跳变时,立即在P1.2脚输出周期2ms连续方波(晶振为12MHZ)