教学材料《单片机》-第11章_第1页
教学材料《单片机》-第11章_第2页
教学材料《单片机》-第11章_第3页
教学材料《单片机》-第11章_第4页
教学材料《单片机》-第11章_第5页
已阅读5页,还剩79页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机是一门实践性很强的课程,在课程的最后专门安排一个章节进行实际电路及其工作程序的设计、制作和调试工作,可以加强对单片机知识的理解,培养实践技能,提高分析和解决实际问题的能力。本章针对课程内容安排了5个实验和1个课程设计,每个实验安排2个学时(90分钟),课程设计安排一周(30个学时)。对于实验部分,主要要求学生在仿真器上完成实验电路的连接,并且完成一份实验报告。实验报告内容有如下要求:(1)画出实验原理图。

(2)画出实验程序流程图。

返回下一页第11章实验及课程设计(3)写出实验中调试通过的汇编语言或者C语言程序代码。程序部分要有详细的说明,如主程序、子程序的功能;关键指令、寄存器、存储器的功能等。对于课程设计报告内容有如下要求:(1)使用PROTEL画出实验原理图。

(2)画出课程设计程序流程图。

(3)写出实验中调试通过汇的编语言或者C语言程序代码。程序部分要有详细的说明:如主程序、子程序的功能;关键指令、寄存器、存储器的功能等。

(4)写出一份课程设计电路的使用说明书。包括该电路的功能,详细的操作使用说明。

返回下一页上一页第11章实验及课程设计(5)写出一份课程设计总结。主要叙述自己对该课程设计的时间分配、实际完成情况;在设计过程中遇到的问题及解决方法;自己的设计的优点、缺点及对于改进的设想等。返回上一页第11章实验及课程设计1.实验目的掌握MCS-51单片机编译软件及仿真器的使用方法。掌握P1口的编程方法。2.实验内容

按图11.1-1接线,编程实现8只发光二极管在P1口循环点亮。要求循环左移8次,再循环右移8次,如此不断循环。3.参考程序汇编程序如下:ORGOOOOH;程序存放起始地址为ROM的OOOOHSTART:MOVR2,券8;左移循环次数8送R2寄存MOVA,#OFEH;从P1.0开始点亮LEDLOOP:MOVP1,A;送显示码到P1口LCALLDELAY;调用延时子程序返回11.1P1口实验下一页RLA;循环左移DJNZR2,LOOP;左移循环是否结束判断MOVR2,券8;右移循环次数8LOOPI:MOVP1,A;显示码FE送P1口LCALLDELAY;调用延时子程序RRA;右移循环DJNZR2,LOOP1;右移循环是否结束判断AJMPSTART;左移、右移循环各一次结束,重新循环DELAY:MOVR5,#20;延时200ms子程序返回11.1P1口实验下一页上一页D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1F卫TEND;程序结束C语言程序如下:返回11.1P1口实验下一页上一页返回11.1P1口实验下一页上一页返回11.1P1口实验下一页上一页返回11.1P1口实验上一页1.实验目的了解单片机独立式按键的工作原理及编程方法。2.实验内容如图11.2-1在单片机的P1.0~Pl.3口线接4个LED,P3.7口线接一个按键。编程实现每按一次按键,数值加1,4个LED显示对应的二进制数。3.参考程序汇编程序如下:返回11.2独立式按键实验下一页返回下一页上一页11.2独立式按键实验返回下一页上一页C语言程序:11.2独立式按键实验返回下一页上一页11.2独立式按键实验返回上一页11.2独立式按键实验1.实验目的掌握7段LED数码管动态显示的程序编写技术。2.实验内容

P0口接LED显示器的字型码输入端,P2口接位选端,P1.7接一个按键。编程实现当按键按下时,显示“12345”,松开时显示“HELLO“。3.参考程序汇编程序如下:返回11.37段LED数码管实验下一页ORGOOOOHSTART:JBP1.7,DIR1;若按键未按下则跳转到DIR1MOVDPTR,券TABLEI;"12345"表格首地址送数据指针SJMPDIR;跳转到D工R处DIRI:MOVDPTR,券TABLE2;"HELLO"表格首地址送数据指针DIR:MOVR0,#OOH;清零RO返回下一页上一页11.37段LED数码管实验MOVR1,#OFEHNEXT:MOVA,ROMOVCA,@A+DPTRMOVPO,AMOVA,R1MOVP2,ALCALLDAYINCRORLAMOVR1,ACJNER1,#ODFH,NEXTSJMPSTARTDAY:MOVR6,#4返回下一页上一页;位选码,从右向左显示;表格中第一个数据的偏移地址。送到A;查表;查表得到的数据送到A;位选码送到A;位选码送到PO;调用延时程序;表格中下一个数据的偏移地址;位选码循环左移一次;位选码送到R1寄存;若5位显示一遍后跳转到NEXT;若5位未显示一遍则跳转到START;延时21115子程序11.37段LED数码管实验D1:MOVR7,#248DJNZR7,$DJNZR6,D1RET

TPRT,FI:DB06H,5BH,4FH,66H,6DHTPRr,F2:DB78H,79H,38H,38H,3FHEND

C语言程序如下:#include<AT89X51.H>unsignedcharcodetab工e1[]={Ox06,Ox5b,Ox4f,Ox66,Ox6d};//数组12345unsignedcharcodetab工e2[]={Ox78,Ox79,Ox38,Ox38,Ox3f};//数组HELLO返回下一页上一页;"12345";"HELLO";程序结束11.37段LED数码管实验unsignedchari;unsignedchara,b;unsignedchartemp;voidmainCvoid)//主程序{whileCl)temp=Oxfe;//位选码forCi=O;i<5;i++)//循环显示{ifCP17==0)//按键未按下{PO=tablel[i];//显示12345}返回下一页上一页11.37段LED数码管实验else{PO=tablet[i];//按键按下显示HELLO}P2=temp;//由此开始4条指令用来位选码移位a=temp+Ci+1);b=temp;C7-i);temp=alb;forCa=4;a>O;a--);//延时forCb=248;b>O;b--);}}返回上一页11.37段LED数码管实验1.实验目的掌握MCS51单片机内部定时器的工作原理、掌握MCS51单片机的中断系统工作原理、掌握MCS51单片机的中断程序的结构。2.实验内容

Pl.0~Pl.3接4个LED。用MCS-51的定时/计数器T。产生2s的定时,每当2s定时到来时,更换指示灯闪烁,每个指示闪烁的频率为5Hz。也就是说,开始L1指示灯以5Hz的频率闪烁,当2s定时到来之后,L2开始以5Hz的频率闪烁,如此不断循环。如图11.4-1所示。返回11.48051内部定时器实验下一页3.实验原理定时2s,采用16位定时器方式定时50ms,循环40次即可达到2s。定时采用中断方式,每50ms产生一次中断,2s定时到时的判断在中断子程序中完成。5Hz的闪烁频率即每秒钟闪烁5次,每次用时0.2s,该0.2s的定时,需要50ms的定时循环4次。5Hz的闪烁频率也由定时/计数器T。来完成。对于中断子程序,在主程序中要对中断开中断。由于每次2s定时到时,L1到L4要交替闪烁,采用ID号来识别。当ID=0时,L1在闪烁,当ID=1时,L2在闪烁;当ID=2时,L3在闪烁;当ID=3时,L4在闪烁。返回下一页上一页11.48051内部定时器实验4.参考程序汇编程序如下:

TCOUNT2SEQU30HTCNT02SEQU31HIDEQU32HORGOOOOHLJMPSTARTORGOOOBHLJMPINTTOSTART:MOVTCOUNT2S}#OOH返回下一页上一页;2s循环次数存放单元TCOUNT2S赋值30H;0.2s循环次数存放单元TCNT02S赋值31H;当前显示LED的ID赋值32H;指令存放首地址为ROM的OOOOH单元;跳转到START;定时器TO中断入口地址;跳转到工NTTO子程序;清0TCOUNT2S11.48051内部定时器实验MOVTCNT02S,#OOHMOVID,#OOHMOVTMOD,#01HMOVTHO,#(65536-50000)/256MOVTLO,#(65536-50000)MOD256SETBTRO

SETBETO;开放TO中断SETBEA;开放总中断允许SJMP$;原地等待返回下一页上一页;清0TCNT02S;清0工D;选择TO定时器工作方式1;50ms定时初值高8位送到;50ms定时初值低8位送到;启动TO11.48051内部定时器实验INTTO:MOVTHO}#(65536-50000)/256;70中断子程序MOVTLO,#(65536-50000)MOD256工NCTCOUNT2SMOVA,TCOUNT2SCJNEA,#40,NEXTMOVTCOUNT2S,#OOHINCIDMOVA,IDCJNEA,#04H,NEXTMOVID,#OOHNEXT:INCTCNT02S返回下一页上一页MOVA,TCNT02;50ms定时初值重装;TCOUNT2S内容加一;TCOUNT2S内容送到A;若不到2s则跳转到NEXT;若到2s则清零TCOUNT2S;工D指向下一个LED;ID单元内容送到A;ID单元内容不为4跳转到NEXT;ID单元内容等于4则清0ID单元;TCNT02S内容加1;TCNT02S内容送到A

11.48051内部定时器实验CJNEA,#4,DONEMOVTCNT02S,#OOHMOVA,IDCJNEA,#OOH,SID1CPLP1.0SJMPDONESIDI:CJNEA,#01H,SID2CPLP1.1SJMPDONE返回下一页上一页;若不到0.2ms则跳转到DONE;若到0.2ms则清0TCNT02S;ID单元内容送到A;若ID单元内容不为。跳转到S工D1;ID单元内容等于。,取反P1.0显示第一个LED;跳转到DONE;若ID单元内容不为1跳转到S工D2;ID单元内容等于1,取反P1.1显示第二个LED;跳转到DONE11.48051内部定时器实验SID2:CJNEA,#02H,SID3CPLP1.2SJMPDONESID3:CJNEA,#03H,DONECPLP1.3DONE:RET工END返回下一页上一页;若ID单元内容不为2跳转到S工D3;ID单元内容等于不为2,显示第三个LED;跳转到DONE;若ID单元内容不为3跳转到DONE;若ID单元内容等于3,显示第四个LED;中断子程序返回;程序结束11.48051内部定时器实验C语言程序:#include<AT89X51.H>unsignedchartcount2s;//2s计数器unsignedchartcount02s;//0.2ms计数器unsignedcharID;//LED的工D号voidmainCvoid)//主程序{返回下一页上一页11.48051内部定时器实验TMOD=0x01;//设置TO定时器工作方式1THO=(65536-50000)/256;//计算50ms定时初值EA=1;whileCl);}voidtOCvoid)interrupt1using0//TO中断子程序{tcount2s++;ifCtcount2s==40)//2s到则清0计数器tcount2s=0;ID++;//LED的工D号加1If(ID==4)//如果显示一遍则从头显示{返回下一页上一页11.48051内部定时器实验TMOD=0x01;//设置TO定时器工作方式1THO=(65536-50000)/256;//计算50ms定时初值EA=1;whileCl);}voidtOCvoid)interrupt1using0//TO中断子程序{tcount2s++;ifCtcount2s==40)//2s到则清0计数器tcount2s=0;ID++;//LED的工D号加1If(ID==4)//如果显示一遍则从头显示{返回下一页上一页11.48051内部定时器实验ID=0;}}tcount02s++;ifCtcount02s==4)//0.2ms到清0计数器{tcount02s=0;switch}ID)//显示对应ID号的LED{case0:P10=~P10;//明暗闪烁返回下一页上一页11.48051内部定时器实验break;case1:P1_1=~P11;break;case2:P1_2=~P12;break;case3:P1_3=~P13;break;}}}返回上一页11.48051内部定时器实验1.实验目的掌握矩阵式键盘的工作原理及编程方法。2.实验内容

