单片机实训报告模板.docx
- 文档编号:10557194
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:13
- 大小:199.11KB
单片机实训报告模板.docx
《单片机实训报告模板.docx》由会员分享,可在线阅读,更多相关《单片机实训报告模板.docx(13页珍藏版)》请在冰豆网上搜索。
单片机实训报告模板
《单片机实训》设计报告
题目:
可调电子时钟的设计
学院:
交通信息学院
专业:
电气自动化技术
班级:
电气091
姓名:
学号:
(长号)
指导老师:
一、实验内容
利用CPU的定时器和实验仪上提供的数码显示电路,设计一个可调电子时钟。
显示格式如下:
XXXXXX,由左向右分别为:
时、分、秒。
同时还可以通过键盘(开关)对电子时钟的时间进行加减,达到可调。
二、实验内目的
1、掌握定时器的使用和编程方法;
2、掌握中断处理程序的编程方法;
3、掌握数码显示电路的驱动程序编程方法;
4、掌握键盘电路的程序编程方法;
5、掌握模块子程序的编程方法;
6、掌握硬件的线路的设计及连线方法。
三、实验说明
设计定时器每50ms中断一次,在中断服务程序中,对中断次数进行计数,50ms计数20次,就是1秒,然后再对秒计数得到分的值,对分计数得到小时的值,分别将各值送到相应的段地址端口和位地址端口,通过数码管显示结果,达到电子时钟的效果。
在电子时钟的基础上,程序增加了键盘程序,对电子时钟进行可调(对秒/分/时进行加/减,此功能的增加使电子时钟功能更强、更实用。
四、硬件电路设计原理图
图1总电路图
图2键盘控制电路
五、软件设计
(一)程序设计框图
(二)实验程序设计
步骤1、用定时器编写延迟子程序;
2、编写学号显示子程序;
3、编写从0~9秒用数码管显示子程序;
4、据时分秒的要求,编写定时器0中断服务子程序;
5、结合以上子程序,与主程序相组合成电子时钟程序;
6、编写键盘控制加子程序;
7、组合以上子程序,与主程序相组合成可调电子时钟程序;
#include
//程序定义
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();
//计时器
voidinit();//开始
unsignedintnumber;
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)
{
chbcd();
display();
key();
}
}
//控制显示位
voidchbcd()
{
uchari;
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)
{
uchari;
for(i=0;i } //计时器 voidinit() { TMOD=0x02; TH0=0x08; TL0=0x08; EA=1; ET0=1; TR0=1; } voiddisplay() { uchari; for(i=0;i<8;i++) { P2=~ledsbuf[i]; P0=~ledsbuf1[i]; P3=(0x01< delay(10); P3=0x00; } } //调整 voidkey() { //分 if(p10==0) { while(p10==0) { display(); } a[2]++; for(;a[2]==60;a[2]=0) { if((++a[1])==24) a[1]=0; if((++b[3])==32) { b[3]=0; } } } //时 if(p11==0) { while(p11==0) { display(); } a[1]++; for(;a[1]==24;a[1]=0) { if((++b[3])==32) b[3]=0; } } //天 if(p12==0) { while(p12==0) { display(); } b[3]++; for(;b[3]==32;b[3]=0) { if((++b[2])==13) b[2]=0; ++b[1]; } } //月 if(p13==0) { while(p13==0) { display(); } if(++b[2]==13) { b[2]=01; if(b[1]++==99) { b[1]=0;b[0]++; } } } //年 if(p14==0) { while(p14==0) { display(); } b[1]++; for(;b[1]==99;b[1]=0) { b[1]=01; b[0]++; } } //复位 if(p15==0) { while(p15==0) { display(); } 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语言指导书
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 报告 模板
![提示](https://static.bdocx.com/images/bang_tan.gif)