实验四 单片机秒表设计.docx
- 文档编号:7592645
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:10
- 大小:1.12MB
实验四 单片机秒表设计.docx
《实验四 单片机秒表设计.docx》由会员分享,可在线阅读,更多相关《实验四 单片机秒表设计.docx(10页珍藏版)》请在冰豆网上搜索。
实验四单片机秒表设计
微控制器实验报告四
班级:
15自动化学号:
姓名:
指导教师:
李素敏
实验四秒表设计
一.实验目的
(1)掌握利用单片机定时器实现定时。
(2)熟悉单片机与数码管的接口技术及数码管动态显示的控制过程。
(3)熟悉单片机与键盘的接口技术及按键识别过程。
(4)学会如何编制含数码管显示,定时器中断及按键控制等多种功能的综合程序,体会大型程序的编制和调试技巧。
二.实验内容
1、用6位数码管显示秒表时间,最左边2位显示分,中间2位显示秒,最右边2位显示秒的小数位(0.00~0.99秒),秒与小数位之间要显示小数点。
2、两个按键:
(1)计时/停止按键:
首次按下从0开始计时,再次按下暂停计时,之后每次按下按键实现‘继续计时、暂停计时,继续计时、暂停计时……’。
(继续计时即从上次暂停时的时间开始继续计时)
(2)复位按键:
按下后全部清0,等待下次按下‘计时/停止按键’时重新开始计时。
三.实验仪器
PC机、单片机
四.实验步骤
1.编写程序
2.生成hex文件
3.将程序烧录至单片机
4.调试程序,知道得出正确的实验结果
5.实验结果与分析
实验代码如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitdula=P2^6;
sbitwela=P2^7;
sbitkey=P3^4;
sbitreset=P3^5;
Unsignedchardisplay1,display2,display3,display4,display5,display6,min,sec,decimal;
unsignedcharflag=0;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0~9不带小数
unsignedcharcodetable2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//数码管显示0~9带小数
//延时函数
voiddelay(unsignedinti)
{
unsignedintj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
//判断按键是否按下
voidKEY()
{
if(key==0)
{
delay(10);
if(key==0)//按键消抖
{
flag++;
if(flag==1)//按下一次,计数开始计数
{
TR0=1;//定时器TO开始工作
if(flag==2)//按下两次,计数暂停
{
TR0=0;//定时器T0停止
flag=0;//计数标志清零
}
}
}
if(reset==0)//复位键按下
{
delay(10);
if(reset==0)
{
TR0=0;//T0停止计时
flag=0;//所有数据清零
min=0;
sec=0;
decimal=0;
display1=0;
display2=0;
display3=0;
display4=0;
display5=0;
display6=0;
}
}
}
}
//显示函数
voidshow()
{
display1=min/10;//分十位
display2=min%10;//分个位
display3=sec/10;//秒十位
display4=sec%10;//秒个位
display5=decimal/10;//小数十位
display6=decimal%10;//小数个位
dula=0;
P0=table[display1];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay
(2);
P0=table[display2];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay
(2);
P0=table2[display3];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay
(2);
P0=table[display4];
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay
(2);
P0=table[display5];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay
(2);
P0=table[display6];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay
(2);
P0=0x80;
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay
(2);
}
voidmain()
{
TMOD=0x01;
TH0=(65536-10000)/256;//向定时器写入初值的高8位
TL0=(65536-10000)%256;//向TL0写入初值的低八位
EA=1;//总中断允许
ET0=1;//允许定时器T0工作
TR0=0;
dula=0;
wela=0;
while
(1)
{
KEY();
show();
}}
voidT0_int(void)interrupt1
{
TH0=(65536-10000)/256;//向定时器写入初值的高8位
TL0=(65536-10000)%256;//向TL0写入初值的低八位
decimal++;
if(decimal==99)//小数部分进位
{
decimal=0;
sec++;
if(sec==60)//秒部分进位
{
sec=0;
min++;
if(min==60)
{
min=0;
sec=0;
decimal=0;
}
}
}
}
实验截图如下:
五、实验心得
这次的实验相当于一个大设计,几乎综合了这学期所学的所有知识,中断、计数器、按键、数码管。
程序编写时,应该弄清楚原理,如中断是如何工作的,弄清楚这些后,程序的编写就很容易了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验四 单片机秒表设计 实验 单片机 秒表 设计