实验三 定时器.doc_第1页
实验三 定时器.doc_第2页
实验三 定时器.doc_第3页
实验三 定时器.doc_第4页
实验三 定时器.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三 定时器实验一、实验目的1、掌握单片机系统定时器断的原理及使用方法。2、掌握矩阵键盘实现方法。3、掌握串口传送的实现方法二、实验内容1、见图一。假设单片机晶振频率设定为12MHz。用中断方式来完成以下要求,且通过虚拟示波器观看波形。A、使用定时器1 以方式1 产生周期为500us 的等宽方波连续脉冲,并由P1.0 输出。用中断方式来完成。#include#define uchar unsigned char#define uint unsigned intsbit p10=P10;void main()TMOD=0x10; EA=1; ET1=1; TR1=1; TH1=0xff; TL1=0x06;while(1);void t1_int() interrupt 3TH1=0xff; TL1=0x06; p10=p10;B、完成A功能,用查询方式来完成#include#define uchar unsigned char#define uint unsigned intsbit p10=P10;void main()TMOD=0x10; TR1=1; TH1=0xff; TL1=0x06;for( ; ;)if(TF1=1)TF1=0;p10=p10;C、使用定时器0 以方式2 产生周期为200us 的等宽方波连续脉冲,并由P1.1 输出。用中断方式来完成。#include#define uchar unsigned char#define uint unsigned intsbit p10=P10;void main()TMOD=0x02; EA=1; ET0=1; TR0=1; TH0=0x9c; TL0=0x9c;while(1);void t0_int() interrupt 1p10=p10;D、编程使T0 工作于定时工作方式1,产生500us 等宽方波从P2.7 输出。T1 工作于计数工作方式2,其计数外部脉冲由T0 产生,即P2.7 引脚与P3.5(T1 引脚)相连,T1 每计数100个,P1.2 取反输出一次。#include#define uchar unsigned char#define uint unsigned intsbit p2_7=P27;sbit p3_5=P35;void main()TMOD=0x61; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; TH0=0xff; TL0=0x06; TH1=0x9c; TL1=0x9c;while(1);void t0_int() interrupt 1 TH0=0xff; TL0=0x06; p2_7=p2_7;void t1_int() interrupt 3p3_5=p3_5;图一2、见图二。假设单片机晶振频率设定为12MHz。完成以下功能。(按键元件名称 BUTTON)A、通过外部按键(INT1 引脚连接)以中断方式控制LED 的上移和下移。(利用连接R2 R3的2个按键实现LED 的上移和下移)B、通过外部按键(T0 引脚连接)以中断方式控制LED 的上移和下移。(利用连接R2 R3的2个按键实现LED 的上移和下移)#include#define uchar unsigned char#define uint unsigned intvoid main() EA=1; EX1=1; ET0=1; TR0=1; TMOD=0x06; TH0=0x10; TL0=0x10; P1=0xff; while(1); void exint1() interrupt 2 P1=P11|0x80; / 上移C、通过INT0 引脚外界4 输入与门扩展外部中断,编程实现扩展出的四个开关以中断方式,分别实现LED 的上移、下移、亮和灭。#include#define uchar unsigned char#define uint unsigned intvoid delay(uint k)uchar i,j; for(i=0;ik;i+) for(j=0;j1|0x80; delay(100); void xiayi()while(1) P1=P11|0x01;delay(100); void main()EA=0; EX0=0; P1=0xff; void int0() interrupt 0if(P2=0xfe) shangyi(); if(P2=0Xfd) xiayi(); if(P2=0xfb) P1=0x00; if(P2=0xf7) P1=0xff; 图二3、见图三,编程实现以下功能。按不同位置按键,数码管显示该按键代表数值。若无按键按下时,显示上一次按键的数值。#include#define uchar unsigned char#define uint unsigned intuchar key;uchar key_code16=0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77;uchar disp_code16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint k)uchar i,j; for(i=0;ik;i+) for(j=0;j120;j+);void show() if(key=15) P0=disp_codekey; uchar rekey()uchar scan1,scan2,keycode,a; P1=0x0f; scan1=P1; if(scan1&0x0f)!=0xf) delay(20); scan1=P1; if(scan1&0x0f)!=0xf) P1=0xf0; scan2=P1; keycode=scan1|scan2; for(a=0;a16;a+) if (keycode=key_codea) key=a; return (key); else P1=0xff;return (16);void main() while(1) P0=0x00; P1=0xf0; if(P1&0x0f)!=0xf) rekey(); show(); 图三4、要求单片机U2 采用串行方式发送给单片机U1 一段数据码。单片机U1 利用该数据码在七段数码管上显示数字0-F(间隔时间1 秒)。周而复始,循环不息。设fosc=11.0592MHz. #include /send file#define uchar unsigned char #define uint unsigned int uchar disp_code16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint k)uchar i,j; for(i=0;ik;i+) for(j=0;j120;j+);void send(uchar data1)SBUF=data1;/发送数据while(TI=0) /判断是否发送完成,若未完成,等待;TI=0; /发送完成后,人工设置TI为0,以便下次发送数据void main()uchar i; TMOD=0x20; TL1=0xe8; TH1=0xe8; PCON=0X00; SCON=0X40; TR1=1;while(1)for(i=0;i16;i+) send(disp_codei); delay(1000);#include /receive file#define uchar unsigned char #define uint unsigned int uchar receive(void)uchar data1;while(RI=0);/判断是否接收完成,若未完成,等待RI=0; /接收完成后,人工设置RI为0,以便下次接收数据data1=SBUF; /将接收的数据给变量data1。return data1;void main()uchar i; TMOD=0x20;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论