如图11.5-2所示,P3口接4义4矩阵式键盘的行线和列线,PO口接7段LED显示器的字型码输入端。编程实现每按下一个按键,在LED数码管上显示每个按键的序号。对应的按键的序号排列如图11.5-1所示。返回下一页11.54X4矩阵式键盘实验3.参考程序汇编程序如下:KEYBUFEQU30H;键值存放单元ORGOOOOH;程序存储起始地址START:MOVKEYBUF}#2;键值存放单元赋初值WAIT:;从第0行开始扫描返回下一页上一页11.54X4矩阵式键盘实验JZNOKEYIMOVA,P3ANLA,#OFHCJNEA,#OEH,NK1MOVKEYBUF,#0LJMPDK1NKI:CJNEA,#ODH,NK2MOVKEYBUF,#1LJMPDK1NK2:CJNEA,#OBH,NK3MOVKEYBUF,#2LJMPDK1返回下一页上一页;第0行无按键按下扫描第一行;有按键按下则由此开始计算键值;P3口值高4位清。;不是第0列跳转到NK1;是第0列将键值0送到KEYBUF;跳转到DK1处;不是第1行跳转到NK2;是第1行将1送到KEYBUF;跳转到DK1;不是第2行跳转到NK3;是第2行将2送到KEYBUF;跳转到DK111.54X4矩阵式键盘实验

MOVKEYBUF,#3LJMPDK1NK4:NOPDK1:MOVA,KEYBUFMOVDPTR,券TABLEMOVCA,@A+DPTRMOVPO,A返回下一页上一页;是第3行将3送到KEYBUF;跳转到DK1;空指令;标号DK1;将KEYBUF的值送到A;表格首地址送到数据指针;查表得按键对应的字型码;字型码送PO口显示11.54X4矩阵式键盘实验DKIA:MOVA,P3ANLA,#OFHXRLA,#OFHJNZDK1ANOKEYI:MOVP3}#OFFHCLRP3.5MOVA,P3ANLA,#OFHXRLA,#OFH返回下一页上一页11.54X4矩阵式键盘实验;P3口数据送A;A高4位清。取反;A低4位取反;等待按键释放;由此开始扫描第1行;P3口送FFH;扫描第1行;读P3口数据;清0高4位;取反低4位JZNOKEY2LCALLDELAYIOMSMOVA,P3ANLA,#OFHXRLA,#OFHJZNOKEY2MOVA}P3

