安徽大学历次单片机作业与课程设计_第1页
安徽大学历次单片机作业与课程设计_第2页
安徽大学历次单片机作业与课程设计_第3页
安徽大学历次单片机作业与课程设计_第4页
安徽大学历次单片机作业与课程设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理与应用第一次作业学号: 姓名:目录一、题目二、软件三、硬件一、题目 题目:广告灯控制系统内容:做宣传广告时,为了使广告内容醒目,引人注意,往往用灯光闪烁或明暗对比等手段。设有8个广告字,每次亮一个字,亮10ms,依次左移,然后依次右移,循环不止。要求:以led发光二极管代替广告字,程序延时。硬件:画出硬件电路原理图,考虑led的驱动问题。软件:画出程序流程图,编写源程序。调试:记录调试过程,分析调试结果。 二、软件1.源程序:org 0000h ;定义起始地址 mov a,#01111111b ;将二进制立即数01111111b放到累加器a中 ljmp start ;长转移到star

2、t函数 org 0100h ;定义start函数的起始地址start: mov r0,#7 ;将十进制立即数7放到寄存器r0中 mov r1,#7 ;将十进制立即数7放到寄存器r1中 left: mov p1,a ;将a中的内容送到p1口,只有p1.7为低电平,该处二极管被点亮 lcall del10ms ;延时10ms rr a ;将a中的内容右移一位,相应地,低电平所处位置左移一位 dec r0 ;将r0中的内容减1 cjne r0,#0,left ;判断r0是否为0,若不是则转移到left函数起始位置,若是则程序顺序执行 right: mov p1,a ;将a中的内容送到p1口,此时只有

3、p1.0为低电平,该处二极管被点亮 lcall del10ms ;延时10ms rl a ;将a中的内容左移一位,相应地,低电平所处位置右移一位 dec r1 ;将r1中的内容减1 cjne r1,#0,right ;判断r1是否为0,若不是则转移到right函数起始位置,若是则程序顺序执行 ljmp start ;长转移到start函数del10ms: mov r7,#25 ;将十进制立即数25放到寄存器r7中del1: mov r6,#200 ;将十进制立即数200放到寄存器r6中del2: djnz r6,del2 ;将r6中的内容减1,判断r6是否为0,若否则转移到del2函数起始位置

4、,否则程序顺序执行 djnz r7,del1 ;将r7中的内容减1,判断r7是否为0,若否则转移到del1函数起始位置,否则程序顺序执行 ret ;返回到调用del10ms函数的语句的下一条语句end ;程序结束的标志,因为上述程序中有死循环,所以目标程序执行不到这一步注:上述程序已用proteus 7.8中调试过,能满足题目要求。调试方法为设置执行指定时间分别为10ms,20ms,30ms等整十毫秒,看执行完毕后发光的那个二极管符不符合预期。2. 收获:(1)其实此次作业若在上完第四单元后布置会更好,因为第三章只教了一些指令,第四章教的才是单片机汇编语言程序设计,不过提前布置可以督促大家预习

5、第四单元。(2)写程序的过程中,我深切的感受到了汇编语言指令中的标号带来的便利,其功能实际上与c语言的函数名相同,是为了方便调用或转移。(3)51单片机所有i/o口上电之后全部默认为高电平,想让某一发光二极管发光,就要用程序来使其一端为高电平,另一端为低电平。 (4)上述程序中延时10ms的延时程序是由教材第65面例4-14的延时50ms的延时程序改编而来,我在照搬书上的延时程序,并下载到单片机中或用proteus 7.8进行仿真时发现只有最右边的二极管发光。认真研究后知道sjmp $其实就是here;sjmp here的意思,是一个死循环,将其删除后才能正常调用延时函数。三、硬件1.原理图:

6、原理图如下图一所示:图一 用proteus 7.8绘制的原理图2.考虑led的驱动问题二极管选用的是红色超亮发光二极管(led-red),其参数如下图二所示:图中显示其完全驱动电流为10ma,正向导通压降为2.2v,反向击穿电压为4v,为保证发光二极管被完全驱动,上拉电阻的阻值应为(5-2.2)v/10ma=280,由于图中未给出发光二极管额定电流,故无法计算使发光二极管通过额定电流时的上拉电阻阻值。 图二 led-red的参数单片机原理与应用第二次作业学号: 姓名:目录 一、题目及解题思路 二、硬件电路原理图 三、程序流程图与源程序 四、编程时遇到的问题一、题目及解题思路1.题目:汽车方向灯

7、控制系统2.内容:汽车在行驶时,有左转弯、右转弯、刹车、警示、停靠等操作。左转弯时,应使左头灯、左尾灯、仪表板左转指示灯闪烁。右转弯时,应使右头灯、右尾灯、仪表板右转指示灯闪烁。刹车时,左右两个尾灯亮。警示时,头灯、尾灯、仪表板指示灯等6个灯全闪烁。汽车停靠时,左右头灯、左右尾灯高频闪烁。3.要求:用按键开关代表汽车的相关操作,以led发光二极管代替汽车灯。高频闪烁频率为30hz,其它闪烁频率为1hz。4.解题思路: 题目只考虑了只按下某一个按键开关时头灯、尾灯、仪表板指示灯的工作状态。为将所有情况都考虑进去,需补上没有任何按键开关按下和同时有多个按键开关按下这两类情况。按照常理,没有任何按键

8、开关按下时,所有指示灯都应该处于熄灭状态。对于该题,同时有多个按键按下属于一种错误,这时应以某种方式提醒驾驶者,考虑到仪表板指示灯位于车内,可让仪表板左转指示灯和仪表板右转指示灯闪烁同时高频闪烁来提醒车内的驾驶者同时有多个按键被按下。频率是周期的倒数,闪烁频率为1hz意为1s闪一次,30hz为1s闪30次,即约33333us闪一次。为此,可设计一个500ms的延时子程序,使灯在1s内亮灭各一次,设置一个16640us的延时子程序,使灯在33280us内亮灭各一次(这里采取了近似的做法)。为满足题目中用按键开关控制led发光二极管的要求,可以将所有按键开关的一端全部连在p2口,另一端全部接地,将

9、p2口作为输入端。将所有led发光二极管的一端全部连在p1口,另一端全部接+5v高电平,将p1口作为输出端。这样便将按键开关控制led发光二极管转化为输入端控制输出端。二、硬件电路原理图硬件电路原理图如下图一所示:图一 用proteus 7.8绘制的硬件电路原理图 因为在电路图中插入太多汉字后再进行仿真会使proteus 7.8卡住,从而无法仿真。所以上述原理图中未用汉字标注每一个元器件的含义。现说明如下:s1、s2、s3、s4、s5分别表示左转弯指示按键开关、右转弯指示按键开关、刹车指示开关、警示指示开关、停靠指示开关,d1、d2、d3、d4、d5、d6分别表示左尾灯、左头灯、仪表板左转指示

10、灯、仪表板右转指示灯、右头灯、右尾灯,r1r6均为上拉电阻。和上次交的作业一样,二极管选用的是红色超亮发光二极管(led-red),其参数如下图二所示,图中显示其完全驱动电流为10ma,正向导通压降为2.2v,反向击穿电压为4v,为保证发光二极管被完全驱动,上拉电阻的阻值应为(5-2.2)v/10ma=280,由于图中未给出发光二极管额定电流,故无法计算使发光二极管通过额定电流时的上拉电阻阻值。 图二 led-red的参数3、 程序流程图与源程序1. 流程图(用edraw mind map 7.8制作): 2.源程序:org 0000h mov r0,#1fh jmp startorg 010

11、0h start: mov a,p2 cjne a,#0ffh,num1 jmp next1num1: cjne a,#0feh,num2 jmp next2num2: cjne a,#0fdh,num3 jmp next3num3: cjne a,#0fbh,num4 jmp next4num4: cjne a,#0f7h,num5 jmp next5num5: cjne a,#0efh,error jmp next6next1: mov p1,#0ffh ;next1在未按下任何按键时使用 jmp startnext2: mov p1,#0f8h ;next2为左转弯指示命令 call d

12、el500ms mov p1,#0ffh call del500ms jmp startnext3: mov p1,#0c7h ;next3为右转弯指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext4: mov p1,#0deh ;next4为刹车指示命令 jmp start next5: mov p1,#0c0h ;next5为警示指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext6: mov p1,#0cch ;next6为停靠指示命令 call del1

