收藏 分销(赏)

实验三 定时器.doc

上传人:xrp****65 文档编号:7443003 上传时间:2025-01-04 格式:DOC 页数:9 大小:202KB 下载积分:10 金币
下载 相关 举报
实验三 定时器.doc_第1页
第1页 / 共9页
实验三 定时器.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
实验三 定时器实验 一、实验目的 1、掌握单片机系统定时器断的原理及使用方法。 2、掌握矩阵键盘实现方法。 3、掌握串口传送的实现方法 二、实验内容 1、见图一。假设单片机晶振频率设定为12MHz。用中断方式来完成以下要求,且通过虚拟示波器观看波形。 A、使用定时器1 以方式1 产生周期为500us 的等宽方波连续脉冲,并由P1.0 输出。用中断方式来完成。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit p10=P1^0; void main() {TMOD=0x10; EA=1; ET1=1; TR1=1; TH1=0xff; TL1=0x06; while(1); } void t1_int() interrupt 3 {TH1=0xff; TL1=0x06; p10=~p10;} B、完成A功能,用查询方式来完成 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit p10=P1^0; 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<reg51.h> #define uchar unsigned char #define uint unsigned int sbit p10=P1^0; void main() {TMOD=0x02; EA=1; ET0=1; TR0=1; TH0=0x9c; TL0=0x9c; while(1); } void t0_int() interrupt 1 {p10=~p10;} D、编程使T0 工作于定时工作方式1,产生500us 等宽方波从P2.7 输出。T1 工作于计数工作方式2,其计数外部脉冲由T0 产生,即P2.7 引脚与P3.5(T1 引脚)相连,T1 每计数100个,P1.2 取反输出一次。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit p2_7=P2^7; sbit p3_5=P3^5; 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 3 {p3_5=~p3_5;} 图一 2、见图二。假设单片机晶振频率设定为12MHz。完成以下功能。 (按键元件名称 BUTTON) A、通过外部按键(INT1 引脚连接)以中断方式控制LED 的上移和下移。(利用连接R2 R3的2个按键实现LED 的上移和下移) B、通过外部按键(T0 引脚连接)以中断方式控制LED 的上移和下移。(利用连接R2 R3的2个按键实现LED 的上移和下移) #include<reg51.h> #define uchar unsigned char #define uint unsigned int void main() { EA=1; EX1=1; ET0=1; TR0=1; TMOD=0x06; TH0=0x10; TL0=0x10; P1=0xff; while(1); } void exint1() interrupt 2 {P1=P1<<1|0x01;} //下移 void t0_int() interrupt 1 {P1=P1>>1|0x80;} // 上移 C、通过INT0 引脚外界4 输入与门扩展外部中断,编程实现扩展出的四个开关以中断方式,分别实现LED 的上移、下移、亮和灭。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int void delay(uint k) {uchar i,j; for(i=0;i<k;i++) for(j=0;j<120;j++);} void shangyi() {while(1) {P1=P1>>1|0x80; delay(100);} } void xiayi() {while(1) {P1=P1<<1|0x01;delay(100);} } void main() {EA=0; EX0=0; P1=0xff; } void int0() interrupt 0 {if(P2==0xfe) {shangyi();} if(P2==0Xfd) {xiayi();} if(P2==0xfb) {P1=0x00;} if(P2==0xf7) {P1=0xff;} } 图二 3、见图三,编程实现以下功能。按不同位置按键,数码管显示该按键代表数值。若无按键按下时,显示上一次按键的数值。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar key; uchar key_code[16]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; uchar disp_code[16]={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<k;i++) for(j=0;j<120;j++);} void show() { if(key<=15) P0=disp_code[key]; } 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;a<16;a++) {if (keycode==key_code[a]) {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<reg51.h> //send file #define uchar unsigned char #define uint unsigned int uchar disp_code[16]={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<k;i++) for(j=0;j<120;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;i<16;i++) { send(disp_code[i]); delay(1000); } } #include<reg51.h> //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;i<16;i++) {P0=receive();} } } 图四 单片机实验报告 实验名称: 实验三 定时器实验 学生姓名: 刘凤楠 专 业: 电子信息工程 班 级: 电信09-2 学 号: 09034030253 日 期: 2011 年 11 月 11 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服