资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
实验三 定时器实验一、实验目的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; 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 日
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号