#include“reg52.h”
#include “intrins.h”
#define byte unsigned char
//#define n_nop _nop_();//_nop_();_nop_();
///////////////////////////////////////////////////////
//max7219
////////////////////////////////////////////////////////////////////
//管脚,变量和常数定义;define
#define model_addr 0x09 // x9 h
#define bright_addr 0x0a // xa h
#define limit_addr 0x0b // xb h
#define shutd_addr 0x0c // xc h
#define test_addr 0x0f // xf h
#define set_normal 0x00 //进入正常而非测试工作方式
#define set_halt 0x00 //进入停机工作方式?
#define set_model 0xff //将bcd码译成b码;
#define set_bright 0x04 //占空比为15/32;
#define set_limit 0x07 //8位显示方式;
#define set_shutd 0x01 //进入正常而非停机工作方式?
sbit din =p1^0;
sbit load =p1^1;
sbit clk =p1^2;
bit bdata bonceinit7219;
//////////////////////////////////////////////////////////////////////
//函数声明;property
void init_7219_begin(void);
void init_7219(void);
void write_one_8279(byte addr,byte mydate);
//////////////////////////////////////////////////////////////////////
//函数定义;founction
void init_7219_begin(void)
{//max7219显示型号时的初始化;
write_one_8279(model_addr,0x00); //将bcd码译成b码?
write_one_8279(bright_addr,set_bright); //占空比为15/32?
write_one_8279(limit_addr,set_limit); //8位显示方式;
write_one_8279(shutd_addr,set_shutd); //进入正常工作方式
}
void init_7219(void)
{//max7219正常工作时的初始化;
write_one_8279(shutd_addr,set_halt); //进入停机工作方式
write_one_8279(model_addr,set_model); //将bcd码译成b码?
write_one_8279(bright_addr,set_bright); //占空比为15/32?
write_one_8279(limit_addr,set_limit); //8位显示方式;
write_one_8279(shutd_addr,set_shutd); //进入正常而非停机工作方式
write_one_8279(test_addr,set_normal); //进入正常而非测试工作方式
}
void write_one_8279( byte addr, //要写入的位置;
byte mydate) //要写入的数据;
{//写数据给max7219函数;display data
register byte i;
load=0; //-/_
for(i=0;i《8;i++)
{
_nop_();
clk=0; //-/_
if(addr & 0x80)
din=1;
else
din=0;
_nop_();
clk=1; //_/-
addr=addr《《1;
}
for(i=0;i《8;i++)
{
_nop_();
clk=0; //-/_
if(mydate & 0x80)
din=1;
else
din=0;
_nop_();
clk=1; //_/-
mydate=mydate《《1;
}
load=1; //_/-
}
2: http://www.weboch.com.cn/news_show.asp?newsid=138
感谢该作者。
//max7219 led drive program
//for 51 mcu
//designed by zhaoliang
//2005-6-12 13:52
#include“reg52.h”
#include “intrins.h”
/***********************************************************************/
//common part
#define high 1
#define low 0
#define true 1
#define false 0
#define zero 0
#define msb 0x80
#define lsb 0x01
//max7219 part
#define decode_mode 0x09
#define intensity 0x0a
#define scan_limit 0x0b
#define shut_down 0x0c
#define display_test 0x0f
//pin defined
/***********************************************************************/
//change this part at different board
sbit load=p1^2; //max7219 load-data input: rising edge pin 12
sbit din=p1^1; //max7219 serial-data input: rising edge pin 1
sbit clk=p1^0; //max7219 serial-clock input: maximum 10mhz pin 13
//function define
/***********************************************************************/
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
//test program display from 1~8
/***********************************************************************/
void main(void)
{
unsigned char i;
init_max7219();
while(true)
{
for(i=1;i《9;i++)
{
write_max7219(i,i);
}
}
}
/***********************************************************************/
void write_max7219_byte(unsigned char temp)
{
unsigned char i;
for (i=0;i《8;i++)
{
clk=low;
din=(bit)(temp&msb);
temp《《=1;
clk=high;
}
}
/***********************************************************************/
void write_max7219(unsigned char address,unsigned char dat)
{
load=low;
write_max7219_byte(address);
write_max7219_byte(dat);
load=high;
}
/***********************************************************************/
void init_max7219(void)
{
write_max7219(shut_down, 0x01); //normal operation xxxxxxx1 shutdown mode xxxxxxxx0
write_max7219(display_test, 0x00); //normal operation xxxxxxx0 display test mode
xxxxxxxx1
write_max7219(decode_mode, 0xff); //decode mode select d7~d0 1 b decode 0 no decode
write_max7219(scan_limit, 0x07); //scan limit 0~7 0xx0~0xx7
write_max7219(intensity, 0x04); //set intensity 0xx0~0xxf
}
一种名为“普适注意力”的新翻译模型,用2D卷积网络做序列预测
新型多媒体电话的发展前景
在FPGA芯片上使用VHDL语言实现UART模块的设计
就这么简单!任意模拟范围的有效分辨率计算
华为nova 4测评采用麒麟970处理器无论是游戏性能还是拍照都无可挑剔
51单片机MAX7219程序编写与测试
美国提新法案 拟投10亿美元替代华为在5G方面的主导地位
中国面板企业面临新技术挑战,面板企业与终端企业合作的重要性
光谱共焦位移传感器能应用那些领域?原理是什么?
华为在电动汽车领域的业务又进一步
什么是电阻的高频工作模式?电阻电桥的工作原理及其特性
移轴镜头实拍技巧3 补偿建筑物的变形
贴片电阻损坏原因分析和解决办法
探究了物联网现阶段发展特性、与人工智能的关系以及未来发展方向
SEMI预测 半导体市场2019年仅成长2.6%
英特尔酷睿i5-11400六核Rocket Lake处理器跑分曝光
滴水湖RISC-V力量再聚首,芯来赋能客户创“芯”应用
基于的DSP的逆变电源模糊PID控制
XQ6657Z35-EVM 的DSP + ZYNQ核心板,SRIO通讯
模糊PID控制系统设计的特点、优势详解