电子设计课程设计电子秒表.docx
- 文档编号:29302816
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:11
- 大小:194.64KB
电子设计课程设计电子秒表.docx
《电子设计课程设计电子秒表.docx》由会员分享,可在线阅读,更多相关《电子设计课程设计电子秒表.docx(11页珍藏版)》请在冰豆网上搜索。
电子设计课程设计电子秒表
课程设计报告
(学生版)
2010~2011学年第2学期
教学单位华南师范大学物电学院
课程名称电子设计竞赛
课程设计题目电子秒表
指导教师焦新涛
学生姓名陈辉明
专业名称电子信息工程
年级2008级
电子秒表
1.设计目的
利用单片机定时器/计数器中断设计秒表,从而实现秒、0.1秒的计时。
综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。
通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
通过本次系统设计,增强自己的动手能力。
认识单片机在日常生活中的应用的广泛性,实用性。
2.设计要求
本系统利用单片机的定时器/计数器定时和记数的原理,通过采用proteus仿真软件来模拟实现。
模拟利用AT89C52单片机、LED数码管以及控件来控制秒表的计数以及计数的开启/暂停/继续与复位!
其中有三个数码管用来显示数据,一个数码管显示分(两位),一个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。
秒的数码管计数从00~59,满59后进一后显示分的数码管加一,并且秒显示清零重新从零计数。
分的数码管计数从00开始。
计分数码管采用两位的数码管,当计数超过范围是所有数码管全部清零重新计数。
3.设计原理
3.1主要元件:
1个AT89S52芯片、2个独立键盘、3个LED数码管。
3.2工作原理:
(1)电子秒表的系统设计是利用单片机的定时器功能,在周期的时间内产生中断来执行既定的程序,单片机AT89S52共有3个定时器,本系统采用了定时器1的工作模式1:
此工作模式中,计数寄存器由16位组成,此时TH1、TL1都作为8位计数器使用,工作原理为:
TL1计数溢出向TH1进位,TH1计数溢出时置位TF1=1,并向CPU申请中断,最大的计数值为216=65536
(2)系统采用的晶振频率为fosc=12MHz,机器周期为Tcy=1us,定时范围为1~65536us。
定时器的定时时间T为:
T=NTcy=(216-X)Tcy
计数器的计数值为:
N=216-X=65536-X,X为预置初值,计数范围为1~65536.
(3)系统采用了两个分频信号,以完成0.1s及1s的定时,采用预置初值为:
TH1=0xd8,TL1=0xf0;
定时时间为0.01us;因此累积10次计时达到0.1us,累积100次计时达到1s,刚好达到系统要求。
(4)系统采用键盘扫描的方式,来判断键盘是否被按下。
系统共采用两个按键,start启动与暂停键、ret复位清零键,当键被按下,便执行相应的程序。
(5)系统的最高计时为99.9s,当达到99.9s的时候,系统便会自动从零开始计时。
3.3程序流程:
3.4电路原理图:
七段数码管引脚图:
Atmel89C52单片机外部引脚图:
显示模块原理图:
独立键盘原理图:
4.设计程序
#include
sbitseg1=P2^0;
sbitseg2=P2^1;
sbitseg3=P2^2;
sbitkey1=P3^0;//定义按键位置
sbitkey2=P3^1;
sbitkey3=P3^2;
sbitkey4=P3^3;
codeunsignedchartab[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管0-9
staticunsignedcharmsecond,second,minute,count;
staticunsignedcharDis_minute1=0x3f;//定义千位
staticunsignedcharDis_minute0=0x3f;//定义百位
staticunsignedcharDis_second1=0x3f;//定义十位
staticunsignedcharDis_second0=0x3f|0x80;//定义个位
staticunsignedcharDis_ms=0x3f;//定义十分位
/******************************************************************/
/*延时函数*/
/******************************************************************/
voiddelay(unsignedintcnt)
{
while(--cnt);
}
/******************************************************************/
/*主函数*/
/******************************************************************/
main()
{
TMOD|=0x01;//定时器设置10msin12Mcrystal,工作在模式1,16位定时
TH0=0xd8;
TL0=0xf0;
while
(1)
{
P0=Dis_minute1;//显示分钟的十位
P2=0;
delay(300);//短暂延时
P0=Dis_minute0;//显示分钟的个位
P2=1;
delay(300);
P0=0x40;//显示秒钟的十位
P2=2;
delay(300);//短暂延时
P0=Dis_second1;//显示秒钟的十位
P2=3;
delay(300);
P0=Dis_second0;//显示秒钟个位
P2=4;
delay(300);
P0=Dis_ms;//显示0.1s位
P2=5;
delay(300);
if(!
key1){
delay(900);
if(!
key1)
{
IE=0x82;//打开中断
TR0=1;//打开定时开关
}
}
if(!
key2)
{
delay(900);
if(!
key2)
{
TR0=0;
}
}
if(!
key3)
{
delay(900);
if(!
key3)
{
TR0=0;
count=0;
msecond=0;
second=0;
minute=0;
Dis_minute1=0x3f;
Dis_minute0=0x3f;
Dis_second1=0x3f;
Dis_second0=0x3f|0x80;
Dis_ms=0x3f;
}
}
}
}
/******************************************************************/
/*定时器中断函数*/
/******************************************************************/
voidtim(void)interrupt1using1
{
TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
if(count==10)//100x10ms=1S,大致延时时间
{
count=0;
msecond++;
if(msecond==10){
msecond=0;
second++;
}
Dis_ms=tab[msecond%10];
}
Dis_second1=tab[second/10];//十位显示值处理
Dis_second0=tab[second%10]|0x80;//个位显示处理
if(second==60){
second=0;
minute++;}
Dis_minute1=tab[minute/10];
Dis_minute0=tab[minute%10];
}
5.小结
通过这次的秒表设计,我对一些专业知识和电子设计有了更深的了解,同时也尝试着去应用自己的所掌握的知识。
本次设计主要是对已学习的模拟电子技术、数字电子技术和单片机的综合应用,同时加上电路等知识,设计完成了利用软件模拟的秒表。
在设计的过程中我也不可避免的遇到了很多的问题。
尤其是在调试过程中,会因为某些原因出不来结果,经过这次的系统设计,我也发现了不少自己不会的知识,通过查询各方面资料,我也进步了很多,也学会了很多上课时没掌握的东西。
总之,通过这次电子课程设计,我对自己的知识有了更好的掌握和应用。
参考书目:
[1]51单片机学习网
[2]林土胜.《单片机技术及工程实践》.机械工业出版社.2010.
课程设计题目
电子秒表
学生姓名
陈辉明
论文指导教师评语:
建议成绩及等级:
指导教师签名:
200年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子设计 课程设计 电子 秒表