单片机基础实践_第1页
单片机基础实践_第2页
单片机基础实践_第3页
单片机基础实践_第4页
单片机基础实践_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机基础实践单片机基础实践 实验一 proteus和keil软件的使用一.实验目的1.学会在proteus仿真软件画硬件电路。2.学会使用keil软件编程3.学会keil软件和proteus仿真软件联调。 二.实验内容 1.单片机最小系统图1 单片机最小系统原理图80c5180c51的引脚封装的引脚封装总线型总线型非总线型非总线型6 下图为p0口的某位p0.n(n=07)结构图,它由一个输出锁存器、一个转换开关mux、两个三态输入缓冲器和输出驱动电路及控制电路组成。从图中可以看出,p0口既可以作为i/o用,也可以作为地址/数据线用。一、一、p0p0口的结构口的结构123456abcd6543

2、21dcbatitlenumberrevisionsizebdate:12-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:读 锁 存 器写 锁 存 器内 部 总 线读 引 脚p0.x锁 存 器dclqq_110&t1t2p0.x引 脚vccmux地 址 /数 据控 制 c1、p0口作为普通i/o口(输出口) cpu发出控制电平“0 0”封锁“与”门,将输出上拉场效应管t1截止,同时使多路开关mux把锁存器与输出驱动场效应管t2栅极接通。故内部总线与p0口同通。由于输出驱动级是漏极开路电路,若驱动nmos或其它拉电流负载

3、时,需要外接上拉电阻。p0的输出级可驱动8个lsttl负载。123456abcd654321dcbatitlenumberrevisionsizebdate:12-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:读 锁 存 器写 锁 存 器内 部 总 线读 引 脚p0.x锁 存 器dclqq_110&t1t2p0.x引 脚vccmux地 址 /数 据控 制 c 下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。 如果此时该端口的负载恰是

4、一个晶体管基极,且原端口输出值为1,那么导通了的pn结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器q端信号而设,读输出锁存器可避免上述可能发生的错误。123456abcd654321dcbatitlenumberrevisionsizebdate:12-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:读 锁 存 器写 锁 存 器内 部 总 线读 引 脚p0.x锁 存 器dclqq_110&t1t2p0.x引 脚

5、vccmux地 址 /数 据控 制 c2、p0口作为普通i/o口(输入口) p0口必须接上拉电阻; 在读信号之前数据之前,先要向相应的锁存器做写1操作的i/o口称为准双向口;123456abcd654321dcbatitlenumberrevisionsizebdate:12-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:读锁存器写锁存器内部总线读引脚p0.x锁存器dclqq_110&t1t2p0.x引脚vccmux地址/数据控制cr1vcc 二、二、p2p2口的结构口的结构1.p21.p2口作为普通口作为普通i/oi

6、/o口口 cpu cpu发出控制电平发出控制电平“0” 0” ,使多路开关,使多路开关muxmux倒向倒向锁存器输出锁存器输出q q端,构成一个准双向口。其功能与端,构成一个准双向口。其功能与p1p1相同。相同。123456abcd654321dcbat itlenum berr evisionsizebdate:12-feb-2011sheet of file:h:dzgcb ackup of sheet1.ddbdrawn b y:读 锁 存 器写 锁 存 器内 部 总 线读 引 脚p2.x锁 存 器dclq10tp2.x引 脚vc cmux地 址控 制 cr1 2.p22.p2口作为地址

7、总线口作为地址总线 在系统扩展片外程序存储器在系统扩展片外程序存储器扩展数据存储器且容量超过扩展数据存储器且容量超过256b256b时,时,cpucpu发出控制电平发出控制电平“1”1”,使多路开关,使多路开关muxmux倒内部倒内部地址线。地址线。123456abcd654321dcbatitlenumberrevisionsizebdate:12-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:读锁存器写锁存器内部总线读引脚p2.x锁存器dclq10tp2.x引脚vccmux地址控制 cr1三、三、 p1p1口的内部结构口的

8、内部结构 p1口是80c51的唯一的单功能口,仅能用作数据输入输出口,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成-准双向口。同p2口相同,内部设有上拉电阻(约30k)。123456abcd654321dcbatitlenumberrevisionsizebdate:12-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:读锁存器写锁存器内部总线读引脚p1.x锁存器dclqq_tp1.x引脚vccr四、四、 p3p3口的内部结构口的内部结构 一、作为通用i/o口与p1口类似-准双向口(w=1) p1口是80c51的唯一

9、的单功能口,仅能用作数据输入输出口,它由一个输出锁存器、三个输入缓冲器、一个与非门和输出驱动电路组成。同p2口相同,内部设有上拉电阻(约30k)。123456abcd654321dcbat itlenum berr evisionsizebdate:12-feb-2011sheet of file:h:dzgcb ackup of sheet1.ddbdrawn b y:读 锁 存 器写 锁 存 器内 部 总 线读 引 脚p3.x锁 存 器dclqtp3.x引 脚vc cr&第 二 输 出 功 能 w(txd、 wr、 rd)(rxd、 int0、 int1、 t0、 t1)第 二 输

10、 入 功 能_第二功能各引脚功能定义:p3.0:rxd串行口输入p3.1:txd串行口输出p3.2:int0外部中断0输入p3.3:int1外部中断1输入p3.4:t0定时器0外部输入p3.5:t1定时器1外部输入p3.6:wr外部写控制p3.7:rd外部读控制12345678910111213141516abcd16151413121110987654321dcbatitlenumberrevisionsizeedate:3-oct-2011 sheet of file:e:2010级单片机基础实践单片机基础实践电路图最小系统mydesign.ddbdrawn by:c230pc130pjz

11、11.0592r110k+c8c111223344k2p1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78rst9p3.010p3.111p3.212p3.313p3.414p3.515p3.616p3.717xtal118xtal219gnd20p2.021p2.122p2.223p2.324p2.425p2.526p2.627p2.728psen29ale30ea31p0.732p0.633p0.534p0.435p0.336p0.237p0.138p0.039vcc40at89c52123456789j5con9p12p13p14p15p16p17p30p31

12、p33p34p35p36p37p11p18p32p01p02p03p04p05p06p07p08eap21p22p23p24p25p26p27p28alepsevccr21kvcc123456abcd654321dcbat itlen um berr evisionsizebd ate:13-feb-2011sheet of file:h :dzgcb ackup of sheet1.d d bd raw n b y:晶 振 周 期s状 态s1s2s3s4s5s6机 器 周 期 tc yp1p280c51振 荡 器分频器80c51的时钟信号的时钟信号 晶振周期(即时钟周期)为最小时序单位。晶振

13、周期(即时钟周期)为最小时序单位。 晶振信号经分频器后形成两相错开的信号晶振信号经分频器后形成两相错开的信号p1和和p2。 p1和和p2的周期也称为的周期也称为s状态,它是晶振周期的状态,它是晶振周期的2倍。即一个倍。即一个s状态包含两状态包含两个晶振周期。个晶振周期。cpu以以p1和和p2为基本节拍指挥各个部件协调的工作为基本节拍指挥各个部件协调的工作 晶振信号经晶振信号经12分频后形成机器周期。分频后形成机器周期。 当单片机的时钟系统工作正常的时候,在当单片机的时钟系统工作正常的时候,在ale引脚可以观察引脚可以观察到稳定烦人脉冲信号,其频率为:晶振频率到稳定烦人脉冲信号,其频率为:晶振频

14、率/6。单片机工作的基本时序单片机工作的基本时序 机器周期和指令周期机器周期和指令周期 (1) 振荡周期振荡周期: 也称时钟周期也称时钟周期, 是指为单片机提是指为单片机提供时钟脉冲信号的振荡源的周期供时钟脉冲信号的振荡源的周期. 晶振晶振11.0592mhz。 (2) 状态周期状态周期: 每个状态周期为时钟周期的每个状态周期为时钟周期的 2 倍倍, 是振荡周期经二分频后得到的。是振荡周期经二分频后得到的。 (3) 机器周期机器周期: 一个机器周期包含一个机器周期包含 6 个状态周个状态周期期s1s6, 也就是也就是 12 个时钟周期。个时钟周期。 在一个机器周在一个机器周期内期内, cpu可

15、以完成一个独立的操作。可以完成一个独立的操作。 (4) 指令周期指令周期: 它是指它是指cpu完成一条操作所需完成一条操作所需的全部时间。的全部时间。 每条指令执行时间都是有一个或几个每条指令执行时间都是有一个或几个机器周期组成。机器周期组成。mcs - 51 系统中系统中, 有单周期指令、有单周期指令、双周期指令和四周期指令。双周期指令和四周期指令。 2. proteus isis主窗口界面图2 proteus isis主窗口界面203.keil uvision3软件2122232425三.实验步骤1.使用proteus软件搭建硬件电路。2.使用keil软件编程3.运行观察实验结果四.思考题

