单片机流水灯实验指导
一、知识准备 STC89C52RC单片机共有4个双向的8位并行I/O端口,片内I/O端口作为输出使用时,最常用的应用控制是相应的I/O引脚上的LED点亮与熄灭。 1.P1口1.1 位电路结构 由三部分组成: (1)1个数据输出锁存器,用于输出数据位的锁存; (2)2个三态的数据输入缓冲器BUF1和BUF2,用于读锁存数据和读引脚数据的输入缓冲; (3)输入驱动电路,由1个场效应管(FET)和1个片内上拉电阻组成。 P1口某一位的位电路结构如下图所示: 图1-1 1.2工作过程分析P1口只能作为通用的I/O口使用。 (1)P1口作为输出口时,若CPU输出1,Q=1,Q*=0,场效应管截止,P1口引脚的输出为1;若CPU输出0,Q=0,Q*= 1,场效应管导通,P1口引脚的输出为0。 (2)P1口作为输入口时,分为“读锁存器”和“读引脚”两种方式。“读锁存器”时,锁存器的输出端Q的状态经输入缓冲器BUF1进入内部总线;“读引脚”时,先向锁存器写1,使场效应管截止,P1.x引脚上的电平经输入缓冲器BUF2进入内部总线。 1.3 P1口特点P1口由于有内部上拉电阻,没有高阻抗输入状态,故为准双向口。作为输出口时,不需要在片外接上拉电阻。 P1口“读引脚”输入时,必须先向锁存器写入1。 2.循环移位原理循环移位法是采用循环程序结构进行编程。我们在程序一开始就给 P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果了。 3.接口芯片本项目选择的扩展I/O芯片是74HC595。74HC595芯片是一种串入并出的芯片,有8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断三态。 下表说明了74HC595芯片的引脚功能。 
图1-2 接口电路图如下,可以看到U4中Q0-Q7接LED,U5Q0-Q7接矩阵。 
图1-3 
图 1-4 SDI为数据输入引脚,与11、12引脚都接51单片机。SDO引脚为数据输出。 二、实验目的 掌握流水灯系统的基本组成以及工作原理。使设计出来的流水灯达到设计任务书的技术要求。 三、实验内容 扩展I/O口,连接8个LED,编写程序使其从右到左的流水方式点亮。 四、实验设备 硬件设备:51单片机开发版、USB线一根,12v电源适配器一个。 
图1-3 软件工具:STC-ISP-15XX-V6.82,keil。 五、核心代码- /**
- * @Global Varible Declare
- * @全局变量声明
- */
- /*流水灯实验对应的编码led1 led2 led3 led4 led5 led6 led7 led8 */
- uchar LED_tabl[10] = {0xFD,0xFB,0xFE,0xF7,0xBF,0xEF,0x7F,0xDF};
- /**
- * @brief main
- * @details 主函数
- * @param a 无
- * @param b 无
- * @retval 无
- */
- void Main()
- {
- uchar i; /*定义一个循环变量*/
- init_595(); /*初始化IO扩展芯片74HC595*/
- while(1)
- {
- /*开发板上使用的是两片595芯片级联,构成一个16位的串入并出接口
- *板上8个LED灯连接在595的低八位数据线上,为了不影响其他电路,
- *需要把高八位置为高电平*/
- for(i=0;i<8;i++)
- {
- WR_595(0xff); /*写入16位数据的高八位*/
- WR_595(LED_tabl[i]); /*写入16位数据的低八位,这里使用查表法,以此输出对应每一个LED的值,实现流水灯操作*/
- OUT_595(); /*给595的RCK写入时钟信号,串行数据移位输出*/
- delay_ms(500); /*延时500MS*/
复制代码
六、实验步骤 连接设备,将USB线一端接PC,一端接单片机开发板,开发板接12V电源,打开电源开关 
图1-4 打开STC-ISP下载工具 
图1-4 选择好单片机型号STC89C52RC,扫描串口号,其他设置为默认;然后点击打开程序文件,出现下图 
图1-5 进入目录obj,选择需要下载的hex文件打开;关闭电源→点击下载/编辑→打开电源,程序开始下载,出现下图则操作成功 
图1-6 七、实验验证 将开发板电源关闭,然后再打开,查看板上8个LED是否按流水的方式依次从右到左点亮,如果来回循环点亮则说明实验成功。 
(1)思考题1是否可以让8个LED灯跳着点亮? (2)思考题2从左到右依次点亮是否也可以做到,怎么编写?
完整的Word格式单片机流水灯实验指导书文档51黑下载地址:
流水灯.doc
(4.87 MB, 下载次数: 6)
|