⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hc164.c

📁 HC164的静态驱动程序
💻 C
字号:
/********************************************************************************
四位静态数码管演示程序

*********************************************************************************/
/**************************************************************************
4位静态显示模块演示程序

***************************************************************************/
#include <AT89X51.H>
#include <Delay.h>
#define uchar unsigned char
#define Uint unsigned int
#define SDA0    P0_0    //74LS164 SAD
#define SCK0    P0_1    //74LS164 SCK
#define SDA1    P0_2    
#define SCK1    P0_3    
#define SDA2    P0_4    
#define SCK2    P0_5    
#define SDA3    P0_6    
#define SCK3    P0_7    
#define SMGPOW  P1_2    //数码管总电源
void senddata0(uchar dd);
void senddata1(uchar dd);
void senddata2(uchar dd);
void senddata3(uchar dd);
code uchar szdm[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0x00};  //0-9,熄灭,全亮(含小数点) 共阳数字数码管代码
data uchar displaybuff[]={0x01,0x02,0x03,0x04,0x0b,0x0a};  //0x0a 表示熄灭状态,0x0b表示全亮
void main()   {
P1=0XFF;
P2=0XFF;
P3=0XFF;
DelayMs(5000);       //延时一段时间保证74HC164复位。
P0=0;                             //SDA SCK  置零
SMGPOW=0;                         //打开显示板电源
senddata0(szdm[displaybuff[4]]);  //以下四条语句使四个数码管全亮(含小数点),测试数码管的每一段是否全部正常  
senddata1(szdm[displaybuff[4]]);  
senddata2(szdm[displaybuff[4]]);  
senddata3(szdm[displaybuff[4]]);  
DelayMs(3000);
senddata0(szdm[displaybuff[0]]);  //第一位数码管显示1
senddata1(szdm[displaybuff[1]]);  //第二位数码管显示2
senddata2(szdm[displaybuff[2]]);  //第三位数码管显示3
senddata3(szdm[displaybuff[3]]);//第四位数码管显示4
while(1);   //无限循环
}
void senddata0(uchar dd) {         //第一位数码管显示函数
uchar j;
for (j=0;j<8;j++) {
                   SDA0=(bit)(dd&0x01);
				   SCK0=1;  SCK0=0;
				   dd=dd>>1;
				   }
				         }
void senddata1(uchar dd) {           //第二位数码管显示函数
uchar j;
for (j=0;j<8;j++) {
                   SDA1=(bit)(dd&0x01);
				   SCK1=1;  SCK1=0;
				   dd=dd>>1;
				   }
				         }
void senddata2(uchar dd) {            //第三位数码管显示函数
uchar j;
for (j=0;j<8;j++) {
                   SDA2=(bit)(dd&0x01); 
				   SCK2=1;  SCK2=0;
				   dd=dd>>1;
				   }
				         }
void senddata3(uchar dd) {            //第四位数码管显示函数
uchar j;
for (j=0;j<8;j++) {
                   SDA3=(bit)(dd&0x01);
				   SCK3=1;  SCK3=0;
				   dd=dd>>1;
				   }
				         }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -