实验一 跑马灯实验
一、实验目的
1、 熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法; 2、 掌握采用汇编语言与C语言开发单片机系统的程序结构; 3、 掌握51系列单片机通用I/O口的使用。 二、实验前准备
1、 完成作业3;
2、 根据实验内容编写好相关程序,并进行Proteus仿真。 三、实验内容
实验内容为3项,其中第1、2项必做。 1、基本的流水灯。
根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。
2、简单键控的流水灯。
不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。
3、键控的流水灯。
上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。 四、实验原理图
如图3.1所示。
33
+5VD0D1D2D3D4D5D6D7U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617K1K2K3K418XTAL29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51
图3.1 跑马灯实验电路原理图
电路原理图如图3.1,AT89S52的P0.0~P0.7作为输出连接8个发光二极管,输出低电平0时对应发光二极管发光;由于发光二极管的导通电压为1.7V,所以HNIST-2型实验装置在电源与二极管之间加一个阻值为1K限流电阻保护二极管。
AT89S52的P2.0、P2.1作为输入连接2个按键K1、K2,若检测到P2.0=0,则说明K1键按下。 五、软件设计思想
1、基本的流水灯
软件延时采用例题程序delay( j ),可调整延时时间。 2、简单键控的流水灯。
34
由于是按下键不松手,键值一直保留,所以判断P2.0=0即是按下K1,采用如例题所示的while(P2.0= =0)或while(P2= =0xfe)的模式。
3、键控的流水灯
由于是按一下键后马上松手,所以要设置一个变量b保留按键键值,要在延时程序中检测是否按键,当按键后立即设置b的值。 六、实验思考题
1、采用I/O口作为输出口时要考虑哪些因素?为什么实验装置中LED要串联一个电阻?
2、采用I/O口作为输入口时要注意什么?键控的流水灯时为什么要在延时程序中检测是否按键?
3、为什么延时程序要做一个函数?
35
实验二 交通灯实验
一、实验目的
1、 进一步熟悉HNIST-2型单片机系统相关硬件电路; 2、 掌握单片机中断的应用和中断处理程序的编写方法; 3、 掌握单片机内部定时/计数器的使用及编程方法。 二、实验前准备
1、 完成作业4;
2、 根据实验内容编写好相关程序,并进行Proteus仿真。 三、实验内容
实验内容为3项,其中第1、2项必做。 1、基本交通灯。
根据图3.2电路,用单片机的IO口控制4组红绿黄共12个发光二极管,使发光二极管按照一定规则与次序发光与闪亮以实现模拟交通灯的功能。假设初始状态为:(南北通行状态)南北绿灯、东西红灯(25s);后转为过渡状态:南北黄灯、东西红灯(5s);再转为东西通行状态:东西绿灯、南北红灯25(s)。再转为过渡状态:东西黄灯、南北红灯(5s),然后循环往复。
要求采用定时器实现所需要的定时时间。 2、键控交通灯。
按一下K1键,保持南北通行状态;按一下K2键,保持东西通行状态;按一下K3键,保持正常交通灯。
要求在中断中进行按键处理。 3、具有闪烁的交通灯。
在2的基础上增加,绿灯最后5s闪烁,即亮0.5S灭0.5S闪烁。 四、实验原理图
36
东D9LED-REDD10D11LED-YELLOWLED-GREEND8LED-GREEN+5VD019LED-REDU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617D7LED-YELLOWD1南18XTAL2K1K2K3K4LED-YELLOW9RSTD6LED-REDD2LED-GREEN293031PSENALEEAD17D18D19D20D5LED-GREEND4D312345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51LED-YELLOWLED-RED 图3.2 交通灯实验电路原理图
图3.2共有4个按键K1、K2、K3、K4,分别连接到单片机P2.0、P2.1、P2.2、P2.3引脚,按键后对应引脚为低电平,通过4个二极管D17、D18、D19、D20连接到P3.2(外部中断0),这是二极管构成的相与电路,即任意按一个键能在P3.2上产生一个低电平或下降沿,作为中断触发信号。 五、软件设计思想
1、定时思想。
采用定时器T0或T1的方式1定时50ms,每50ms中断进行计数,计数10次即0.5s,计数20次即1s,对秒计数实现所需要的定时时间。
2、亮灯控制思想。
单片机控制灯引脚与灯对应如下,0点亮。 一共有四种状态S0、S1、S2、S3, a、南北通行S0状态:
南北绿灯、东西红灯,P0= 11111100=0xfc,P1=11110011=0xf3;
P0.3 P0.2 东G 东Y 1 1 P0.1 东R 0 P0.0 北G 0 P1.7 北Y 1 P1.6 北R 1 P1.5 西G 1 P1.4 西Y 1 P1.3 西R 0 P1.2 南G 0 P1.1 南Y 1 P1.0 南R 1 b、过渡状态S1:
南北黄灯、东西红灯,P0=11111101=0xfd,P1=01110101=0x75;
37