实验一关震0138

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

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

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

四、实验步骤:

1.画出点阵图,进行二进制与十六进制的转换


实验一关震0138_第1张图片

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

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

4.生成.hex文件。

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

五、程序:

#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]=

{

0xFF,0x81,0x81,0x81,0x8D,0x89,0x89,0x8F,  //G

};

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;

}

}

}

六、结果:

实验一关震0138_第2张图片

你可能感兴趣的:(实验一关震0138)