📄 displayv2.c
字号:
#include "lpc23xx.h"
#include "display.h"
#include "dis_font.h"
#include "KeyBoard.h"
#include "rtc.h"
#include "adc.h"
#include <rt_sys.h>
#pragma import(__use_c99_library)
#include <stdio.h>
struct __FILE {
int handle;
/* Whatever you need here (if the only file you are using
is the stdoutput using printf for debugging, no file
handling is required) */
};
//FILE __stdout,__stdin;
//*******************************************************
//void bloff(void);
//void blon(void);
//void bltoggle(void);
//
//void delay_ms(void);
//void del_us(void);
//void disp_data(void);
//void disp_inst(void);
//void write_display(unsigned char );
//unsigned char read_display(void);
//void Disp_initial(void);
//void gotoxy(char ,char );
//void clrscr(void);
//void disp_char(unsigned char );
//char putchar1(char );
////void Disp_time(void);
////void Disp_date(void);
//void Disp_bcd1(unsigned char bcd_i);
//void Disp_bcd2(unsigned char bcd_i);
void Disp_int(unsigned int bcd_i);
//void Disp_cur_rev(void);
//void row_select(void);
//void blank_disp(unsigned char blank_count);
//*******************************************************
unsigned int disp_count,row_count,col_count;
unsigned char backlit,*row_no;
//*******************************************************
void blon(void)
{
backlit = 1;
FIO1SET = 0X01 << 21;//ON
}
void bloff(void)
{
backlit = 0;
FIO1CLR = 0X01 << 21;//OFF
}
void bltoggle(void)
{
FIO1MASK = 0x00000000;
if(backlit == 0)
{
backlit = 1;
blon();
}
else
{
backlit = 0;
bloff();
}
}
int fputc(int c, FILE *f)
{
/* Your implementation of fputc */
unsigned char lcd_i;
if (c == 0x0a)
{
for (lcd_i=disp_count%20;lcd_i<20;lcd_i++)
{
disp_char(' ');
}
}
else if(c == 0x0d)
{
disp_count = disp_count - (disp_count%20);
}
else if (c == 0x08)
{
disp_count--;
disp_char(' ');
disp_count--;
}
else
{
disp_char(c);
}
return c;
/* Your implementation of fputc */
//return ch;
}
void delay_ms(void)
{
long del;
for(del=500000; del > 0; del--);
//for(del=500000; del > 0; del--);
//for(del=500000; del > 0; del--);
//for(del=500000; del > 0; del--);
}
void del_us(void)
{
unsigned int del;
for(del=100; del > 0; del--);
}
void disp_data(void)
{
FIO1SET = (0X01 << 22);
//del_us();
}
void disp_inst(void)
{
FIO1CLR = (0X01 << 22);
//del_us();
}
void write_display(unsigned char disp_temp5)
{
FIO1MASK0 = 0xfc;
FIO1PIN0 = disp_temp5;
FIO1MASK0 = 0XEF;
FIO1PIN0 = disp_temp5 << 2;
FIO1MASK1 = 0XF8;
FIO1PIN1 = disp_temp5 >> 3;
FIO1MASK3 = 0xfc;
FIO1PIN3 = disp_temp5 >> 6;
FIO1CLR = 0X01 << 23;//DISP_EN = 0
del_us();
del_us();
FIO1SET = 0X01 << 23;//DISP_EN = 1
del_us();
del_us();
}
unsigned char read_display(void)
{
unsigned char disp_temp4 = 0;
FIO1DIR = 0XFCFFC000;
FIO2CLR0 = 0X80; //DISP_RW = 0;
del_us();
FIO1MASK0 = 0XFC;
disp_temp4 = FIO1PIN0;
FIO1MASK0 = 0XEF;
disp_temp4 = disp_temp4 | (FIO1PIN0 >> 2);
FIO1MASK1 = 0XF8;
disp_temp4 = disp_temp4 | (FIO1PIN1 << 3);
FIO1MASK3 = 0XFC;
disp_temp4 = disp_temp4 | (FIO1PIN3 << 6);
del_us();
FIO2SET0 = 0X80;// DISP_RW = 1
FIO1DIR = 0XFFFFC713;
return disp_temp4;
}
void gotoxy(char row,char col)
{
unsigned char disp_tempx;
disp_tempx = ((row-1) * 20) + (col-1);
if(disp_tempx < 100)
disp_count = disp_tempx;
}
//void Disp_initial(void)
//{
//
// disp_inst();
// {
// write_display(0xe2);//1
// delay_ms();
// write_display(0xa0);//2
// delay_ms();
// write_display(0xc0);//3 c0 c8
// delay_ms();
// write_display(0xa3);//4 a3 a2
// delay_ms();
// write_display(0x2c);//5
// write_display(0x2e);//6
// write_display(0x2f);//7
// delay_ms();
// write_display(0x26);//8
// write_display(0x81);//9
// write_display(0x0F);//10 08
// delay_ms();
// write_display(0x40);//11 40
// write_display(0xb0);//12
// write_display(0x10);//13 10
// write_display(0x00);//14 00
// write_display(0xaf);//15
// }
// clrscr();
//}
void Disp_initial(void)
{
disp_inst();
{
write_display(0xe2);//1
delay_ms();
write_display(0xa0);//2
delay_ms();
write_display(0xc0);//3 c0 c8
delay_ms();
write_display(0xa3);//4 a3 a2
delay_ms();
write_display(0x2c);//5
delay_ms();
write_display(0x2e);//6
delay_ms();
write_display(0x2f);//7
delay_ms();
write_display(0x26);//8
write_display(0x81);//9
write_display(0x08);//10 08
delay_ms();
write_display(0x40);//11 40
write_display(0xb0);//12
write_display(0x10);//13 10
write_display(0x00);//14 00
write_display(0xaf);//15
}
delay_ms();
clrscr();
}
/*void disp_char(unsigned char disp_temp)
{
unsigned char row, col,dctemp,i,temp1[8];
unsigned int integer_1;
row = disp_count/20;
col = disp_count%20;
col = col * 6;
if(row%2)
{
row = (row * 12)/8;
disp_inst();
write_display(0xb0 |row);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
dctemp = read_display();
for(i=0;i<6;i++)
{
temp1[i]= read_display();
temp1[i] = temp1[i] & 0x0f;
}
disp_inst();
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
integer_1 = (((unsigned int)disp_temp) * 6 + ((unsigned int)i));
dctemp = long_font[integer_1] <<4;
write_display( temp1[i]|dctemp);
}
disp_inst();
write_display((0xb0|row) + 1);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
integer_1 = (((unsigned int)disp_temp) * 6 + ((unsigned int)i));
write_display((long_font[integer_1]>>4) |(long_font1[integer_1]<<4));
}
}
else
{
row = (row * 12)/8;
disp_inst();
write_display(0xb0 |row);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
integer_1 = (((unsigned int)disp_temp) * 6 + ((unsigned int)i));
write_display(long_font[integer_1]);
}
disp_inst();
write_display((0xb0 |row) +1);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
dctemp = read_display();
for(i=0;i<6;i++)
{
temp1[i]= read_display();
temp1[i] = temp1[i] & 0xf0;
}
disp_inst();
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
integer_1 = (((unsigned int)disp_temp) * 6 + ((unsigned int)i));
write_display(long_font1[integer_1] | temp1[i]);
}
}
disp_count++;
if(disp_count >99)
disp_count = 0;
del_us();
FIO1SET = 0X01 << 23;//DISP_EN = 1
FIO2SET0 = 0X80;//DISP_RW = 1
}*/
void disp_char(unsigned char disp_temp)
{
unsigned char row, col,temp,i,temp1[8];
row = disp_count/20;
col = disp_count%20;
col = col * 6;
switch(row)
{
case 0:
row = (row * 12)/8;
disp_inst();
write_display(0xb0 |row);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
write_display(ravi_font[disp_temp*6+i]);
}
disp_inst();
write_display((0xb0 |row) +1);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
temp = read_display();
for(i=0;i<6;i++)
{
temp1[i]= read_display();
temp1[i] = temp1[i] & 0xf0;
}
disp_inst();
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
write_display(ravi_font1[disp_temp * 6+i] | temp1[i]);
}
break;
case 1:
row = (row * 12)/8;
disp_inst();
write_display(0xb0 |row);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
temp = read_display();
for(i=0;i<6;i++)
{
temp1[i]= read_display();
temp1[i] = temp1[i] & 0x0f;
}
disp_inst();
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
temp = ravi_font[disp_temp*6 + i]<<3;// <<4;
write_display( (temp1[i]|temp));
}
disp_inst();
write_display((0xb0|row)+1 );
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
//write_display((ravi_font[disp_temp*6 + i]>>4) |(ravi_font1[disp_temp*6 + i]<<4));
write_display((ravi_font[disp_temp*6 + i]>>5) |(ravi_font1[disp_temp*6 + i]<<3));
}
break;
case 2:
row = (row * 12)/8;
row--;
disp_inst();
write_display(0xb0 |row);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
temp = read_display();
for(i=0;i<6;i++)
{
temp1[i]= read_display();
temp1[i] = temp1[i] & 0x0f;
}
disp_inst();
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
for(i=0;i<6;i++)
{
temp = ravi_font[disp_temp*6 + i]<<6;
write_display((temp1[i]|temp));
}
disp_inst();
write_display((0xb0 |row) +1);
write_display((col>>4)|0x10);
write_display((col & 0x0f)| 0x00);
disp_data();
temp = read_display();
for(i=0;i<6;i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -