16级单片机实践经验分享

实验一 王慧敏0235

2018-06-22  本文已影响9人  王慧敏0235

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

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

实验原理:8*8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线上的交叉点上,当对应的某一行置高电平,某一列置低电平是,相应的二极管就会发亮。设计出汉字,将其转化为二进制进而转化为十六进制。

实验步骤:

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

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

3.生成.hex文件。

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

过程:

根据要显示的图形的16进制如下

新建项目

编写程序

#include#includesbit SRCLK=P3^6;

sbit RCLK=P3^5;

sbit SER=P3^4;

//--定义要使用的IO口--//

#define COMMONPORTS P0

//--列选通控制--//

unsigned char code TAB[8]  =

{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

//--点阵字码--//

unsigned char code CHARCODE[1][8]=

{

0x1c,0x18,0x24,0x12,0x11,0x12,0x24,0x18,  //心

};

void delay(unsigned int time){ unsigned int

i,j; for(i=0;i>7;

dat<<=1;

SRCLK=1;

_nop_();

_nop_();

SRCLK=0;

}

RCLK=1;

_nop_();

_nop_();

RCLK=0;

}

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

* 函数名   

    : main

* 函数功能   : 主函数

* 输入   

      : 无

* 输出   

    : 无

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

void main()

{

unsigned char tab, j;

unsigned int  i;

while(1)

{

for(i= 0; i<50; i++ )  //两个字之间的扫描间隔时间

{

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

{

Hc595SendByte(0x00);     //消隐

COMMONPORTS = TAB[tab]; //输出字码

Hc595SendByte(CHARCODE[j][tab]);

delay(2);

}

}

j++;

if(j == 6)

{

j = 0;

}

}

}

编写完成后需生成hex文件

结果:

从完全不会开始的,修改多次,心累,不想说了。
上一篇 下一篇

猜你喜欢

热点阅读