📄 main.c
字号:
/************************************************************************************
* Copyright (c) 2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* 文件名称: Main.C
* 文件标识: none
* 适用器件: C8051F020
*
* 摘 要: 本文件是LCD测试程序,功能:开机显示"铭朗科技,WWW.MLARM.COM"信息,为待机界面。
* 定义'A'~'F'为功能键。按"A"显示画点图形,按"B"显示画直线图形,按"C"显示画矩型图形,
* 按"D"显示画矩型图形,按"E"显示画圆形图形, "F"显示待机界面.使用外部22.1184MHz晶振.
*
* 当前版本: 1.1
* 作 者: 刘大伟
* 完成日期: 2007年3月7日
*
* 历史版本: 1.0
* 作 者: 卢 阳
* 完成日期: 2004年11月14日
*
* 历史版本: 0.9
* 原 作者: 李林利
* 完成日期: 2004年7月1日
*************************************************************************************/
/******************************引用外部头文件****************************************/
#include "main.h"
/************************************************************************************/
/******************************全局变量及数组****************************************/
unsigned char key; //定义键值变量
/*************************************************************************************
* 主循环程序
*************************************************************************************/
void main (void)
{
#if LCDA|LCDB
unsigned int m,n;
bit Cycle_Flag=0;
#endif
//禁止看门狗定时器
WDTCN = 0xde;
WDTCN = 0xad;
//初始化
SYSCLK_Init ();
PORT_Init ();
Key_Init();
#if LCDA
LCDA_Init(128,240,FS8x8);
#elif LCDB
LCDB_Init(240,320);
#elif LCDC
LCDC_Init(); // LCD初始化
LCDC_DisFull(Full); // 满屏
LCDC_DisFull(Clr); // 清屏
#endif
dis_start0();
while(1)
{
key=GetKey(); //调用键盘扫描函数,返回的键值送变量key
if(key!=0xFF) //键值有效 执行按键程序
{
while(1)
{
Alarm(1); //响铃
Delay_ms(50);
Alarm(0); //关闭铃声
switch (key)
{
case 0x0a:
#if LCDA
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDA_ClearScreen();
for (m=0;m<128;m++)
{
for (n=0;n<240;n+=4)
LCDA_DrawPixel(m, n, 1);
Delay_ms(30);
key=GetKey();
if((key!=0xff)&&(key!=0x0a))
break;
}
if((key!=0xff)&&(key!=0x0a))
Cycle_Flag=0;
}
#elif LCDB
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDB_ClearScreen();
for (m=0;m<240;m++)
{
for (n=0;n<320;n+=4)
{
LCDB_DrawPixel(m, n, 1);
}
Delay_ms(30);
key=GetKey();
if((key!=0xff)&&(key!=0x0a))
break;
}
if((key!=0xff)&&(key!=0x0a))
Cycle_Flag=0;
}
#elif LCDC
Draw_dot();
#endif
break;
case 0x0b:
#if LCDA
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDA_ClearScreen();
for (n=0;n<120;n+=8)
{
Delay_ms(100);
LCDA_DrawLine(0,120,128,120-n,1);
LCDA_DrawLine(0,121,128,121+n,1);
key=GetKey();
if((key!=0xff)&&(key!=0x0b))
break;
}
if((key!=0xff)&&(key!=0x0b))
Cycle_Flag=0;
}
#elif LCDB
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDB_ClearScreen();
for (m=0;m<240;m+=8)
{
LCDB_DrawLine(0,0,240,m,1);
Delay_ms(100);
key=GetKey();
if((key!=0xff)&&(key!=0x0b))
break;
}
Delay_ms(100);
if((key!=0xff)&&(key!=0x0b))
{
Cycle_Flag=0;
continue;
}
for (n=0;n<320;n+=8)
{
LCDB_DrawLine(0,0,n,320,1);
Delay_ms(100);
key=GetKey();
if((key!=0xff)&&(key!=0x0b))
break;
}
Delay_ms(100);
if((key!=0xff)&&(key!=0x0b))
Cycle_Flag=0;
}
#elif LCDC
Draw_line();
#endif
break;
case 0x0c:
#if LCDA
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDA_ClearScreen();
for (m=0;m<20;m++)
{
Delay_ms(100);
LCDA_DrawRectangle(0, 0, m*6, m*8, 1);
key=GetKey();
if((key!=0xff)&&(key!=0x0c))
break;
}
if((key!=0xff)&&(key!=0x0c))
Cycle_Flag=0;
}
#elif LCDB
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDB_ClearScreen();
for (m=0;m<40;m++)
{
LCDB_DrawRectangle(0, 0, m*6, m*8, 1);
Delay_ms(100);
key=GetKey();
if((key!=0xff)&&(key!=0x0c))
break;
}
if((key!=0xff)&&(key!=0x0c))
Cycle_Flag=0;
}
#elif LCDC
Draw_Rectangle();
#endif
break;
case 0x0d:
#if LCDA
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDA_ClearScreen();
for (m=0;m<5;m++)
{
LCDA_ClearScreen();
LCDA_DrawFillRectangle(64-m*8, 120-m*15, 64+m*8, 120+m*15, 1);
Delay_ms(500);
key=GetKey();
if((key!=0xff)&&(key!=0x0d))
break;
}
if((key!=0xff)&&(key!=0x0d))
Cycle_Flag=0;
}
#elif LCDB
Cycle_Flag=1;
while(Cycle_Flag)
{
for(m=0;m<6;m++)
{
LCDB_ClearScreen();
LCDB_DrawFillRectangle(110-15*m,150-20*m,130+15*m,170+20*m,1);
Delay_ms(100);
key=GetKey();
if((key!=0xff)&&(key!=0x0d))
break;
}
if((key!=0xff)&&(key!=0x0d))
Cycle_Flag=0;
}
#elif LCDC
Draw_FillRectangle();
#endif
break;
case 0x0e:
#if LCDA
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDA_ClearScreen();
for (m=0;m<120;m+=8)
{
LCDA_DrawCircle(64, 120, m, 1);
Delay_ms(100);
key=GetKey();
if((key!=0xff)&&(key!=0x0e))
break;
}
if((key!=0xff)&&(key!=0x0e))
Cycle_Flag=0;
}
#elif LCDB
Cycle_Flag=1;
while(Cycle_Flag)
{
LCDB_ClearScreen();
for (m=0;m<160;m+=8)
{
LCDB_DrawCircle(120, 160, m, 1);
Delay_ms(100);
key=GetKey();
if((key!=0xff)&&(key!=0x0e))
break;
}
if((key!=0xff)&&(key!=0x0e))
Cycle_Flag=0;
}
#elif LCDC
Draw_circle();
#endif
break;
case 0x0f:
#if LCDA|LCDB
dis_start0();
for(;(key==0xff)|(key==0x0f);key=GetKey())
{
Delay_ms(20);
}
#elif LCDC
LCDC_DisFull(Clr);
dis_start0();
for(;(key==0xff)|(key==0x0f);key=GetKey())
{
Delay_ms(20);
}
#endif
break;
default:
for(;(key==0xff)|(key<0x0a);key=GetKey())
{
Delay_ms(20);
}
break;
}
}
}
Delay_ms(20);
}
}
/****************************************************************************************
* 文件结束
****************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -