📄 ra8803.c
字号:
// buzzeron();
}
break;
case 8: //延时后送出图片3
if (disp_dlt_ct>=DIS_DLT)
{
LCD_CmdWrite(0x00,0xCd); // LCD 基本顯示功能設定-1---文字模式
LCD_CmdWrite(0xF0,0xc0); // 設定中文字型為”简体”
LCD_CmdWrite(0x60,0x00); // 設定游標水平位址(Common)----------光标地址--Y--
LCD_CmdWrite(0x70,0x00); // 設定游標垂直位址(Segment)----------光标地址--X--
for (m=0;m<300;m++)
{
main_ls=0xc000+m;
wr_lcm_data(main_lsh);
wr_lcm_data(main_lsl);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
}
break;
case 9: //延时后清屏
if (disp_dlt_ct>=DIS_DLT)
{
LCD_CmdWrite(0x00,0xC5); // LCD 基本顯示功能設定-1
LCD_CmdWrite(0xF0,0x80); // 設定中文字型為”简体”
LCD_CmdWrite(0x60,0x00); // 設定游標水平位址(Common)----------光标地址--Y--
LCD_CmdWrite(0x70,0x00); // 設定游標垂直位址(Segment)----------光标地址--X--
for (m=0;m<40*240;m++)
{
wr_lcm_data(0);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
}
break;
case 10: //画园
// if (disp_dlt_ct>=DIS_DLT1)
// {
for (i=0;i<160;i++)
{
draw_circle(160,120,i);
// delayms(5);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
// }
case 11: //延时后清屏
if (disp_dlt_ct>=DIS_DLT1)
{
LCD_CmdWrite(0x60,0x00); // 設定游標水平位址(Common)----------光标地址--Y--
LCD_CmdWrite(0x70,0x00); // 設定游標垂直位址(Segment)----------光标地址--X--
for (m=0;m<40*240;m++)
{
wr_lcm_data(0);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
}
break;
case 12: //画园
if (disp_dlt_ct>=DIS_DLT1)
{
for (i=0;i<80;i++)
{
draw_circle(160,120,2*i);
delayms(5);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
}
case 13: //延时后清屏
if (disp_dlt_ct>=DIS_DLT1)
{
LCD_CmdWrite(0x60,0x00); // 設定游標水平位址(Common)----------光标地址--Y--
LCD_CmdWrite(0x70,0x00); // 設定游標垂直位址(Segment)----------光标地址--X--
for (m=0;m<40*240;m++)
{
wr_lcm_data(0);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
}
break;
case 14: //画园
// if (disp_dlt_ct>=DIS_DLT1)
// {
for (i=0;i<40;i++)
{
draw_circle(160,120,4*i);
delayms(10);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
// }
case 15: //延时后清屏
if (disp_dlt_ct>=DIS_DLT1)
{
LCD_CmdWrite(0x60,0x00); // 設定游標水平位址(Common)----------光标地址--Y--
LCD_CmdWrite(0x70,0x00); // 設定游標垂直位址(Segment)----------光标地址--X--
for (m=0;m<40*240;m++)
{
wr_lcm_data(0);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
}
break;
case 16: //画园
// if (disp_dlt_ct>=DIS_DLT1)
// {
for (i=0;i<20;i++)
{
draw_circle(160,120,8*i);
delayms(15);
}
disp_pro_flg++;
disp_dlt_ct=0;
// buzzeron();
// }
case 17: //延时后送出图片4
disp_pro_flg++;
disp_dlt_ct=0;
break;
default:
disp_pro_flg=1;
disp_dlt_ct=0;
break;
}
}
//---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---
//SED1335驱动基本函数
//---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---
//------------------------------------------------------------------
//检测LCM是否忙
//------------------------------------------------------------------
void chk_lcd_buzy(void)
{
while (lcm_buzy)
{
// RESET_WATCHDOG(); /* kicks the dog */
}
}
//------------------------------------------------------------------
//写入一字节数据
//------------------------------------------------------------------
void wr_lcm_data(uchar data)
{
// lcm_CE=1;
// lcm_WR=1;
// lcm_RD=1;
// chk_lcd_buzy();
lcm_CD=1; //写数据
lcm_E=0;
lcm_RW=0;
lcm_IO=data;
lcm_CE=1;
lcm_E=1;
// nop();
lcm_E=0;
lcm_CE=0;
// lcm_RW=1;
}
void LCD_CmdWrite(uchar add,uchar cmd)
{
lcm_E=0;
lcm_IO=add;
lcm_CD=0; //写指令
lcm_RW=0;
lcm_CE=1;
nop();
lcm_E=1;
nop();
lcm_E=0;
lcm_CE=0;
lcm_IO=cmd;
lcm_RW=0;
lcm_CE=1;
nop();
lcm_E=1;
nop();
lcm_E=0;
lcm_CE=0;
}
//------------------------------------------------------------------
//写入一字节指令
//------------------------------------------------------------------
void wr_lcm_comd(uchar comd)
{
// lcm_CE=1;
// lcm_WR=1;
// lcm_RD=1;
lcm_CD=0; //写指令
lcm_E=0;
lcm_IO=comd;
lcm_RW=0;
lcm_CE=1;
lcm_E=1;
nop();
lcm_E=0;
lcm_CE=0;
// lcm_RW=1;
// lcm_CD=1;
}
//------------------------------------------------------------------
//读出一字节数据
//------------------------------------------------------------------
uchar rd_lcm_data(void)
{
uchar data;
// lcm_CE=1;
// lcm_WR=1;
// lcm_RD=1;
// chk_lcd_buzy();
lcm_data_dir=0x00; //置为输入
lcm_CD=1; //读数据
lcm_E=0;
lcm_RW=1;
lcm_CE=1;
lcm_E=1;
nop();
data=lcm_IO;
lcm_data_dir=0xff; //置为输出
lcm_E=0;
lcm_CE=0;
return(data);
}
//------------------------------------------------------------------
//读出一字节状态
//------------------------------------------------------------------
uchar rd_lcm_status(uchar add)
{
uchar data;
// lcm_CE=1;
// lcm_WR=1;
// lcm_RD=1;
// chk_lcd_buzy();
lcm_CD=0; //写指令
lcm_E=0;
lcm_IO=add;
lcm_RW=0;
lcm_CE=1;
lcm_E=1;
nop();
lcm_E=0;
lcm_CE=0;
lcm_data_dir=0x00; //置为输入
lcm_CD=0; //读状态
lcm_E=0;
lcm_RW=1;
lcm_CE=1;
lcm_E=1;
nop();
data=lcm_IO;
lcm_data_dir=0xff; //置为输出
lcm_E=0;
lcm_CE=0;
return (data);
}
void ini_lcm(void)
{
lcm_RST=0;
delayms(250);
delayms(250);
RESET_WATCHDOG(); /* kicks the dog */
delayms(250);
delayms(250);
RESET_WATCHDOG(); /* kicks the dog */
delayms(250);
delayms(250);
lcm_RST=1;
delayms(250);
LCD_CmdWrite(0x00,0xC5); // LCD 基本顯示功能設定-1
LCD_CmdWrite(0x01,0xe1); // 系統工作頻率與中斷準位設定
LCD_CmdWrite(0x02,0x10); // LCD 記憶體讀寫速度與功能設定
LCD_CmdWrite(0x03,0x80); // LCD 特殊顯示功能
LCD_CmdWrite(0x10,0x6b); // LCD 基本顯示功能設定-2
LCD_CmdWrite(0x11,0x22); // 設定游標高度與行距
LCD_CmdWrite(0x12,0x91); // LCD 顯示圖層設定
LCD_CmdWrite(0x20,0x27); // 設定實際顯示視窗垂直起始位址(X1)
LCD_CmdWrite(0x30,0xEF); // 設定實際顯示視窗水平起始位址(Y1)
LCD_CmdWrite(0x40,0x00); // 設定實際顯示視窗垂直結束位址(X2)
LCD_CmdWrite(0x50,0x00); // 設定實際顯示視窗水平結束位址(Y2)
LCD_CmdWrite(0x21,0x27); // 設定LCD 模組垂直起始位址(X1)
LCD_CmdWrite(0x31,0xEF); // 設定LCD 模組水平起始位址(Y1)
LCD_CmdWrite(0x41,0x00); // 設定LCD 模組垂直結束位址(X2)
LCD_CmdWrite(0x51,0x00); // 設定LCD 模組水平結束位址(Y2)
LCD_CmdWrite(0x60,0x00); // 設定游標水平位址(Common)----------光标地址--Y--
LCD_CmdWrite(0x61,0x00); // 設定垂直開始顯示位址(Segment)
LCD_CmdWrite(0x70,0x00); // 設定游標垂直位址(Segment)----------光标地址--X--
LCD_CmdWrite(0x71,0x00); // 設定於水平區塊移動模式下,起始位址
LCD_CmdWrite(0x72,0xEF); // 設定於水平區塊移動模式下,結束位址
LCD_CmdWrite(0x80,0x06); // 游標閃爍時間設定
LCD_CmdWrite(0x81,0x0c); // 變換FRM 極性的起始位址(Common)
LCD_CmdWrite(0x91,0x00); // 變換FRM 極性的結束位址(Common)
LCD_CmdWrite(0x90,0x06);
LCD_CmdWrite(0xA0,0x10); // 中斷功能設定-----------进制中断
// LCD_CmdWrite(0xA1,0x00); // 鍵盤掃描控制暫存器
// LCD_CmdWrite(0xA2,0x00); // 鍵盤掃描控制輸出資料
// LCD_CmdWrite(0xA3,0x00); // 鍵盤掃描控制輸入資料
// LCD_CmdWrite(0xB0,0x27); // 設定水平方向中斷點的位址
// LCD_CmdWrite(0xB1,0xEF); // 設定垂直方向中斷點的位址
// LCD_CmdWrite(0xC0,0xD0); // 觸控螢幕功能設定
LCD_CmdWrite(0xC1,0x35); // 讀寫並可偵測觸控螢幕的狀態
// LCD_CmdWrite(0xC8,0x80); // 讀取觸控螢幕水平軸的資料(高位元組)
// LCD_CmdWrite(0xC9,0x80); // 讀取觸控螢幕水平軸的資料(高位元組)
// LCD_CmdWrite(0xCA,0x00); // 讀取觸控螢幕水平軸與垂直軸的資料(低位元組)
// LCD_CmdWrite(0xD0,0x0C); // 設定DAC 電流輸出,可調整LCD 亮度
LCD_CmdWrite(0xE0,0x00); // 設定寫入顯示記憶體的資料(需搭配暫存器[F0]
LCD_CmdWrite(0xF0,0x88); // 清屏
delayms(40);
// 使用”
LCD_CmdWrite(0xF0,0x80); // 設定中文字型為”简体”
LCD_CmdWrite(0xF1,0x0F); // 改變字型垂直與水平顯示大小
LCD_CmdWrite(0x00,0xC5); // LCD 基本顯示功能設定-1
}
//---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---
//--- --- 中 --- 断 --- 服 --- 务 --- ---
//---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---
//------------------------------------------------------------------
//TMR W 中断服务程序-----定时20毫秒
//------------------------------------------------------------------
void tmrw_isrp(void)
{
TW.TSRW.BYTE&=0x7f;
TW.TCNT=25536;
clock_20ms_flg=1;
clock_100ms_ct++;
if (clock_100ms_ct>=50)
{
clock_100ms_ct=0;
clock_500ms_flg=1;
}
buzzer_ct++;
if (buzzer_ct==0)
{
// buz_time_l=0;
buzzer=0;
}
// else buzzer=1;
clock_1s_ct++;
if (clock_1s_ct>=50)
{
clock_1s_ct=0;
clock_1s_flg=1;
disp_dlt_ct++;
}
clock_2s_ct++;
if (clock_2s_ct>=100)
{
clock_2s_ct=0;
}
}
//-----------------------------------------------------------------------//
//延时程序;
//-----------------------------------------------------------------------//
void delayms(uchar dlt)
{
uchar i;
delayt_1:
if (dlt==0) return;
dlt--;
for (i=0;i<126;i++)
{
nop();
nop();
nop();
}
// RESET_WATCHDOG(); /* kicks the dog */
goto delayt_1;
}
void delayus(uchar dlt)
{
uchar i;
delayt_1:
if (dlt==0) return;
dlt--;
for (i=0;i<8;i++)
{
nop();
}
goto delayt_1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -