show.c

来自「单片机显示汉字实验」· C语言 代码 · 共 107 行

C
107
字号
#include <reg51.h>
#include <stdio.h>
#include "var.h"
#include "sub.h"


void showhz(void);
void main ()
{
int loop=9;
EA=1;
EX0=1;
IT0=1;

ET0=1;
TMOD=1;
TH0=0xFC;
TL0=0x17;
TR0=1;

InitLCD(30);

showhz();

while(loop==9){};

}

void showhz()
{
char col=0,row=0,j=0;

int start_tep=0,index=0;

for (hz_pointer=0;hz_pointer<hz_size;hz_pointer++)
   {
   row=hz_pointer/(12/2);//汉子所在的行数。
   col=hz_pointer%(12/2);//汉字的列数
   
  start_tep=row*LineChar*16+col*2;//下一个汉字的开启地址
  

   for(j=0;j<16;j++)
	   {
        start_tep=start_tep+LineChar;//地址换一行
        OutPortCom3( (unsigned char)(start_tep), (unsigned char)(start_tep>>8), 0x24); //set address
        index=hz_pointer*32+j*2;
        OutPortCom2( hzdot[index], 0xc0);//输出低位
        index=hz_pointer*32+j*2+1;
        OutPortCom2(hzdot[index], 0xc4);//输出高位

        OutPortCom3( (unsigned char)(start_tep+12), (unsigned char)((start_tep+12)>>8), 0x24); //set address
        index=hz_pointer*32+j*2;
        OutPortCom2( hzdot[index], 0xc0);//输出低位
        index=hz_pointer*32+j*2+1;
        OutPortCom2(hzdot[index], 0xc4);//输出高位
		 
       if(col<3)
	   {
        OutPortCom3( (unsigned char)(start_tep+24), (unsigned char)((start_tep+24)>>8), 0x24); //set address
        index=hz_pointer*32+j*2;
        OutPortCom2( hzdot[index], 0xc0);//输出低位
        index=hz_pointer*32+j*2+1;
        OutPortCom2(hzdot[index], 0xc4);//输出高位
		}
	 
		}
	  
 
   }



/*
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address
OutPortCom2( 0xff, 0xc0);
OutPortCom2( 0xff, 0xc4);*/


}
void shack() interrupt 0

{
if (key_counter<30)key_counter++;
else key_counter=0;
   
OutPortCom3((unsigned char)key_counter*60, (unsigned char)((key_counter*60)>>8), 0x42); //set address
     

}

void ontime() interrupt 1
{
TH0=0xFC;
TL0=0x17;

if (timer_counter<500)timer_counter++;
else
   {
   timer_counter=0;
   if (key_counter<8)key_counter++;
    else key_counter=0;
   OutPortCom3((unsigned char)(key_counter*240),(unsigned char)((key_counter*240)>>8), 0x42); //set address
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?