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

📄 键盘和显示.txt

📁 数控直流电源和变频电源程序在c环境下编译
💻 TXT
字号:
 #include<reg51.h>
#define  uchar unsigned char
# define uint unsigned int


sbit din=P1^0;
sbit clk=P1^2;
sbit load=P1^1;
sbit qw=P0^3;
sbit mov=P0^2;
/******************对7219的写字节程序******************/
//功能:实现对控制寄存器的读写;
//时序要求:MAX7219采用串行数据传输方式,由16位数据包发送到DIN引脚的串行数据在每个CLK的上升沿被移入内部
//的16位移位寄存器中,然后在LOAD的上升沿将数据锁存到数字或控制寄存器;LOAD信号必须在第十六个时钟上升沿同
//时或之后,但在下一个时钟上升沿变高,否则数据库丢失。
void Write_Max7219_byte(uchar DATA)           //LED写数据函数
{
       uchar i;
       load=0;
       for(i=8;i>=1;i--)
          {
            clk=0;
            din=DATA&0x80;
            DATA=DATA<<1;
            clk=1;
           }
                                              
  }

/*****************7219写数字程序************************/
//功能:先写LED数字控制寄存器,再将要显示的字符送到相应的数字寄存器显示
void Write_Max7219(uchar address,uchar dat)
{ 
 load=0;
  Write_Max7219_byte(address); 
  Write_Max7219_byte(dat);
 load=1;                
}

/****************7219初始化程序**********************/
//功能:完成对各个内部寄存器的初始化
void Init_Max7219(void)      
{ 
 Write_Max7219(0x09, 0xff);   //译码寄存器,写入0ffH,对0至7位均译码
 Write_Max7219(0x0a, 0x02);   //亮度调节寄存器,写入03H,实现一般的亮度显示
 Write_Max7219(0x0b, 0x03);   //扫描界限寄存器,写入03H,实现对0到3位数码管的显示 
 Write_Max7219(0x0c, 0x01);   //停机寄存器,写入01H,实现正常工作
 Write_Max7219(0x0f, 0x00);   //显示测试寄存器,写入00H,实现正常工作
}

/*延时t 毫秒*/
void delay (uint t)
{
  uint i;
  while (t--)
  { 
 /*对于12MHz时钟,约延时1ms*/
    for (i=0;i<125;i++)
     {}
  }
}

/*****************主程序******************/
//实现四个数码显示0123
void main()
{  uchar num[4]={0,0,0,0};
   uchar digit[4]={0x01,0x02,0x03,0x04};
static i=3;

while(1){
 Init_Max7219();
 delay(50); 
  if (qw==0) {delay(50); if(qw==0) {num[i]++;} if(num[i]>9) {num[i]=0;}}
  delay(50);
  if(mov==0) {delay(50); if(mov==0){i--;} if(i<0) {i=3;}}

 Write_Max7219(digit[i],num[i]);	
 
  }
  }

⌨️ 快捷键说明

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