版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机程序设计实验报告 姓名:学号: 专业班级:第二节课:实验一:1357,2468位置的灯交替闪烁一 实验要求1357,2468位置的灯交替闪烁。二 硬件连接图与结果 三 原理简述程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。四 程序 #include<reg51.h> main () int i; P0=0XAA; /1357四个灯亮 for (i=0;i<=25000;i+); /延时程序 P0=0X55; /2468四个灯亮 for (i=0;i<=25000;i+); /延时程序 五 所遇问题与解决方式程序比较简单,没有遇到问题。实验二:
2、流水灯一 实验要求 流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。二 硬件连接图与结果三 原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。时间间隔简单的用了一个延时的语句。因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。四 程序/流水灯 #include<reg51.h> main () int i,j; while(1) P0=0X01; /第1个灯亮 for (i=0;i<=30000;i+); /延时程序 for(j=0;j<=7;j+) /移位循环程
3、序 P0=P0<<1; /移位 for (i=0;i<=30000;i+); /延时程序 P0=0xff; /全亮 for (i=0;i<=30000;i+); /延时程序 五 所遇问题与解决方式程序比较简单,没有遇到问题。实验三:跑马灯一 实验要求 一个接一个的灯亮,前面亮过的等依旧亮,直到最后一个灯,最后重新开始,循环。二 硬件连接图与结果三 原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。时间间隔简单的用了一个延时的语句。因为移位时是直接补0,为了使之前的灯依旧亮,所以我们用了一个取反
4、,让新补入的0位保持灯亮,达到要求。四 程序#include<reg51.h> main () int i,j,m; while(1) m=0Xfe; P0=m; /第1个灯亮 for (i=0;i<=30000;i+); /延时程序 for(j=0;j<=7;j+) /移位循环程序 m=m<<1; /移位 P0=m; for (i=0;i<=30000;i+); /延时程序 P0=0xff; /全亮 for (i=0;i<=30000;i+); /延时程序 五 所遇问题与解决方式程序比较简单,没有遇到问题。第3节 课:实验四:矩阵按键控制数码管
5、显示数字一 实验要求 通过矩阵键盘控制数码管的显示对应数字。二 硬件连接图与结果三 原理简述 通过程序定义键位码,对应到显示数码管的位。然后通过扫描程序得出键盘键码,通过程序让数码管显示数字。四 程序#include<reg51.h>#define uchar unsigned char#define unit unsigned intvoid dlms(void);uchar kbscan(void);unsigned char i;unsigned char code out16=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6
6、f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char tab16=0xdb,0xee,0xde,0xbe, 0x7e,0xed,0xdd,0xbd, 0x7d,0xeb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77;/主程序void main (void) uchar key; while(1) key=kbscan(); dlms(); for(i=0;i<16;i+)if(key=tabi)P0=outi; /延时程序void dlms (void) uchar i; for (i=200;i>0;i-) /扫描程序ucha
7、r kbscan(void) uchar sccode,recode; P2=0xf0; /高四位输入1,低四位输入0 if (P2&0xf0)!=0xf0) /有按键时 dlms(); if(P2&0xf0)!=0xf0) sccode=0xfe; while (sccode&0x10)!=0) P2=sccode; if(P2&0xf0)!=0xf0) recode=P2&0xf0; sccode=sccode&0x0f; return(sccode+recode); else sccode=(sccode<<1)|0x01; r
8、eturn(0); 五 所遇问题与解决方式 程序比较简单,没有遇到问题。第4节 课实验五:数码管显示 停电了,做的是数码管的程序,由于下个实验的时候也用了数码管,在数码管的基础上进行的,所以没有补做。第五节课实验六:独立按键控制灯的亮灭一 实验要求 通过独立按键来控制LED灯的亮灭,用中断程序控制。 二 硬件连接图与结果(控制单个灯的图丢了,所以用了后面加深实验的图)三 原理简述 中断程序定义一个等待,通过独立按键发送信号,执行程序,控制灯的亮灭。四 程序/K1中断程序控制LED灯亮灭#include <reg51.h>sbit led=P05;int0()interrupt 0
9、led=led;main() led=1; IT0=0; EA=1; EX0=1; while(1);五 所遇问题与解决方式 问题:按键会抖动接触不太好,总是不能每次人工按下时只变化一次。 解决方式:在程序里加了延时程序,让它在延时时间后再重新执行中断程序,这样可保证每次按下时不会跳变。实验七:通过数码管显示按键次数一 实验要求 利用中断程序,写出按键程序,用数码管显示所按次数。二 硬件连接图与结果三 原理简述 中断程序定义一个等待,通过独立按键发送信号,执行数码管的显示程序,程序计数每按一次加1,数码管显示。四 程序/数码管计数中断次数#include <reg51.h>char
10、 i=0;int j;unsigned char code tab11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88;int0()interrupt 2 i=i+1; if(i<11) P2=tabi; for(j=0;j<=30000;j+); else i=0; P2=0x3F;main() IT1=0; EA=1; EX1=1; while(1); 五 所遇问题与解决方式 问题:按键会抖动接触不太好,总是不能每次人工按下时只变化一次。 解决方式:在程序里加了延时程序,让它在延时时间后再重新执行中断程序,这样可保证
11、每次按下时不会跳变。第6节 课实验八:定时器控制LED灯1S闪烁一 实验要求 利用定时程序计时,控制小灯每隔1S闪烁。二 硬件连接图与结果三 原理简述 通过定时程序写一个定时时间,每到一次计时直接控制LED灯亮灭。四 程序/定时器控制LED灯1S闪烁 #include<reg51.h> #define uchar unsigned char uchar num = 0; sbit led = P10; void main() TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;le
12、d = 1;while(1)if(num = 20)num = 0;led = led; void T0_time()interrupt 1 TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;num+; 五 所遇问题与解决方式 验证程序,问题不多。实验九:定时器控制两个灯以不同周期闪烁一 实验要求 用定时器1工作方式1控制两个LED以不同周期。 说明:设计一个LED以200ms为周期闪烁,另一个为800ms闪烁,设计定时器1每50ms产生一次中断,由两个变量分别对中断次数计数,其中一个变量计数两次,即100ms,控制LED亮灭,另一个变量计数8次即
13、400ms,控制LED亮灭。 二 硬件连接图与结果三 原理简述 通过定时程序写一个50ms的定时,一个灯运行计时2遍变化一次,另一个灯在上一个灯的计时基础上计数4次再变化,从而控制LED灯亮灭。四 程序/用定时器1工作方式1控制两个LED以不同周期/说明:设计一个LED以200ms为周期闪烁,另一个为800ms闪烁/设计定时器1每50ms产生一次中断,由两个变量分别对中断次数计数,/其中一个变量计数两次,即100ms,控制LED亮灭/另一个变量计数8次即400ms,控制LED亮灭 #include<reg51.h> #define uchar unsigned char uchar num = 0; /4 uchar n = 0; /16 sbit led1 = P10; sbit led2 = P12; void main() TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;/计时开始l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江金华市金东区编外工作人员招聘43人备考题库附答案详解(完整版)
- 2026中日青年交流中心有限公司社会招聘3人备考题库附答案详解(综合卷)
- 2026浙江衢州市直公办学校教师招聘22人考试参考题库及答案解析
- 2026年绥化学院公开招聘博士教师20人备考题库及答案详解(考点梳理)
- 2026云南省有色地质局三一七队下属企业招聘12人备考题库及答案详解一套
- 2026湖南邵阳市新宁县县直事业单位人才引进10人备考题库及答案详解(易错题)
- 2026陕西西安唐华华邑酒店招聘备考题库及完整答案详解
- 2026年慢性胃炎的饮食禁忌与调理
- 2026广东中山市消防救援局招聘消防文员3人笔试参考题库及答案解析
- 2026广西百色市西林县总工会招聘编外人员1人备考题库附答案详解(培优b卷)
- 2026年公务乘车座次礼仪与司机沟通规范问答
- 2026年北京市西城区高三二模英语试卷(含答案)
- 2026重庆璧山文化旅游产业有限公司面向社会招聘5人备考题库及答案详解(各地真题)
- 济宁市2026届省属公费师范毕业生就业岗位需求备考题库(112个)含答案详解(能力提升)
- 【 道法 】社会主义市场经济体制课件-2025-2026学年统编版道德与法治八年级下册
- 2026届百师联盟高三下学期考前适应性训练(一) 英语试题+答案
- 2025-2026学年人教版八年级英语下册口语交际(补全对话)每日一练专项训练
- 2026四川三江新能源供应链科技有限责任公司第一批社会招聘7人笔试参考题库及答案解析
- 2026年高校基建处工程管理岗应聘笔试指南及项目流程
- 2026年煤矿采煤工试题及答案
- 2025四川宜宾市科技人才集团有限公司第三批员工招聘10人笔试历年参考题库附带答案详解
评论
0/150
提交评论