毕业实习报告范文.docx
- 文档编号:10313177
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:67
- 大小:115.92KB
毕业实习报告范文.docx
《毕业实习报告范文.docx》由会员分享,可在线阅读,更多相关《毕业实习报告范文.docx(67页珍藏版)》请在冰点文库上搜索。
毕业实习报告范文
天津职业技术师范大学电子工程学院
《电子技术》
课程设计报告
同组学生姓名(学号):
辛向阳(27)李春龙(23)牟玉龙(14)井晓楠(01)
班级:
应教0711
任务分工:
李春龙牟玉龙(硬件)辛向阳井晓楠(软件)
设计时间:
2010年12月13日——2010年12月31日
指导教师:
孙秀强刘新月
第一周题目:
、
第二周题目:
错误!
未找到目录项。
课题一:
基于单片机系统的数字时钟
一:
课程设计的目的与要求
目的:
通过实训,了解单片机的原理与基本运用,掌握基础程序的编程方法。
基本要求:
1:
设计一个显示时,分,秒的数字时钟具有校时功能。
2:
校时时钟可实现手动输入,并能实现秒表功能。
3可实现省电功能,显示年,月,日,学号,可进行12小时和24小时转换。
二:
方案论证与选择
首先,根据题目要求,电路总共可以分为以下几个模块的实现,有以下几种设计方案,均进行了可行性分析最终选择了最实际的可行性方案。
软件部分:
1.时钟控制方案
一:
采用专用时钟芯片
使用微控制器控制专用时钟芯片实现记时控制,这种方案有着即使精度高,控制简单的优点,而且容易实现设计要求的功能。
二:
采用单片机内部定时器
51单片机内部有定时器。
可以采用程序计数器与定时器的结合使用的方式,在系统晶振的驱动下来实现功能。
比较:
方案2具有更好的灵活性,较少的电路器件和较高的性价比而且通过精准的软件补偿使精度满足要求,所以我们选择该方案。
2.主控制器模块
主控制器的选择对电路的功能实现有着重要作用
一:
单片机和数字芯片结合使用,这样的好处能减少单片机的工作量,使电路不单纯只依赖单片机工作,如果使用数字芯片,单片机的功能也不能直观的显现出来。
而且相对来说成本要高。
二:
单独使用单片机控制,他的好处是外围电路比较简单直观,所有的控制都只需软件程序实现,对于单片机来说,始终程序远不够他自身的承载量,所以只要程序编的合理,就能比较方便的实现。
基于以上理论,选择方案二。
3.显示电路模块
一:
采用点阵显示,可作成表盘显示,但是点阵显示成本较高,同时所需资源较多,控制比较繁琐。
二:
采用数码管显示,这种方法比较直观,切合实际生活,而且对于电路的设计来说比较方便,节省了电路板的空间,使用三极管驱动后所需电压也较低,稳定性相对叫高,而且编程简单。
权衡之下方案二作为显示电路。
4.调试按键模块
一:
使用键盘控制,他的效果比较直观,能直接根据按键,直接得出所需数值,而且对程序的要求也不是很大,但按键较多,占用空间较大,而且实用性不强。
二:
采用独立式按键电路,每个按键单独采用一个I/O口,每个I/O口的工作状态互不影响。
综合以上特点决定采用方案2。
三.系统总体结构
1.电路框图
2电路图
3.电路仿真图
4.系统总体结构
时钟程序的整体设计方案是用单片机驱动电路控制时钟显示,为显示提供电源,用软件程序控制时种运行和各种调节功能。
1、电源电路
取用单片三端稳压集成7805,电路简单、稳定可靠,且成本低,稳压效果好。
2、显示电路
采用八只共阳数码管作为时钟电路的显示。
数码管的a~h分别并联在一起,由单片机的P0口控制,每只数码管的共阳极分别接一只PNP三极管驱动,三极管具有电流放大作用。
3、单片机基本电路
单片机基本电路是使单片机正常工作所需要的最基本的电路,包括有复位电路,时钟电路,电源电路。
4、按键电路
5单片机程序
#include"at89x51.h"
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6f,0xbf,0xff};
ucharn,time;
ucharhh,mm,ss;
ucharday,mon,year;
ucharhhs,hhg,mms,mmg,sss,ssg;
uchardays,dayg,mons,mong,years,yearg,week;
ucharbb,mb;
ucharbbs,bbg,mbb,mbs,mbg;
ucharset1=1,set2=1;
sbitk1=P3^4;
sbitk2=P3^5;
sbitk3=P3^6;
sbitk4=P3^7;
uchartable1[]={31,31,29,31,30,31,30,31,31,30,31,30,31};//闰年
uchartable2[]={31,31,28,31,30,31,30,31,31,30,31,30,31};//非闰年
voidjishi();
voidset_time();
voidset_zhuanhuan();
voidset_mdw();
voidkey_change();
voidkey_set();
voidmiaobiao();
voiddelay(intm)//延时程序,延时m*0.5ms
{
uinti;
uintj;
for(i=0;i { for(j=0;j<500;j++){} } } voidtimer0()interrupt1 { TH0=0x3c; TL0=0xb1; n++; jishi(); } main() { TMOD=0x11; TL1=(65536-1000)%256; TH1=(65536-1000)/256;//定时器1初始化 TL0=0xb1; TH0=0x3c;//定时器1赋初值 ET0=1;//开定时器1 TR0=1;//定时器0工作 PT0=1;//设置定时器0为优先级 EA=1;//开总中断 hh=12;mm=00;ss=00; year=2011;mon=12;day=1;week=1; while (1) { hhs=hh/10%10;//时分秒 hhg=hh%10; mms=mm/10%10; mmg=mm%10; sss=ss/10%10; ssg=ss%10; days=day/10%10;//年月日 dayg=day%10; mons=mon/10%10; mong=mon%10; years=(year%1000)/10%10; yearg=(year%1000)%10; bbs=bb/10%10; bbg=bb%10; mbb=mb/100%100; mbs=mb/10%10; mbg=mb%10; key_change();//k1按键扫描 key_set();//k2按键扫描 set_time();//设置时间 set_mdw();//设置年月日 set_zhuanhuan();//设置转换 miaobiao(); if(set1==1)//正常走时显示 { P0=tab[hhs];P2_7=0;delay (1);P2_7=1;//时十位 P0=tab[hhg];P2_5=0;delay (1);P2_5=1;//时个位 P0=0x40;P2_3=0;delay (1);P2_3=1;//"-" P0=tab[mms];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[mmg];P2_6=0;delay (1);P2_6=1;//分个位 P0=0x40;P2_4=0;delay (1);P2_4=1;//"-" P0=tab[sss];P2_2=0;delay (1);P2_2=1;//秒十位 P0=tab[ssg];P2_0=0;delay (1);P2_0=1;//秒个位 } if(set1==2)//设置时间 { P0=tab[hhs];P2_7=0;delay (1);P2_7=1;//时十位 P0=tab[hhg];P2_5=0;delay (1);P2_5=1;//时个位 P0=0x40;P2_3=0;delay (1);P2_3=1;//"-" P0=tab[mms];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[mmg];P2_6=0;delay (1);P2_6=1;//分个位 P0=0x40;P2_4=0;delay (1);P2_4=1;//"-" P0=tab[sss];P2_2=0;delay (1);P2_2=1;//秒十位 P0=tab[ssg];P2_0=0;delay (1);P2_0=1;//秒个位 } if(set1==3)//正常显示年月日 { P0=tab[years];P2_7=0;delay (1);P2_7=1;//时十位 P0=tab[yearg];P2_5=0;delay (1);P2_5=1;//时个位 P0=0x40;P2_3=0;delay (1);P2_3=1;//"-" P0=tab[mons];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[mong];P2_6=0;delay (1);P2_6=1;//分个位 P0=0x40;P2_4=0;delay (1);P2_4=1;//"-" P0=tab[days];P2_2=0;delay (1);P2_2=1;//秒十位 P0=tab[dayg];P2_0=0;delay (1);P2_0=1;//秒个位 } if(set1==4)//设置年月日 { P0=tab[years];P2_7=0;delay (1);P2_7=1;//时十位 P0=tab[yearg];P2_5=0;delay (1);P2_5=1;//时个位 P0=0x40;P2_3=0;delay (1);P2_3=1;//"-" P0=tab[mons];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[mong];P2_6=0;delay (1);P2_6=1;//分个位 P0=0x40;P2_4=0;delay (1);P2_4=1;//"-" P0=tab[days];P2_2=0;delay (1);P2_2=1;//年十位 P0=tab[dayg];P2_0=0;delay (1);P2_0=1;//年个位 } if(set1==5)//12H和24H转换 {P0=tab[hhs];P2_7=0;delay (1);P2_7=1;//时十位 P0=tab[hhg];P2_5=0;delay (1);P2_5=1;//时个位 P0=0x40;P2_3=0;delay (1);P2_3=1;//"-" P0=tab[mms];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[mmg];P2_6=0;delay (1);P2_6=1;//分个位 P0=0x40;P2_4=0;delay (1);P2_4=1;//"-" P0=tab[sss];P2_2=0;delay (1);P2_2=1;//秒十位 P0=tab[ssg];P2_0=0;delay (1);P2_0=1;//秒个位 } if(set1==6)//节电模式 {P0=0X00;P2_7=0;delay (1);P2_7=1;//时十位 P0=0X00;P2_5=0;delay (1);P2_5=1;//时个位 P0=0x00;P2_3=0;delay (1);P2_3=1;//"-" P0=0X00;P2_1=0;delay (1);P2_1=1;//分十位 P0=0X00;P2_6=0;delay (1);P2_6=1;//分个位 P0=0X00;P2_4=0;delay (1);P2_4=1;//"-" P0=0X00;P2_2=0;delay (1);P2_2=1;//秒十位 P0=0X00;P2_0=0;delay (1);P2_0=1;//秒个位 } if(set1==7)//秒表 {P0=0X00;P2_7=0;delay (1);P2_7=1;//时十位 P0=0X00;P2_5=0;delay (1);P2_5=1;//时个位 P0=tab[mbb];P2_3=0;delay (1);P2_3=1;//"-" P0=tab[mbs];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[mbg];P2_6=0;delay (1);P2_6=1;//分个位 P0=0X40;P2_4=0;delay (1);P2_4=1;//"-" P0=tab[bbs];P2_2=0;delay (1);P2_2=1;//秒十位 P0=tab[bbg];P2_0=0;delay (1);P2_0=1;//秒个位 } if(set1==8)//正常显示学号 { P0=tab[0];P2_7=0;delay (1);P2_7=1;//时十位 P0=tab[1];P2_5=0;delay (1);P2_5=1;//时个位 P0=tab[1];P2_3=0;delay (1);P2_3=1;//"-" P0=tab[4];P2_1=0;delay (1);P2_1=1;//分十位 P0=tab[2];P2_6=0;delay (1);P2_6=1;//分个位 P0=tab[3];P2_4=0;delay (1);P2_4=1;//"-" P0=tab[2];P2_2=0;delay (1);P2_2=1;//秒十位 P0=tab[7];P2_0=0;delay (1);P2_0=1;//秒个位 }} } voidcounter_up()//秒表计时 { if(time==1) {time=0;bb++; if(bb==100) {bb=0;mb++; if(mb==999) {mb=0;} } } } voidjishi()//计时函数 { if(n==20) {n=0;ss++; if(ss==60) {ss=0;mm++; if(mm==60) {mm=0;hh++; if(hh==24) {hh=0;day++;week++; if(week==8) {week=0;} if(year%4==0&&year%100! =0||year%400==0)//闰年 { if(day==table1[mon]+1) {day=0;mon++; if(mon==13) {mon=0;year++;} } } else//非闰年 { if(day==table2[mon]+1) {day=0;mon++; if(mon==13) {mon=0;year++;} } } } } } } } ucharincone(ucharn)//加1函数 { if(k3==0) {delay(20); if(k3==0) { n++; while(! k3); } } return(n); } uchardecone(ucharm)//减1函数 { if(k4==0) { delay(20); if(k4==0) { m--; while(! k4); if(m<0) {m=0;} } } return(m); } voidkey_change()//k1按键扫描 { if(k1==0) { delay(20); if(k1==0) { set1++; while(! k1); if(set1==9) {set1=1;} } } } voidkey_set()//k2按键扫描 { if(k2==0) { delay(20); if(k2==0) { set2++; while(! k2); if(set2==4) {set2=1;} } } } voidset_time()//设置时间函数 { if(set1==2) { if(set2==1) { hh=incone(hh); if(hh==24) {hh=0;} if(hh==-1) {hh=23;} hh=decone(hh); } if(set2==2) { mm=incone(mm); if(mm==60) {mm=0;} if(mm==-1) {mm=59;} mm=decone(mm); } if(set2==3) { ss=incone(ss); if(ss==60) {ss=0;} if(ss==-1) {ss=59;} ss=decone(ss); } } } voidset_mdw()//设置年月日函数 { if(set1==4) { if(set2==1) { mon=incone(mon); if(mon==13) {mon=1;} mon=decone(mon); if(mon==0) {mon=12;} } if(set2==2) { day=incone(day); if(day==32) {day=1;} day=decone(day); if(day==0) {day=31;} } if(set2==3) { year=incone(year); if(year==3000) {year=2011;} year=decone(year); if(year==2010) {year=3000;} } } } voidset_zhuanhuan()//设置12小时和24小时转换 { inta=12; if(set1==5) { if(set2==1) { if(hh>a) {hh=hh-12;} } if(set2==2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业 实习 报告 范文