返回下一页上一页11.54X4矩阵式键盘实验;本行无按键按下则扫描下一行;延时10ms;读P3口数据;清0高4位;取反低4位;本行无按键按下则扫描下一行;本行有按键按下由此开始计算键值ANLA,#OFHCJNEA,#OEH,NKSMOVKEYBUF,#4LJMPDK2NKS:CJNEA,#ODH,NK6MOVKEYBUF,#5LJMPDK2NK6:CJNEA,#OBH,NK7MOVKEYBUF,#6LJMPDK2NK7:CJNEA,#07H,NK8返回下一页上一页11.54X4矩阵式键盘实验;P3口数据高4位清0;不是第0列跳转到NK5;是第0列将键值送KEYBUF;跳转到DK2;不是第1列跳转到NK6;是第1列将键值送KEYBUF;跳转到DK2;不是第2列跳转到NK7;是第2列将键值送KEYBUF;跳转到DK2;不是第3列跳转到NK8MOVKEYBUF,#7LJI}DK2NKB:NOPDK2:XRLA,#OFHJNZDK2ANOKEY2:MOVP3}#OFFHCLRP3.6MOVA,P3返回下一页上一页11.54X4矩阵式键盘实验;是第3列将键值送KEYBUF;跳转到DK2;空指令;由此开始查表得键值对应的字型码;将A低四位取反;等待按键释放;第2行扫描开始;P3口送FFH;从第3行扫描;读P3口数据ANLA,#OFHXRLA,#OFHJZNOKEY3LCALLDELAYIOMSMOVA,P3ANLA,#OFHXRLA,#OFHJZNOKEY3返回下一页上一页11.54X4矩阵式键盘实验;清0高4位;取反低4位;若第2行没有按键按下跳到NOKEY3;有按键按下延时10ms;读P3口数据;清0高4位;取反低4位;若第2行没有按键按下跳到NOKEY3MOVA,P3ANLA,#OFHCJNEA,#OEH,NK9MOVKEYBUF,#8LJMPDK3NK9:CJNEA,#ODH,NK10MOVKEYBUF,#9LJMPDK3NK10:CJNEA,#OBH,NK11MOVKEYBUF,#10LJMPDK3返回下一页上一页11.54X4矩阵式键盘实验;读P3口数据;清0高4位;不是第。列按键跳转到NK9;是第1列按键则得到键值;跳转到DK3;不是第1列按键跳转到NK10;是第1列按键则得到键值;跳转到DK3;不是第2列按键跳转到NK11;是则得到键值;跳转到DK3NK1I:CJNEA,#07H,NK12MOVKEYBUF,#11LJMPDK3NK12:NOPDK3:MOVA,KEYBUFMOVDPTR,券TABLEMOVCA,@A+DPTRMOVPO,ADK3A:MOVA,P3ANLA,#OFHXRLA,#OFH返回下一页上一页11.54X4矩阵式键盘实验;不是第3列按键跳转到NK11;是则得到键值;跳转到DK3;空指令;由此开始查表得到按键字型码;键值送A;表格首地址送数据指针;查表;字型码送PO口;由此开始等待按键释放;清0A高4位;取反A低4位JNZDK3ANOKEY3:MOVP3}#OFFHCLRP3.7MOVA,P3ANLA,#OFHXRLA,#OFHJZNOKEY4LCALLDELYIOMSMOVA,P3ANLA,#OFH返回下一页上一页11.54X4矩阵式键盘实验;等待按键释放;由此开始第3行按键扫描;FF送P3口;扫描第3行;P3数据送A;清0高4位;取反低4位;若此行无按键按下跳转到NOKEY4;若有按键按下则延时10ms去抖动;读P3口数据;清0高4位XRLA,#OFHJZNOKEY4MOVA,P3ANLA,#OFHCJNEA,#OEH,NK13MOVKEYBUF,#12LJMPDK4NK13:CJNEA,#ODH,NK14MOVKEYBUF}#13返回下一页上一页11.54X4矩阵式键盘实验;取反低4位;若此行无按键按下跳转到NOKEY4;读P3口数据;清0高4位;不是第。列按键跳转到NK13;是第。列则得到键值;跳转到NK4;不是第1列按键跳转到NK14;是第1列按键则得到键值LJMPDK4NK14:CJNEA,#OBH,NK15MOVKEYBUF,#14LJMPDK4NK15:CJNEA,#07H,NK16MOVKEYBUF,#15LJMPDK4NK16:NOPDK4:MOVA,KEYBUFMOVDPTR,券TABLEMOVCA,@A+DPTR返回下一页上一页11.54X4矩阵式键盘实验;跳转到NK4;不是第2列按键跳转到NK15;是第2列按键则得到键值;跳转到NK4;不是第3列按键跳转到NK16;是第3列按键则得到键值;跳转到DK4;空指令;由此开始查表得到键值对应的字型码;键值送A;表格首地址送数据指针;查表MOVPO,ADK4A:MOVA,P3ANLA,#OFHXRLA,#OFHJNZDK4ANOKEY4:LJMP和A工TDELYIOMS:MOVR6,#10D1:MOVR7,#248返回下一页上一页11.54X4矩阵式键盘实验;字型码送PO口;由此开始等待按键释放;高4位清。;低4位取反;未释放则继续等待;扫描结束;重新扫描;延时10ms子程序DJNZR7,$DJNZR6,D1RETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;共阴极LED数码管“0~F"字型码列表DB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND;程序结束返回上一页11.54X4矩阵式键盘实验1.设计题目带闹钟功能的电子时钟。

2.设计任务和要求使用MCS-51单片机作为控制器,6个7段LED数码管作为显示器,按24小时制显示时间,用户可以设置时钟和闹钟时间。要求使用Protel画出电气原理图,画出程序流程图,设计出电子钟程序并在仿真器实现走时和闹钟功能,写出电子时钟详细功能及使用说明书。

3.参考电路及参考程序返回下一页11.6课程设计:带闹钟功能的电子时钟

如图11.6-1的参考电子时钟以一片AT89C2051单片机为控制单元,采用动态显示方式,显示数据的字型码从P3口输出,P1口输出对应的6位位选信号。LED数码管位驱动用8850。发声元件采用5V小型蜂鸣器,驱动蜂鸣器采用PNP型三极管8550。该电子时钟只用一个轻触式按键来完成所有的设置。根据实际情况可以调整R8的阻值来改变数码管亮度。参考电路如图所示,图中省略了复位电路。参考程序如下:返回下一页上一页11.6课程设计:带闹钟功能的电子时钟

ORGOOOOH;程序开始入口LJMPSTARTORG0003H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论