嵌入式实验报告(51单片机).docx

上传人:小飞机 文档编号:5179262 上传时间:2023-06-11 格式:DOCX 页数:15 大小:803.85KB
返回 下载 相关 举报
嵌入式实验报告(51单片机).docx_第1页
第1页 / 共15页
嵌入式实验报告(51单片机).docx_第2页
第2页 / 共15页
嵌入式实验报告(51单片机).docx_第3页
第3页 / 共15页
嵌入式实验报告(51单片机).docx_第4页
第4页 / 共15页
嵌入式实验报告(51单片机).docx_第5页
第5页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式实验报告(51单片机).docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告(51单片机).docx(15页珍藏版)》请在三一办公上搜索。

1、实验题目:P口输出实验实验目的:通过实验了解P口做为输入输出方式使用时,CPU对P口的操作方式实验要求:控制8个LED灯,完成从左到右然后再从右到左再从左到右依次的循序流水实验器材:实验步骤/程序流程分析:程序源代码:#include reg52.h”#includetypedef unsigned int u16;typedef unsigned char u8;#define led P2void delay(u16 i)while(i-);void main()u8 i;led=0x7f;delay(50000);while(1)for(i=0;i7;i+)led=_cror_(led,

2、1);delay(50000);for(i=0;i7;i+)led=_crol_(led,1);delay(50000);实验结果分析:实验日期:2017.10.24成绩评定:口优秀(100-90分)良好(89-80分)口中等(79-70分)口及格(69-60分)口不及格(60-0分)实验题目:实验目的:掌握定时器T0,T1的方式选择和编程方法,了解中断服务程序设计方 法实验要求:利用动态扫描和定时器0在数码管上显示出从200开始以1/10秒的速度 往下递减直至100并保持此数,以此同时利用定时器1以500MS速度进 行流水灯从上至下移动,当数码管上数减到停止时LED灯全亮。实验器材:实验步骤

3、/程序流程分析:程序源代码:#include#include#define uint unsigned int#define uchar unsigned charsbit LSA=P2人2;sbit LSB=P2A3;sbit LSC=P2A4;uchar t0=0,t1,temp;uchar temp,bai,shi,ge;uint shu=200;uchar codesmgduan17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint i)whil

4、e(i-);void xianshi(uchar bai,uchar shi,uchar ge)LSA = 0;LSB=0;LSC=0;P0=smgduange;delay(250);P0=0x00;LSA=1;LSB=0;LSC=0;P0=smgduanshi;delay(250);P0=0x00;LSA=0;LSB=1;LSC=0;P0=smgduanbai;delay(250);P0=0x00;void main()TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-

5、50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;temp=0xfe;P2=0xfe;while(1)xianshi(bai,shi,ge);void T0_time() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0+;if(t0=10)t0=1;temp=_crol_(temp,1);P2=temp; void T1_time() interrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1+;if(t1=2)t1=0;shu-;bai=s

6、hu/100;shi=shu%100/10;ge=shu%10;if(shu=100)TR1=0;TR0=0;P2=0x00;实验日期:2017.11.30成绩评定:口优秀(100-90分)良好(89-80分)口中等(79-70分)口及格(69-60分)口不及格(60-0分)宏定义无符号整型宏定义无符号字符型宏定义数码管段代码宏定义数码管位代码定义启动/停止按键定义复位/清零按键定义计数/存储按键定义计数/显示按键定义蜂鸣器/定义时间变量显示变量0x99,0x92,0x82,0xf8,0x80,0x90;uchar code table2 = 0x40,0x79,0x24,0x30,0x19,

7、0x12,0x02,0x58,0x00,0x10;共阳数码管数组不带点显示共阳数码管带点显示实验题目:实验目的:实验要求:以单片机为核心,设计数字秒表。设计要求计时范围:059分59.59秒,整数四位数和小数两位数显示;计时精度10毫秒;复位按钮,计 时器清零,并做好下次及时准备;可以对三个对象(A、B)计时, 具有启/停控制;设开始、停止A、停止B、显示A、显示B、复位按钮。实验器材:实验步骤/程序流程分析:程序源代码:#include#define uint unsigned int#define uchar unsigned char#define DUAN (P0)#define WE

