16级单片机实践经验分享

实验一 崔提提0128

2018-05-22  本文已影响12人  崔提提_0128

实验目的:为了进一步掌握单片机(大板的使用),理解单片机的工作原理,实现在单片机上实现显示

实验器材:keil、单片机(大板)、PZ-ISP普中自动下载软件。

实验原理:8*8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线上的交叉点上,当对应的某一行置高电平,某一列置低电平是,相应的二极管就会发亮。

实验步骤:

1.在keil中新建工程,编写.c文件。

2.编译调试文件,修改错误及警告。

3.生成.hex文件。

4.在烧录软件中下载生成的.hex软件。

程序编写

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器#includetypedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

sbit SRCLK=P3^6;

sbit RCLK=P3^5;

sbit SER=P3^4;

u8 ledduan[]={0x04,0x24,0x24,0x24,0x24,0x24,0x24,0x04};//二

u8 ledwei[]={0x38f,0x44,0x42,0x21,0x21,0x42,0x44,0x38};//心

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

*函 数 名        : delay

*函数功能 :延时函数,i=1时,大约延时10us

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

void delay(u16 i)

{

while(i--);

}

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

*函数名        : Hc595SendByte(u8 dat)

*函数功能 :向74HC595发送一个字节的数据

*输入          : 无

*输出        : 无

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

void Hc595SendByte(u8 dat)

{

u8 a;

SRCLK=0;

RCLK=0;

for(a=0;a<8;a++)

{

SER=dat>>7;

dat<<=1;

SRCLK=1;

_nop_();

_nop_();

SRCLK=0;

}

RCLK=1;

_nop_();

_nop_();

RCLK=0;

}

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

*函 数 名      : main

*函数功能 :主函数

*输    入      : 无

*输    出    : 无

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

void main()

{

u8 i;

while(1)

{

P0=0x7f;

for(i=0;i<8;i++)

{

P0=ledwei[i]; //位选

Hc595SendByte(ledduan[i]); //发送段选数据

delay(100); //延时

Hc595SendByte(0x00);  //消隐

}

}

}

结果

上一篇 下一篇

猜你喜欢

热点阅读