问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用51单片机连接max7219芯片做秒计时器,求帮看下程序

发布网友 发布时间:2022-06-09 03:48

我来回答

2个回答

热心网友 时间:2023-09-14 13:43

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
sbitpinDIN= P3^0;//DIN 串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。
sbitpinLOAD= P3^1;//LOAD (MAX7219) 载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。
sbitpinCLK= P3^2;//在时钟的上升沿, 数据移入内部移位寄存器。 下降沿时, 数据从DOUT端输出。
uchar codeLEDcode[]= { 0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b, 0x00 };
/*
void delay1000( void )
{
unsigned char a, b, c; for ( c = 1; c > 0; c-- )
for ( b = 142; b > 0; b-- )
for ( a = 2; a > 0; a-- )
;
}
*/
//【增加】 延时1秒 函数
void delay1s(void)   //@12MHz
{
    unsigned char a,b,c;
    for(c=46;c>0;c--)
        for(b=152;b>0;b--)
            for(a=70;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}

void sendbyte( uchar dat )
{
uchar i, temp; 
_nop_(); 
for ( i = 0; i < 8; i++ )
{
temp= dat & 0x80;
dat= dat << 1; 
if ( temp )
pinDIN = 1;
else 
pinDIN = 0;
pinCLK = 0;
_nop_();
pinCLK = 1;
}
}


void sendword( uchar addr, uchar dat )
{
pinLOAD = 0;
_nop_();
sendbyte( addr );
_nop_();
sendbyte( dat );
_nop_();
pinLOAD = 1; 
delay1000();
}


void init7219( void )
{
sendword( 0x0c, 0x01 );
sendword( 0x0a, 0x09 );
sendword( 0x0b, 0x03 );
sendword( 0x09, 0x00 );
sendword( 0x0f, 0x00 );
}


void clear7219( void )
{
uchar i; for ( i = 8; i > 0; i-- )
{
sendword( i, 0x00 );
}
}


void main( void )
{
int n = 60; 
int s = 0; 
int g = 0; 
init7219(); 
while ( 1 )
{
//clear7219(); //【屏蔽】不然不显示
if ( n > 0 )
{
n = n - 1; 
s = n / 10; 
g = n % 10; 
//LEDcode[s]; //【屏蔽】
//LEDcode[g]; //【屏蔽】
}
sendword( 0x01, LEDcode[s] );//【增加】显示十位数
sendword( 0x02, LEDcode[g] );//【增加】 显示个位数
delay1s();//【增加】 延时一下,不然变化太快,看不到效果
/*//【屏蔽以下语句】
sendword( 0x01, LEDcode[1] );
sendword( 0x02, LEDcode[2] | 0x80 );
sendword( 0x03, LEDcode[3] );
sendword( 0x04, LEDcode[4] );
sendword( 0x05, LEDcode[5] );
sendword( 0x06, LEDcode[6] );
sendword( 0x07, LEDcode[7] );
sendword( 0x08, LEDcode[8] );
//*/
}
}

已在protues中仿真通过。

热心网友 时间:2023-09-14 13:44

程序没有格式,太乱,没法看
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
填地方专项志愿会影响本科二批录取吗? 地方专项计划成绩不好的可以报吗 国家专项地方专项影响本科填报吗 地方专项计划滑档影响本科录取吗 报地方专项计划会影响高考录取吗 地方专项计划影响后续录取吗 电脑最高配组装机配置组装电脑什么配置比较好 台式组装游戏电脑配置组装电脑什么配置比较好 打游戏主机电脑配置台式电脑主要是玩游戏什么配置最合适 组装高配置台式电脑组装电脑什么配置比较好 怎么快点删除内存卡的东西 新型国际关系的三大特征是什么? 梦到正在追自己的男生跟别人好了什么意思 冠心病引起心肌梗死? 公司为了把员工*离职,故意把任务定得很高,基本不可能完成,工资又定得很低,这? 逼迫离职,我该怎么办 被领导逼辞职,怎么办? 以调动工作为由,变相逼辞职,应该怎么样维护个人利益 跟上司吵架后被逼离职,我该怎么办? 被公司变相逼迫辞职,该如何应对? 被逼离职是否可以起诉? 在公司遭到被逼迫离职怎么办? 什么情况下属于被逼辞职? 如何应对公司逼迫辞职的借口? 被逼离职怎么办? 拜托了大家 iphone4在cydia里更新了插件为什么会导致91手机助手和360白图标 cydia误删了用手机能找回吗 误删插件pp助手怎么恢复cydia iPad(9.3.3)越狱后恢复了设置,用iPad的pp助手恢复,cydia不见了,插件还能用求解 pp助手如何修复cydia闪退 51单片机接max7219显示的问题 51单片机和MAX7219芯片制作秒计时表 51单片机 MAX7219 可以正常显示 但是要单片机一直写 我LOAD引脚在每次写完都赋值1,按照手册是能锁存的。 51单片机串口0工作方式使用MAX7219的问题 有谁知道max7219跟51单片机在protel里怎么画吗?封装是什么 51单片机通过max7219控制双位数玛管 MAX7219芯片,keil + Proteus 6.9 89C51单片机编程问题!控制MAX7219芯片 单片机与MAX7219 数码管显示程序 7219怎么用? 我几天前做了一个MAX7219的驱动程序,在开发板上运行好使,就想做一个实物,现自学的Protel99se,刻了PCB板 请问如何给MSP430的某一端口赋值,而不影响其他端口。 如何让数码管轮流显示三组电压?(用51单片机如何编程?) 好奇金装纸尿裤和好奇金铂金装纸尿裤哪个好 泡椒为什么有的是黄色的有的四墨绿色的? 为什么自己泡的泡椒不是米黄色的 泡椒一煮汤怎么变黄色了 泡椒是怎么制成的呢? 提款失败 一直在维护 失业了怎么领取失业金? 中国最大的门户网站是什么?以及其他门户网站的排名?