




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
max7219显示程序-C程序—汇编max7219显示程序(汇编)#include"msp430x41x.h"
DINEQU001H;P1.0
CLKEQU002H;P1.1
LOADEQU004H;P1.2ORG0F000H
RESETMOV#300H,SP;初始化
MOV#WDTPW+WDTHOLD,&WDTCTL
BIS.B#CLK,&P1DIR
BIS.B#DIN,&P1DIR
BIS.B#LOAD,&P1DIR
PUSH#00C01H;设置工作模式
BIC.B#LOAD,&P1OUT
CALL#MOVE
BIS.B#LOAD,&P1OUTPUSH#00B05H;设置扫描位数
BIC.B#LOAD,&P1OUT
CALL#MOVE
BIS.B#LOAD,&P1OUTPUSH#009FFH;设置编码方式
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00A07H;设置亮度
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTXIANPUSH#00107H;显示第一位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00206H;显示第二位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00305H;显示第三位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00404H;显示第四位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00503H;显示第五位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00602H;显示第六位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUT
JMP$
MOVEMOV.B#16,R6
MOV2(SP),R13
MOV#1,R10
SENDLOOPBIC.B#CLK,&P1OUT
BITR10,R13
JNZSEND1
SEND0BIC.B#DIN,&P1OUT
JMPGOON
SEND1BIS.B#DIN,&P1OUT
GOONBIS.B#CLK,&P1OUT
RLAR10
BIC.B#CLK,&P1OUT
DECR6
JNZSENDLOOP
RET
ORG0FFFEH
DWRESET
END#include"msp430x41x.h"
DINEQU001H;P1.0
CLKEQU002H;P1.1
LOADEQU004H;P1.2ORG0F000H
MOV#300H,SP;初始化
MOV#WDTPW+WDTHOLD,&WDTCTL
BIS.B#CLK,&P1DIR
BIS.B#DIN,&P1DIR
BIS.B#LOAD,&P1DIRPUSH#00C01H;设置工作模式
BIC.B#LOAD,&P1OUT
CALL#MOVE
BIS.B#LOAD,&P1OUTPUSH#00B05H;设置扫描位数
BIC.B#LOAD,&P1OUT
CALL#MOVE
BIS.B#LOAD,&P1OUTPUSH#009FFH;设置编码方式
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00A07H;设置亮度
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTXIANPUSH#00107H;显示第一位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00206H;显示第二位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00305H;显示第三位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00404H;显示第四位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00503H;显示第五位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUTPUSH#00602H;显示第六位
BIC.B#LOAD,&P1OUT
CALLMOVE
BIS.B#LOAD,&P1OUT
JMP$
MOVEMOV.B#16,R6
POPR13
MOV#1,R10
SENDLOOPBIC.B#CLK,&P1OUT
BITR10,R13
JNZSEND1
SEND0BIC.B#DIN,&P1OUT
JMPGOON
SEND1BIS.B#DIN,&P1OUT
GOONBIS.B#CLK,&P1OUT
RLAR10
BIC.B#CLK,&P1OUT
DECR6
JNZSENDLOOP
RET
ENDMAX7219的c程序/*---------------------------------------------------------
*
程序说明
*
*
1、本程序已经通过测试,非常好用;
*
*
2、在非译码方式下编码和一般书上写的不一样,请注意;
*
*
3、每次送显示的时候先初始化一次;
*
*
4、在设计电路或制作试验板时注意添加Vcc到GND之间的电容,*
*
一个10vF的电解电容和0.1vF的陶瓷电容。并在DIN、LOAD、*
*
CLK到GND之间接入30pF的瓷片电容。
*
*
*
*
程序提供人:苏建宇
*
*
*
*
*
----------------------------------------------------------*/
#include
#include
//#include
/*--------------------------------------------------*/
sbit
dis_DIN=P1^0;
/*显示串行数据输入端*/
sbit
dis_LOAD=P1^1;
/*显示数据锁存端*/
sbit
dis_CLK=P1^2;
/*显示时钟输入端*/
#define
NoOp
0x00
/*空操作*/
#define
Digit0
0x01
/*数码管1*/
#define
Digit1
0x02
/*数码管2*/
#define
Digit2
0x03
/*数码管3*/
#define
Digit3
0x04
/*数码管4*/
#define
Digit4
0x05
/*数码管5*/
#define
Digit5
0x06
/*数码管6*/
#define
Digit6
0x07
/*数码管7*/
#define
Digit7
0x08
/*数码管8*/
#define
DecodeMode
0x09
/*译码模式*/
#define
Intensity
0x0a
/*亮度*/
#define
ScanLimit
0x0b
/*扫描界限*/
#define
ShutDown
0x0c
/*掉电模式*/
#define
DisplayTest
0x0f
/*显示测试*/
#define
ShutdownMode
0x00
/*掉电方式工作*/
#define
NormalOperation
0x01
/*正常操作方式*/
#define
DecodeDigit
0xff
/*译码位数设置*/
#define
IntensityGrade
0x0a
/*显示亮度级别设置*/
#define
ScanDigit
0x07
/*扫描位数设置*/
#define
TestMode
0x01
/*显示测试方式*/
#define
TextEnd
0x00
/*显示测试结束,正常工作*/
unsigned
char
data
DisBuffer[8]={0,0,0,0,0,0,0,0};
/*显示缓存区*/
unsigned
char
code
dispaly_list[]=
{
0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,
/*0,1,2,3,4,5,6,7,8,9*/
0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff,0x00};
/*A,B,C,D,E,F,P,U,全
亮,全灭*/
/*--------------------------------------------------------
10ms延时子程序
---------------------------------------------------------*/
void
delayX10ms(unsigned
char
count)
{
unsigned
char
j,k;
while(count--!=0)
{
for(j=0;j<43;j++)
for(k=0;k<73;k++)
;
}
}
/*-------------------------------------------------
向MAX7219写入字节(8位)
--------------------------------------------------*/
void
SendChar
(unsigned
char
ch)
{
unsigned
char
i,temp;
_nop_();
for
(i=0;i<8;i++)
{
temp=ch&0x80;
ch=ch<<1;
if(temp)
{
dis_DIN=1;
dis_CLK=0;
dis_CLK=1;
}
else
{
dis_DIN=0;
dis_CLK=0;
dis_CLK=1;
}
}
}
/*-------------------------------------------------
向MAX7219写入字(16位)
-------------------------------------------------*/
void
WriteWord
(unsigned
char
addr,unsigned
char
num)
{
dis_LOAD=0;
_nop_();
SendChar
(addr);
_nop_();
SendChar
(num);
_nop_();
dis_LOAD=1;
}
/*-------------------------------------------------
MAX7219初始化
-------------------------------------------------*/
void
InitDis
(void)
{
WriteWord
(ScanLimit,ScanDigit);
/*设置扫描界限*/
WriteWord
(DecodeMode,DecodeDigit);
/*设置译码模式*/
WriteWord
(Intensity,IntensityGrade);
/*设置亮度*/
WriteWord
(ShutDown,NormalOperation);
/*设置电源工作模式*/
}
/*-------------------------------------------------
系统上电初始化
-------------------------------------------------*/
void
InitMain
(void)
{
IE=0x00;
/*设置中断允许寄存器*/
IP=0x00;
/*设置中断优先级管理寄存器*/
TH0=0xd8;
/*设定时器初值,10ms*/
TL0=0xf0;
TMOD=0x01;
/*T1
定时器模式2,波特率发生器,T0
定时器模式1*/
TCON=0x11;
/*设置定时器控制寄存器,INT0设置为边沿触发方式*/
PSW=0x00;
}
/*-------------------------------------------------
主函数
-------------------------------------------------*/
void
main(void)
{
InitMain
();
InitDis
();
WriteWord
(DisplayTest,TestMode);
delayX10ms(0x64);
delayX10ms(0x64);
WriteWord
(DisplayTest,TextEnd);
while(1)
{
unsigned
char
i;
for
(i=0;i<=9;i++)
{
delayX10ms(0x64);
delayX10ms(0x64);
InitDis
();
DisBuffer[0]=i;
DisBuffer[1]=i;
DisBuffer[2]=i;
DisBuffer[3]=i;
DisBuffer[4]=i;
DisBuffer[5]=i;
DisBuffer[6]=i;
DisBuffer[7]=i;
WriteWord
(Digit0,DisBuffer[0]);
WriteWord
(Digit1,DisBuffer[1]);
WriteWord
(Digit2,DisBuffer[2]);
WriteWord
(Digit3,DisBuffer[3]);
WriteWord
(Digit4,DisBuffer[4]);
WriteWord
(Digit5,DisBuffer[5]);
WriteWord
(Digit6,DisBuffer[6]);
WriteWord
(Digit7,DisBuffer[7]);
}
}
}我正好有个7219,一直想学一下,51节就搭个电路看看,谢谢。[电烙铁]2005-4-22
18:00:21我有更简单的[rq88]2005-4-22
18:38:00我有更简单的那就发上来大家都看看嘛
[bush636]2005-4-22
21:19:13我有AVR
C++的
AT90S2313通过(有图)(附图)[Sunnyyonkers]2005-4-23
14:27:58要注意到时序正确就行了,另外电压一定要够,否则一定会出现乱
码。
我先给出一个我做的一个通用驱动。
//------------------------------------------------------------------------------
//Author:SunnyYonkers
//Date:
2005y-03m-18d
13:00
//------------------------------------------------------------------------------
#include
#include
#include
#include
#include
#include
#include
//------------------------------------------------------------------------------
//Hardware
Define
//引脚定义
#define
SOFT_SERIAL_PORT
PORTB
#define
SOFT_SERIAL_DDR
DDRB
#define
SOFT_SERIAL_PIN
PINB
//------------------------------------------------------------------------------
#define
LOAD_PIN
0b00000100
#define
DIN_PIN
0b00001000
#define
CLK_PIN
0b00010000
//------------------------------------------------------------------------------
//定义引脚操作
#define
SET_DIN
SOFT_SERIAL_PORT
|=
DIN_PIN
#define
CLR_DIN
SOFT_SERIAL_PORT
&=
~DIN_PIN
#define
SET_CLK
SOFT_SERIAL_PORT
|=
CLK_PIN
#define
CLR_CLK
SOFT_SERIAL_PORT
&=
~CLK_PIN
#define
SET_LOAD
SOFT_SERIAL_PORT
|=
LOAD_PIN
#define
CLR_LOAD
SOFT_SERIAL_PORT
&=
~LOAD_PIN
//------------------------------------------------------------------------------
#define
TRUE
0x01
#define
FALSE
0x00
//------------------------------------------------------------------------------
#define
DISPLAY_ADD_0
0x01
#define
DISPLAY_ADD_1
0x02
#define
DISPLAY_ADD_2
0x03
#define
DISPLAY_ADD_3
0x04
#define
DISPLAY_ADD_4
0x05
#define
DISPLAY_ADD_5
0x06
#define
DISPLAY_ADD_6
0x07
#define
DISPLAY_ADD_7
0x08
//------------------------------------------------------------------------------
#define
DECODE_ADDRESS
0x09
#define
LIGHT_ADDRESS
0x0a
#define
SCAN_WIDE
0x0b
#define
SLEEP_ADDRESS
0x0c
#define
TEST_ADDRESS
0x0d
//------------------------------------------------------------------------------
#define
SLEEP_MODE
0x00
#define
UN_SLEEP_MODE
0x01
//------------------------------------------------------------------------------
#define
NO_DECODE
0x00
#define
DECODE_0_
0x01
#define
HALF_DECODE
0x0f
#define
DECODE_ALL
0xff
//------------------------------------------------------------------------------
#define
_CHAR_0
0b00000000
#define
_CHAR_1
0b00000001
#define
_CHAR_2
0b00000010
#define
_CHAR_3
0b00000011
#define
_CHAR_4
0b00000100
#define
_CHAR_5
0b00000101
#define
_CHAR_6
0b00000110
#define
_CHAR_7
0b00000111
#define
_CHAR_8
0b00001000
#define
_CHAR_9
0b00001001
#define
_CHAR_-
0b00001010
#define
_CHAR_E
0b00001011
#define
_CHAR_H
0b00001100
#define
_CHAR_L
0b00001101
#define
_CHAR_P
0b00001110
#define
_NO_CHAR
0b00001111
#define
_DOT
0b10000000
//------------------------------------------------------------------------------
class
max7219drv
{
public:
max7219drv();
private:
void
write(unsigned
char
cData);
public:
void
send(unsigned
char
address,unsigned
char
ndata);
};
//------------------------------------------------------------------------------
//构造函数
max7219drv::max7219drv()
{
SOFT_SERIAL_PORT
|=
0b11111111;//初始状态高电平
SOFT_SERIAL_DDR
|=
0b11111111;//状态
///////////////////////////////////////////////
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//写数据微程序:私有
void
max7219drv::write(unsigned
char
cData)
{
unsigned
char
nloop=0x07;
/////////////////////////////////////////////
do{
(0x80
&
cData)
?
(SET_DIN)
:
(CLR_DIN);cData<<=1;//数据移
出
CLR_CLK;
SET_CLK;//产生一个时钟信号
}while(nloop--);
}
//------------------------------------------------------------------------------
//写数据子程序:公有
void
max7219drv::send(unsigned
char
address,unsigned
char
ndata)
{
write(address);
write(ndata);
CLR_LOAD;
SET_LOAD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025南航招聘考试完整试题及答案
- 思维训练的幼儿园数学试题与答案
- 2025东航招聘英语试题及答案
- 失眠药物治疗试题及答案
- 艺术市场数字化交易平台在艺术品市场交易市场开发中的应用报告
- 广西区考申论试题及答案
- 节奏与旋律相互影响的探索试题及答案
- 知晓创业扶持政策试题及答案
- 城市供水设施建设风险分析报告:2025年社会稳定风险评估与政策建议
- 物理实验中数据处理与分析试题及答案
- 功能材料概论-课件
- XX单线铁路隧道施工设计
- 叶曼讲《道德经》讲义第1~10章
- 地下车库地坪施工工艺工法标准
- 生物化学工程基础(第三章代谢作用与发酵)课件
- 国家开放大学一网一平台电大《可编程控制器应用实训》形考任务1-7终结性考试题库及答案
- 农村户口分户协议书(6篇)
- (部编版一年级下册)语文第七单元复习课件
- SQ-02-绿色食品种植产品调查表0308
- 丽声北极星分级绘本第二级上Dinner for a Dragon 教学设计
- 活跃气氛的开场小游戏「培训破冰前必备」
评论
0/150
提交评论