51单片机+MAX7219数码管显示C程序

发布者:钱币之歌最新更新时间:2015-06-19 来源: 51hei关键字:51单片机  MAX7219  数码管显示 手机看文章 扫描二维码
随时随地手机看文章
/**************************************************

*程序名称:  MAX7219 C语言控制程序                          
*程序功能: 3线串行控制8位共阴数码管                                  
*3线定义:DIN 串行数据输入                                                  
*                 LOAD  数据锁存                                                          
*                 CLK   时钟输入                                                          
***************************************************/
#include
#include            
sbit pinDIN=P0^0;                        //串行数据输入端
sbit pinLOAD=P0^1;                        //数据锁存端
sbit pinCLK=P0^2;                        //时钟输入端
#define uchar unsigned char
uchar code LEDcode[]=
{0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x00     /*0,1,2,3,4,5,6,7,8,9,全灭*/
/* 0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff, */  };    /*A,B,C,D,E,F,P,U,全亮*/

/**************************************************
*         向MAX7219写入字节(8位)函数                      *
***************************************************/
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;         
   }
}
/**************************************************
*        向MAX7219写入地址和控制字(16位)                  *
***************************************************/
void sendword (uchar addr,uchar dat)
{
        pinLOAD=0;
        _nop_();
        sendbyte (addr);
        _nop_();
        sendbyte (dat);
        _nop_();
        pinLOAD=1; //第16个上升沿之后,第17个上升沿之前必须把pinCLK置高,否则数据丢失
}
/**************************************************
*                MAX7219初始化                                          *
***************************************************/
void init7219 (void)
   {
            sendword (0x0c,0x01);     /*  设置电源工作模式      */   
            sendword (0x0a,0x09);     /*   设置亮度  19/32      */  
            sendword (0x0b,0x03);     /*  设置扫描界限          */
            sendword (0x09,0x00);     /*   设置译码模式         */
                sendword (0x0f,0x00);     /*显示测试 00为正常工作状态*/
   }
/**************************************************
*                MAX7219清除显示                                  *
***************************************************/
void clear7219(void)
{
        uchar i;
        for(i=8;i>0;i--)
        {
                sendword(i,0x00);
        }
}
/**************************************************
*                MAX7219主函数                                          *
***************************************************/
/*void main(void)
{
   init7219 ();
   //clear7219();
   while(1)     
                {
                        clear7219();  
                        sendword(0x01,LEDcode[11]);  
                        sendword(0x02,LEDcode[12]|0x80);  
                        sendword(0x03,LEDcode[13]);  
                        sendword(0x04,LEDcode[4]);  
                        sendword(0x05,LEDcode[5]);  
                        sendword(0x06,LEDcode[6]);  
                        sendword(0x07,LEDcode[7]);  
                        sendword(0x08,LEDcode[8]); 

                }      
}*/

关键字:51单片机  MAX7219  数码管显示 引用地址:51单片机+MAX7219数码管显示C程序

上一篇:基于单片机的电子万年历
下一篇:STC51单片机SPI接口单主单从模式通信-汇编语言

推荐阅读最新更新时间:2024-03-16 14:04

51单片机~DS18B20温度传感器
(一)简介说明: (二)接线: 1. 内部结构: 正温度前五位是0. 负温度前五位是1. 由LS,MS组成的四位十六进制数,和16位二进制数。(先MS后LS) 结合上下图直到温度计算:1乘2 ^ 6 + 0乘2 ^ 5 +1乘2^ 4 +0乘2^ 3 +……2^0 ==85 (二)使用流程,按照时序图编写程序(判断应用): 粗黑线是总线控制的电平 灰线表示DS18B20控制的; 电阻上拉是由于上图接线有一个上拉电阻 读时重复七次直到读完为止 测试温度代码: temp.h #ifndef __TEMP_H_ #define __TEMP_H_ #include reg52.h
[单片机]
<font color='red'>51单片机</font>~DS18B20温度传感器
单片机驱动数码管显示设计
数码管是非常常见的东西,他能显示数字,以及字母,应用非常的广泛,本文我来和大家谈谈如何用单片机来驱动数码管 数码管的结构 数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理. 基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9"及少量字符的显示。另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为 "a,b,c,d,e,f,g,dp",排列顺序如下图1。 图1: 数码管引脚图及外形图 数码管的分类 数码管按各发光二极管
[单片机]
单片机驱动<font color='red'>数码管</font><font color='red'>显示</font>设计
51单片机串行口速率设置
/* 51单片机速率设置公式 波特率=SYSclk/(32*12*(256-TH1) */ #ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */ TR1 = 1; /* TR1: timer 1 run
[单片机]
51单片机 基于LED点阵的9~0倒计数
#include reg52.h sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; unsigned char code image = { {0xC3, 0x81, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3}, //数字0 {0xEF, 0xE7, 0xE3, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3}, //数字1 {0xC3, 0x81, 0x9D, 0x87, 0xC3, 0xF9, 0xC1, 0x81}, //数字2 {0xC3
[单片机]
单片机红外解码,短按开关灯,长按调光,数码管显示键值
//红外解码,实验板测试正常,8位数码管显示遥控编码(用户码,用户反码,右边3位数码管显示PWM值), //两片74hc573驱动8位共阴数码管 //CH-键短按开关灯,+键长按调光,数码管显示键值;长按调光的解码程序目前网上很难找到,我琢磨了很久才把程序调通//压缩包里有完整的程序代码,有逻辑分析仪测试的连发码的波形 单片机源程序如下: #include INCSTC89C52RC.H #include INCMY_SET.H #include INCIR_NEC.H //调用NEC解码头文件 #define DIGI_PORT P0 // 宏定义数码管端口,如果端口改变,只需修改这一句即可 #d
[单片机]
单片机红外解码,短按开关灯,长按调光,<font color='red'>数码管</font><font color='red'>显示</font>键值
51单片机的外部中断触发方式简介
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证
[单片机]
51单片机存储程序和数据的介绍
MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。好,说回MCS-51。 对于程序存储器,有片内和片外两部分。而且无论片内程序存储器,还是片外程序存储器,他们的地址是共享的。如果片内4k ROM的话,地址就是0x0000-0x0FFF,从0x1000-0xFFFF就是外部ROM的地址空间。可外部ROM的0x0000
[单片机]
C8051单片机实现多目标超声波测距的设计
超声波测距传感器以其测量精度高、响应快和价格低廉而广泛应用在工业现场测距、移动机器人导航和定位等场合。超声波测距传感器常用的方式是1 个发射头对应1 个接收头,也有多个发射头对应1 个接收头。 它们共同之处是:每个接收头只测量一个位置,这个位置就是除盲区内因发射的超声波旁瓣引起的接收信号超声波包络峰值外,第1个接收信号超声波包络峰值对应的距离。 在机器人自主导航避障时,机器人只关心最近障碍物的距离,是能够完成自主避障的。 但是在机器人定位时,尤其在动态环境下,1 个接收头同时测量多个距离,能够更多地描述环境信息,这对机器人用超声波定位具有重要意义。 1 超声波 1. 1 超声波测距原理 超声波测距原理比较简单,一般是采用时差法
[单片机]
C80<font color='red'>51单片机</font>实现多目标超声波测距的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved