实验三 6LED静态串行显示
一、实验目的
1、掌握数字、字符转换成由数码管显示的八段码的软件译码方法及译码过程;
2、静态显示的原理和相关程序的编写。
二、实验电路
静态显示 电路如图3-2所示。显示器由6个LED数码管组成。输入只有三个信号,它们是串行数据输入SER和移位脉冲信号SRCLK,锁存信号RCLK。6个串行输入/并行输出锁存移位寄存器芯片74HC595首尾相连。每片的并行输出作为LED数码管的段码。
74HC595的引脚如图3-1
74HC595为8位串入并出移位寄存器。
QA--QH: 八位并行输出端,可以直接驱动数码管的8个段。
: 级联输出端。接下一个74HC595的SER端。
SER: 串行数据输入端。,SRCLK为移位时钟脉冲,上升沿移入一位;RCLK为锁存时钟脉冲,上升沿锁存。
(10脚): 低电平时将移位寄存器的数据清零。通常将它接Vcc。
:输出使能端,一般接地。
图3-1 74HC595介绍
三、实验内容及步骤
内容:
单片机的P2.0作数据串行输出接口,P2.1作移位脉冲输出,P2.2作数据锁存输出。程序功能使静态显示单元的数码管显示123456.
步骤:
1、 根据硬件连接电路,编写程序并编译生成*.hex文件;
2、打开实验箱电源;
3、参照STC12C5A60S2下载说明中STC_ISP软件使用说明,给单片机下载程序;
4、用信号线分别将单片机最小系统单元的P2.0、P2.1、P2.2与静态显示单元的SER、SRCLK、RCLK对应相连;
5、打开静态显示单元开关;
6、观察数码管显示情况,静态数码管显示123456。若显示结果不正确,请修改该程序,重复以上操作。
1 #include <reg51.h> 2 #include <intrins.h> 3 4 unsigned char buf1 [] = { 1,2,3,4,5,6 }; 5 unsigned char buf2 [6]; 6 unsigned char code table[] = { 0x3F , 0x06 , 0x5B , 0x4F , 0x66 , 7 0x6D , 0x7D , 0x07 , 0x7F , 0x6F }; 8 sbit ser = P2 ^ 0 ; 9 sbit srclk = P2 ^ 1 ; 10 sbit rclk = P2 ^ 2 ; 11 void main () { 12 unsigned char i , j , temp1 ,temp2 ; 13 while (1) { 14 srclk = 0 ; 15 rclk = 0 ; 16 for ( i = 0 ; i < 6 ; i++ ){ 17 buf2[i] = table[ buf1[i] ]; 18 temp1 = buf2[i]; 19 for ( j = 0 ; j < 8 ; j++ ){ 20 srclk = 0 ; 21 temp2 = ( temp1 & 0x80 ); 22 if ( temp2 ){ 23 ser = 1 ; 24 }else { 25 ser = 0 ; 26 } 27 srclk = 1 ; 28 _nop_(); 29 temp1 <<= 1 ; 30 rclk = 0 ; 31 } 32 } 33 rclk = 0; 34 } 35 36 }