16、:1.用单片机i/o驱动一个led灯。2. 用单片机两个i/o驱动两个led灯。3.用单片机三个i/o驱动三个led灯。五.实验报告:(1)proteus仿真软件使用方法。(2)keil uvision3软件使用方法。 实验二实验二 发光二级管的应用仿真发光二级管的应用仿真 一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会发光二级管的应用发光二级管的应用二.实验内容1.电路原理图123456abcd654321dcbat itlen u m b e rr e v isio ns iz ebd a te :1 3 -f e b -2 0 1 1s

17、 h e e t o f f ile :h :d z g c b a c k u p o f s h e e t1 .d d bd ra w n b y :d 1d 2d 3d 4d 5d 6d 7d 8r 1r 2r 3r 4r 5r 6r 7r 8v c cp1.0p1.1p1.2p1.3p1.4p1.5p1.6p1.789c51 图2.1 发光二级管电路图 三.实验步骤1.使用proteus软件搭建硬件电路。2.使用keil软件编程3.运行观察实验结果四.思考题1.8个发光管由上至下间隔1s流动,其中每个管亮250ms,灭250ms。2.间隔300ms第一次一个管亮流动一次,第二次两个管

18、亮流动,依次到8个管亮,然后重复整个过程。3.间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。实验三实验三 蜂鸣器、继电器的驱动仿真蜂鸣器、继电器的驱动仿真 一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会蜂鸣器、继电器的的应用 二.实验内容 1.图1 蜂鸣器驱动电路 2.图2 继电器驱动电路3.实验内容采用p2.1口驱动蜂鸣器电路和采用p2.1口驱动继电器电路。三.实验步骤1.使用proteus软件搭建硬件电路。2.使用keil软件编程

19、3.运行观察实验结果四、思考题1.驱动蜂鸣器改用npn三极管,更改程序,观察现象。2.驱动继电器改用npn三极管,更改程序,观察现象。3.设计电路并编程,用pnp三极管驱动继电器,继电器带动蜂鸣器、led灯,实现蜂鸣器和led灯交替工作。实验四 数码管显示应用仿真 一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会数码管的驱动方法 二.实验内容 静态显示就是当显示器显示某一字符时,相应的发光二极管恒定地导通或截止。这种显示方法的每一位都需要有一个8位输出口控制。123456abcd654321dcbatitlenumberrevisionsize

20、bdate:18-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:d1d2d3d4d5d6d7d8r1r2r3r4r5r6r7r8vccabcdefgdpd1d2d3d4d5d6d7d8r1r2r3r4r5r6r7r8abcdefgdp共阳极共阴极三.实验步骤1使用proteus软件搭建硬件电路。2使用keil软件编程3运行观察实验结果四.思考题1.使用两个数码管接到两个i/o口作静态扫描。2.使用三个数码管接到三个i/o口作静态扫描。3.使用四个数码管接到四个i/o口作静态扫描。实验五 键盘的应用仿真 一.实验目的 1.学会在

21、proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会键盘的应用方法 二.实验内容 1.键盘分独立键盘和矩阵键盘。 独立键盘由一组相互独立的按键组成。这些按键直接与单片机的i/o口相连接,即每个按键独占一条i/o口,接口简单,独立式键盘因占用单片机的硬件资源较多,只适合按键较少的场合使用。 2.键盘检测分查询法和中断法 本例采用的是查询法,利用为判断指令实现键盘功能。每按下一次键盘会使计数标志加1. 电路图:xtal218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p

22、0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427u1at89c52r110k 按键在闭合和断开时,触点会存在抖动现象,按键抖动的时间一般为510ms,抖动会产生一次按键多次处理的问题

23、,应该采取措施消除抖动的影响。123456abcd654321dcbatitlenumberrevisionsizebdate:19-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:理想波形实际波形稳定闭合按下抖动释放抖动 程序中,对键盘的处理包括以下几个方面: (1)检测按键是否按下; (2)如果检测到按键被按下,可以执行软件去抖动,消除抖动的影响; (3)准确判断是哪个按键被按下; (4)转向相应的程序处理子程序。 三、实验步骤 1.绘制硬件电路图 2.软件编程 3.观察运行现象 四.思考题 1.用两个按键设计具有加减功能计

24、数器计数09。 2. 用按键做计数99后,再按重复上个过程。 3.做一键识别功能,要求每按一次按键,实现不同功能流水灯(用led灯实现)。实验六 定时器仿真 一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会定时器使用方法二.实验内容 51单片机定时/计数器的工作由两个特殊功能寄存器控制。tmod(工作方式寄存器)和tcon(控制寄存器) 1.工作方式寄存器tmod 工作方式寄存器tmod用于设置定时/计数器的工作方式,低四位用于t0的设置,高四位用于t1的设置。其格式如下:位序号d7d6d5d4d3d2d1d0位符号gatem1m0gatem1

25、m0tc/tc/gate:门控位。gate0时,只要用软件使tcon中的tr0或tr1为1,可以启动定时/计数器工作;gata1时,要用软件使tr0或tr1为1,同时外部中断引脚int0或int1也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了int0或int1引脚为高电平这一条件。 :定时/计数模式选择位。 0为定时模式; =1为计数模式。m1m0:工作方式设置位。定时/计数器有四种工作方式,由m1m0进行设置。c/tc/tm1m0工作方式工作方式说说 明明00方式方式013位定时位定时/计数器(常用串并行移位)计数器(常用串并行移位)01方式方式116位定时位定时/计

26、数器(常用的定时计数器(常用的定时/计数器)计数器)10方式方式28位自动重装定时位自动重装定时/计数器(适合于脉冲信号发生器)计数器(适合于脉冲信号发生器)11方式方式3t0分成两个分成两个8位定时位定时/计数器;计数器;t1此方式停止计数(常用于串此方式停止计数(常用于串行口波特率发生器)行口波特率发生器)c/t2.控制寄存器控制寄存器tcon tcon寄存器为定时器寄存器为定时器/计数器控制寄存器,可以进行位寻址。计数器控制寄存器,可以进行位寻址。tcon的的高高4位用于控制定时位用于控制定时/计数器的启动和中断申请。低计数器的启动和中断申请。低4位用于控制外部中断。位用于控制外部中断。

27、tf1(tcon7):):t1溢出中断请求标志位。溢出中断请求标志位。t1计数溢出时由硬件自计数溢出时由硬件自动置动置tf1为为1。cpu响应中断后响应中断后tf1由硬件自动清由硬件自动清0。t1工作时,工作时,cpu可随时查询可随时查询tf1的状态。所以,的状态。所以,tf1可用作查询测试的标志。可用作查询测试的标志。tf1也可也可以用软件置以用软件置1或清或清0,同硬件置,同硬件置1或清或清0的效果一样。的效果一样。tr1(tcon6):):t1运行控制位。运行控制位。tr1置置1时,时,t1开始工作;开始工作;tr1置置0时,时,t1停止工作。停止工作。tr1由软件置由软件置1或清或清0

28、。所以,用软件可控制定时。所以,用软件可控制定时/计数器的启动与停止。计数器的启动与停止。tf0(tcon5):):t0溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与tf1类同。类同。tr0(tcon4):):t0运行控制位,其功能与运行控制位,其功能与tr1类同。类同。位序号位序号d7d6d5d4d3d2d1d0位符号位符号tf1tr1tf0tr0ie1it1ie0it0 3.定时定时/计数器的工作方式计数器的工作方式 一、方式一、方式0 方式方式0为为13位计数,由位计数,由tl0的低的低5位(高位(高3位未用)和位未用)和th0的的8位组成。位组成。tl0的低的低5位溢出时向位

29、溢出时向th0进位,进位,th0溢出时,溢出时,置位置位tcon中的中的tf0标志,向标志,向cpu发出中断请求。发出中断请求。 16x=2 -n二、方式二、方式1 方式方式1的计数位数是的计数位数是16位,由位,由tl0作为低作为低8位、位、th0作为高作为高8位,组成了位,组成了16位加位加1计数器计数器 。计数个数与计数初值的关系为:计数个数与计数初值的关系为: :例1方式0:使用t0工作方式0计数6000,c指令如下:tl0=(8192-6000)%32; /取5位的余数th0=(8192-6000)/32; /取5位的商例2方式1:使用t0工作方式0计数50000,c指令如下:tl0

30、=(65536-50000)%256; /取8位的余数th0 =(65536-50000)/256; /取8位的商例3方式2:使用t0工作方式0计数100,c指令如下:tl0=256-100; /填入计数值th0=256-100; /填入自动加载值 4.定时器、计数器的应用 (1)中断法:即定时器/计数器中断的设定、计数量的设定、启动定时器/计数器以及中断子程序的编写; (2)查询法:即不需要中断设定,不需要中断中断子程序,只要设定计数量及启动定时器/计数器,然后判断定时器/计数器的标志位(tfx)是否动作,以决定程序流程。 电路图:d0d1d2d3d4d5d6d0d1d2d3d4d5d6xt

31、al218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/

32、a1326p2.6/a1427u1at89c52 三、实验步骤 1.绘制硬件电路图 2.软件编程 3.观察运行现象 四.思考题 1.在本实验里,所采用的是timer 0,若采用timer 1,应如何修改? 2.在本实验里,所采用的是timer 0,工作方式1。若改用工作方式2来完成本实验功能,程序应如何修改? 3.设单片机的晶振频率为12mhz,使用定时器1,在方式0下由p1.0输出周期为10ms的等宽方波,以查询方式完成。实验七 中断的应用仿真 一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会中断使用方法二二.实验内容实验内容单片机的中断系统

33、结构单片机的中断系统结构执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回56ea (ie7), cpu中断允许(总允许)位。中断允许(总允许)位。ea (ie5),定时,定时/计数器计数器t2中断允许位;中断允许位;es (ie4),串行口中断允许位;,串行口中断允许位;et1(ie3),定时,定时/计数器计数器t1中断允许位;中断允许位;ex1(ie2),外部中断,外部中断0允许位;允许位;et0(ie1),定时,定时/计数器计数器t0中断允许位;中断允许位;ex0(ie0),外部中断,外部中断0允许位;允许位;例:例:ea=1;/打开全局中断控制打开全局中断控制

34、ea=0;/关闭全部中断关闭全部中断ps (ip4),串行口中断优先级控制位;,串行口中断优先级控制位;pt1(ip3),定时,定时/计数器计数器t1中断优先级控制位;中断优先级控制位;px1(ip2),外部中断,外部中断0中断优先级控制位;中断优先级控制位;pt0(ip1),定时,定时/计数器计数器t0中断优先级控制位;中断优先级控制位;px0(ip0),外部中断,外部中断0中断优先级控制位;中断优先级控制位;例:例:ps=1;/串口中断定义为高优先级中断串口中断定义为高优先级中断 ps=0;/串口中断定义为默认优先级中断串口中断定义为默认优先级中断 控制寄存器控制寄存器tcon tcon寄

35、存器为定时器寄存器为定时器/计数器控制寄存器,字节地址为计数器控制寄存器,字节地址为88h,可以进行,可以进行位寻址。位寻址。tcon的高的高4位用于控制定时位用于控制定时/计数器的启动和中断申请。低计数器的启动和中断申请。低4位用位用于控制外部中断。于控制外部中断。ie1(tcon3):外部中断):外部中断int1请求标志。请求标志。ie1=1时表示时表示int1中断申中断申请。请。it1(tcon2):外部中断):外部中断int1触发方式设置位。触发方式设置位。it1=0时为电平触时为电平触发方式。发方式。it1=1时为边沿触发方式(下降沿有效)。时为边沿触发方式(下降沿有效)。ie0(t

36、con1):外部中断):外部中断int0请求标志。请求标志。ie0=1时表示时表示int0中断申中断申请。请。it0(tcon0):外部中断):外部中断int0触发方式设置位触发方式设置位 ,其功能与,其功能与it1类同。类同。位序号位序号d7d6d5d4d3d2d1d0位符号位符号tf1tr1tf0tr0ie1it1ie0it0中断源中断源默认中断级默认中断级别别中断序号中断序号(c语言用)语言用)入口地址入口地址(汇编语言用)(汇编语言用)int0外部中断外部中断0最高最高00003ht0定时器定时器/计数器计数器0中断中断第第21000bhint1外部中断外部中断1第第320013ht1

