- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 3
编号:
《 单片机原理及应用 》
实验报告
姓 名:
学 号:
实验班级:
实验时间: 2014.11
实验报告总份(片)数: 12 份(片)
实验教师:
信息工程 学院 实验1号楼 实验室
实验一:开发软件使用与调试方法
实验目的:
学习KEIL 的使用方法,用Keil 开发工具编译C 源码、汇编源程序。掌握单片机的编程及调试。
实验内容和要求:
编写C语言程序,用Keil 将程序编译并生成HEX 文件调试程序。通过并口通信线连接PC 与实验箱,用Easy 51Pro 把程序下载到AT89S51 观察实验箱LED 的变化。
实验要求程序代码:
#include REGX51.H
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
#define key1 P2_0
#define key2 P2_1
#define key3 P2_2
#define LED P0
void delay_10ms() //延时
{ uchar i,j;
for(i=0;i10;i++)
for(j=0;j250;j++);
}
main()
{ uchar aa=0xfe;
uchar flag=0;
P2=0xff;
LED=aa;
while(1)
{
if(key1==0)
{ delay_10ms(); //延时再次检测,键盘去抖
if(key1==0)
{
flag=1; //flag标志为1表示开启流水灯
}
}
if(flag==1)
{
aa=_cror_(aa,1); //将aa循环右移1位后再赋给aa
while(key1==0); //等待按键松开
LED=aa; //更新灯的状态
delay_10ms();
delay_10ms();
delay_10ms();
delay_10ms();
delay_10ms();
if(key2==0 key3==0)
{
delay_10ms(); //延时再次检测,键盘去抖
if(key2==0 key3==0) //SW-1和SW-2同时按下,停止流水灯效果
{
flag=0;
}
}
}
}
}
实验心得:
通过本次试验,熟悉了keil软件的使用。在设置判断标志时,可以明确标识的值,例如用flag==1代替flag,flag==0代替!flag,如此可以尽量避免错误。
实验二:定时器和终中断应用程序设计与调试
实验目的:
掌握单片机的定时器、中断功能系统的应用
实验内容和要求:
编写程序,用AT89S51 的内部定时器/计数器T0的方式1产生周期为0.2秒的TTL 脉冲(TCH和TCL溢出的时候,产生一个中断),从P05输出。
实验原理:
AT89S51 的内部定时器/计数器T0的方式1产生周期脉冲
振荡器的频率f=6M=6,000,000;方式1计数器的长度为L=16,2 的16次方即65,536
定时时间(溢出时间)t=0.1s
定时常数TC=65,536 - 6,000,000 x 0.1 / 12 =65,536 – 50,000=15,536,将15,536转换成16进制为3CB0,
TH0=3CH(高八位),TL0=B0H(低八位)。
实验要求程序代码:
如果要输出一个周期为1 秒的方波,应怎样修改程序?
原本的定时为0.1秒,只需在中断里进行简单的循环五次即可
流程图:
void INT_T0() interrupt 1
{
TH0=0x3C; //设置定时器初始值
TL0=0xB0;
if(i==4) //判断是否循环五次
{
P0_5=!P0_5; //取反
i=0;
}
i++;
}
如果要同时输出多个频率不同的方波(f1=38k, f2=1k),应怎样修改程序?
首先f1是f2的38倍,只需用一个定时器中断即可。计算f1定时时间:TC=65,536-6,000,000*1/38000/2/12=65,536-7=65,529
转化为16进制为FFF9,即TH0=FFH(高八位),TL0=F9H
文档评论(0)