实验一 贾祥成 0225

1:大板单片机的使用

首先在老师的帮助下了解了keil软件的一些基本操作,同时学会了如何烧录程序,了解了在进行实验的时候注意跳线的状态。

2:汉字张欣我♥你的代码实现

#include

#include

sbit 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[5][8]=

{

0xBD,0xA5,0xF7,0x10,0xFF,0x39,0x55,0x92,  //张

0x7E,0xA0,0xBE,0x20,0x4E,0xF0,0x5E,0x60,  //欣

0x10,0x55,0xBF,0x14,0x10,0xFE,0x99,0x52,   //我

0x38,0x7C,0x3E,0x1F,0x1F,0x3E,0x7C,0x38,   //心形

0x20,0x7F,0x84,0x6A,0xC1,0x5F,0x68,0x44,  //你

};

void delay(unsigned int time)

{

 unsigned int i,j;

 for(i=0;i

   for(j=0;j<121;j++);

}


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

* 函数名         : Hc595SendByte(unsigned char dat)

* 函数功能              :想74H595发送一个字节的数据

* 输入           :无

* 输出            :无

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

void Hc595SendByte(unsigned char dat)

{

       unsignedchar 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;

}

void main()

{     

      unsigned char tab, j;

       unsignedint  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== 5)

              {

                     j= 0;

              }

       }     


实验一 贾祥成 0225_第1张图片
实验一 贾祥成 0225_第2张图片

三、效果展示


实验一 贾祥成 0225_第3张图片


实验一 贾祥成 0225_第4张图片
实验一 贾祥成 0225_第5张图片

四、编程中遇到的问题及解决办法

1:

       if(j== 4)

              {

                     j= 0;

              }


解决方法:有几个字符数组元素就应该做到相应的扩充 同时j==也相应变成对应的数组元素个数

2:在设计16进制的时候

点阵上四排分别对应8 4 2 1

点阵下四排分别对应8 4 2 1

这样方便计算。

3:编程不是独立完成的,字符的编码是自己设计的,c语言当初偷懒听师姐背代码就行,没有好好听课,所以一到写代码就头疼,读了好几遍。虽然不能独立写出来,但是还是有收获的。

你可能感兴趣的:(实验一 贾祥成 0225)