37、定时器定时器/计数器计数器1中断中断第第43001bhti/ri串行口中断串行口中断第第540023ht2定时器定时器/计数器计数器2中断中断最低最低5002bh52单片机中断优先级 中断的应用 1.中断设定 包括开启中断开关(即ie寄存器的设定)、中断优先级的设定(即ip寄存器的设定)、中断信号的设定(即tcon寄存器的设定)等。 例:ie=0 x81;/启用int0中断 ie=0 x84; /启用int1中断 ie=0 x85; /启用int0 、int1中断 ip=0 x04;/设定int1中断具有最高优先级 tcon=0 x0c;/设定int1采用下降沿触发方式 2.中断子程序 voi

38、d 中断子程序名称(void)interrupt 中断号 定时器/计数器的中断设定 例:定时器0的工作方式1中断模板。#includevoid main() tmod=0 x01; th0=(65536-50000)/256 tl0= (65536-50000)%256 /ie=0 x82; /开启中断总开关及t0中断 ea=1; et0=1; /ip=0x02; /提升t0中断的优先等级 tr0=1; /启动timer 0void time0() interrupt 1/中断子程序中断函数不能返回任何值,中断函数不带任何参数电路图d0d1d2d3d4d5d6d7d7d6d5d4d3d2d1d

39、0xtal218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2

40、.5/a1326p2.6/a1427u1at89c52d1led-bibyd2led-bibyd3led-bibyd4led-bibyd5led-bibyd6led-bibyd7led-bibyd8led-bibyr1510rr2510rr3510rr4510rr5510rr6510rr7510rr8510r 三、实验步骤 1.绘制硬件电路图 2.软件编程 3.观察运行现象 四.思考题 1.在本实验里,所采用的是int0,若采用int1,应如何修改? 2.使用定时器计数器中断方法实现计数00-99。(使用上节电路图) 3.使用一个外部中断,做一键识别功能,要求每按一次按键,实现不同功能流水灯(

41、用led灯实现)。实验八 串行口应用仿真 一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会串行口使用方法 二.实验内容 1.并行与串行基本通信方式 (1)并行通信是将数据字节(8位)中的一位用一条数据线,同时进行传送。 (2)串行通信是将数据字节(8位)在一条传输线上逐位地传送,外加一条公共信号线和控制信号线。因此一次只能传送一位,所以对于一个字节的数据,至少要8次才能送完。2.串行通信方式(1)异步串行通信方式 是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。(2)同步串行通信方式 同步通信要建立发送时钟和接收时钟的直接控制,

42、使双方达到完全同步。3.串行口 发送时数据由txd端发出,接收时数据由rxd端输入,有两个物理上独立的发送/接收缓冲器sbuf。4.串行口控制寄存器 scon 方式0:波特率是固定的,为fosc/12。 方式2:波特率由振荡频率fosc和smod(pcon7)所决定。其对应公式为: 波特率=(2smod/64) fosc 方式1和方式3:波特率由定时器/计数器t1的溢出率和smod决定,对应公式为: 波特率=(2smod/32) (t1溢出率) fosc为系统晶振频率,通常为12mhz或11.0592mhz;smod是pcon寄存器的最高位;t1溢出率既定时器t1溢出的频率。sm2:多机通信控

43、制位。主要用于方式主要用于方式2 2和方式和方式3 3。方式0和方式1是非多机通信,设置sm2=0。ren:串行接收允许位。由软件控制,0时禁止接收;1时允许接收。tb8:在方式2或方式3中,是发送数据的第9位,奇偶校验位或地址帧/数据帧的标志位。在方式在方式0和方式和方式1中,该位不用。中,该位不用。rb8:在方式2或方式3中,是接收数据的的第9位,奇偶校验位或地址帧/数据帧的标志位。在方式在方式0和方式和方式1中,该位不用。中,该位不用。 ti:发送中断标志位。串行发送停止位时,由内部硬件使ti置1,向cpu发中断申请,必须由软件清0。ri:接收中断标志位。串行接收停止位时,由内部硬件使r

