智能仪器课程设计模板Word格式.docx
《智能仪器课程设计模板Word格式.docx》由会员分享,可在线阅读,更多相关《智能仪器课程设计模板Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
三、时间安排
四、应交成果
应交成果包括:
⏹纸质课程设计报告和电子文档;
可以演示的硬件和软件成
1、仪表的功能要求、性能指标要求
1.1初级要求:
1)用单片机的定时器产生1s的定时时间,作为秒计数时间
2)当1s产生时,秒计数加1,到60s时归0并向分钟进1,分钟到60时归0并向时进1,时到24时归0并向日进1,日通过计算当时月份进行计数
3)开机时,显示00-00-00,并开始计时。
闹钟初始设置为00-00-00,日期为11-9-15-5,并开始计时。
1.2中级要求
在以上基础上,在单片机的p1.0--p1.3加入4个键
1)p1.0时间设置键,按一次对时进行校对,按第二次对分进行校对,第三次对秒进行校对,再按一下正常显示。
2)P1.1闹钟及日期设置键,按下后开始对闹钟进行设置,按一,二,三次分别是对时,分,秒进行设置四,五,六,七次分别是对年,月,日,星期进行设置,再次按下恢复正常显示时间。
3)P1.2加键,时间设置或者闹铃设置时加键,每按一次加一。
4)P1.3显示切换键,在时间正常显示时,按下一次后,切换为显示日期,再次按下则显示时间。
2硬件设计
2.1MCS-51单片机
MCS-51单片机的内部总体结构其基本特性如下:
8位CPU、片内振荡器、4k字节ROM、128字节RAM、21个特殊功能寄存器、32根I/O线、可寻址的64k字节外部数据、程序存贮空间、2个16位定时器、计数器中断结构:
具有二个优先级、五个中断源一个全双口串行口位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。
除128字节RAM、4k字节ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,余下的就是CPU的全部组成。
把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031,如果将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机。
单片机各部分是通过内部的总线有机地连接起来的。
1、运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。
2、控制器 控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。
这里程序计数器PC是由16位寄存器构成的计数器。
要单片机执行一个程序,就必须把该程序按顺序预先装入存储器ROM的某个区域。
单片机动作时应按顺序一条条取出指令来加以执行。
3、存储器是单片机的又一个重要组成部分,每个存储单元对应一个地址,如256个单元共有256个地址,用两位16进制数表示,即存储器的地址(00H~FFH)。
2.2LED驱动芯片ZLG7290B
ZLG7290B是广州周立功单片机发展有限公司自行设计的数码管显示驱动及键盘扫描管理芯片。
能够直接驱动8位共阴式数码管(或64只独立的LED),同时还可以扫描管理多达64只按键。
其中有8只按键还可以作为功能键使用,就像电脑键盘上的Ctrl、Shift、Alt键一样。
另外ZLG7290B内部还设置有连击计数器,能够使某键按下后不松手而连续有效。
采用I2C总线方式,与微控制器的接口仅需两根信号线。
该芯片为工业级芯片,抗干扰能力强,在工业测控中已有大量应用。
附:
ZLG7290B引脚功能表
引脚序号引脚名称功能描述
1SC/KR2数码管c段/键盘行信号2
2SD/KR3数码管d段/键盘行信号3
3DIG3/KC3数码管位选信号3/键盘列信号3
4DIG2/KC2数码管位选信号2/键盘列信号2
5DIG1/KC1数码管位选信号1/键盘列信号1
6DIG0/KC0数码管位选信号0/键盘列信号0
7SE/KR4数码管e段/键盘行信号4
8SF/KR5数码管f段/键盘行信号5
9SG/KR6数码管g段/键盘行信号6
10DP/KR7数码管dp段/键盘行信号7
11GND接地12DIG6/KC6数码管位选信号6/键盘列信号6
13DIG7/KC7数码管位选信号7/键盘列信号7
14INT键盘中断请求信号,低电平(下降沿)有效
15RST复位信号,低电平有效
16Vcc电源,+3.3~5.5V
17OSC1晶振输入信号
18OSC2晶振输出信号
19SCLI2C总线时钟信号
20SDAI2C总线数据信号
21DIG5/KC5数码管位选信号5/键盘列信号5
22DIG4/KC4数码管位选信号4/键盘列信号4
23SA/KR0数码管a段/键盘行信号0
24SB/KR1数码管b段/键盘行信号1
总设计框图
3软件设计
3.1软件设计功能需求
闹钟初始设置为00-00-00,日期为11-9-05,并开始计时。
3.2主要功能模块的软件框图。
T0中断服务
键盘扫描程序
时钟计时框图
4.实物图
5.总结
通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
通过这次课程设计,我掌握了常用元件的识别和测试;
熟悉了常用仪器、仪表;
了解了电路的连线方法;
以及如何提高电路的性能等等,掌握了焊接的方法和技术,通过查询资料,也了解了数字时钟的构造及原理。
我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在实验课上,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。
果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。
此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。
6.附录(可写可不写)
6.1参考文献
《单片机电路设计分析与制作》机械工业出版社周景润
《单片机系统设计与应用实例》机械工业出版社韩志军
6.2器件清单
ZLG7290
STC89C51单片机
MAX232
4位数码管2个
按钮4个
面板
蜂鸣器
导线若干
电阻,电容若干
6.3源程序
#include<
reg52.h>
#include"
I2C.h"
ZLG7290.h"
#definetl0xba;
#defineth0x3c;
sbittime=P1^0;
//时间设置
sbittimer=P1^1;
//闹钟设置
sbitadd=P1^2;
//加
sbitdec=P1^3;
//减
sbitspeaker=P3^5;
//闹钟输出
bitdisp_sd;
//数码管闪动显示标志位
bitdisp_ms;
//数码管显示时间/闹钟标志位
bitdisp_sdt;
//数码管闪动间隔反转标志位
bitzhengdian=0;
//整点报时标志位
bitb=0,a=0;
unsignedchartime_cc,timer_cc;
//调时计数器
unsignedcharcount0,count1,second,minit,hour;
//时间时分秒
unsignedcharsecond1,minit1,hour1;
//闹钟时分秒
unsignedcharyear,month,day,week,n;
unsignedcharhour_zd;
//整点小时记录
voiddelay(void)
{
unsignedinti;
for(i=0;
i<
200;
i++);
}
/*
函数:
SystemInit()
功能:
系统初始化
*/
voidSystemInit()
I2C_Init();
TMOD=0x01;
Delay();
//等待ZLG7290复位完毕
voiddisplay(void)
unsigneddat;
if(a==0)
{
if(disp_ms==0)
if(disp_sd==0)
{
dat=hour/10;
ZLG7290_Download(7,0,0,dat);
dat=hour%10;
ZLG7290_Download(6,0,0,dat);
ZLG7290_Download(5,0,0,31);
dat=minit/10;
ZLG7290_Download(4,0,0,dat);
dat=minit%10;
ZLG7290_Download(3,0,0,dat);
ZLG7290_Download(2,0,0,31);
dat=second/10;
ZLG7290_Download(1,0,0,dat);
dat=second%10;
ZLG7290_Download(0,0,0,dat);
}
else
if(time_cc==0x01)
{
dat=hour/10;
ZLG7290_Download(7,0,1,dat);
dat=hour%10;
ZLG7290_Download(6,0,1,dat);
}
else
dat=hour/10;
ZLG7290_Download(7,0,0,dat);
ZLG7290_Download(6,0,0,dat);
}
if(time_cc==0x02)
dat=minit/10;
ZLG7290_Download(4,0,1,dat);
dat=minit%10;
ZLG7290_Download(3,0,1,dat);
ZLG7290_Download(2,0,0,31);
dat=minit/10;
ZLG7290_Download(4,0,0,dat);
ZLG7290_Download(3,0,0,dat);
if(time_cc==0x03)
dat=second/10;
ZLG7290_Download(1,0,1,dat);
dat=second%10;
ZLG7290_Download(0,0,1,dat);
ZLG7290_Download(1,0,0,dat);
dat=second%10;
ZLG7290_Download(0,0,0,dat);
}
else
if(b==0)
if(disp_sd==0)
dat=hour1/10;
dat=hour1%10;
dat=minit1/10;
dat=minit1%10;
ZLG7290_Download(2,0,0,31);
dat=second1/10;
dat=second1%10;
if(timer_cc==0x01)
dat=hour1/10;
ZLG7290_Download(7,0,1,dat);
dat=hour1%10;
ZLG7290_Download(5,0,0,31);
dat=hour1/10;
if(timer_cc==0x02)
dat=minit1/10;
dat=minit1%10;
ZLG7290_Download(3,0,1,dat);
if(timer_cc==0x03)
ZLG7290_Download(1,0,1,dat);
dat=second1%10;
ZLG7290_Download(0,0,1,dat);
dat=year/10;
dat=year%10;
dat=month/10;
ZLG7290_Download(5,0,0,dat);
dat=month%10;
dat=day/10;
dat=day%10;
ZLG7290_Download(2,0,0,dat);
ZLG7290_Download(1,0,0,31);
dat=week;
if(timer_cc==0x04)
dat=year/10;
dat=year/10;
}
if(timer_cc==0x05)
dat=month/10;
ZLG7290_Download(5,0,1,dat);
if(timer_cc==0x06)
dat=day/10;
ZLG7290_Download(2,0,1,dat);
dat=day/10;
if(timer_cc==0x07)
ZLG7290_Download(1,0,0,31);
dat=week;
ZLG7290_Download(0,0,1,dat);
ZLG7290_Download(0,0,0,dat);
ZLG7290_Down