【单片机实验】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 <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 }
View Code

 

posted @ 2019-06-25 16:35  Osea  阅读(844)  评论(0编辑  收藏  举报