单片机应用实训报告Word文档格式.docx
- 文档编号:15330335
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:16
- 大小:771.62KB
单片机应用实训报告Word文档格式.docx
《单片机应用实训报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机应用实训报告Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
掌握常用接口芯片的正确使用方法;
强化单片机应用电路的设计与分析能力;
提高我们在单片机应用方面的实践技能;
培育学生综合运用理论知识解决问题的能力,实现理论结合实际,学以至用的原则。
单片机专周实训是在学习完单片机应用技术课程之后开设的两周实训课程,在课程学习中,通过理论与实验相结合的学习,同学们已经掌握了单片机基本的使用方法,实训加强我们对单片机开发流程的认识,加深对单片机I/O口扩展与外围器件的使用,加强我们的实际动手能力与调试能力,从而实现从理论到实践的升华
(1)掌握汇编语言程序的基本结构。
(3)了解汇编语言程序设计的基本方法和思路。
(4)学会利用C语言编写单片机应用程序,并结合单片机原理图,具体实现以下三个功能:
2实训地点
xxxxxxxxx东院实验楼411
3实训时间
时间为2014/1/13—2014/1/17
4进度安排
2014/1/13按键程序,在单片机开发板上设置K1、K2、K3、K4以及RST键相应功能
2014/1/14设计数码管电子钟由59分钟计时到00
2014/1/15显示屏设计,设计显示屏滚动字,实现显示屏显示
2014/1/16-2014/1/17实训结束,写实训报告并上交
5实训内容
本次实训内容包括三部分,全部都是应用单片机来进行实现的,所以我们应该对单片机有所了解。
主要是单片机的最小系统的连接和使用,Keil编程软件及STC烧写软件的使用。
其中第一部分是按键显示相应功能部分,注意每一个按键所对应的程序及显示方法;
第二部分是电子钟的设计,要注意其中的程序设计时应该让其能够自动计时,并在满60的时候进位,在计满到59分钟时,可以自动的跳转到00并重新开始计时。
第三部分设计屏幕字滚动效果,要求显示自己设计的文字并显示出来。
实训单片机的电路连接图:
6实训过程
6.1按键程序,在单片机开发板上设置K1、K2、K3、K4以及RST键相应功能
6.1.1打开软件,建立工程项目,新建文件,写入代码并保存。
软件如下图:
写入程序代码如下:
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitK1=P3^2;
//定义K1
sbitK2=P3^3;
//定义K2
sbitK3=P3^4;
//定义K3
sbitK4=P3^5;
//定义K4
sbitP20=P2^0;
ucharcodeDispTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//共阳数码管显示0~F
voidDelay(uintm)//延时函数
{uchari;
for(;
m>
0;
m--)
{for(i=0;
i<
125;
i++)
}
……
main()//主函数
{ucharkeyValue;
ucharj;
P3=0xff;
P2=0xf0;
P0=0xc0;
;
)
{keyValue=key();
switch(keyValue)
{case0xfb:
{j++;
if(j>
15)j=0;
P0=DispTab[j];
break;
case0xf7:
P0=0xa4;
break;
case0xef:
P0=0xb0;
case0xdf:
P0=0x99;
}
}
6.1.2编译程序,生成文件并且烧写程序进入单片机,过程如下:
将单片机按照下图链接:
烧写软件如下图设置:
6.1.3程序烧写完毕后运行单片机:
令RST键实现复位功能;
令K1-K4显示1111-4444
如下图显示:
6.2设计数码管电子钟由59分钟计时到00
6.2.1打开软件,建立工程项目,新建文件,写入代码并保存。
图像同上
程序编程如下:
#include<
reg51.h>
intrins.h>
unsignedchardatadis_digit;
unsignedcharkey_s,key_v;
unsignedcharcodedis_code[11]={0xc0,0xf9,0xa4,0xb0,//0,1,2,3
0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//4,5,6,7,8,9,off
unsignedchardatadis_buf[8];
unsignedchardatadis_index;
unsignedcharhour,min,sec;
unsignedcharsec100;
unsignedcharx;
sbitK1=P3^2;
sbitK2=P3^3;
bitscan_key();
voidproc_key();
voidinc_sec();
voidinc_min1();
voidinc_min2();
voidinc_hour();
voiddisplay();
voiddelayms(unsignedcharms);
voidmain(void)
{x=0xfe;
P0=0xff;
P2=0xff;
TMOD=0x11;
//定时器0,1工作模式1,16位定时方式
TH1=0xdc;
TL1=0;
TH0=0xFC;
TL0=0x17;
hour=12;
min=00;
sec=00;
sec100=0;
dis_buf[3]=dis_code[min/10];
//分十位
dis_buf[2]=dis_code[min%10]&
0x7f;
//分个位
dis_buf[1]=dis_code[sec/10];
//秒十位
dis_buf[0]=dis_code[sec%10];
//秒个位
dis_digit=0xfe;
dis_index=0;
TCON=0x01;
IE=0x8a;
//使能timer0,1中断
TR0=1;
TR1=1;
key_v=0x03;
while
(1)
{
if(scan_key())
delayms(10);
key_v=key_s;
proc_key();
bitscan_key()
{
key_s=0x00;
key_s|=K2;
key_s<
<
=1;
key_s|=K1;
return(key_s^key_v);
voidproc_key()
EA=0;
if((key_v&
0x01)==0)//K1
inc_min2();
//JJ=1;
elseif((key_v&
0x02)==0)//K2
min++;
//JJ=0;
if(min>
59)
min=0;
dis_buf[3]=dis_code[min/10];
//分十位*****3
//分个位*****4
EA=1;
voidtimer0()interrupt1
//定时器0中断服务程序,用于数码管的动态扫描
//dis_index---显示索引,用于标识当前显示的数码管和缓冲区的偏移量
//dis_digit---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,
//选通P2.0口数码管
//dis_buf---显于缓冲区基地址
//先关闭所有数码管
P0=dis_buf[dis_index];
//显示代码传送到P0口
P2=dis_digit;
//
P2=P2|0x80;
dis_digit=_crol_(dis_digit,1);
//位选通值左移,下次中断时选通下一位数码管
dis_index++;
dis_index&
=0x07;
//8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
voidtimer1()interrupt3
sec100++;
if(sec100>
=100)
inc_sec();
voidinc_sec()
sec++;
if(sec>
sec=0;
inc_min1();
//秒十位*****dis_buf[1]
//秒个位*****dis_buf[0]
voidinc_min1()
inc_hour();
//分十位********3
voidinc_min2()
min--;
dis_buf[3]=dis_code[m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 应用 报告