网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机实验报告_2.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

180****2140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档