1、实验三 定时器实验一、实验目的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=0x0
2、6;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 uc
3、har 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 ch
4、ar#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
5、 引脚连接)以中断方式控制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 2P1=P11|0x80; / 上移C、通过
6、INT0 引脚外界4 输入与门扩展外部中断,编程实现扩展出的四个开关以中断方式,分别实现LED 的上移、下移、亮和灭。#include#define uchar unsigned char#define uint unsigned intvoid delay(uint k)uchar i,j;for(i=0;i1|0x80;delay(100); void xiayi()while(1)P1=P1#define uchar unsigned char#define uint unsigned intuchar key;uchar key_code16=0xee,0xde,0xbe,0x7e,0
7、xed,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;i /send file#define uchar unsigned char #define uint unsigned int uchar disp_code16=0x3f,0x06,0x5b,0x4f,0x6
8、6,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint k)uchar i,j;for(i=0;i /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;TL1=0xe8;TH1=0xe8;PCON=0X00;SCON=0X50;TR1=1;while(1)for(i=0;i16;i+)P0=receive();图四单 片 机 实 验 报 告实验名称: 实验三 定时器实验 学生姓名: 刘凤楠 专 业: 电子信息工程 班 级: 电信 09-2 学 号: 09034030253 日 期: 2011 年 11 月 11 日