课程名称
单片机技术
实验项目名称
一、熟悉单片机开发环境
开课系(部)及
实验室
17025实验室iso17025实验室认可实验室检查项目微生物实验室标识重点实验室计划
电子工程系
实验日期
2015年3 月24 日
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
述: □简明通顺 □重复冗长 □没有实质
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
1. 初步学会使用Keil μVision开发环境和简单程序的编辑、编译、与运行方法;
2. 学习51下载的方法;
3. 掌握单片机控制发光二极管亮灭的原理并编程实现
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验原理
1、用Keil μVision编辑、编译简单的C51程序;
2、将编译好的的目标代码文件“*.HEX”,使用下载软件(STC_ISP)下载到开发板。
四、单片机控制发光二极管亮灭实验原理图:
五、实验程序:
#include
void delay(unsigned int i)
{
unsigned char j;
while (--i)
{
j=250;
while(--j);
}
}
void main(void)
{
while(1)
{
P1 = 0x0F;
delay(1000);
P1 = 0xF0;
delay(1000);
if(P2 = 0xff)
{
P1 = 0x0F;
P3 = 0xF0;
}
else
{
P1 = 0xFF;
P3 = 0xFF;
}
}
}
六、实验结果及心得体会
(按步骤记录调试程序过程中出现的现象,在上述程序实现的基础上,如何修改程序使其他的发光二极管实现亮灭,本部分手写,写不下可写在背面)
学生实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
课程名称
单片机技术
实验项目名称
二、单片机控制流水灯
开课系(部)及实验室
实验日期
2015年 3 月 31日
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字表述: □简明通顺 □重复冗长 □没有实质内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和要求
1、初步掌握C51的基本语法、基本控制语句的使用,函数调用等知识,学习按任务编写基本程序
2、掌握 MCS-51 单片机的 P0、P1、P2 口的使用方法
3、掌握实现发光二极管的移动、闪烁程序的编写方法
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验内容及要求
1、掌握C51程序调试方法,学习设置二软件联调。
2、由P1口连接8只发光二极管,实现如下功能
1)让发光二极管从左至右循环轮流点亮两只灯;
2)让8只光二极管从外向内循环轮流点亮;
3)让8只光二极管从内向外循环轮流点亮;
四、实验线路
图1 实验线路图
五、实验程序
#include
void delay(unsigned int i)
{
unsigned char j;
while (--i)
{
j=250;
while(--j);
}
}
void main(void)
{
unsigned char output = 0xfe;
while(1)
{
P1 = output ;
output = output << 1;
delay(1000);
output |= 1;
if(output == 0xff)
output = 0xfe;
}
}
六、实验结果及心得体会
(按步骤记录调试程序过程中出现的现象,调试方法,修改程序的方法)
课程名称
单片机技术
实验项目名称
三、独立按键
开课系(部)及实验室
实验日期
2015年 4 月 7日
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字表述: □简明通顺 □重复冗长 □没有实质内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和要求
1.掌握单片机 I/O 口读写方法。
2.掌握独立按键的连接方法及使用。
3. C 语言基本语句的编写,对I/O 口基本操作。
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验内容及要求
单片机P3.0-P3.3口连接4只按键,利用以上按键,实现如下功能
1)当按钮S1按下时,第1只发光二极管点亮;
2)当按钮S2按下时,第8只发光二极管点亮;
四、实验线路
5、实验程序
六、实验结果及心得体会
(按步骤记录调试程序过程中出现的现象,调试方法,修改程序的方法)
课程名称
单片机技术
实验项目名称
四、数码管动态显示
开课系(部)及实验室
实验日期
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字表述: □简明通顺 □重复冗长 □没有实质内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和要求
1、掌握一维数组定义和调用的方法;
2、掌握数码管的原理,学习定义数码管及LED各种图形组合数组的技巧;
3、学习程序组合和函数调用方法,进一步提高编程能力
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验内容及要求
单片机P3.0-P3.3口连接4只按键,利用以上按键,实现如下功能
1、动态改变数码管显示值
2、使用按键输入改变数码管显示的数字
3、设计按键输入与显示的交互控制(发挥)
四、实验线路
5、实验程序
六、实验结果及心得体会
(按步骤记录调试程序过程中出现的现象,调试方法,修改程序的方法)
课程名称
单片机技术
实验项目名称
五、矩阵键盘改变数码管显示
开课系(部)及实验室
实验日期
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字表述: □简明通顺 □重复冗长 □没有实质内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和要求
1、掌握矩阵键盘的原理,编程方法;
2、掌握数码管的显示;
3、学习程序组合和函数调用方法,进一步提高编程能力
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验内容及要求
单片机P3口连接16只按键,组成矩阵按键,将每个按键编上一个键值,编写按键驱动程序,实现。
1、按下相应的按键,数码管显示相应的按键值
2、使用按键输入改变数码管显示的数字,增加或减少。
3、设计按键输入与显示的交互控制(发挥)
按键的排布
转换后键值 原键值:
7 8 9 10 7E BE DE EE
4 5 6 11 7D BD DD ED
1 2 3 12 7B BB DB EB
0 15 14 13 77 B7 D7 E7
四、实验线路
五、实验程序
#include "keyboard.h"
//*******************************************
//函数名称: void Delay20ms( void )
//函数功能:摁键专用延时函数
//形式参数:无
//行参说明:无
//返回参数:无
//使用说明:
//*******************************************
void KeyDelay20ms( void )
{
uint uitime = 2000;
while (--uitime);
}
//*******************************************
//函数名称: uchar ScanKeyRead( void )
//函数功能:扫描键盘若有摁键有反应就返回键值
//形式参数:无
//行参说明:无
//返回参数:键值
//使用说明:
// 键值:
// 7E BE DE EE
// 7D BD DD ED
// 7B BB DB EB
// 77 B7 D7 E7
//*******************************************
uchar ScanKeyRead( void )
{
uchar uctmp1,uctmp2;
KeyScanIO = 0xff;//第一步:往IO锁存器写1
KeyScanIO = 0x0f;//第二步:判断在哪一行
if ((KeyScanIO & 0x0f) != 0x0f) //第三步:为真时说明有摁键反应,判断第一次
{
KeyDelay20ms(); //第四步:延时20ms
if ((KeyScanIO & 0x0f) != 0x0f)//第五步:为真时真的有摁键反应,判断第二次
{
uctmp1 = KeyScanIO; //第六步:扫描在哪一行,存于低四位
KeyScanIO = 0xf0;
uctmp2 = KeyScanIO; //第七步:扫描在哪一列,存于高五位
while ((KeyScanIO & 0xf0) != 0xf0);//第八步:等待按键释放
return (uctmp1 | uctmp2); //第九步:合并行列位置,并返回
}
else
return 0;//无按键标志
}
else
return 0;//无按键标志
}
//*******************************************
//函数名称: uchar KeyValOpe( uchar ucKeyval )
//函数功能:转换键值,并返回键号
//形式参数:无
//行参说明:无
//返回参数:键号
//使用说明:
// 转换后键值 原键值:
// 7 8 9 10 7E BE DE EE
// 4 5 6 11 7D BD DD ED
// 1 2 3 12 7B BB DB EB
// 0 15 14 13 77 B7 D7 E7
//*******************************************
uchar KeyValOpe( uchar ucKeyval )
{
uchar keytemp;
switch (ucKeyval)
{
case 0xE7 : keytemp = 13; break;
case 0xD7 : keytemp = 14;break;
case 0xB7 : keytemp = 15;break;
case 0x77 : keytemp = 0;break;
case 0xEB : keytemp = 12;break;
case 0xDB : keytemp = 3;break;
case 0xBB : keytemp = 2;break;
case 0x7B : keytemp = 1;break;
case 0xED : keytemp = 11;break;
case 0xDD : keytemp = 6;break;
case 0xBD : keytemp = 5;break;
case 0x7D : keytemp = 4;break;
case 0xEE : keytemp = 10;break;
case 0xDE : keytemp = 9;break;
case 0xBE : keytemp = 8;break;
case 0x7E : keytemp = 7;break;
default : keytemp = 16; break; //无摁键反映*/
}
return keytemp;
}
六、实验结果及心得体会
(按步骤记录调试程序过程中出现的现象,调试方法,修改程序的方法)
课程名称
单片机技术
实验项目名称
六、单片机外部中断应用
开课系(部)及实验室
实验日期
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字表述: □简明通顺 □重复冗长 □没有实质内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和要求
1、学习单片机外部中断的使用方法。
2、掌握单片机应用程序开发的软硬件结合思想。
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验内容及要求
从单片机的外部中断端口P3.2输入一脉冲信号(利用按键产生),编程实现脉冲到来后,P1.0对应的LED灯亮灭发生变化(或,P1.3对应的喇叭响)。
四、实验线路
五、实验程序
#include
#define uchar unsigned char
#define uint unsigned int
//************************************************************************
//函数名称:void delayms(uchar t)
//函数功能:延时函数
//形式参数:无
//行参说明:uchar t-决定延时时间(毫秒)
//返回参数:无
//备 注:
//版 本:2014/04/01 V1.0
//使用说明:
//************************************************************************
void delayms(uint t)
{
uchar i;
while(t--)
for(i=0;i<123;i++);
}
void main(void)
{
IT0 = 1;//下降沿触发方式
EA = 1;//总中断允许
EX0 = 1;//外部中断允许
P1 = 0xff;
while(1)
{
;
}
}
void isr_int0() interrupt 0
{
P1 = 0x00;
delayms(5000);
P1 = 0xFF;
}
六、实验结果及心得体会
(按步骤记录调试程序过程中出现的现象,调试方法,修改程序的方法)
课程名称
单片机技术
实验项目名称
七、单片机定时/计数器中断应用
开课系(部)及实验室
实验日期
2015年 5 月5 日
学生姓名
学号
班级
指导教师
实验成绩
教师评语:
实验成绩评定
1
实验方法: □有创新 □有改进 □有缺陷 □合理
2
实验结果: □一次成功 □改进后成功 □ 不成功
3
文字表述: □简明通顺 □重复冗长 □没有实质内容
4
实验态度: □严谨认真 □循规蹈矩 □ 敷衍应付
5
课堂评价: □优秀 □良好 □中等 □及格 □不及格
教师签名: 批改时间: 年 月 日
一、实验目的和要求
1、学习单片机定时/计数器中断的使用方法。
2、掌握单片机定时/计数器工作在不同工作方式的寄存器设置。
二、主要仪器设备
1、安装Keil μVision及Protues软件的计算机一台;单片机开发板一套。
三、实验内容及要求
1、利用定时/计数器1,使得单片机产生2ms时间作为数码管定时扫描信号,并使用该定时来作8位数码管动态扫描。
2、利用定时/计数器1,使得单片机P1.0产生一个周期为1S的方波信号,控制P1.0的LED闪烁。(定时/计数器工作在方式1,初值自设)。
四、实验线路
五、实验程序
#include
#include "keyboard.h"
#define uchar unsigned char
#define uint unsigned int
uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//段码 数组
// 0 1 2 3 4 5 6 7 8 9 隐藏 -
uchar dis[]={0,0,11,0,0,11,0,0};//选择显示内容
uchar t1_i=0; //用于扫描数码管位变量
uchar second = 0;//秒
uchar minute = 0;//分
uchar hour = 0;//小时
uint t0_count = 0;//用于统计中断次数,完成秒计数变量
uchar keyval;
sbit P10 = P1^0;
//************************************************************************
//函数名称:void delayms(uchar t)
//函数功能:延时函数
//形式参数:无
//行参说明:uchar t-决定延时时间(毫秒)
//返回参数:无
//备 注:
//版 本:2014/04/01 V1.0
//使用说明:
//************************************************************************
/*void delayms(uchar t)
{
uchar i;
while(t--)
for(i=0;i<123;i++);
}*/
//************************************************************************
//函数名称:void display(uchar dis[])
//函数功能:数码管显示函数
//形式参数:无
//行参说明:uchar dis[]-显示的数字
//返回参数:无
//备 注:
//版 本:2014/04/01 V1.0
//使用说明:轮流显示各位数码管,函数执行时间较长
//************************************************************************
/*void display(uchar dis[])
{
uchar i;
for(i=0;i<8;i++)
{
P0=seg[dis[i]];
P2=i;
delayms(1);
}
}*/
void main(void)
{
//第一步:设置TMOD,指定工作方式
TMOD = 0x12;//T1作为定时器,工作方式1;T0作为定时器,工作方式2
//第二步:设置初值
TH0 = 256-250; //T0初值,高8位,定时250us
TL0 = 256-250; //初值,低8位
TH1 = (65536-2000)>>8;//T1初值,高8位,定时2ms,0xf8
TL1 = (65536-2000); //初值,低8位,0x30
//第三步:中断允许
ET0 = 1; //定时T0中断允许
ET1 = 1; //定时T1中断允许
EA = 1; //总中断允许
//第四步:启动定时器
TR1 = 1; //启动定时器T1
TR0 = 1; //启动定时器T0
while(1)
{
//主程序
//1、扫描按键
keyval = ScanKeyRead();
keyval = KeyValOpe(keyval);
if(keyval<16)
{
if(keyval==0)//小时减1
{
if(hour>0)
{
hour --;
}
else
{
hour = 23;
}
}
if(keyval==1)//小时加1
{
if(hour<23)
{
hour ++;
}
else
{
hour = 0;
}
}
if(keyval==15)//分减1
{
if(minute>0)
{
minute --;
}
else
{
minute = 59;
}
}
if(keyval==2)//分加1
{
if(minute<59)
{
minute ++;
}
else
{
minute = 0;
}
}
}
//2、更新秒分时
if(second==60)//够60秒,分钟加一
{
second = 0;
minute ++;
if (minute==60)//够60分,小时加一
{
minute = 0;
hour ++;
if (hour == 24)//够24小时,天数加一
{
hour = 0;
}
}
}
//3、更新显示值
/*dis[0] = hour % 100 /10;//十位
dis[1] = hour % 10;//个位
dis[2] = 11;//显示横杠
dis[3] = minute % 100 /10;//十位
dis[4] = minute % 10;//个位
dis[5] = 11;//显示横杠
dis[6] = second % 100 /10;//十位
dis[7] = second % 10;//个位
*/
//更新数码管显示内容
//3、更新显示值
dis[0] = hour % 100 /10;//十位
dis[1] = hour % 10;//个位
//dis[2] = 11;//显示横杠
dis[3] = minute % 100 /10;//十位
dis[4] = minute % 10;//个位
//dis[5] = 11;//显示横杠
dis[6] = second % 100 /10;//十位
dis[7] = second % 10;//个位
}
}
void isr_t1() interrupt 3
{
TH1 = (65536-2000)>>8;//初值,高8位,定时2ms,0xf8
TL1 = (65536-2000); //初值,低8位,0x30
P2=t1_i; //位码
P0=seg[dis[t1_i]]; //段码
t1_i ++;
if(t1_i==8)//等于8时返回0
{
t1_i = 0;//循环0-7
P10 = ~P10;
}
}
void isr_t0() interrupt 1
{
t0_count++;
if(t0_count==4000)//4000次250us,即1s
{
t0_count = 0;
second ++;
}
}
六、实验结果及心得体会
(根据所给电路和程序,使定时/计数器工作在方式2,实现对LED的上述控制,并写出心得体会)
继续阅读