13、6640us mov p1,#0ffh call del16640us jmp starterror: mov p1,#0f3h ;error在同时按下了两个及以上按键时使用 call del16640us mov p1,#0ffh call del16640us jmp startdel500ms: mov r7,#25 ;延时500msdel1: mov r6,#200del2: mov r5,#50del3: djnz r5,del3 djnz r6,del2 djnz r7,del1 retdel16640us:mov r7,#65 ;延时16640us del4: mov r6,#1

14、28del5: djnz r6,del5 djnz r7,del4 retend4、 编程时遇到的问题以下是我编写的另一个程序,仿真结果表明它也满足题意,但其中有一个问题。org 0000h ljmp startorg 0100h start: mov a,p2 mov r1,a subb a,#0ffh jz next1 mov a,r1 subb a,#0fdh jz next2 mov a,r1 subb a,#0fch jz next3 mov a,r1 subb a,#0fah jz next4 mov a,r1 subb a,#0f6h jz next5 mov a,r1 subb

15、 a,#0eeh jz next6 jmp errornext1: mov p1,#0ffh ;next1在未按下任何按键时使用 jmp startnext2: mov p1,#0f8h ;next2为左转弯指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext3: mov p1,#0c7h ;next3为右转弯指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext4: mov p1,#0deh ;next4为刹车指示命令 jmp start next5: mov p

16、1,#0c0h ;next5为警示指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext6: mov p1,#0cch ;next6为停靠指示命令 call del16640us mov p1,#0ffh call del16640us jmp starterror: mov p1,#0f3h ;error在同时按下了两个及以上按键时使用 call del16640us mov p1,#0ffh call del16640us jmp startdel500ms: mov r7,#25 ;延时500msdel1: mov r6,#

17、200del2: mov r5,#50del3: djnz r5,del3 djnz r6,del2 djnz r7,del1 retdel16640us:mov r7,#65 ;延时16640us del4: mov r6,#128del5: djnz r6,del5 djnz r7,del4 retend该源程序的问题为:按照原理图和subb指令的定义(subb a,#data的功能为aa-data-cy),当未按下任何按键时,p2口输入的数据为0ffh。为判断是否有按键被按下,可以将p2口中的数值传送到累加器a中,再执行subb a,#0feh,之后判断a的值是否为0,若是,则表明没有任

18、何按键被按下。但仿真结果表明,如果这样,则上述程序中画横线处的5条语句均无法按照所希望的那样被执行,而其他语句能够行使相应功能。但将subb a,#0feh改为subb a,#0ffh,所有语句反而都能满足题目要求。 单片机原理与应用第三次作业学号: 姓名:目录 一、题目 二、硬件电路原理图 三、程序流程图与源程序一、题目及解题思路1.题目:8人抢答器。2.内容:在知识竞赛等场合,抢答器是经常用到的产品。用单片机设计一个具有优先权的8人抢答器,0号抢答器优先权最高,7号抢答器优先权最低。8位选手,8轮抢答,每位选手可以申请一次0号抢答器,1号抢答器,7号抢答器。也可以按照选手分数高低分配抢答器

19、优先级,如分数最低者用0号抢答器,一次类推。抢答成功者,对应的指示灯闪烁。3.要求:用按键开关代表抢答器按键操作,以led发光二极管代替指示灯。闪烁频率为1hz。(1)硬件:画出硬件电路原理图,考虑中断源扩展。 (2)软件:画出程序流程图,编写源程序,考虑优先级问题。 (3)调试:记录调试过程,分析调试结果。 二、硬件电路原理图硬件电路原理图如下图一所示:图一 用proteus 7.8绘制的硬件电路原理图 因为在电路图中插入太多汉字后再进行仿真会使proteus 7.8卡住,从而无法仿真。所以上述原理图中未用汉字标注每一个元器件的含义。现说明如下:start按键被按下表示允许抢答,end按键被

20、按下表示将所有发光二级管熄灭。start与end按键按下后不允许被自动弹开,按下其中一个按键前应将另一个断开,否则不起作用。为方便选手抢答,s0、s1、s2、s3、s4、s5、s6、s7按键按下后可被自动弹开(前提是按下的时间稍长,能被检测到,超过几个微秒即可),它们分别表示0、1、2、3、4、5、6、7号抢答器。若在规定的抢答时间内,同时被按下的所有按键中si(i=0,1,2,3,4,5,6,7)的优先级最高,则发光二极管di闪烁。若抢答时间结束且在规定时间内无任何抢答器对应的按键被按下,则d8亮。和上次交的作业一样,二极管选用的是红色超亮发光二极管(led-red),其参数如下图二所示,图

