单片机实训报告模板文档格式.docx

上传人:b****3 文档编号:6502805 上传时间:2023-05-06 格式:DOCX 页数:13 大小:199.11KB
下载 相关 举报
单片机实训报告模板文档格式.docx_第1页
第1页 / 共13页
单片机实训报告模板文档格式.docx_第2页
第2页 / 共13页
单片机实训报告模板文档格式.docx_第3页
第3页 / 共13页
单片机实训报告模板文档格式.docx_第4页
第4页 / 共13页
单片机实训报告模板文档格式.docx_第5页
第5页 / 共13页
单片机实训报告模板文档格式.docx_第6页
第6页 / 共13页
单片机实训报告模板文档格式.docx_第7页
第7页 / 共13页
单片机实训报告模板文档格式.docx_第8页
第8页 / 共13页
单片机实训报告模板文档格式.docx_第9页
第9页 / 共13页
单片机实训报告模板文档格式.docx_第10页
第10页 / 共13页
单片机实训报告模板文档格式.docx_第11页
第11页 / 共13页
单片机实训报告模板文档格式.docx_第12页
第12页 / 共13页
单片机实训报告模板文档格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机实训报告模板文档格式.docx

《单片机实训报告模板文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实训报告模板文档格式.docx(13页珍藏版)》请在冰点文库上搜索。

单片机实训报告模板文档格式.docx

XXXXXX,由左向右分别为:

时、分、秒。

同时还可以通过键盘(开关)对电子时钟的时间进行加减,达到可调。

二、实验内目的

1、掌握定时器的使用和编程方法;

2、掌握中断处理程序的编程方法;

3、掌握数码显示电路的驱动程序编程方法;

4、掌握键盘电路的程序编程方法;

5、掌握模块子程序的编程方法;

6、掌握硬件的线路的设计及连线方法。

三、实验说明

设计定时器每50ms中断一次,在中断服务程序中,对中断次数进行计数,50ms计数20次,就是1秒,然后再对秒计数得到分的值,对分计数得到小时的值,分别将各值送到相应的段地址端口和位地址端口,通过数码管显示结果,达到电子时钟的效果。

在电子时钟的基础上,程序增加了键盘程序,对电子时钟进行可调(对秒/分/时进行加/减,此功能的增加使电子时钟功能更强、更实用。

四、硬件电路设计原理图

图1总电路图

图2键盘控制电路

五、软件设计

(一)程序设计框图

(二)实验程序设计

步骤1、用定时器编写延迟子程序;

2、编写学号显示子程序;

3、编写从0~9秒用数码管显示子程序;

4、据时分秒的要求,编写定时器0中断服务子程序;

5、结合以上子程序,与主程序相组合成电子时钟程序;

6、编写键盘控制加子程序;

7、组合以上子程序,与主程序相组合成可调电子时钟程序;

#include<

reg51.h>

//程序定义

typedefunsignedcharuchar;

unsignedintnumber;

voiddelay(unsignedchar);

voiddisplay();

voidkey();

voidinit();

ucharledsbuf[8];

ucharledsbuf1[8];

sbitp10=P1^0;

sbitp11=P1^1;

sbitp12=P1^2;

sbitp13=P1^3;

sbitp14=P1^4;

sbitp15=P1^5;

uchara[4];

ucharb[4];

voidchbcd();

//计时器

//开始

voidtime()interrupt1

{

if(--number==0)//number=01秒钟到

{

number=4000;

if((++a[3])==60)

a[3]=0;

if((++a[2])==60)

a[2]=0;

if((++a[1])==24)

a[1]=0;

if((++b[3])==32)

b[3]=01;

if((++b[2])==12)

b[2]=01;

if(b[1]++==99)

b[1]=0;

b[0]++;

}

}

//控制显示数字

codeunsignedcharledtab[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};

voidmain()

uchari;

a[0]=00,a[1]=23,a[2]=59,a[3]=50;

b[0]=20,b[1]=11,b[2]=03,b[3]=30;

number=4000;

init();

chbcd();

while

(1)

display();

key();

//控制显示位

voidchbcd()

for(i=0;

i<

4;

i++)

ledsbuf[i*2]=ledtab[a[i]/10];

ledsbuf[i/2]=ledtab[a[0]=16];

ledsbuf[i*2+1]=ledtab[a[i]%10];

ledsbuf1[i*2]=ledtab[b[i]/10];

ledsbuf1[i*2+1]=ledtab[b[i]%10];

voiddelay(charn)

n;

i++);

}

voidinit()

TMOD=0x02;

TH0=0x08;

TL0=0x08;

EA=1;

ET0=1;

TR0=1;

voiddisplay()

8;

P2=~ledsbuf[i];

P0=~ledsbuf1[i];

P3=(0x01<

<

i);

delay(10);

P3=0x00;

//调整

voidkey()

//分

if(p10==0)

while(p10==0)

a[2]++;

for(;

a[2]==60;

a[2]=0)

b[3]=0;

//时

if(p11==0)

while(p11==0)

a[1]++;

a[1]==24;

a[1]=0)

//天

if(p12==0)

while(p12==0)

b[3]++;

b[3]==32;

b[3]=0)

if((++b[2])==13)

b[2]=0;

++b[1];

//月

if(p13==0)

while(p13==0)

if(++b[2]==13)

//年

if(p14==0)

while(p14==0)

b[1]++;

b[1]==99;

b[1]=0)

b[1]=01;

b[0]++;

//复位

if(p15==0)

while(p15==0)

a[0]=a[1]=a[2]=a[3]=0;

b[0]=20;

b[1]=11;

b[2]=03;

b[3]=22;

四实验结果分析

调试过程的问题及解决方法

五、实验体会

1、编写程序时,知识结构混乱,无从下手。

应该加深对书本基本知识的了解,即可解决。

2、脑海没有形成编写程序的思想,像显示子程序、延时程序等,都只是参考课本上的程序,没有个人创作。

3、指导老师够认真、负责,指导到位。

6、建议

学校的硬件设备跟不上,实训过程中由于硬件设备不行而不得不停止实训,而且经常因为病毒破坏程序,导致多次失败告终,大量的浪费了我们的时间。

七参考文献:

单片机C语言指导书

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2