⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 程序是基于STC89C58的点阵屏显示程序
💻 C
字号:
#include"reg52.h"
sfr WDT_CONTR=0xe1;
#define zimushuru 0
#define	pinyinchazhao 1
#define hazixianshi 2
#define xunhuan_xianshi 3
#define write_to_eprom 4
#define read_of_eprom 5
#define yiwei_xianshi 6

extern void display(void);
extern bit keyread(unsigned char *keyborad);
extern unsigned char translatekeytoasc(key);

extern void Readtodisp_kuodown(unsigned char ASCIICode,unsigned char count);
extern void Clear_one_zimu(unsigned char ge);
extern void Pre_hz();
extern void Next_hz();
extern void Choose_hz(unsigned char no);
extern void pyInit();
extern void Pageup();
extern void Pagedown();
extern void pinyinchazi(unsigned char *py);
extern void Clear_one_hanzi(void);
extern unsigned char page;
extern void Save_eprom();
extern void Read_eprom();
extern void Choose_eprom();
extern void Init();
extern void Clear_all(void);
extern void flash_disply(void);
extern void flash_this_page(void);
extern void begin(void);
xdata unsigned char key;
unsigned char zhuangtai=zimushuru;

sbit OE=P3^5;	  //138的使能

unsigned char zi_mu_ge_shu=0,zimu[7]="";
bit flag_begin=0;


void main()
{

	pyInit();
	zhuangtai=1;
	begin();
	TMOD=0x01;
    TH0=0xf8;
	TL0=0x00; 
	EA=1;
	ET0=1;
	TR0=1;
	OE=0; 
	
	while(1)
	{	
		if(keyread(&key))
		{
			key=translatekeytoasc(key);
			if(flag_begin==0&&key!=24)
				continue;
			if(flag_begin==0&&key==24) 
			{
				flag_begin=1;
				Init();	
			}
			if(key>='a'&&key<='z')
			{
				if(zhuangtai<=hazixianshi)
				{
					if(zhuangtai!=zimushuru)
						Clear_all();
					zhuangtai=zimushuru;
				
					if(zi_mu_ge_shu<=5)
					{
						zimu[zi_mu_ge_shu]=key;
						Readtodisp_kuodown(key,zi_mu_ge_shu);
						zi_mu_ge_shu++;
				 	}
				}
			}
			else if(key==12)    //撤消键	
			{	
				if(zhuangtai==zimushuru&&zi_mu_ge_shu!=0)
				{
					zi_mu_ge_shu--;
					zimu[zi_mu_ge_shu]='\0';
					Clear_one_zimu(zi_mu_ge_shu);		
				}
				else if(zhuangtai==hazixianshi) 
				{
					Clear_one_hanzi();
				}
			}
			else if(key==29)
			{
				if(zhuangtai==zimushuru)	//空格键
				{	
					pinyinchazi(zimu);
					zhuangtai=pinyinchazhao;
					zi_mu_ge_shu=0;
					zimu[0]='\0';
					zimu[1]='\0';
					zimu[2]='\0';
					zimu[3]='\0';
					zimu[4]='\0';
					zimu[5]='\0';
					zimu[6]='\0';  	   
				}
			}
			else if(key==18)
			{
				if(zhuangtai==pinyinchazhao)   //拼音下翻字
				{	
					Next_hz();				
				}
			}
			else if(key==17)
			{
				if(zhuangtai==pinyinchazhao)   //拼音上翻字
				{
					Pre_hz();
				}
			}
			else if(key>=49&&key<=52)
			{
				if(zhuangtai==pinyinchazhao) //选字
				{
					zhuangtai=hazixianshi;
					Choose_hz(key-49);
				}
			} 
			else if(key==15)  //上翻页
			{
				if(zhuangtai<=hazixianshi)	
					{
						zhuangtai=hazixianshi;
			 			Pageup();
					}
			}			 
			else if(key==16) 	   //下翻页
			{
				if(zhuangtai<=hazixianshi)
				{
					zhuangtai=hazixianshi;
			 		Pagedown();
				}
			} 
			else if(key==24)   //ESC
			{
				if(zhuangtai==hazixianshi)
				{	
					flash_disply();
					zhuangtai=xunhuan_xianshi; //组循环显示
					page=0;
				}
				else 
				{
					zhuangtai=hazixianshi;
					if(zhuangtai==xunhuan_xianshi)
						page=0;
					flash_this_page();
				}
			}
			else if(key==27)  //ctrl
			{		
				if(zhuangtai!=xunhuan_xianshi&&zhuangtai!=yiwei_xianshi)
					zhuangtai=write_to_eprom; //保存词组状态
			}
			else if(key==32)	 //enter
			{
				if(zhuangtai==read_of_eprom)
				{
					Choose_eprom();	
					zhuangtai=hazixianshi;	
				}
			}
			else if(key==21)	 //del键
			{
				if(zhuangtai!=xunhuan_xianshi)
					zhuangtai=yiwei_xianshi;	

			}
			else 
			{	if(zhuangtai!=xunhuan_xianshi&&zhuangtai!=yiwei_xianshi)   //在循环和移位显示状态不能进入
				{
					if(zhuangtai==write_to_eprom)
					{
						zhuangtai=hazixianshi;
						Save_eprom();	 //保存字
			 		}
					else
					{
						Read_eprom();
					zhuangtai=read_of_eprom;   //读取已存的字
					}
				}
			} 		   
			   
				

		}	  

	}


}


void dis(void) interrupt 1
{
	TH0=0xf0;
	TL0=0x00;
	display();	

}  

⌨️ 快捷键说明

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