21、中显示其完全驱动电流为10ma,正向导通压降为2.2v,反向击穿电压为4v,为保证发光二极管被完全驱动,上拉电阻的阻值应为(5-2.2)v/10ma=280,由于图中未给出发光二极管额定电流,故无法计算使发光二极管通过额定电流时的上拉电阻阻值。 图二 led-red的参数5、 程序流程图与源程序2. 流程图(用edraw mind map 7.8制作): 2.源程序:org 0000h jmp startorg 0003h jmp int_0org 0013h jmp int_1org 0100hstart: mov sp,#60h setb ex0 setb it0 setb ex1 set

22、b it0 setb ea jmp int_0org 0200hint_0: jnb p3.1,int_0 ;保证只有在end按键断开时start按键才起作用 jnb p3.0,int_1 int_1: mov r7,#25 ;以下隐含了延时30s(实为30018075us)的延时程序del1: mov r6,#240del2: mov r5,#250del3: jb p3.0,int_0 jnb p2.0,exint1 ;若s0被按下,则跳转到exint1 jnb p2.1,exint2 ;若s1被按下,则跳转到exint2 jnb p2.2,exint3 ;若s2被按下,则跳转到exint

23、3 jnb p2.3,exint4 ;若s3被按下,则跳转到exint4 jnb p2.4,exint5 ;若s4被按下,则跳转到exint4 jnb p2.5,exint6 ;若s5被按下,则跳转到exint5 jnb p2.6,jump2 ;若s6被按下,则跳转到exint6 jnb p2.7,jump3 ;若s7被按下,则跳转到exint8 djnz r5,del3 djnz r6,del2 djnz r7,del1 jmp void ;若30s内无人抢答,则跳转到voidrecov: mov p0,#0ffh mov p1,#0ffh jb p3.0,int_0 ;若start按键被断

24、开,则跳转到int_0 jmp recovexint1:mov p1,#0feh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint1 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,recov ;若end按键被按下,则跳转到recov jmp exint1exint2:mov p1,#0fdh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint2 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,recov ;若end按键被按下,则

25、跳转到recov jmp exint2exint3:mov p1,#0fbh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint3 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,recov ;若end按键被按下,则跳转到recov jmp exint3exint4:mov p1,#0f7h call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint4 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,recov ;若end按键被按下,则跳转

26、到recov jmp exint4jump1: jmp recov ;中继jump2: jmp exint7 ;中继jump3: jmp exint8 ;中继exint5:mov p1,#0efh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint5 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,recov ;若end按键被按下,则跳转到recov jmp exint5exint6:mov p1,#0dfh call del500ms mov p1,#0ffh call del500ms jnb p3.0,ex

27、int6 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,recov ;若end按键被按下,则跳转到recov jmp exint6exint7:mov p1,#0bfh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint7 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,jump1 ;若end按键被按下,则跳转到jump1 jmp exint7exint8:mov p1,#7fh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint

28、8 ;保证只有在start按键断开时end按键才起作用 jnb p3.1,jump1 ;若end按键被按下,则跳转到jump1 jmp exint8void: mov p0,#0feh jnb p3.0,void ;保证只有在start按键断开时end按键才起作用 jnb p3.1,jump1 ;若end按键被按下,则跳转到jump1 jmp void del500ms: mov r7,#25 ;延时500ms(实为498825us)del4: mov r6,#50del5: mov r5,#198del6: djnz r5,del6 djnz r6,del5 djnz r7,del4 ret

29、end 说明:1.上述源程序中的中断没有实际用途,只是迫于题目要求而加了进去。因为上述源程序的主体是两个中断int_0与int_1,其他子程序只是为其服务,所以源程序的中断不会对其他程序产生干扰,故没有进行现场保护与现场恢复。又因为两个中断之间形成了无限循环,所以没有加reti指令;2.查附录b可知,执行一条jnb或jb或djnz指令需要24个晶振周期。则在已经选定晶振频率为12mhz的情况下(如下图三、图四所示),执行一条jnb或jb或djnz指令需要的时间为2us,由此可设计延时子程序del500ms和隐含在int_1、del1、del2和del3中的30s延时程序;3.jnb位移控制转移

