【单片机实验】6LED静态串行显示

【单片机实验】6LED静态串行显示

实验三 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

2 #include

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 }

View Code