void init_max7219()
{
w_max7219(0x0a,0x07); //æ¾ç¤ºäº®åº¦ï¼åå¼èå´0~f
w_max7219(0x0b,0x07); //8ä½æ«ææ¾ç¤ºï¼åå¼èå´0x01~0x07
w_max7219(0x09,0x00); //è¯ç æ¹å¼ï¼0x00为ä¸è¯ç ï¼0xff为è¯ç
w_max7219(0x0c,0x01); //æä½æ¹å¼ï¼0x00为ä½åè模å¼ï¼0x01为æ£å¸¸æä½æ¨¡å¼
w_max7219(0x0f,0x00); //æ¾ç¤ºç¶æï¼0x00为æ£å¸¸æ¾ç¤ºï¼0x01为æ¾ç¤ºæµè¯
timer_ms(2);
}
/*********************************************************************************************
å½æ°å称ï¼w_max7219
å½æ°åè½ï¼åMAX7219åå ¥æ°æ®
å ¥å£åæ°ï¼addr MAX7219å é¨å¯åå¨å°å,wdata åå ¥å é¨å¯åå¨çæä½æ°å¼
åºå£åæ°ï¼
å ¶ å®ï¼
*********************************************************************************************/
void w_max7219(unsigned char addr,unsigned char wdata)
{
unsigned int temp,i=1,j,k;
LD=0;
while(i<16)
{
if(i<8) temp=addr; //å åå ¥MAX7219å é¨å¯åå¨å°åï¼ååå é¨å¯åå¨åå ¥æä½æ°å¼
else temp=wdata;
for(j=0;j<8;j++)
{
CLK=0;
if((temp&0x80)==0x80) DIN=1; //å åéæ°æ®çæé«ä½
else DIN=0;
for(k=5;k>0;k--); //æ¶éé¢çé«çåçæºéæ¾å 延æ¶æ¶é´ï¼æ¤å¤ä¸º12MHz ,k=5
CLK=1;
for(k=5;k>0;k--);
temp<<=1;
}
i+=8;
}
LD=1;
}
/*-------------------------------------------------------------------------------------------
追é®ä½ çè¿ä¸ªä¸å®æ´å 好å 个é误åè¦å å¥å¥
追çè¿åªæ¯MAX7219çåå§å个åæ°æ®ä»£ç ï¼å©ä¸çå°±æ¯ä½ èªå·±è¦æä¹æä½äºåï¼è¿æ²¡å¿ è¦åè´´äºå§
追é®å¤§å¥æ±è´´å
¨ æ太å¤çä¸è¥¿ä¸æå
顺便æ±å¤§å¥å¸®ä¸ªå¿ æ头æ件çè¯è¯·é¡ºä¾¿æ头æ件çä¸è¥¿ä¹å¤å¶åºæ¥å§
#include
//#define uint unsigned int
//#define uchar unsigned char
unsigned int i;
sbit CLK=P2^2; //MAX7219æ¶éä¿¡å·çº¿
sbit LD=P2^1; //æ°æ®å 载线
sbit DIN=P2^0; //æ°æ®è¾å
¥çº¿
unsigned char code num[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,
0x77,0x1f,0x4e,0x3d,0x01,0x00};
void w_max7219(unsigned char addr,unsigned char wdata);
void init_max7219(); //MAX7219
void timer_ms(unsigned char tim);
unsigned char a,b;
//unsigned char num[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,}; //å
±é³
void main(){
while(1){
init_max7219(); //MAX7219åå§åå½æ°
w_max7219(0x01,num[1]); //åMAX7219
w_max7219(0x02,num[2]);
w_max7219(0x03,num[3]);
w_max7219(0x04,num[4]);
w_max7219(0x05,num[5]);
w_max7219(0x06,num[6]);
w_max7219(0x07,num[7]);
w_max7219(0x08,num[8]);
}
}
void init_max7219()
{
w_max7219(0x0a,0x07);
w_max7219(0x0b,0x07);
w_max7219(0x09,0x00);
w_max7219(0x0c,0x01);
w_max7219(0x0f,0x00);
timer_ms(2);
}
/*********************************************************************************************
å½æ°å称ï¼w_max7219
*********************************************************************************************/
void w_max7219(unsigned char addr,unsigned char wdata)
{
unsigned int temp,i=1,j,k;
LD=0;
while(i0;k--);
CLK=1;
for(k=5;k>0;k--);
temp<<=1;
}
i+=8;
}
LD=1;
}
/*-------------------------------------------------------------------------------------------
å½æ°åç§°ï¼ timer_ms
å½æ°è¯´æï¼ 1ms延æ¶åç¨åº
------------------------------------------------------------------------------------------*/
void timer_ms(unsigned char tim)
{
unsigned char i;
while(tim--)
{
for(i=0;i<200;i++); //延æ¶1ms
}
}
å¤§å¥ #include è¿ä¸ªå¤´æ件éé¢å 容æ¯ä»ä¹å
追çæ å51çä¸è¥¿ï¼æ±
追é®å¤§å¥ è¿ä¸ªå¤´æ件å¨åªéå¾å ææ¾ä¸å°
追çkeilèªå¸¦ï¼ä¸ç¨ä½ 管ï¼åªè¦ç¨å°±å¯ä»¥äº
追é®æçKEIL没æreg52.h 大å¥ä½ è½åç»æå ææ£442877642
跪求MAX7219驱动数码管的时钟代码
w_max7219(0x09,0x00); \/\/译码方式,0x00为不译码,0xff为译码 w_max7219(0x0c,0x01); \/\/操作方式,0x00为低功耗模式,0x01为正常操作模式 w_max7219(0x0f,0x00); \/\/显示状态,0x00为正常显示,0x01为显示测试 timer_ms(2);} \/ 函数名称:w_max7219 函数功能:向MAX7219写入数据 ...
MAX7219驱动数码管为共阴还是共阳
共阴数码管,但不是常规编码,其编码规则如下:uchar code seg[]={0x00,0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,}\/\/空白,0~9
用7219驱动数码管显示,为什么只能当开电源瞬间时能够显示输入的数据...
void Write_Max7219_byte(unsigned char temp);\/\/write max7219 a byte void Write_Max7219(unsigned char address,unsigned char dat);\/\/write max7219 command and data void Init_Max7219(void);\/\/Initize max7219 void Write_Ds1302_byte(unsigned char temp);void Write_Ds1302( unsigned char ad...
MAX7219驱动数码管无法正常显示
void Init_Max7219(void){ Write_Max7219(SHUT_DOWN, 0x01); \/\/设置掉电模式 Write_Max7219(DISPLAY_TEST, 0x00); \/\/设置不工作寄存器 Write_Max7219(DECODE_MODE, 0x09); \/\/设置编码模式 Write_Max7219(SCAN_LIMIT, 0x06); \/\/扫描控制寄存器 Write_Max7219(INTENSITY, 0x04); ...
max7219数码管小数点点不上
{ max7219_send(j,0xf8);\/\/0x08无小数点,0xf8有小数点 HAL_Delay(100);} for(j=1;j<9;j++){ max7219_send(j,0x0f);\/\/清屏,0xff会显示小点 HAL_Delay(100);} \/* USER CODE END WHILE *\/ for(j=1;j<9;j++){ max7219_send(j,j);HAL_Delay(500);} uint8_t max7219_...
四位一体数码管各位数字显示怎么实现单独控制?求解。需要什么芯片?_百度...
MAX7219可以驱动4个或8个数码管,下面是一个驱动4个数码管的连接图:```MAX7219 数码管1 数码管2 数码管3 数码管4 DIN ---| | | | | CLK ---| | | | | CS\/LOAD ---| | | | | GND ---| | | | | VCC ---...
用51单片机连接max7219芯片做秒计时器,求帮看下程序
在时钟上升沿时数据被载入内部的16位寄存器。sbitpinLOAD= P3^1;\/\/LOAD (MAX7219) 载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。sbitpinCLK= P3^2;\/\/在时钟的上升沿, 数据移入内部移位寄存器。 下降沿时, 数据从DOUT端输出。uchar codeLEDcode[]= { 0x7e, 0x30, 0x6d, 0x79, ...
急!!!max7219驱动数码管问什么会闪烁不停?各种方法都试过了,没效果...
我这有7219的正确模块程序,网上也大把的有,你先把程序有问题的可能性排除掉,那就可以考虑硬件了。我现在在用7219驱动4个数码管,很正常,我认为程序的问题可能性大!因为硬件就连接几个单片机的端口,调试思路如下:烧入正确测试程序,如显示静态的1234等等(网上下载程序);软件排除后,检查7219与...
STC89C52控制MAX7219驱动数码管无法正常显示
如果在仿真是正确的话,会怀疑板子线路,程序是不会跑错的,在锁存数据时加一段延时吧。让数据稳定。参考资料:MS
max7219能否同时驱动两块液晶,一块是5位数码管,另一块是3位数码管?
答:max7219具有亮度控制功能,不知道你注意到了没有,他是通过+VDD和ISET之间接一个电阻来提高段电流的,最小值为9.53K,设定段电流为40mA. 显示亮度还可以通过亮度寄存器来控制,数字控制显示亮度是通过亮度寄存器的低四位来控制的脉宽调制器来控制。