1 MAX7219 驱动数码管显示 一:实验目的 1,熟悉程序的编译、下载方法和过程; 2,熟悉利用 max7219 驱动数码管显示; 二:实验内容 使用 MAX7219 驱动数码管显示(可参考单片机程序文件夹中数码管显示键盘值文件中的内容); 三:实验步骤 1,设计硬件电路,焊制电路板,连接相关电路; 2,观察给定程序所实现的功能; 3,按照设定的功能修改程序编译程序,下载并调试程序; 四:程序与其相关说明 #include #define uchar unsigned char #define uint unsigned int #include #include #include sbit BUZZ=P1^3; /******************************************************************** * 名称 : Main() * 功能 : 主函数 ***********************************************************************/ void Main() { init_7219(); //对 max7219 初始化 init_ds12887(); //对 ds12887 初始化 //set_time(); set_alarm(); while(1) { P2=0xf0; if((P2&0xf0)!=0xf0) { keyscan(); if(key==0) { if ((DS_C & 0x10) != 0) //显示时间 { crt_timenyr(); 2 } } } else{ if ((DS_C & 0x10) != 0) //显示时间 { crt_timesfm(); } } delay1ms(100); } } #define DECODE 0X09 //译码控制寄存器 #define INTENSITY 0X0A //亮度控制寄存器 #define SCANLIMIT 0X0B //扫描界限寄存器 #define FLASHCON 0X0C //关断模式寄存器 #define DISPLAY 0X0F //测试控制寄存器 sbit LOAD=P1^0; sbit DIN=P1^1; sbit CLK=P1^2; /******************************************************************** * 名称 : write_7219(uchar add,uchar dat) * 功能 : 地址,数据发送子程序 ***********************************************************************/ void write_7219(uchar add,uchar dat) { uchar i; LOAD=0; //拉低片选,选中器件 for(i=0;i<8;i++) //发送地址 { CLK=0; //清零时钟总线 DIN=(bit)(add&0x80); //每次取高字节 add<<=1; //左移一位 CLK=1; //时钟上升沿,发送地址 } for(i=0;i<8;i++) //发送数据 { 3 CLK=0; DIN=(bit)(dat&0x80); dat<<=1; CLK=1; //时钟上升沿,发送数据 } LOAD=1; //发送结束,上升沿锁住数据 } /***************...