51单片机C语言应用程序实例精讲Word文件下载.docx

上传人:b****2 文档编号:15279660 上传时间:2022-10-29 格式:DOCX 页数:138 大小:64.92KB
下载 相关 举报
51单片机C语言应用程序实例精讲Word文件下载.docx_第1页
第1页 / 共138页
51单片机C语言应用程序实例精讲Word文件下载.docx_第2页
第2页 / 共138页
51单片机C语言应用程序实例精讲Word文件下载.docx_第3页
第3页 / 共138页
51单片机C语言应用程序实例精讲Word文件下载.docx_第4页
第4页 / 共138页
51单片机C语言应用程序实例精讲Word文件下载.docx_第5页
第5页 / 共138页
点击查看更多>>
下载资源
资源描述

51单片机C语言应用程序实例精讲Word文件下载.docx

《51单片机C语言应用程序实例精讲Word文件下载.docx》由会员分享,可在线阅读,更多相关《51单片机C语言应用程序实例精讲Word文件下载.docx(138页珍藏版)》请在冰豆网上搜索。

51单片机C语言应用程序实例精讲Word文件下载.docx

digbit=0x01;

//从第一位数码管开始

wordbuf[3]=4;

wordbuf[2]=3;

wordbuf[1]=2;

wordbuf[0]=1;

while

(1);

}

/*定时器0中断服务子程序,定时动态扫描显示*/

voidtime0_int(void)interrupt1

display();

/*根据共阴极字型编码表获取0~9,A~B字型代码*/

uchargetcode(uchari)

ucharp;

switch(i)

{

case0:

p=0x3f;

break;

/*0*/

case1:

p=0x06;

/*1*/

case2:

p=0x5B;

/*2*/

case3:

p=0x4F;

/*3*/

case4:

p=0x66;

/*4*/

case5:

p=0x6D;

/*5*/

case6:

p=0x7D;

/*6*/

case7:

p=0x07;

/*7*/

case8:

p=0x7F;

/*8*/

case9:

p=0x67;

/*9*/

case10:

p=0x77;

/*A*/

case11:

p=0x7C;

/*B*/

case12:

p=0x39;

/*C*/

case13:

p=0x5E;

/*D*/

case14:

p=0x79;

/*E*/

case15:

p=0x71;

/*F*/

default:

break;

}

return(p);

/*显示函数*/

voiddisplay(void)

uchari;

switch(digbit)

i=0;

break;

i=1;

i=2;

i=3;

break;

WORDPORT=getcode(wordbuf[i]);

//送字型码

DIGPORT=digbit;

//送字位码

if(digbit<

0x08)

digbit=digbit*2;

else

/*****************************************/

/*Copyright(c)2005,通信工程学院*/

戴佳*/

#ifndef_7LEDSHOW_H//防止7LEDShow.h被重复引用

#define_7LEDSHOW_H

#include<

reg52.h>

//引用标准库的头文件

absacc.h>

stdio.h>

math.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineDIGPORTXBYTE[0x0200]//定义字位口

#defineWORDPORTXBYTE[0x0100]//定义字型口

#definefosc11.0592//晶振频率

#definetime02000//定时2000us

uchardigbit;

//字位

ucharwordbuf[4];

//字型码缓冲区

uintidatatime0_tmp;

//临时变量,用于计算定时

uchargetcode(uchari);

//根据共阴极字型编码表获取字型代码函数

voiddisplay(void);

//显示函数

#endif

戴佳*/

8DigitShow.h"

/*延时t毫秒*/

voiddelay(uintt)

uinti;

while(t--)

/*对于12M时钟,约延时1ms*/

for(i=0;

i<

125;

i++)

{}

/*向MAX7219写入字节(8位)*/

voidSendChar(ucharch)

uchari,temp;

_nop_();

for(i=0;

8;

temp=ch&

0x80;

ch=ch<

<

1;

if(temp)

DIN=1;

CLK=0;

CLK=1;

DIN=0;

/*向MAX7219写入字(16位)*/

voidWriteWord(ucharaddr,ucharnum)

LOAD=0;

SendChar(addr);

SendChar(num);

LOAD=1;

//锁存进相应寄存器

/*MAX7219初始化*/

voidInitDisplay(void)

WriteWord(ScanLimit,ScanDigit);

//设置扫描界限

WriteWord(DecodeMode,DecodeDigit);

//设置译码模式

WriteWord(Intensity,IntensityGrade);

//设置亮度

WriteWord(ShutDown,NormalOperation);

//设置为正常工作模式

/*主函数*/

voidmain(void)

InitDisplay();

//MAX7219初始化

WriteWord(DisplayTest,TestMode);

//开始显示测试,点亮所有LED

delay(3000);

//延时约3s

WriteWord(DisplayTest,TextEnd);

//退出显示测试模式

while

(1)

{

uchari,j;

/*8个数码管以相同间隔时间2s同时变化显示0~9的数字*/

=9;

delay(2000);

//间隔约2s

InitDisplay();

for(j=0;

j<

=7;

j++)

DisBuffer[j]=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]);

#ifndef_8DIGITSHOW_H//防止8DigitShow.h被重复引用

#define_8DIGITSHOW_H

//引用标准库的头文件

intrins.h>

sbitDIN=P1^0;

//串行数据输入

sbitCLK=P1^1;

//串行时钟

sbitLOAD=P1^2;

//显示数据锁存控制

#defineNoOp0x00//空操作寄存器

#defineDigit00x01//数码管1寄存器

#defineDigit10x02//数码管2寄存器

#defineDigit20x03//数码管3寄存器

#defineDigit30x04//数码管4寄存器

#defineDigit40x05//数码管5寄存器

#defineDigit50x06//数码管6寄存器

#defineDigit60x07//数码管7寄存器

#defineDigit70x08//数码管8寄存器

#defineDecodeMode0x09//译码模式寄存器

#defineIntensity0x0a//亮度寄存器

#defineSca

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1