44、i置1,向cpu发中断申请,必须由软件清0。d7d6d5d4d3d2d1d0smodgf1gf0pdidl 6. 串行口的工作方式 方式方式0 1、数据输出、数据输出 2、数据输入、数据输入 方式1 1、串行发送、串行发送 2、串行接收(设置、串行接收(设置ren=1) 方式方式2 2和方式和方式3 3 1、串行发送、串行发送2、串行接收、串行接收7.波特率的计算(定时器1方式2计算初值) 例:已知串口通信在串口方式1下,波特率为9600bps,系统晶振频率为11.0592mhz,求tl1和th1中装入的初值是多少?(设smod=0) 解:设所求的数为x,则定时器每计256-x个数溢出一次,计

45、一个数的时间为12/11.0592mhz,那么定时器溢出一次的时间为256-x 12/11.0592mhz,t1的溢出率是它的倒数,方式1的波特率= (2smod/32) (t1溢出率),代入求的x=253,转成十六进制为0 xfd。8.初始化的具体步骤确定t1的工作方式编程tmod寄存器计算t1 的初值装载th1、tl1启动t1编程tcon中的tr1位确定串行口的工作方式编程scon电路图rxdtxdtxdrxdd0d1d2d3d4d5d6d7d0d1d2d3d4d5d6d7xtal218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/a

46、d237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427u1at89c52net=d9xtal218xtal119ale30ea31psen

47、29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427u3at89c52o

48、ffon12345678161514131211109dsw1dipsw_81234567820191817161514139121011u2led-bargraph-red234567891rp1respack-8 三、实验步骤 1.绘制硬件电路图 2.软件编程 3.观察运行现象 四.思考题 1.将单片机第10脚与11脚短接,以达到自己给自己的目的(采用方式1工作模式)。第11脚所要传出的数据是来自p2所连的8位开关状态,第10脚接收的串行数据将送到p0所联的的led上? 2.其功能与1相同,只是在此采用方式2工作模式。 3.其功能与1相同,只是在此采用方式3工作模式。实验十二 动态数码管显

49、示一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.学会学会驱动数码管电路 4.学会动态数码管扫描方法二、实验内容 1.数码管显示原理 数码管显示原理是靠点亮内部的发光二极管来来发光。 数码管分为共阴数码管和共阳数码管,共阴数码管是把8个发光二极管的阴极在数码管内全部连接在一起,所以称“共阴极”,而它们的阳极式独立的。共阳数码管是把8个发光二极管的阳极在数码管内全部连接在一起,所以称“共阳极”,而它们的阴极式独立的。123456abcd654321dcbatitlenumberrevisionsizebdate:10-oct-2011sheet of

50、 file:e:2010级 单 片 机 基 础 实 践 单 片 机 基 础 实 践 电 路 图 isp和 串 口 最 小 系 统 并 口 最 小 系 统 .ddbdrawn by:e1d2dp3c4g5w16b7w28w39f10a11w412seglg5641ah图3 四位共阴数码管电路图图4 四位共阴数码管实物图123456abcd654321dcbat itlen um berr evisionsizebd ate:10-o ct-2011sheet of file:e :2010级 单 片 机 基 础 实 践 单 片 机 基 础 实 践 电 路 图 isp和 串 口 最 小 系 统 并

51、 口 最 小 系 统 .ddbd raw n b y:ggaabbccddeeffdpdpgndgnd123456abcd654321dcbatitlenumberrevisionsizebdate:18-feb-2011sheet of file:h:dzgcbackup of sheet1.ddbdrawn by:d1d2d3d4d5d6d7d8r1r2r3r4r5r6r7r8vccabcdefgdpd1d2d3d4d5d6d7d8r1r2r3r4r5r6r7r8abcdefgdp共阳极共阴极图1 数码管电路图图2 数码管内部原理图 2.锁存器 74hc573为三态输出的八 d 透明锁存器

52、。当三态允许控制端 oe 为低电平时,q0q7 为正常工作状态,可用来驱动负载或总线。当 oe 为高电平时,q0q7 呈高阻态。 当锁存允许端 le 为高电平时,输出数据 q随输入数据 d 变化而变化。当 le 为低电平时,输出数据q被锁存状态。图5 74hc573引脚图图6 74hc573真值表图7 74hc573内部图3.实验电路图e0e1e2e3e4e5e6e7f0f1f2f3d0e0d0d1d2d3d4d5d6d7e1e2e3e4e5e6e7d1d2d3d4d5d6d7d0d1d2d3d4d5d6d7d0d1d2d3d4d5d6d7p20p21p20p21e0e1e2e3e4e5e6e

53、7f4f5f6f7f0f1f2f3f4f5f6f7xtal218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.0/t21p1.1/t2ex2p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a10

54、23p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427u1at89c52d02d13d24d35d46d57d68d79q019q118q217q316q415q514q613q712le11oe1u274hc573d02d13d24d35d46d57d68d79q019q118q217q316q415q514q613q712le11oe1u374hc573234567891rp1respack-8图8 时钟电路图 三、实验步骤 1.绘制硬件电路图 在proteus软件里绘制硬件电路图。 2.软件编程 在keil软件里编写程序。 3.观察运行现象 把程序下载到单片

55、机里观察实验现象。 四.思考题 1.把编好的时钟程序下载到焊接好的单片机硬件电路里,并调试、观察现象,看看和在proteus里的时钟有无差别。 2. 把数码管的位控制接到p2口 ,段控制锁存器(u2)的11脚接到电源上,位控制锁存器u3的11脚接到电源上,编写程序,实现时钟功能。实验九 模拟交通灯的设计一.实验目的 1.学会在proteus仿真软件画硬件电路。 2.学会使用keil软件编程 3.利用所学过的知识设计模拟交通灯二.实验内容三.实验步骤c c5151的数据类型扩充定义的数据类型扩充定义sfrsfr: :特殊功能寄存器特殊功能寄存器声明声明sfr16:sfrsfr16:sfr的的16

56、16位数据声明位数据声明sbitsbit: :特殊功能位声明特殊功能位声明bitbit: :位变量声明位变量声明例:例:sfrsfr scon = 0x98; scon = 0x98; sfr16 t2 = 0 xcc; sfr16 t2 = 0 xcc; sbit sbit led = p02; led = p02;例:例:数据类型数据类型 变量名变量名char miaochar miao; ;bit flag;bit flag;unsigned char code table=;unsigned char code table=;intint led; led;注意:变量名不能用注意:变量

57、名不能用c c语言中的关语言中的关键字表示。键字表示。c-51c-51数据的存储类型数据的存储类型8485p对单片机的指令系统不要求了解,仅要求对8051 的存贮器结构有初步了解;p寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理p方便实现规范结构的模块化编程,已编好程序可容易地移植;p提供的库包含许多标准子程序,具有较强的数据处理能力;ctype.h 字符函数; stdio.h 标准i/o函数; string.h 字符串函数; stdlib.h 标准库函数; math.h 数学函数; absacc.h 绝对地址访问函数intrins.h 内部函数; stdarg.h 变量函数表;

58、setjmp.h 全程跳转函数reg51.h reg52.h 标准寄存器定义表at89x51.h 不同系列芯片的特殊寄存器定义表86c51数据声明的一般格式: 类型说明符修饰符 标识符=初值例如:unsigned char code flag = 0 x0f;就是声明一个无符号的char型变量flag,并给他赋初值为0 x0f;并且声明他所在的存储空间在片内统一编址的rom中。声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内ram中。87+ - * / (加 减 乘 除) = (位右移 位左移)& | (按位与 按位或) (按位异或 按位取反)if 选择语句swi

59、tch/case 多分支选择语句while 循环语句do-while 循环语句for 循环语句#include /加载头文件unsigned int 自定义名 /定义一个065535的整形变量unsigned char 自定义名 /定义一 个0255的字符变量。#define 代替名 原名例:#define uint unsigned int #define ta 0 x25 main 函数格式:void main()特点:无返回值,无参。任何一个c程序有且仅有一个main函数,它是整个程序开始执行的入口。例:void main() 总程序从这里开始执行; 其他语句; if(表达式) 语句;

60、当表达式的结果为真时,则执行语句;执行完之后继续执行后续语句。当表达式为假的时候则跳过语句执行后续语句。if(表达式)语句1;else语句2; 当表达式为真时,执行语句1;执行完之后执行if语句后面的语句。 当表达式为假时,执行语句2;执行完之后执行if语句后面的语句。 while (表达式)语句(内部也可为空)特点:先判断表达式,后执行语句。原则:若表达式不是0,即为真,那么执行语句。否则跳出while 语句。while(1)程序主体;while(0=a) while(1);for (表达式1;表达式2;表达式3) 语句(内部可为空)执行过程:1.求解一次表达式1.2.求解表达式2,若其值为真(非0 即为真),则执行for中语句。然后

温馨提示

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

评论

0/150

提交评论