8、I (P2)sbit keystart_stop = P3A2;sbit keyrest = P3A3;sbit keyrecord= P3A4;sbit keydispaly=P3A5;sbit beep= P3A6;sbit led=P3A7;uchar x,msec5,msec10,second,minute;uchar msec,sec,min;uchar code table1 = 0xc0,0xf9,0xa4,0xb0,/*函数名称:延时函数delay功能:延时指定毫秒参数:uchar x返回值:无*/ void delay(uchar x)uint b,c;for(b = x;b

9、0;b-)for(c = 110;c0;c-);/*函数名称:定时器初始化函数time_init(void) 功 能:定时器初始化参 数:无返回值:无*/ void time_init(void)msec5=0;TMOD = 0x01;TH0 = (65536-9174)/256;TL0 = (65536-9174)%256;ET0 = 1;TR0 = 1;EA = 1;/*函数名称:显示函数display ()功能:数码管显示参数:uchar msec,uchar sec,uchar min返回值:无*/ void display(uchar msec,uchar sec,uchar min

10、)5.64%10=64%10=0.04DUAN = table1(msec%10)%10;/ 0.01 秒WEI = 0x01;delay(2);WEI = 0x00;DUAN = table1(msec/10)%10;/ 0.1 秒5.64/10=56%10=0.6WEI = 0x02;delay(2);WEI = 0x00;DUAN = table2(sec%10); / 1 秒 564%10=6WEI = 0x04;delay(2);WEI = 0x00;DUAN = table1(sec/10); / 10 秒 564/10=56%10=6WEI = 0x08;delay(2);WEI

11、 = 0x00;DUAN = table1(min%10); / 1 分 564/10=56%10=6WEI = 0x10;delay(2);WEI = 0x00;564/10=56%10=6DUAN = table1(min/10); / 10 分 WEI = 0x20;delay(2);WEI = 0x00;/*函数名称:蜂鸣器函数功能:蜂鸣器发声参数:无返回值:无*/ void beep_led()beep = 0;delay(600);beep = 1;delay(600);led = 0;delay(600);led = 1;/*函数名称:按键函数功能:调试按键的函数参数: 无返回值

12、:无*/ void keys()if(keystart_stop=0)delay(5);if(keystart_stop=0)TR0 = TR0; beep_led(); while(!keystart_stop);if(keyrest=0)delay(5);if(keyrest=0)TR0 = 0;msec5=0;msec10=0, second=0; minute=0;beep_led();while(!keyrest);/*函数名称:主函数功能:参数:无返回值:*/ void main()uchar jishu=0;uchar flag=0;uchar msec1=0,sec1=0,mi

13、n1=0;uchar msec2=0,sec2=0,min2=0;time_init();while(1)keys(); /键盘的扫描函数一定要放在while循环里边msec=msec10;sec=second;min=minute;if(flag=1)display(msec1,sec1,min1);else if(flag=0)display(msec,sec,min);elsedisplay(msec2,sec2,min2);if(keyrecord=0)delay(5);if(keyrecord=0)beep_led();jishu+;if(jishu2)jishu=0;else if

14、(jishu=1)msec1=msec10;sec1=second;min1=minute;else if(jishu=2)msec2=msec10;sec2=second;min2=minute;while(!keyrecord);if(keydispaly=0)delay(5);if(keydispaly=0)beep_led();flag+;if(flag2)flag=0;while(!keydispaly);/*函数名称:中断函数功能:参数:无返回值:*/ void timer0 () interrupt 1TH0 = (65536-9174)/256;TL0 = (65536-9174)%256;/msec10加一次等于10msmsec10+;/ second=60 为 1minute/ minute=60 为 1hourif(msec10=100)msec10 = 0;second+;if(second=60)second=0 ;minute+;if(minute=60)minute=0 ;/ j=100 为 1s实验结果分析:实验日期:2017.12.01成绩评定:口优秀(100-90分)良好(89-80分)口中等(79-70分) 口及格(69-60分) 口不及格(60-0分)教师签名:年 月曰

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号