还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章序论设计目的:、增进对单片机电路的感性认识,加深对理论方面的理解;掌1MCS51握软件的有关知识;了解和掌握软硬件设计过程、Protel99SE,Proteus,,Keil方法及实现;、通过基于单片机的数字电子钟的设计的设计练习,了解必须提交的各2项工程文件,也到达稳固、充实和综合运用所学知识解决实际问题的目的实验环境、增进对单片机电路的感性认识,加深对理论方面的理解;掌1MCS51握软件的有关知识;了解和掌握软硬件设计过程、Protel99SE,Proteus,,Keil方法及实现;、通过基于单片机的数字电子钟的设计的设计练习,了解必须提交的各2项工程文件,也到达稳固、充实和综合运用所学知识解决实际问题的目的任务要求、查阅课题相关资料,深入理解课题含义及设计要求,注意材料采集与1整理;、设计一个时钟系统,实现以小时为一个周期,同时位段22487LED数码管显示小时、分钟和秒的要求;、该时钟在计时过程中具有定时功能,当时间到达提前定好的时3间发展蜂鸣报时;然后在程序中查询将其中断优先级设置为低于时钟定时中断,则它就可以彻底不影响时钟定时二,在采用延时子程序时,如果显示模块的扫描速度本来就不是很快,此时可能会影响到显示的效果,普通情况下,每秒的扫描次数不应小于次,否则,数码的显示会浮现闪烁的情况因此,延时子程50序的延时时间应该小于毫秒,如果采用定时器定时的方式,延时时间不影20响时钟、软件-新建工程5Keil C51对于单片机程序来说,每一个功能程序,都必须要有一个配套的工程Project,即使是简单的功能程序也不例外,因此我们首先要新建一个工程,翻开我们的软件后,点击.然后会浮现一个新建工程Keil Project-New uVisionPQect.的界面日£»■Y〜Prcyec!Det»ug F,且,卜Peripherals TcxysSVCS iV»ndow^elpN«**Pro«»ct~自Q0|」¥Irnport pVhionlProject..Open Project.^lose ProjectWoftsnac*,E Q|T1晶Comoon^ntt.Envirorm.nt BooksSdectDevice.or Target Target1Options for TargetTa^et1o1G\Lk»rsAd*nir xtrator\Decktop\gu«p«\chu2aho ng.uv22CAlberSAdm力aloADe30PdUv23U\U8O\AdmirXtr2\DeUdopM*fti+\ASM\SXUZIZH0NG52程,Wtl多出黑Wilt三力任的H馀孚《妙伟心〃S C\Lker%\Adrn^.stralcx^DrUiop^Ol13J««20C:\Ux rsAdmirstratoDe sktop\201S.32龄15VMiAIV22GUv r\AdTr7sMop\201U28\卓克小IT522F\££jyn恢子Mt*、F-d_test\p*onieng Jeds.5233Uxr\AdTr woioADesktopU01X24\Nd52在任意文件夹中保存文件,软件会自动添加扩展名shuzizhong.uv2保存之后会弹出一个对话框,这个对话框让我们选择单片机型号,我们选择AT89C51Select DeviceforTargetTarget1CPUVendorAtmelUse ExtendedLinker U51instead ofBL51DeviceAT89c51Toolset C51DescriptionDate bse8051-bastd FulllyStatic24MHz CMOScontroller with32I/lAT87F51RC2Timtrs/Counttrs,6Interrupts/2Priority Levels,UART,AT87F52Thre«-Ltv«l ProgramMemory Lock,4K BytesFlsh Memory,128BytesAT87F55WD On-chip RAMAT89C1051AT89C1051UAT89C2051AT89C4051AT89C5U5AT09C5131AT89C51AC3AT89C51CC03帮助工程有了之后,我们要建立编写代码的文件,点击新建一个File--New,文件,也就是我们编写程序的平台然后点或者直接点击那个的快捷键,可File-Save Save以保存文件,保存时我们把它命名为这个地方必须shuzishizhong.c,加之因为如果写汇编语言,这个地方的扩展名是.C,.asm现在我们就可以在我们建立好的文件中输入我们的程序代码了,在编写之前还有个工作要做我们每做一个功能程序,必须要新建一个工程,一个工程代表了单片机要实现的一个功能但是一个工程,有时候我们可以把我们的程序分多个文件写,所以每写一个文件,我们都要添加到我们所建立的工程中去,鼠标右键点Source Group点L Add Files to Group Source Group V...■厚V3shuzizhong1510n3-[C AUser5\AdminfStrator\Desltop\,gudpiiii\5hu、合胃,E|File EditView ProjectQebug FlashPeripherals ToolsSVCS0飞亳|二二注也无治喻|一4%国画三]星零♦,1144NKrgttI*ro octWorkspace▼x1□Target1SoiOptions forGroup Source Group1|t»|Rebuild targetIf IBuild targetF7New GroupAddFiles toGroup SourceGroup1+Manage CcmponentsRemoveGroup SourceGroup1and itsFiless/Include Dependenciesnrr在弹出的对话框中,单击选中它,然后点,或者者直接shuzishizhong.c Add双击都可以将文件参加到这个工程下,然后单击关闭shuzishizhong.c Close,添加这个时候大家会看到在SourceGroup1下边又多了一个文件shuzishizhong.c然后就可以编写程叨AddFilestoGroupSourceGroup1序了,下面是编写界面的介绍:、程序流程图
6、程序编译并生成文件7HE*U开场二)QHe31D9httgWyr.iloeteMlnlcw*自动跳转到错误代码行,方便发展修改VatfeiH3第四章调试仿真、软件介绍1软件是来自英国公司的工具软件,Proteus Labcenterelectronics EDA软件有十多年的历史,在全球广泛使用,除了其具有和其它工具Proteus EDA一样的原理布图、自动或者人工布线及电路仿真的功能外,其革命性的功PCB能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能如上图所示为编译成功的提示,假设有错误提示,双击错误提示则会看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等、加载程序2点击要加载的文件HE*、仿真运行3点击左下角按钮,匚鲤面菰空才能直接观察整个电路的运行输出结果I6-3H-5“a,2OM,?0・,4U»:VK,,»“出36nvf]“.ITT•J4T3•lariHsirtT233■vh3第五章总结通过这次的设计使我认识到我对单片机编程方面的知识知道的太少了,对于书本上的不少知识还不能灵便运用,有不少我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化同时在大学的课堂上学习的只是在给我们灌输专业知识,而我们应该把所学的用到我们现实生活中去,此次的电子时钟设计给我奠定了一个实践的根抵,我会在以后的工作生活中不断的磨练自己,让自己更好的立足于社会:程序代码^include r^5Lhunsigned chaiied[l2]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,Op佗缸//扫描unsigned charb
[8]={0*,0*O*fb,O*f7,O*ef,O*df,O*bf,O*7f};n1/J
4.unsigncdchark=O;//记录毫秒为秒的变量unsigned inttemp;是模式,更新时间的种模式加之正常模式闪烁标志unsigned charM,S_flagy/M S_flag sbitKkEVX;sbitK2=P3Al;sbitK3=P3A2;sbitBEEP=P3A3;2毫秒void delayunsignedn粕pint*,y;fbr*=O;*n;*HTfory=0;y24;y-H-;voidinitQM=0;//闪烁标志位S_flag=O;〃定时器以方式定时TMOD=0*10;THl=0*fc;TLl=0*18;〃翻开总中断EA=1;〃允许定时器中断ET1=1;voiddisplay_led Pl=led[ll];}void timelintenupt3{〃定时器中断函数THl=0*fc;TL1=O*18;〃定寸R mstemp++;iftemp==1000{temp=0;second++;〃配合定时器定时$〃开启定时器(开场定时计数)TR1=1;z.、设计四个按键、、和键,发展相应的操作就可实现校时、定4SI S2S3S4时、复位功能、设计系统原理图,利用绘制原理图,设计程序,利5Protel99SE用仿真软件发展系统调试;Proteus、完毕后,及时提交设计报告〔含纸质稿、电子稿),要求格式标准、内6容完整、结论正确,正文字数不少于字3000第二章硬件设计、电路原理图1时间显示电路采用一个位共阴极数码管,口驱动显示数字,8P1口作为扫描信号P29时间设置电路、、分别连接了个按键,实现调试模P
3.0P
3.1P
3.23式、时间加和时间减if^second==59{second=0;ifi;minute59minute++;else{minute=O;hour++;hour%=24;ifhourl==hourminute1==minutesecond10〃闹钟时间到BEEP=!BEEP;〃每iftemp%250==0ms〃闪烁标志位取反S_flag=!S_flag;他i=8k=0;Pl=a[k];P2=b[k++];dclayl;P2=0*flf;voiddisplayOswitchMcaseO:a
[0]=led[hour/10];a[l]=led[houi%10];a
[2]=led
[10];a
[3]=led|minute/10|;a4|=led|minute%10];a
[5]=led
[10];a
[6]=led[second/10];a
[7]=led[second%10];[break;easel:ifS_flag=la
[0]=ledfhour/10];all]-led|hoiu%10J;elsea|OHed[ll];a[l]=led[ll];a
[2]=led
[10];a
[3]=led[minute/10];a
[4]=lcd[minutc%10];a
[5]=led
[10];a
[6]=lcd[second/10];a
[7]=led[second%10];[break;case2:a
[0]=led|hour/10];a[l]=led[hour%10|;a
[2]=led
[10];ifS_flag=la
[3]=led[minute/10];a
[4]=led[minute%10];elsea
[3]=led[ll];a
[4]=led[ll];a
[5]=led
[10];a
[6]=led|second/10];a
[7]=led[second%10];break;ifS_flag=la
[0]=led[hourl/10];a[l]=led[houi,l%10];elsea
[0]=led[ll];a[l]=led[ll];a
[2]=led
[10];a
[3]=led[minutel/10];a|4]=lcd[minute l%10];a
[5]=led
[10];a
[6]=led[ll];a
[7]=led[ll];break;a
[0]=led[hourl/10];all=led[hourl%10];a
[2]=led
[10];ifS_flag=l a
[3]=led[minutel/l0];a
[4]=led|ininute l%10|;elsea
[3]=led[ll];a
[4]=led[ll];a[5|=led[10|;a
[6]=led[ll];a
[7]=led[ll];voidkey_prciRKl=0〃延时去抖delaylO;〃按发展模式切换ifKl=O KI{M++;ifM==5M=0;等待按键释放while!Kl;//}ifM!=OswitchM//模式-调时easel:ifK2==0〃延时去抖delaylO;ifK2==0〃加键按下ifhour23hourH;elsehouH;}//等待按键释放while!K2;ifK3==0delaylO;ifK3==Oifhour0hour-;elsehour=23;while!K3;break;〃模式-调分case2:ifK2=0delaylO;ifK2==0ifi;minute59minute++;elseminute=O;while!K2;ifK3==OdelaylO;ifK3==O ifminuteOiTiinute;elseminute=59;while!K3;}break;case3:〃模式-闹钟调时ifK2==0delaylO;ifK2=0ifhourl23hour1++;elsehourl=0;while!K2;ifK3==0delaylO;iRK3=0{ifhourl0hourl-;elsehourl=23;while!K3;}break;〃模式-闹钟调分case4:ifK2==0delaylO;ifiK2==0ifi;minutel59minute1++;else minute1=0;while!K2;ifK3==0〃延时去抖delaylO;〃减键按下ifK3==0{ifminutel0minute1-;elsewhile!K3;}break;minute1=59;voidmaindisplayJedO;whilel key_prc;displayO;闹钟:口接扬声器P
3.
3、单片机最小系统2C1TO AT89C51UNET二BO103IXIP1为什么称之为单片机最小系统呢.XTAI1单片机最PC GADOX1PO1;AD1小系统,也叫做单片机C2CRYSTAL PO2/AD2PU3AD3T1PCi4Az P0最小应用系统,是指用至少的原件组成单片机可以工作的系5/AD5P0AD6P0R统单片机最小系统的三要素就是电源、晶振、复位RST7JAD7O电路21BOOP
2.0/A8P21/A9P22/A1O复位电路由电容串联电阻构成,由图并结合”电容电P23/A11ALEP24/A12压不能突变EAP
2.5/A13r|ALP2aAi4P27/A15R2”的性质可以知道,当系统一上电,脚将会浮现RSTRO10P30/RXD高电平,并且,这个高电平持续的时间由电路的值RC10kP
3.1/TXD来决定典型的51单片机当PI2P32/WTT r13R1P13二TFT1447k P14P3Mo脚的高电平持续两个机器周P15P35/T1RSTP15P
3.6AVR17PI7P37师晶振电路:晶振,又叫晶体振荡器,从这个名字我们就可以看出来,它注定一辈子都要不停振荡的他起到的作用是为单片机系统提供基准时钟信号,类似于我们部队训练时喊口令的人,单片机内部所有的工作都是以这个时钟信号为步调基准来发展工作的单片机的脚和STC89C5218脚是晶振引脚,我们接了一个(产生准确的级时歇,方便定时操1912MHz uS作),外加两个的电容,电容的作用是帮助晶振起振,并维持振荡信号30pF的稳定时钟电路产生的振荡脉冲经过触发器发展二分频之后,才成为单片机的时钟脉冲信号所以,适当组合的取值就可以保证可靠的复位普通推荐取取RC CO.lu,R固然也有其他取法的,原则就是要让组合可以在脚上产生不
4.7K RCRST少于个机周期的高电平至于如何具体定量计算,可以参考电路分析相关书2籍这里我们使用上电复位和按键复位两种方式、元件清单3电子钟元器件清单规元件名称型号数量〔个)格单片机AT89c511晶振12MI-z1电容30uF2电容
0.1|1F1按键BUT QN4液晶显不7SE G-MP*8-CC-bule
1、显示工作原理系统采用动态显示方式,用口来控制4P0LED数码管的段控线,而用口来控制其位控线动态显示通常都是采用动态P2扫描的方法发展显示,即循环点亮每一个数码管,这样虽然在任何时刻都惟独一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉、设计方案与实现本课题采用软件程序设计的方案,利用内部的5MCS-51定时/计数器发展中断定时,数码显示器和按键,配合软件延时实现时、LED分、秒的计时运用串行通信方式且计时不占用时间,能够充分利用好CPUCPUo第三章软件设计流程及描述、软件介绍1是美国公司出品的系列兼容单片机语言软件开辟KeilC51Keil Softwarc51C系统,与汇编相比,语言在功能上、构造性、可读性、可维护性上有明显的C优势,于是易学易用提供了包括编译器、宏汇编、连接器、库管理Keil C和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开辟环境将这些局部组合在一起运行软件需要、、uVision KeilWIN98NT WIN2000等操作系统如果你使用语言编程,则几乎就是你的不二之选,WIN*P CKeil即使不使用语言而仅用汇编语言编程,其方便易用的集成环境、强大的软C件仿真调试工具也会令你事半功倍优点生成的目标代码效率非常之高,多数语句生成的汇编代码很
1.KeilC51紧凑,容易理解在开辟大型软件时更能表达高级语言的优势.与汇编相比,语言在功能上、构造性、可读性、可维护性上有明显2C的优势,于是易学易用用过汇编语言后再使用来开辟,体会更加深刻C、MCS-51单片机的定时器/计数器单片机2MCS-51共有两个可编程的定时器/计数器,分别称定时器/计数器和定时器/计数器它们都是十六位加法计数构造,分别1由[地址)和[地址)及(地址)和TH8CH TL8AH TH8DH TL0011[地址〕两个位计数器组成这四个计数器均属专用存放器之列8BH8的每一个定时器/计数器都具有定时和计数两种功能MCS-
51.计数功能1所谓计数是指对外部事件发展计数外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲发展计数定时功能
2.定时功能也是通过计数器的计数来实现的无非此时的计数脉冲来自单片机的内部,即每一个机器周期产生一个计数脉冲也就是每一个机器周期计数器加由于一个机器周期等于个振荡脉冲周期,因此计数频率为振荡频112率的1/120定时器/计数器提供给用户使用的有八位计数器和以及有关的控TH TL,制位这些内容只能以软件方法使用、定时器/计数器的四种工作方式3MCS-
51.定时工作方式10方式是位计数构造的工作方式,其计数器由全部位和13TH8o的低位构成当的低位计数溢出时,向进位,而全TL5TL5TH000部位计数溢出时,则向计数溢出标志位进位13TF0在方式下,当为计数工作方式时,计数值的范围是1-8192213当为定时工作方式时,定时时间的计算公式为⑵3—计数初值晶振周期或者〔—计数初值〕机器周X x12213X期其时间单位与晶振周期或者机器周期一样〕1S定时工作方式
2.1方式是位计数构造的工作方式,计数器由全部位和116TH80全部位构成TL8o当为计数工作方式时,计数值的范围是1-655361216当为定时工作方式时,定时时间计算公式为—计数初值晶振周期1216X x12或者〔—计数初值〕机器周期216x定时工作方式
3.2工作方式是自动重新加载工作方式在这种工作方式下,把位计数器216分为两局部,即以作计数器,以作预置存放器,初始化时把计数初值TL TH分别装入和中当计数溢出后,不是像前TL TH两种工作方式那样通过软件方法,而是由预置存放器以硬件方法自动给计TH数器重新加载变软件加载为硬件加载TL初始化时,位计数初值同时装入和中当计数溢出8TL THTL000时,置位同时把保存在预置存放器中的计数初值自动加载TF,TH00然后重新计数如此重复不止这非但省去了用户程序中TL,TL00的重装指令,而且也有利于提高定时精度但这种工作方式下是位计数构8造,计数值有限,最大只能到255这种自动重新加载工作方式非常合用于循环定时或者循环计数应用,例如用于产生固定脉宽的脉冲,此外还可以作串行数据通信的波特率发送器使用、程序模块4此局部主要介绍定时模块,和显示模块定时局部采用经典的定时器定时它实现了数字钟的主要局部,和秒表的主要局部,以及产生报时信号,定时设置显示模块是实现数字钟的又一重要局部,其模块的的独立程度直接影响到数字钟的可视化程度在此局部的设计中,设置专用显示数据缓冲,与分,时及其他数据缓冲区数据区别,在其中存放的是显示段码,而其他缓冲区存放的是时间数据在显示时,首先将时间十进制数据转化为显示段码,然后送往数码管显示显示段码采用动态扫描的方式在要求改变显示数据的类别时,只需将指向数据缓冲区的指针指向的十进制数据缓冲区即可数据调整数据调整有多种方式一,可以直接进入相关状态进展有关操作,二,将调整分两步,先进入状态,然后执行操作,这两步分别由两个键控制方式一,比较直接,设计思想也比较简单,但是,这种方式存在操作时间和控制键数目的矛盾如果用比较少的键,则可能会在进入状态后处于数据调整等待状态,这样会影响到显示的扫描速度(显示局部可以采用8279芯片来控制,可以解决此问题)固然在这种方式下,还可以使用多个状态键,每一个状态键,完成一个对应数据的调整如果采用二的方式,就不会浮现这种情况定时准确性的讨论程序中定时器,向来处于运行状态,也就是说定时器是理想运作的,其中断程序每隔秒执行一次,在理想状态下,定时器定时01是没有系统误差的,但由于定时器中断溢出后,定时器从开场计数,直到被重新置数,才开场正确定时,这样中断溢出到中断响应到定时器被重新置数,此间消耗的时间就造成为了定时器定时的误差如果在前述定时器不关的情况下,在中断程序的一开场就给定时器置数,此时误差最小,误差大约为每秒,误差个机器周期固然这是在定时器定时刚好为秒Q17—
120.1时的情况,由以上分析,如果数字钟设计为查询的方式或者是在中断的方式下将定时器中断设置为最高级,我们在定时值设置时,可以适当的扣除个9机器周期的时间值但如果在中断的情况下,没有将定时器中断设置为最高级,那就要视中断程序的大小,在定时值设置时,扣除相应的时间值软件消抖消抖可以采用硬件(施密特触发器)的方式,也可以采用软件的方式在此只讨论软件方式软件消抖有定时器定时,和利用延时子程序两种方式一,定时器定时消抖可以不影响显示模块扫描速度,其实现方法是设置标志位,在定时器中断中将其置位,。
个人认证
优秀文档
获得点赞 0