30、指令能转移的范围有限。jump1、jump2、jump3的作用是帮助相应的jnb指令转移到其想转移到却超出其转移范围的地方,相当于中继。keil uvision2中的选项对话框 proteus 7.8中的选项对话框单片机原理与应用第四次作业学号: 姓名:目录 一、题目 二、硬件电路原理图 三、程序流程图与源程序 四、按题目要求设计却不能实现相关功能的原理图及其源程序1、 题目及解题思路1.题目:双机通讯2.内容:单片机串行通讯,需要的数据线少,且适合远距离传送,因此,应用广泛。设计一个双机通讯系统。要求甲机将从内部ram 40h开始的16个字节数据发送给乙机。乙机接收后将数据存放到内部ram

31、60h开始的区域,采用奇校验验证数据传送的正确性。3.要求:用按键开关启动传送,也可以用按键开关停止传送,数据传送期间led发光二极管闪烁,闪烁频率为1hz。 (1)硬件:画出硬件电路原理图,考虑按键中断及双机传送数据线的连接。 (2)软件:画出程序流程图,编写源程序,考虑led闪烁问题。 (3)调试:记录调试过程,分析调试结果。二、硬件电路原理图硬件电路原理图如下图一所示(未使用中断): 图一 用proteus 7.8绘制的硬件电路原理图 因为在电路图中插入太多汉字后再进行仿真会使proteus 7.8卡住,从而无法仿真。所以上述原理图中未用汉字标注每一个元器件的含义。现说明如下:u1为甲机

32、(发送数据),u2为乙机(接收数据)。按键开关闭合表示允许甲机发送数据,断开表示暂停甲机发送数据。甲机发送数据时,d1闪烁。和上次交的作业一样,二极管选用的是红色超亮发光二极管(led-red),其参数如下图二所示,图中显示其完全驱动电流为10ma,正向导通压降为2.2v,反向击穿电压为4v,为保证发光二极管被完全驱动,上拉电阻的阻值应为(5-2.2)v/10ma=280,由于图中未给出发光二极管额定电流,故无法计算使发光二极管通过额定电流时的上拉电阻阻值。 图二 led-red的参数6、 程序流程图与源程序3. 流程图(用edraw mind map 7.8制作): 4. 源程序:由教材第1

33、09面例7-4改编,没有使用中断,若乙机接收数据后校验正确,则向甲机回复正确标志ffh;若发现错误,则向甲机发送错误标志00h,并等待重新接收。如下:甲机发送程序:org 0000h jmp startorg 0100h jmp trlpstart: mov scon,#80h ;置串行方式2,禁止接收 orl pcon,#80h ;置smod=1 mov r0,#40h ;置发送数据区首址trlp: mov a,r0 ;读数据 mov c,psw.0 ;奇偶标志送tb8 mov tb8,cre: mov r1,#248 ;根据闪烁频率为1hz计算得出 mov r2,#2 mov r3,#24

34、8 mov r4,#2 jb p1.5,stop ;判断按键是否按下,若是,顺序执行,否则跳转 mov sbuf,a ;启动发送 jnb ti,$ ;等待一帧数据发送完毕 clr ti ;清发送中断标志 setb ren ;允许接收 clr ri ;清接收中断标志 jnb ri,$ ;等待接收回复信号l1: clr p1.0 call del jb p1.5,stop djnz r1,l1 mov r1,#248 djnz r2,l1l2: setb p1.0 call del jb p1.5,stop djnz r3,l2 mov r3,#248 djnz r4,l2 mov a,sbuf

35、;读回复信号 cpl a ;回复信号取反 jnz trlp ;非全0(回复信号ffh,错误),转重发 inc r0 ;全0(回复信号=ffh,正确),指向下一数据存储单元 cjne r0,#50h,trlp ;判16个数据发送完否-未完继续 sjmp $stop: mov p1,#0ffh jmp re del: mov r7,#25 ;延时1msdel1: mov r6,#20 del2: djnz r6,del2 djnz r7,del1 ret end 乙机接收程序:org 0000h jmp rxd2org 0100hrxd2: mov scon,#80h ;置串行方式2,禁止接收 o

36、rl pcon,#80h ;置smod=1 mov r0,#60h ;置发送数据区首址 setb ren ;启动接收rwap: jnb ri,$ ;等待一帧数据接收完毕 clr ri ;清接收中断标志 mov a,sbuf ;读接收数据,并在psw中产生接收数据的奇偶值 jb psw.0,one ;p=1,转另判 jb rb8,err ;p=0,rb8=1,接收有错;p=0,rb8=0,接收正确 ;继续接收rlop: mov r0,a ;存接收数据 inc r0 ;指向下一数据存储单元rit: mov a,#0ffh ;置回复信号正确 fdbk: mov sbuf,a ;发送回复信号 cjne

37、 r0,#70h,rwap ;判16个数据接收完否-未完继续 clr ren ;16个数据正确接收完毕,禁止接收 jmp $one: jnb rb8,err ;p=1,rb8=0,接收有错 jmp rit ;p=1,rb8=1,接收正确,继续接收err: clr a ;接收有错,置回复信号错误标志 jmp fdbk ;转发送回复信号end说明:已经选定晶振频率为12mhz,如下图三、图四所示:keil uvision2中的选项对话框 proteus 7.8中的选项对话框四、按题目要求设计却不能实现相关功能的原理图及其源程序甲机发送程序:org 0000h jmp startorg 0003h

38、jmp keyorg 0100h jmp trlpstart: call int_0 mov scon,#80h ;置串行方式2,禁止接收 orl pcon,#80h ;置smod=1 mov r0,#40h ;置发送数据区首址trlp: mov a,r0 ;读数据 mov c,psw.0 ;奇偶标志送tb8 mov tb8,cre: mov r1,#248 ;根据闪烁频率为1hz计算得出 mov r2,#2 mov r3,#248 mov r4,#2 jb p1.5,stop ;判断按键是否按下,若是,顺序执行,否则跳转 mov sbuf,a ;启动发送 jnb ti,$ ;等待一帧数据发送

39、完毕 clr ti ;清发送中断标志 setb ren ;允许接收 clr ri ;清接收中断标志 jnb ri,$ ;等待接收回复信号l1: clr p1.0 call del jb p1.5,stop djnz r1,l1 mov r1,#248 djnz r2,l1l2: setb p1.0 call del jb p1.5,stop djnz r3,l2 mov r3,#248 djnz r4,l2 mov a,sbuf ;读回复信号 cpl a ;回复信号取反 call int_0 jnz trlp ;非全0(回复信号ffh,错误),转重发 inc r0 ;全0(回复信号=ffh,正

40、确),指向下一数据存储单元 cjne r0,#50h,trlp ;判16个数据发送完否-未完继续 sjmp $stop: mov p1,#0ffh jmp re int_0: setb it0 setb ex0 setb ea setb p1.5 retkey: push psw push acc cpl p1.5 pop acc pop psw retidel: mov r7,#25 ;延时1msdel1: mov r6,#20 del2: djnz r6,del2 djnz r7,del1 ret end乙机接收程序同上。单片机原理与应用课程设计 学号: 姓名: 目录 一、题目 二、原理图

41、 三、软件框图 四、软件程序一、题目 人机接口设计 1: 4*4键盘输入 2:采用4位数码管显示 3:当按下某个键,数码管立即显示。 4:数码管按每1秒,右循环显示所按键值。如按下8键则显示 8000,0800,0080,0008,8000,. 要求: 1)设计出原理图,标注参数。 2)画出软件框图 3)编写软件(尽量详细注释)二、原理图硬件电路原理图如下图一所示,其各部分的放大图分别如图二、图三、图四、图五所示,各元器件的参数已标注在图中,各元器件的型号在图五后面有介绍:图一 用proteus 7.8绘制的硬件电路原理图图二 at89c51主机系统图三 p1口、p3口、4*4键盘与中断电路图四 译码器与数码管电路图五 p0口、p2口、排阻、译码器与数码管电路原理图中,译码器用的是74ls247,数码管用的是7seg-mpx1-ca共阳极数码管。两者组合后,译码器的输入与数码管的输出字形之间的关系(真值表)符合题意,即译码器的输入与数码管的输出字形之间的关系如下表所示:输入输出字形dcba0000000

温馨提示

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

评论

0/150

提交评论