#include"lcd.h"
#include
#include
#include
#include
//#include"config.h"
#define Delay_1us() asm("nop")
#define Delay_10us() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
void Delay_100us() {
Delay_10us(); //1
Delay_10us(); //2
Delay_10us(); //3
Delay_10us(); //4
Delay_10us(); //5
Delay_10us(); //6
Delay_10us(); //7
Delay_10us(); //8
Delay_10us(); //9
Delay_1us(); //6us
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
}
void Delay_ms(unsigned int ms)
{ unsigned int j;
for(j=ms;j>0;j--)
{
Delay_100us(); //1
Delay_100us(); //2
Delay_100us(); //3
Delay_100us(); //4
Delay_100us(); //5
Delay_100us(); //6
Delay_100us(); //7
Delay_100us(); //8
Delay_100us(); //9
Delay_10us(); //86us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
} }
void TimeDelay(unsigned int Timers)
{
unsigned int i;
while(Timers)
{
Timers--;
for(i=0;i<10;i++);
}
}
void SPI_SSSet(unsigned char Status)
{
if(Status)
{SPI_CS = 1;
Delay_ms(10);
// Delay_100us(1);
}
else
{SPI_CS = 0;
Delay_ms(10);
//Delay_100us(1);
}
}
void LCD_Init(void)
{
init_spi();
SPI_SCK = 1;
SPI_CS = 1;
Delay_ms(10);
SPI_SCK = 0;
Delay_ms(10);
SPI_SCK = 1;
Delay_ms(10);
}
void init_spi()
{
TRISBbits.TRISB0=0;
TRISBbits.TRISB1=0;
TRISBbits.TRISB2=0; //模拟spi端口
TRISDbits.TRISD3=0;
// TRISDbits.TRISD0=1;//按键
// TRISEbits.TRISE7=1;
// TRISEbits.TRISE6=1;
// TRISEbits.TRISE5=1;
// TRISEbits.TRISE4=1;//该5口无模拟输入功能
}
void PutChar(unsigned int x,unsigned int y,unsigned char a,unsigned char type)
{
SPI_SSSet(0);
SPI_Send(ASC_DISPLAY&CMD);
SPI_Send((x>>8)|DAT);
SPI_Send(x|DAT);
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send(a|DAT);
SPI_SSSet(1);
}
//void PutChars(unsigned int x,unsigned int y,unsigned int a,unsigned char type)
//{
//
// SPI_SSSet(0);
// SPI_Send(ASC_DISPLAY&CMD);
// SPI_Send((x>>8)|DAT);
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);
// SPI_Send(y|DAT);
// SPI_Send(type|DAT);
// SPI_Send((a>>8)|DAT);
// SPI_Send(a|DAT);
// SPI_SSSet(1);
//}
void ShowString(unsigned int x,unsigned int y,unsigned char *p,unsigned char type)
{
unsigned char length=0;
unsigned char i=0;
length =strlen(p);
for (length;length>0;length--)
{
// i++;
SPI_SSSet(0);
SPI_Send(ASC_DISPLAY&CMD);
switch(type)
{ case LCD_ASC8_FONT:SPI_Send(((x+(8*i))>>8)|DAT);
SPI_Send((x+(8*i))|DAT); break;
case LCD_ASC12_FONT:SPI_Send(((x+(12*i))>>8)|DAT);
SPI_Send((x+(12*i))|DAT); break;
case LCD_ASC16_FONT:SPI_Send(((x+(16*i))>>8)|DAT);
SPI_Send((x+(16*i))|DAT); break;
}
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send((p[i])|DAT);
SPI_SSSet(1);
i++;
}
}
//void PutString(unsigned int x,unsigned int y,unsigned char *p,unsigned char type)
//{
//
// SPI_SSSet(0);
// SPI_Send(ASC_STR_DISPLAY&CMD);
// SPI_Send((x>>8)|DAT);
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);
// SPI_Send(y|DAT);
// SPI_Send(type|DAT);
//
// while(*p!=0)
// {
// SPI_Send((*p)|DAT);
// p++;
// }
//
//
//
// SPI_SSSet(1);
//}
void PutChar_cn(unsigned int x,unsigned int y,unsigned char * GB,unsigned char type)
{
//??????×?×???
SPI_SSSet(0);
SPI_Send(HZ_DISPLAY&CMD);
SPI_Send((x>>8)|DAT);
SPI_Send(x|DAT);
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send((*(GB++))|DAT);
SPI_Send((*GB)|DAT);
SPI_SSSet(1);
}
//void PutPixel(unsigned int x,unsigned int y)
//{
// //??????×÷
SPI_SSSet(0); //SS????????
SPI_Send(DRAW_POINT&CMD); //??????DRAW_POINT
SPI_Send((x>>8)|DAT); //????????????,???è??????X?á????
SPI_Send(x|DAT);
SPI_Send((y>>8)|DAT); //????Y?á????
SPI_Send(y|DAT);
SPI_SSSet(1); //?ê????×÷??SS??????
//}
//
//void Line(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y)
//{
// //?????±??
SPI_SSSet(0); //SS????????
SPI_Send(DRAW_LINE&CMD); //??????DRAW_LINE
SPI_Send((s_x>>8)|DAT); //????X?á×?±ê
SPI_Send(s_x|DAT);
SPI_Send((s_y>>8)|DAT); //????Y?á×?±ê
SPI_Send(s_y|DAT);
SPI_Send((e_x>>8)|DAT); //????X?á×?±ê
SPI_Send(e_x|DAT);
SPI_Send((e_y>>8)|DAT); //????Y?á×?±ê
SPI_Send(e_y|DAT);
SPI_SSSet(1); //?ê????×÷??SS??????
//}
//void Circle(unsigned int x,unsigned int y,unsigned int r,unsigned char mode)
//{
SPI_SSSet(0); //SS????????
if(mode)
SPI_Send(DRAW_SOLID_CIRCLE&CMD); //??????DRAW_SOLID_CIRCLE
else
SPI_Send(DRAW_CIRCLE&CMD); //??????DRAW_CIRCLE
SPI_Send((x>>8)|DAT); //????X?á×?±ê
SPI_Send(x|DAT);
SPI_Send((y>>8)|DAT); //????Y?á×?±ê
SPI_Send(y|DAT);
SPI_Send((r>>8)|DAT); //??°???r
SPI_Send(r|DAT);
SPI_SSSet(1); //?ê????×÷??SS??????
//}
void ClrScreen(void)
{
//??????×÷
SPI_SSSet(0); //SS????????
SPI_Send(CLEAR_SCREEN&CMD); //??????CLEAR_SCREEN
TimeDelay(2);
SPI_SSSet(1); //?ê????×÷??SS??????
}
//void SetBG_Color(unsigned int BGColor)
//{
//
// SPI_SSSet(0); //SS????????
// SPI_Send(SET_BG_COLOR&CMD); //??????SET_BG_COLOR
// SPI_Send((BGColor>>8)|DAT); //±??°????16bit RGB565
// SPI_Send(BGColor|DAT);
// SPI_SSSet(1); //?ê????×÷??SS??????
//}
//void SetFG_Color(unsigned int FGColor)
//{
// SPI_SSSet(0); //SS????????
// SPI_Send(SET_FG_COLOR&CMD); //??????SET_FG_COLOR
// SPI_Send((FGColor>>8)|DAT); //?°?°????16bit RGB565
// SPI_Send(FGColor|DAT);
// SPI_SSSet(1); //?ê????×÷??SS??????
//}
//void PutBitmap(unsigned int x,unsigned int y,unsigned long p)
//{
//
// SPI_SSSet(0); //SS????????
// SPI_Send(ICON_DISPLAY&CMD); //??????ICON_DISPLAY
// SPI_Send((x>>8)|DAT); //????X?á×?±ê
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT); //????Y?á×?±ê
// SPI_Send(y|DAT);
// SPI_Send(((unsigned int)(p>>24))|DAT); //bmp ??????flash??????DWORD ?à??
// SPI_Send(((unsigned int)(p>>16))|DAT);
// SPI_Send(((unsigned int)(p>>8))|DAT);
// SPI_Send(((unsigned int)p)|DAT);
// SPI_SSSet(1); //?ê????×÷??SS??????
//}
//void delay( unsigned char z)
//{
// unsigned int x,y;
// for(x=z;x>0;x--)
// for(y=880;y>0;y--);
//
//
//}
void SetBackLight(unsigned char brightness)
{
SPI_SSSet(0);
SPI_Send(SET_LCD_BRIGHTNESS&CMD);
Delay_1us();//2us
SPI_Send(brightness|DAT);
Delay_1us();
SPI_SSSet(1);
}
//
//void Box(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char mode)
//{
//?????±??
SPI_SSSet(0);
SPI_Send(DRAW_BOX&CMD);
SPI_Send((s_x>>8)|DAT); //????X?á×?±ê
SPI_Send(s_x|DAT);
SPI_Send((s_y>>8)|DAT); //????Y?á×?±ê
SPI_Send(s_y|DAT);
SPI_Send((e_x>>8)|DAT); //????X?á×?±ê
SPI_Send(e_x|DAT);
SPI_Send((e_y>>8)|DAT); //????Y?á×?±ê
SPI_Send(e_y|DAT);
SPI_Send(mode|DAT);
SPI_SSSet(1);
//}
//void Button(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char mode)
//{
// //?????±??
SPI_SSSet(0); //SS????????
SPI_Send(DRAW_BUTTON&CMD); //??????DRAW_LINE
SPI_Send((s_x>>8)|DAT); //????X?á×?±ê
SPI_Send(s_x|DAT);
SPI_Send((s_y>>8)|DAT); //????Y?á×?±ê
SPI_Send(s_y|DAT);
SPI_Send((e_x>>8)|DAT); //????X?á×?±ê
SPI_Send(e_x|DAT);
SPI_Send((e_y>>8)|DAT); //????Y?á×?±ê
SPI_Send(e_y|DAT);
SPI_Send(mode|DAT);
SPI_SSSet(1);
//}
//void EditASC(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char *p,unsigned char type)
//{
// unsigned char j;
// SPI_SSSet(0); //SS????????
// SPI_Send(DRAW_EDIT_ASC&CMD); //??????DRAW_LINE
// SPI_Send((s_x>>8)|DAT); //????X?á×?±ê
// SPI_Send(s_x|DAT);
// SPI_Send((s_y>>8)|DAT); //????Y?á×?±ê
// SPI_Send(s_y|DAT);
// SPI_Send((e_x>>8)|DAT); //????X?á×?±ê
// SPI_Send(e_x|DAT);
// SPI_Send((e_y>>8)|DAT); //????Y?á×?±ê
// SPI_Send(e_y|DAT);
// SPI_Send(type|DAT);
// //while(*p!=0)
// for(j=0;j<(type>>4);j++)
// {
// SPI_Send((*p)|DAT); //????????×?????????
// p++;
// }
// SPI_SSSet(1); //?ê????×÷??SS??????
//}
//========================================================================
// ????: void Line(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y)
// ?è??: ??s_x??s_y??????×?±ê??e_x??e_y???á??×?±ê?????????±??
//========================================================================
//void EditCN(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char *p,unsigned char type)
//{
// unsigned char j;
// //?????±??
// SPI_SSSet(0); //SS????????
// SPI_Send(DRAW_EDIT_HZ&CMD); //??????DRAW_LINE
// SPI_Send((s_x>>8)|DAT); //????X?á×?±ê
// SPI_Send(s_x|DAT);
// SPI_Send((s_y>>8)|DAT); //????Y?á×?±ê
// SPI_Send(s_y|DAT);
// SPI_Send((e_x>>8)|DAT); //????X?á×?±ê
// SPI_Send(e_x|DAT);
// SPI_Send((e_y>>8)|DAT); //????Y?á×?±ê
// SPI_Send(e_y|DAT);
// SPI_Send(type|DAT);
// //while(*p!=0)
// for(j=0;j<(type>>4);j++)
// {
// SPI_Send((*(p++))|DAT);
// SPI_Send((*(p++))|DAT);
// }
// SPI_SSSet(1); //?ê????×÷??SS??????
//}
void SPI_Send(unsigned int dat) //数据传输函数(传送带操作)
{
unsigned char i=0;
for(i=0;i<9;i++)
{
if(dat&0x100)
{
SPI_SD0 = 1;
Delay_1us();
Delay_1us();
Delay_1us();
}
else
{
SPI_SD0 = 0;
Delay_1us();
Delay_1us();
Delay_1us();
}
SPI_SCK = 0;
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();//----------------------------------多延时是为了50%的占空比
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
SPI_SCK = 1;
Delay_1us();
dat = dat<<1;
Delay_1us();
Delay_1us();
Delay_1us();
}
}
上一篇:pic 16 使用8563 rtc iic 通讯 内部iic
下一篇:pic 16 操作esp8266
推荐阅读
史海拾趣
DCD公司自创立之初,就专注于数字核心设计领域的研发。创始人们凭借对电子技术的深刻理解和市场需求的敏锐洞察,带领团队攻克了一个又一个技术难关。在产品研发初期,公司面临着资金短缺和技术难题的双重压力,但团队凭借着坚韧不拔的精神,成功研发出了首款具有竞争力的数字核心设计产品,为公司的发展奠定了坚实的基础。
Ametherm公司成立于XXXX年,由一群热衷于电子技术的工程师创立。他们看到了功率热敏电阻在电子行业中的巨大潜力,并决定专注于此领域的发展。在创立初期,公司面临着资金短缺、市场竞争激烈等挑战,但创始人们凭借着对技术的热情和坚持,逐步攻克了技术难关,开发出了具有竞争力的产品。
随着公司产品的不断完善和升级,AR RF/Microwave Instrumentation开始积极拓展市场。他们不仅在国内建立了广泛的销售网络,还积极寻求与国际合作伙伴的合作。通过与国外知名企业的合作,公司不仅引进了先进的技术和管理经验,还进一步提升了产品的国际竞争力。
EUCHNER公司一直将质量和服务视为其生命线。公司严格控制产品质量,所有核心部件均自行生产,以确保产品的可靠性和稳定性。同时,公司还注重客户服务体验,为客户提供具有竞争力的价格及优质服务。无论是为大型汽车制造企业还是小型研究机构提供解决方案,公司都坚持与客户紧密合作并倾听他们的需求。通过持续提升质量和服务水平,EUCHNER公司逐渐赢得了客户的信任和忠诚。
EUCHNER公司一直将产品创新视为其核心竞争力。公司不断投入研发资源,推出了一系列具有创新性的产品,如安全限位开关CES-CMFS系列、机械式安全开关MGB系列以及多光束安全栅ESPE系列等。这些产品在汽车制造、轨道交通、环保监测等领域得到了广泛应用,并赢得了客户的广泛赞誉。通过产品创新和市场拓展,EUCHNER公司的市场份额逐年提升。
随着电子行业的快速发展,Davies Molding公司意识到,只有不断创新,才能在市场上保持领先地位。因此,公司积极引进先进的生产技术和设备,不断提升自身的研发能力。通过不断的技术创新,Davies Molding公司成功推出了一系列具有竞争力的新产品,满足了市场对高品质塑料注塑成型产品的需求。
我想实现P1.1端口跟随P1.4端口同步输出,都是驱动LED,P1.4端口使用定时器定时翻转,主循环程序随时判断P1.4状态,同步驱动P1.1。 开始我是这样写的: 看来没问题,在KEIL仿真运行也没问题,可是下载到89S52中,只见OUT闪烁,LED根本不动, ...… 查看全部问答∨ |
|
【藏书阁】 集成电路(荒井英甫)——21世纪大学新型参考教材系列 目录: 集成电路a 1 集成电路的学习方法 1·1 集成电路的发明 1·2 集成电路发展的动力 1·3 集成电路的未来 1·4 本书的构成 练习题 引用文献 2 集成电路中的半导体器件 2·1 pn结 2·2 双极型晶体管 2·3 mos晶体管 2·4 集成电路 ...… 查看全部问答∨ |
|
1、REMAP: 提到REMAP。首先应想到什么是MAP,英语不好,开始就断章取义,MAP就是地图嘛,Memory Map就是存储器地图,不过这个地图的参考坐标不是经纬度,而是地址,进而叫做存储器映射。由于要适应不同存储器容量要求的 ...… 查看全部问答∨ |
|
哪里有windows CE 5.0(platform builder 5.0)?? google了好久,都没找到windows CE 5.0下载。 不知道各位谁有这个东西,或者知道哪里有这个下载。 如果谁有的可以传给我就更好了。 请加我 QQ:46231244 谢谢… 查看全部问答∨ |
求助!!!定时器同步配置问题-一个上升沿信号触发定时器TIM2,同时根据上升沿信号启 最近在做一个RLC(电阻、电感、电容)测量仪,测量插座只有一个,因此需要利用程序区分三种不同的器件; 区分方法是利用通过三种器件后的波形超前滞后关系判别,将正弦信号转化为矩形波后输入定时器通道1。与此同时将没有经过原器件的正弦波也转化为 ...… 查看全部问答∨ |