📄 lcd.c
字号:
#include "DSP28_Device.h"
#include "stdio.h"
#include "stdlib.h"
#define comm 0
#define dat 1
unsigned short displayflag=0;
extern const unsigned char *ASCIITAB[];
extern const unsigned char *Welcome[];
const unsigned char disline[8] = {0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01};
void delay(unsigned int d_time)
{
while(d_time--);
}
/*----------------LCD忙检测----------------*/
void chk_busy()
{
unsigned int temp;
LCD_REG = 0x06;//RS=0(comm), RW=1(read)
temp = 0x0080;
while((temp&0x0080)!=0)
{
temp = LCD_DAT;
}
//while((LCD_DAT&0x80)!=0);
}
/*------------------写LCD------------------*/
void wr_lcd(unsigned char dat_comm, unsigned int content)
{
chk_busy();
if(dat_comm)
{
LCD_REG = 0x05;//RS=1(data), RW=0(write)
}
else
{
LCD_REG = 0x04;//RS=0(comm), RW=0(write)
}
LCD_DAT = content;
}
/*----------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
}
/*------------------初始化-----------------*/
void lcd_init(void)
{
LCD_REG = 0x03;//RESET
delay(5000);
LCD_REG = 0x04;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
}
/*---------------欢迎界面------------------*/
void Smenu()
{
wr_lcd (comm,0x30);
delay(5000);
wr_lcd (comm,0x80);
delay(5000);
wr_lcd (dat,0xc6); //"频"
delay(5000);
wr_lcd (dat,0xb5);
delay(5000);
wr_lcd (dat,0xc2); //"率"
delay(5000);
wr_lcd (dat,0xca);
delay(5000);
// wr_lcd (dat,0xa3); //":"
// delay(5000);
// wr_lcd (dat,0xba);
// delay(5000);
wr_lcd (comm,0x30);
delay(5000);
wr_lcd (comm,0x90);
delay(5000);
wr_lcd (dat,0xd6); //"频"
delay(5000);
wr_lcd (dat,0xdc);
delay(5000);
wr_lcd (dat,0xc6); //"率"
delay(5000);
wr_lcd (dat,0xda);
delay(5000);
// wr_lcd (dat,0xa3); //":"
// delay(5000);
// wr_lcd (dat,0xba);
// delay(5000);
wr_lcd (comm,0x30);
delay(5000);
wr_lcd (comm,0x88);
delay(5000);
wr_lcd (dat,0xcf); //"频"
delay(5000);
wr_lcd (dat,0xe0);
delay(5000);
wr_lcd (dat,0xce); //"率"
delay(5000);
wr_lcd (dat,0xbb);
delay(5000);
// wr_lcd (dat,0xa3); //":"
// delay(5000);
// wr_lcd(dat,0xba);
// delay(5000);
// wr_lcd (dat,0x31); //":"
// delay(5000);
// wr_lcd (dat,0x32);
// delay(5000);
// wr_lcd (dat,0xd7); //"子"
// delay(5000);
// wr_lcd (dat,0xd3);
// delay(5000);
}
void display(long fre)
{
// unsigned short disnum[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// disnum[0] = fre%10;
// disnum[1] = fre/10;
//fre =12345678;
wr_lcd (comm,0x30);
delay(5000);
wr_lcd (comm,0x82);
delay(5000);
wr_lcd (dat,0x30+fre/10000000); //"频"
delay(5000);
wr_lcd (dat,0x30+fre/1000000-fre/10000000*10);
delay(5000);
wr_lcd (dat,0x30+fre/100000-fre/1000000*10); //"率"
delay(5000);
wr_lcd (dat,0x30+fre/10000-fre/100000*10);
delay(5000);
wr_lcd (dat,0x30+fre/1000-(fre/10000)*10);
delay(5000);
wr_lcd (dat,0x30+fre/100-fre/1000*10); //"率"
delay(5000);
wr_lcd (dat,0x30+fre/10-fre/100*10); //"率"
delay(5000);
wr_lcd (dat,0x30+fre%10);
delay(5000);
}
void display_p(long fre)
{
int tempnum=0;
wr_lcd (comm,0x30);
delay(5000);
wr_lcd (comm,0x92);
delay(5000);
/* tempnum=0x30+fre/100000000;
if(tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,11);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/10000000-fre/100000000*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/1000000-fre/10000000*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/100000-fre/1000000*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/10000-fre/100000*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/1000-fre/10000*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/100-fre/1000*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre/10-fre/100*10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
tempnum=0x30+fre%10;
if(displayflag||tempnum!=0x30)
{
wr_lcd (dat,tempnum);
delay(5000);
displayflag =1;
}
else
{
wr_lcd (dat,32);
delay(5000);
displayflag =1;
}
displayflag =0;*/
wr_lcd (dat,0x30+fre/100000000);
delay(5000);
wr_lcd (dat,0x30+fre/10000000-fre/100000000*10);
delay(5000);
wr_lcd (dat,0x30+fre/1000000-fre/10000000*10);
delay(5000);
wr_lcd (dat,0x30+fre/100000-fre/1000000*10);
delay(5000);
wr_lcd (dat,0x30+fre/10000-(fre/100000)*10);
delay(5000);
wr_lcd (dat,0x30+fre/1000-fre/10000*10);
delay(5000);
wr_lcd (dat,0x30+fre/100-fre/1000*10);
delay(5000);
wr_lcd (dat,0x30+fre/10-fre/100*10);
delay(5000);
wr_lcd (dat,0x30+fre%10);
delay(5000);
}
void display_pw(long fre)
{
wr_lcd (comm,0x30);
delay(5000);
wr_lcd (comm,0x8a);
delay(5000);
wr_lcd (dat,0x30+fre/100000000); //"频"
delay(5000);
wr_lcd (dat,0x30+fre/10000000-fre/100000000*10);
delay(5000);
wr_lcd (dat,0x30+fre/1000000-fre/10000000*10); //"率"
delay(5000);
wr_lcd (dat,46); //"."
delay(5000);
wr_lcd (dat,0x30+fre/100000-fre/1000000*10);
delay(5000);
wr_lcd (dat,0x30+fre/10000-(fre/100000)*10);
delay(5000);
// wr_lcd (dat,0x30+fre/1000-fre/10000*10); //"率"
// delay(5000);
// wr_lcd (dat,0x30+fre/100-fre/1000*10); //"率"
//delay(5000);
// wr_lcd (dat,0x30+fre/10-fre/100*10);
// delay(5000);
// wr_lcd (dat,0x30+fre%10);
// delay(5000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -