1初二单片机课程教案第一次课单片机概述,单片机的应用范围,涉及到的一些电子电路知识。1.什么是单片机微型计算机由运算、控制、存储、输入、输出五部分组成。微型计算机单片微型计算机2.单片机的用途……凡是用到智能控制和自动控制的领域都离不开单片机。3.数据利用DP-801单片机处理的信息全部用两位的十进制数表示。通常有两种形式的数据:带点数:表示存储单元的地址不带点数:表示指令、代码4.输入、调试程序修改数据:[+1]/[-1]修改地址:[D/A]+[+1]/[-1]练习:读取前5个单元格中的数据。CPU:运算、控制AT89C2051芯片存储:硬盘、U盘24C02存储芯片输入:鼠标、键盘5个按键输出:显示器、打印机数码管、二极管0.0.0.1.0.2.0.3.0.4.0.5.0.6.0.7.0.8.000502040115………RES+1-1D/AWRI2存储数据:[WRI]运行程序:[D/A](1.0.)+[WRI]【练习】1.输入并运行程序0.0.000500040003000200010000020501152.输入18~22页上的6个实例,并运行程序。第二次课1.电路在生活中,开灯关灯是我们最熟悉的事物了。在DP-801上,我们利用指令来实现开灯关灯。DP-801单片机主板上的6个发光二极管的正极与电源正极相连,二极管的负极经限流电阻与输出口相连。2.接通指令(15)3接通指令功能:使N指向的输出口变为低电平,点亮发光二极管。DP-801单片机只有8个输出口,所以N的取值为00~07。其中00~05在正常状态下表示0~5这6个发光二极管。结束指令功能:告诉单片机一段程序的结束。使用DP—801单片机可以编写多段程序并能运行指定段的程序,就是靠结束指令来区分的。【例1】点亮5号灯。0.0.000515同学们会发现灯闪了一下就关上了,怎样延长灯亮的时间呢?3.延时指令(16)M→03时02分01秒000.1秒延时指令功能:使CPU停止工作,保持上一条指令执行后的状态在延时时间内不变,数码管显示倒计时。例如:延时5秒020501延时1.5秒021500【例2】让5号灯亮5秒钟0.0.000502050115【例3】让0号灯亮5秒,然后让1号灯亮2秒,最后让2号灯亮10秒。○○○○○○指令名称机器码助记符操作码操作数操作码操作数接通0000~07JTN结束15---JEISH---指令名称机器码助记符操作码操作数操作码操作数延时02(01~99)(00~03)YSN,M4大部分同学的实验结果是:0号灯亮了17秒,1号灯亮了12秒。因为一个灯点亮后,没有关闭,就点亮下一个灯了。3.断开指令(17)断开指令功能:使N指向的输出口变为高电平,使发光二极管关闭。【例3】让0号灯亮5秒,然后让1号灯亮2秒,最后让2号灯亮10秒。0.0.0000020501010000010202010101000202100115【练习】点亮6个发光二极管,延时5秒。第三次课1.转向指令(20)转向指令功能:又叫无条件转移指令,运行到这条指令,就转去执行N地址处的指令。【例1】让0号灯闪起来,闪动间隔0.5秒。【例2】让0号灯与1号灯交替闪起来,闪动间隔0.5秒。指令名称机器码助记符操作码操作数操作码操作数断开0100~07DKN指令名称机器码助记符操作码操作数操作码操作数转向1000~99(地址)ZXN闪点亮延时关闭延时0.0.00000205000100020500100015交替闪点亮0号延时关闭0号点亮1号延时关闭1号0.0.00000205000100000102050001011000155【例3】让0,1,2号灯模仿交通灯,0号灯亮5秒,1号灯亮2秒,2号灯亮5秒,无限循环。0.0.000002050101000001020201010100020205010102100015【练习】模仿十字路口的交通灯工作。西东○○○北○○○南第四次课编写程序的过程可以分为四个步骤【例1】让0号灯亮5秒钟第一步是画流程图。就是把任务用流程图的方式表示出来,形式直观,一目了然。见下图。第二步是根据流程图中的任务选择指令,利用指令助记符形式来编写源程序。第三步是按照指令表的规定,把助记符指令翻译成机器码。机器码,也称作目标程序。只有目标程序才能输入到单片机中由CPU执行。第四步是给指令代码分配存储地址。DP-801型单片机要求从存储器的第一个单元开始存放数据。第一个单元的地址号是00,为了把地址号与存储数据区分开,通常把地址号记作“0.0.”,写在第一条指令机器码的左边。安排存储地址,并不是在每个机器码的左边都写上地址号。而是只在每条指令的第一个机器码左边,写上分给它的一个地址号。第二步第四步第三步源程序地址机器码注释开始结束点亮0号发光二极管延时5秒关闭0号发光二极管6JTN0.0.0000;点亮0号发光二极管YSNM0.2.020501;延时5秒DKN0.5.0100;关闭0号发光二极管JIESH0.7.15;结束【练习】1.让6个发光二极管从前向后循环跑,延时0.1秒。2.让6个发光二极管由前向后,再由后向前来回跑,延时0.1秒。(23页练习)3.顺序点亮0至5号发光二极管,再逆序关闭这6个发光二极管,循环。4.让0号灯闪5次。5.让0号灯与5号灯交替闪3次。第五次课【例1】让0号灯闪5次。方法一:15这种方法简单,但使得程序冗长,浪费时间。如果闪的次数更多,实现起来困难。方法二:用调用子程序的方法(33)000002010101000201010.0.000002010101000201010000020101010002010100000201010100020101000002010101000201015段程序完全相同7调用指令功能:用于调用子程序。把程序中需要多次重复的一段程序作为子程序,需要的时候只要用调用指令就可以了。返回指令功能:由子程序返回到主程序中调用指令的下一条去执行。是子程序结束的标志。将方法一中需要重复的程序(0号灯闪1次)作为子程序,写在主程序的后面,在主程序中连续调用5次,即可以实现让0号灯闪5次的效果,大大简化了程序。如下图所示:主程序一定从起始单元地址输入,然后再输入子程序。主程序与子程序之间可以空若干个单元,主程序以15为结束标志,子程序以13为结束标志。这种方法可以大大简化程序。【练习】1.让4号灯闪5次。指令名称机器码助记符操作码操作数操作码操作数调用1200~99(地址)DYN返回13---FH←主程序←子程序000002010101000201011312M12M12M12M12M150.0.N:M:M为子程序的起始地址需要重复循环的部分做子程序。82.让2号灯与3号灯交替闪4次。3.让6个发光二极管由前向后,再由后向前来回跑3次。4.顺序点亮0至5号发光二极管,再逆序关闭这6个发光二极管,循环6次。第六次课【例1】让0号灯闪3次,然后1号灯闪3次,再让2号灯闪3次。主程序子程序1000002010001000201001312M12M12M12L12L……150.0.N:M:子程序20001020100010102010013L:子程序30002020100010202010013P:9当程序中出现多个子程序时,主程序从起始单元地址输入,然后输入子程序,多个子程序之间没有先后次序,执行的顺序由主程序来决定,每个子程序都以13为结束标志。【练习】1.让0号灯闪1次,让1号闪2次,让2号闪3次,让3号闪4次,让4号闪5次,让5号闪6次。2.让0、3号灯交替闪3次,然后1、4号交替闪3次,再2、5号交替闪3次,大循环。第七次课【练习】1.让发光二极管按0-5-4-1-2-3-4-1-0-5的顺序跑,循环3次。2.让发光二极管按2-3-4-1-0-5-4-1-2-3的顺序跑,循环3次。3.让0号灯闪3次,然后从0跑到5,再让5号灯闪3次,再从5跑到0,大循10环。分析:这三道题有共同的特点,都用到了6个发光二极管的闪,将每个发光二极管闪一次的过程作为子程序。画图→写指令→分配地址→上机提示:1.子程序的起始单元地址最大只能为9.9.2.尽可能给主程序留出足够的空间。3.数据范围00~99地址范围0~255第八次课1.清用户程序(1)清成15主程序12A12B12C12D12E……150.0.N:子程序10000020100010002010013A:子程序20001020100010102010013B:子程序30002020100010202010013C:子程序40003020100010302010013D:子程序50004020100010402010013D:子程序60005020100010502010013D:110.0.140215(2)清成000.0.140200(无法清掉15)【练习】1.2、3号交替闪,1、4号交替闪,0、5号交替闪,循环3次。2.0、5号交替闪,1、4号交替闪,2、3号交替闪,循环6次。3.0、5号同闪,1、4号同闪,2、3号同闪,0、5号同闪,循环3次。4.0、3号同闪3次,1、4号同闪3次,2、5号同闪3次,循环3次。5.让2、3号交替闪90次。第九次课1.奏乐指令(24)奏乐指令功能:从喇叭插座上输出音频信号,能演奏3组音程,N为音高,即:低音01——07中音11——17高音21——27休止符00M为音长006十六分音符100毫秒=0.1秒016八分音符200毫秒=0.2秒026.八分符点音符300毫秒=0.3秒036四分音符400毫秒=0.4秒046.四分符点音符600毫秒=0.6秒056-二分音符800毫秒=0.8秒066---全音符1.6秒072.4秒083.2秒096.4秒10长期发音指令名称机器码助记符操作码操作数操作码操作数奏乐03音高音长ZYNM1211停止发音【练习】1.1155665|4433221|2.333|333|35123-|444.4|433|55421-|3.25同时0号灯闪,模仿救护车警笛声。4.356–0|352–0|3561-|65–|132-|235–0|236.–0|6.12–3-|2165..1-|演奏1个音的时间内,1个灯完成闪的动作。00000311000311010100031100第十次课【练习】用奏乐指令延时,发音配合灯闪。1.0、1同闪→1、2同闪→2、3同闪→3、4同闪→4、5同闪→3、4同闪→2、3同闪→1、2同闪→0、1同闪,循环3次。2.0、1、2同闪→1、2、3同闪→2、3、4同闪→3、4、5同闪→2、3、4同闪→1、2、3同闪→0、1、2同闪,循环3次。3.2、5同闪→1、4同闪→0、3同闪→1、4同闪→2、5同闪,循环4次。4.0、1、2依次闪,5、4、3依次闪,交替闪5次。5.0、1与5、4交替闪,1、2与3、4交替闪,循环10次,用数码管计数。6.0、3交替闪→1、4交替闪→2、5交替闪→1、4交替闪→0、3交替闪,循环30次,数码管计数,然后6个发光二极管同闪10次,计数。7.0、1、2依次闪,5、4、3依次闪,循环10次,计数,然后0至5至0依次闪,循环20次,计数。...13第十一次课1.显示指令(55)显示指令功能:可以开关数码管。N为00表示关闭;N为01表示打开。当执行关数码管指令后,尽管看不到,但送给数码管的数都是有效的,当再执行开数码管指令后,数码管显示最后一次送给它的数。这条指令是为了节省电源而设置的。【例1】关闭数码管5秒钟。0.0.050002050115【例2】让数码管亮5秒钟,灭5秒钟,循环3次。0.0.121012101210151.0.0501020501050002050113试一试:例1与例2中,用奏乐指令来代替延时可以吗?(不可以)【例3】将0号灯点亮5秒钟,同时关闭数码管。0.0.0500000002050115试一试:此例题用奏乐指令来代替延时可以吗?(可以)说明,奏乐指令不能直接与显示指令搭配使用。2.送数指令(44)指令名称机器码助记符操作