哪个大神有时间帮我对VRP问题用禁忌搜索算法编写一个lingo或者c语言可以

哪个大神有时间帮我对VRP问题用禁忌搜索算法编写一个lingo或者c语言可以,第1张

求最短配送路径的话 应该是TSP问题吧,不应该是VRP问题。

LINGO能很好地求解这两类模型,但用的整数规划原理或动态规划原理,不能用禁忌搜索。

禁忌搜索,就用C或许能解决。

逻辑运算和判断选取控制

1、编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数字之和。

#include<stdio.h>

int main()

{

int a,b

printf("input two number:")

scanf("%d %d",&a,&b)

if((a*a+b*b)>=100)

printf("\n %d",(a*a+b*b)/100)

else

printf("\n %d",a+b)

getch()

}

2、试编程判断输入的正整数是否既是5又是7的整数倍数。若是,则输出yes;否则输出no。

#include<stdio.h>

int main()

{

int a

printf("input a number:")

scanf("%d",&a)

if(a%5==0 &&a%7==0)

printf("yes")

else

printf("no")

getch()

}

指针

1、编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔的输出该串,请用指针完成。

#include<stdio.h>

int main()

{

char string[]="computer"

char *p=string

while(*p)

{

printf("%c",*p)

p++

p++

}

getch()

}

2、输入一个字符串string,然后在string里面每个字母间加一个空格,请用指针完成。

#include<stdio.h>

#include<CONIO.H>

#include<STDLIB.H>

#define max 100

char * copyString

void copy(char *,char*)

void insert(char *)

int main()

{

char * string

string = (char *)malloc(max*sizeof(char))

scanf("%s",string)

insert(string)

printf("%s",string)

getch()

return 0

}

void copy(char * c,char * s)

{

while(*s!='\0')

{

*c=*s

s++

c++

}

*c='\0'

}

void insert(char * s)

{

copyString = (char*)malloc(2*max*sizeof(char))

copy(copyString,s)

while(*copyString!='\0')

{

*s=*copyString

s++

copyString++

*s=' '

s++

}

*s='\0'

}

一.选择:

1.给出以下定义:

char acX[ ]= "abcdefg"

char acY[ ]= {'a','b','c','d','e','f','g'}

则正确的叙述为( )

A) 数组acX和数组acY等价 B) 数组acX和数组acY的长度相同

C) 数组acX的长度大于数组acY的长度D) 数组acX的长度小于数组acY的长度

答案:C

2.

void example(char acHello[])

{

printf("%d", sizeof(acHello))

return

}

void main()

{

char acHello[] = "hello"

example(acHello)//数组名称作参数,传的是地址,一个地址占四个字节

return

}

的输出是

A 4 B 5 C 6 D不确定

答案:A

3. 有以下程序段

char acArr[]= "ABCDE"

char *pcPtr

for(pcPtr = acArrpcPtr <acArr + 5pcPtr++)

{

printf("%s\n", pcPtr)

}

return

输出结果是( )

A) ABCD B) A C) E D) ABCDE

B D BCDE

C C CDE

D B DE

E A E

答案:D

4.在中断中,不能同步获取信号量,但是可以释放信号量。

A.正确 B.错误

答案:A

5.以下叙述中不正确的是( )

A) 在不同的函数中可以使用相同名字的变量

B) 函数中的形式参数是局部变量

C) 在一个函数内定义的变量只在本函数范围内有效

D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

答案:D

6.设有如下定义:

unsigned long pulArray[] = {6, 7, 8, 9, 10}

unsigned long *pulPtr

则下列程序段的输出结果为( )

pulPtr = pulArray

*(pulPtr + 2) += 2

printf ("%d,%d\n", *pulPtr, *(pulPtr + 2))

A)8,10 B)6,8C)7,9 D)6,10

答案:D

7. 定义结构体时有下面几种说法,请指出正确的(多选):______

A、结构体中的每个部分,最好进行四字节对齐;

B、结构体的总长度最好是四字节对齐;

C、结构中成员的存放不用考虑字节对齐情况;

答案:A、B

8.void example()

{

int i

char acNew[20]

for(i = 0i <10i++)

{

acNew[i] = '0'

}

printf("%d\n", strlen(acNew))

return

}

的输出为( )

A 0 B 10 C 11 D不确定

答案:D

9.switch(c)中的c的数据类型可以是char、long、float、unsigned、bool. ()

A. 正确 B. 错误

答案:B

10. 网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是

大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的 *** 作(空 *** 作)。

A. 正确 B.错误

答案:A

11. struct stu

{

int num

char name[10]

int age

}

void fun(struct stu *p)

{

printf("%s\n", (*p).name)

return

}

void main()

{

struct stu students[3]={ {9801,"Zhang",20},

{9802,"Wang",19},

{9803,"Zhao",18} }

fun(students + 2)

return

}

输出结果是( )

A) ZhangB)ZhaoC) Wang D) 18

答案:B

12.以下程序运行后,输出结果是( )

void main( )

{

char *szStr = "abcde"

szStr += 2

printf("%lu \n",szStr)

return

}

A cdeB 字符c的ASCLL码值

C "abcde"这个常串中字符c所在的地址 D 出错

答案:C

13. 在X86下,有下列程序

#include <stdio.h>

void main()

{

union

{

int k

chari[2]

}*s,a

s = &a

s->i[0] = 0x39

s->i[1] = 0x38

printf("%x\n", a.k)

}

输出结果是( )

A) 3839B) 3938C) 380039 D) 不可预知

答案:D

14. 全局变量可以定义在被多个.C文件包含着的头文件中。

A. 正确 B. 错误

答案:B

15.void example()

{

int i

char acNew[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

for(i = 0i <10i++)

{

acNew[i] = '0'

}

printf("%d\n", strlen(acNew))

return

}

的输出为:

A 0 B 10 C 11 D不确定

答案:B

16.下列定义正确的有(多选):( )

A: char *pcPtr = "abcd"

B: char pc[4]= "abcd"

C: char pc[] = "abcd"

D: char pc[] = 'abcd'

E: char pc[] = {'a','b','c','d','\0'}

F: char pc[] = 'a' 'b' 'c' 'd'

答案:ACE

17.在函数内部定义的变量(静态变量、寄存器变量等特殊变量除外)的内存是在栈内存中,所以在定义函数内部的变量的时候,一定要保证栈不能够溢出。如果临时变量

占用空间较大,应该使用内存申请的方式,这样该变量指向的内存就是在堆内存中了。

A. 正确 B. 错误

答案:A

18.局部变量可以和全局变量重名,编译的时候不会出现错误,但一旦不小心,就可能导致使用错误变量,所以在定时局部变量的时候,不要和全局变量重名。

A. 正确 B. 错误

答案:A

19.设有以下宏定义:

#define N 3

#define Y(n) ((N+1)*n) /*这种定义在编程规范中是严格禁止的*/

则执行语句:z = 2 * (N + Y(5 + 1))后,z的值为( )

A) 出错B) 42 C) 48D)54

答案:C

20. int *(*ptr)()

则以下叙述中正确的是( )

A) ptr是指向一维组数的指针变量

B) ptr是指向int型数据的指针变量

C) ptr是指向函数的指针,该函数返回一个int型数据

D) ptr是指向函数的指针,该函数的返回值是指向int型数据的指针

答案:D

21. 0x12345678 在采用BigEndian中内存的排列顺序是______,在采用LittleEndian内存中的排列顺序是_______.

(答案从左到右内存地址依次增加)

A.12 34 56 78 B.34 12 78 56

C.78 56 34 12 D.56 78 12 34

答案:A C

二、填空:

1. .struct tagAAA

{

unsigned char ucId:1

unsigned char ucPara0:2

unsigned char ucState:6

unsigned char ucTail:4

unsigned char ucAvail

unsigned char ucTail2:4

unsigned long ulData

}AAA_S

问:AAA_S在字节对齐分别为1、4的情况下,占用的空间大小是多少?

答案:9 12

2.typedef struct tagTest

{

UCHAR ucFlag

ULONG ulLen

}TEST_S

TEST_S test[10]

四字节对齐方式时: sizeof(TEST_S) = ______, sizeof(test)________.

答案:8 80

3

char acHello[] = "hello\0world"

char acNew[15] = {0}

strcpy(acNew,acHello)

strlen(acNew) = _____

sizeof(acHello) = ______

答案:5 12

4.#pragma pack(4)/*编译选项,表示4字节对齐*/

int main(int argc, char* argv[])

{

struct tagTest1

{

short a

char d

long b

long c

}

struct tagTest2

{

long b

short c

char d

long a

}

struct tagTest3

{

short c

long b

char d

long a

}

struct tagTest1 stT1

struct tagTest2 stT2

struct tagTest3 stT3

printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3))

return 0

}

#pragma pack()(编译选项结束)

请问输出结果是:_________

答案:12 12 16

5. enum ENUM_A

{

X1,

Y1,

Z1 = 5,

A1,

B1

}

enum ENUM_A enumA = Y1

enum ENUM_A enumB = B1

请问 enumA = ____enumB = ______

答案:1 7

6.以下程序的输出结果是________.

#include <stdio.h>

int fun(int x,int y)

{

static int m = 08

static int i = 23

i += m + 112

m = i + x + y

return m

}

void main()

{

int j = 4

int m = 1

int k

k = fun(j, m)

printf("%d,", k)

k=fun(j, m)

printf("%d\n", k)

return

}

答案:8 17

7.以下程序的输出结果为________

#define CIR(r) r*r /*请注意这种定义的缺陷,不允许这么定义*/

void main()

{

int a = 1

int b = 2

int t

t = CIR(a + b)

printf("%d\n", t)

return

}

答案:5

8.在VRP中,实现了strncpy类似的函数,定义如下:

#define CHAR char

#define ULONG unsigned long

#define VOID void

#define MACRO_COPYWORLDLENGTH 4

CHAR *VOS_strncpy(CHAR *pcDest, const CHAR *szSrc, ULONG ulLength)

{

CHAR *pcPoint = pcDest

if(( NULL == szSrc ) || ( NULL == pcDest ) ))

{

return NULL

}

while(ulLength &&(*pcPoint = *szSrc))/*这里采用了在判断语句中赋值的方式(*pcPoint = *szSrc),建议尽量不使用*/

{

pcPoint++

szSrc++

ulLength--

}

if(!ulLength)

{

*pcPoint = '\0'

}

return pcDest

}

VOID main(VOID)

{

CHAR szStrBuf[ ] = "1234567890"

CHAR szStrBuf1[ ] = "1234567890"

CHAR *szHelloWorld = "Hello World!"

strncpy(szStrBuf, szHelloWorld, MACRO_COPYWORLDLENGTH)

VOS_strncpy(szStrBuf1, szHelloWorld, MACRO_COPYWORLDLENGTH)

printf("%s %s", szStrBuf, szStrBuf1)

}

程序的输出结果为________

答案:Hell567890 Hell

9.

char acHello[] = "hello\0world"

char acNew[15] = {0}

memcpy(acNew,acHello,12)

strlen(acNew) = _____

sizeof(acHello) = _____

答案:5 12

10. typedef struct Head

{

UCHAR aucSrc[6]

ULONG ulType

} HEAD_S

在强制一字节对齐情况下,请指出sizeof(HEAD_S) = ________

在强制二字节对齐情况下,请指出sizeof(HEAD_S) = ________

在强制四字节对齐情况下,请指出sizeof(HEAD_S) = ________

答案:10 10 12

11.union tagAAAA

{

struct

{

char ucFirst

short usSecond

char ucThird

}half

long lI

}number

struct tagBBBBB

{

char ucFirst

short usSecond

char ucThird

short usForth

}half

struct tagCCCC

{

struct

{

char ucFirst

short usSecond

char ucThird

}half

long lI

}

在字节对齐为1下,sizeof(union tagAAAA)、sizeof(struct tagBBBBB)、sizeof(struct tagCCCC)是____ ____ _____

在字节对齐为4下,sizeof(union tagAAAA)、sizeof(struct tagBBBBB)、sizeof(struct tagCCCC)是____ ____ _____

答案:4 6 8

8 8 12

12.struct tagABC

{

char cB

short sC

char cD

long lA

}*pAbc

pAbc = 0x100000

那么pAbc+0x100 = 0x_________(ULONG)pAbc + 0x100 = 0x_________(ULONG *)pAbc + 0x100 = 0x_________(char *)pAbc + 0x100 = 0x_______

答案:100C00 100100 100400 100100

13.unsigned long FUNC_C ( unsigned long ulAction )

{

unsigned long ulResult = 0

switch ( ulAction )

{

case ACTION_A:

{

ulResult += 1

break

}

case ACTION_B:

{

ulResult += 1

}

default:

{

ulResult += 1

}

}

printf( "ulResult = %u", ulResult )

return ulResult

}

当输入为ACTION_B时,输出结果为: ulResult = _________

答案:2(因为此分支没有break分支)

14.下面的代码中,函数Test执行完毕后,打印的结果是 _____。

unsigned long g_ulGlobal = 0

void GlobalInit(unsigned long ulArg)

{

ulArg = 0x01

return

}

void Test()

{

GlobalInit(g_ulGlobal)

printf("%lu", g_ulGlobal)

return

}

答案:0

15.以下程序的输出的结果是___________

int x = 3

void incre()

void main()

{ int i

for (i = 1i <xi++)

{

incre()

}

return

}

void incre()

{

static int x = 1

x *= (x + 1)

printf("%d ",x)

return

}

答案:2 6

16.以下程序的输出的结果是___________

#pragma pack(4)/*四字节对齐*/

int main(int argc, char* argv[])

{

unsigned char puc[4]

struct tagPIM

{

unsigned char ucPim1

unsigned char ucData0:1

unsigned char ucData1:2

unsigned char ucData2:3

}*pstPimData

pstPimData = (struct tagPIM *)puc

memset(puc, 0, 4)

pstPimData->ucPim1 = 1

pstPimData->ucData0 = 2

pstPimData->ucData1 = 3

pstPimData->ucData2 = 4

printf("%02X %02X %02X %02X\n", puc[0], puc[1], puc[2], puc[3])

return 0

}

#pragma pack()/*恢复缺省对齐方式*/

答案:01 26 00 00

17.

char *pcColor = "blue1"

char acColor[] = "blue1"

strlen(pcColor) = _____

strlen(acColor) = _____

sizeof(pcColor) = _____

sizeof(acColor) = _____

答案:5 5 4 6

18.

char str[] = "\\\0"

char *p = str

int n = 1000

请计算

sizeof (str ) = ____________

sizeof ( p ) = ______________

sizeof ( n ) = ______________

答案:3 4 4

19.UCHAR *pucCharArray[10][10]

typedef union unRec

{

ULONG ulIndex

USHORT usLevel[6]

UCHAR ucPos

}REC_S

REC_S stMax,*pstMax

四字节对齐方式时: sizeof(pucCharArray) = __指针的数组,每个指针的地址都是4字节____, sizeof(stMax)=_______, sizeof(pstMax)=__地址______,sizeof(*pstMax)=________.

答案:400 12 4 12

20.typedef union unHead

{

UCHAR aucSrc [6]

struct tagContent

{

UCHAR ucFlag[3]

ULONG ulNext

}Content

}HEAD_S

32CPU,VC编译环境下:

在强制一字节对齐情况下,请指出sizeof(HEAD_S) = ________

在强制二字节对齐情况下,请指出sizeof(HEAD_S) = ________

在强制四字节对齐情况下,请指出sizeof(HEAD_S) = ________

答案:7 8 8

21.

UCHAR *pszTest = "hello"

UCHAR aucTest[] = "hello"

请问 sizeof(pszTest) = _____ , sizeof(*pszTest) = ______, sizeof(aucTest) = ______.

答案:4 16

22. struct BBB

{

long lNum

char *pcName

shortsDate

char cHa[2]

shortsBa[6]

}*p

p = 0x100000

p + 0x1 = 0x____

(unsigned long)p + 0x1 = 0x______

(unsigned long *)p + 0x1 = 0x______

(char *)p + 0x1 = 0x______

答案:100018 100001 100004 100001

23.在4字节对齐的情况:

typedef struct tagRec

{

long lA1

char cA2

char cA3

long lA4

long lA5

} REC_S

void main(int argc, char *argv[])

{

REC_S stMax

printf("\r\n sizeof(stMax)= %d",sizeof(stMax))

return

}

输出结果为:

sizeof(stMax)=____

答案:16

24.void main ()

{

unsigned long ulA = 0x11000000

printf("\r\n%x",*(unsigned char *)&ulA)

return

}

输出结果为:

答案:0

三、指出下列程序中导致不能出现预期结果的唯一错误(不考虑编程规范错误)

1.下面程序用于输出用户输入的字符串。请指出其中的问题

#define OK 0

#define ERR 1

#define ERROR (-1)

#define BUFFER_SIZE 256

int GetMemory(char **ppszBuf, int num)

{

if( NULL == ppszBuf )

{

ASSERT(0)

return ERROR

}

*ppszBuf = (char *)malloc(num)

if(NULL == *ppszBuf)

{

return ERROR

}

return OK

}

void Test(void)

{

char *pcStr = NULL

if(OK == GetMemory(&pcStr, BUFFER_SIZE))

{

scanf("%s",pcStr)/*这里假定BUFFER_SIZE足够大,不会导致越界*/

printf(pcStr)

free(pcStr)

}

return

}

答案:要采用printf("%s", str)的形式打印,否则如果输入为%s, %d等形式可能会导致不可知现象。

2.此函数实现把32位IP地址(主机序)以字符串的方式打印出来,请找出代码中的错误:

char *IpAddr2Str(unsigned long ulIpAddr)

{

char szIpAddr[32]

(void)VOS_sprintf(szIpAddr, "%d.%d.%d.%d", ulIpAddr >>24,

(ulIpAddr >>16) &0xff, (ulIpAddr >>8) &0xff, ulIpAddr &0xff)

return szIpAddr

}

答案:函数的局部变量是存放在堆栈中的,此函数返回了堆栈中的地址,函数退出后堆栈中的内容不可用。

3.如下程序用于输出"Welcome Home"。请指出其中的错误:

void Test(void)

{

char pcArray[12]

strcpy(pcArray,"Welcome Home")

printf("%s!", pcArray)

return

}

答案:数组越界。

4.如下程序用于把"blue"字符串返回,请指出其中的错误:

char *GetBLUE(void)

{

char* pcColor

char* pcNewColor

pcColor = "blue"

pcNewColor = (char*)malloc(strlen(pColor))

if(NULL == pcNewColor)

{

return NULL

}

strcpy(pcNewColor, pcColor)

return pcNewColor

}

答案:申请内存空间不足,字符串结尾还有'\0'。

5.下面程序期望输出str = hello world,请指出其中的错误:

char * GetStr(char *p)

{

p = "hello world"

return p

}

void main()

{

char *str = NULL

if(NULL != GetStr(str))

{

printf("\r\n str = %s",str)

}

return

}

答案:无法返回字符串,参数使用错误。

//KGM913A2 DEMO 8-BIT 666MODE 此程序为本公司480*320点阵18-BIT彩色TFT液晶屏的程序

//2010-12-23 BY ERIC

//IC: ILI9481B

//---------------------------------------------------------------------------

#include <avr/io.h>

//#define F_CPU 8000000UL

#define F_CPU 12000000UL

#include <util/delay.h>

#ifndef Delayms

#define Delayms _delay_ms

#endif

#include <avr/pgmspace.h>

#include <stdio.h>

#include <string.h>

#include "font.h"

#include "AT45DB161D.h"

typedef uint16_t UINT, uint

typedef uint8_t UCHAR, uchar

#define LCD_RESET PB0

#define LCD_RS PB1

#define LCD_WR PB2

#define KB_NEXT PB3

void W_COM(UCHAR dat)

void W_DATA(UCHAR dat)

void W_RGB(UCHAR dat1,UCHAR dat2,UCHAR dat3)

void BlockWrite(UINT sx, UINT ex, UINT sy, UINT ey)

void ILI9481B_Initial(void)

void Clear(void)

void Full(void)

void Red(void)

void Green(void)

void Blue(void)

void DotsMatrix(UINT sx, UINT ex, UINT sy, UINT ey)

//void Crosstalk_A(void)

//void Crosstalk_B(void)

//void Crosstalk_C(void)

//void Flicker(void)

//void Flicker_SCT(void)

//void GAMMA(void)

void Show(UINT sx, UINT ex, UINT sy, UINT ey, UCHAR dat1,UCHAR dat2,UCHAR dat3)

//#define HexToStr(num,string) sprintf(string, "0x%02X", num)

//---------------------------------------------------------------------------

//char str[10]

int main(void)

{

UCHAR i

//DDRA = 0xFF

DDRB = 0xFF

DDRD = 0xFF

_NOP()

_NOP()

//PORTA = 0xFF

PORTB = 0xFF

PORTD = 0xFF

Flash_SPI_Init()

Delayms(10)

ReadFlashStatus()

SetPictureSize((uint32_t)480*320)

DDRB &= ~(1<<KB_NEXT)

Delayms(30)

PORTB &= ~(1<<LCD_RESET)

Delayms(50)

PORTB |= (1<<LCD_RESET)

Delayms(100)

ILI9481B_Initial()

for()

{

Full()

while( PINB &(1 <<KB_NEXT) )

Clear()

while( PINB &(1 <<KB_NEXT) )

Red()

while( PINB &(1 <<KB_NEXT) )

Green()

while( PINB &(1 <<KB_NEXT) )

Blue()

while( PINB &(1 <<KB_NEXT) )

DotsMatrix(0, 319, 0, 479)

while( PINB &(1 <<KB_NEXT) )

/* Crosstalk_A()

while( PINB &(1 <<KB_NEXT) )

Crosstalk_B()

Delayms(500)

while( PINB &(1 <<KB_NEXT) )

Crosstalk_C()

Delayms(500)

while( PINB &(1 <<KB_NEXT) )

Flicker()

Delayms(500)

while( PINB &(1 <<KB_NEXT) )

Flicker_SCT()

Delayms(500)

while( PINB &(1 <<KB_NEXT) )

GAMMA()

//Delayms(500)

//while( PINB &(1 <<KB_NEXT) )

*/

for ( i = 0i <4i++ )

{

BlockWrite(0, 319, 0, 479)

ReadFlashUchar3(i, W_RGB)

while( PINB &(1 <<KB_NEXT) )

}

}

}

//---------------------------------------------------------------------------

void W_COM(UCHAR dat)

{

PORTB &= ~(1<<LCD_RS)

PORTD = dat

PORTB &= ~(1<<LCD_WR)

PORTB |= (1<<LCD_WR)

//PORTA = dat

//PORTB &= ~(1<<LCD_WR)

//PORTB |= (1<<LCD_WR)

}

//---------------------------------------------------------------------------

void W_DATA(UCHAR dat)

{

PORTB |= (1<<LCD_RS)

PORTD = dat

PORTB &= ~(1<<LCD_WR)

PORTB |= (1<<LCD_WR)

//PORTA = dat

//PORTB &= ~(1<<LCD_WR)

//PORTB |= (1<<LCD_WR)

}

//---------------------------------------------------------------------------

void W_RGB(uchar dat1,uchar dat2,uchar dat3)

{

PORTB |= (1<<LCD_RS)

PORTD = dat1

PORTB &= ~(1<<LCD_WR)

PORTB |= (1<<LCD_WR)

PORTD = dat2

PORTB &= ~(1<<LCD_WR)

PORTB |= (1<<LCD_WR)

PORTD = dat3

PORTB &= ~(1<<LCD_WR)

PORTB |= (1<<LCD_WR)

}

//---------------------------------------------------------------------------

void BlockWrite(UINT sx, UINT ex, UINT sy, UINT ey)

{

W_COM(0x2A)

W_DATA(sx>>8)

W_DATA(sx)

W_DATA(ex>>8)

W_DATA(ex)

W_COM(0x2B)

W_DATA(sy>>8)

W_DATA(sy)

W_DATA(ey>>8)

W_DATA(ey)

W_COM(0x2c)

}

//---------------------------------------------------------------------------

void Clear(void)

{

Show(0, 319, 0, 479, 0X00,0X00,0X00)

}

//---------------------------------------------------------------------------

void Full(void)

{

Show(0, 319, 0, 479, 0xFF,0XFF,0XFF)

}

//---------------------------------------------------------------------------

void Red(void)

{

Show(0, 319, 0, 479, 0xFF,0X00,0X00)

}

//---------------------------------------------------------------------------

void Green(void)

{

Show(0, 319, 0, 479, 0x00,0XFF,0X00)

}

//---------------------------------------------------------------------------

void Blue(void)

{

Show(0, 319, 0, 479, 0x00,0X00,0XFF)

}

//---------------------------------------------------------------------------

void DotsMatrix(UINT sx, UINT ex, UINT sy, UINT ey)

{

UINT x, y, i, j

BlockWrite(sx, ex, sy, ey)

x = ex - sx

y = ey - sy

for ( i = 0i <= yi++ )

for ( j = 0j <= xj++ )

{

if ( (i + j) &1 )

{

W_RGB(0xFF,0XFF,0XFF)

}

else

{

W_RGB(0x00,0X00,0X00)

}

}

}

//---------------------------------------------------------------------------

/*void Crosstalk_A(void)

{

Show(0, 239, 0, 399, 0XEF5D)

Show(79, 159, 0, 140, 0x0000)

Show(79, 159, 262, 400, 0x0000)

}

//---------------------------------------------------------------------------

void Crosstalk_B(void)

{

Show(79, 159, 0, 140, 0XEF5D)

Show(79, 159, 262, 400, 0XEF5D)

}

//---------------------------------------------------------------------------

void Crosstalk_C(void)

{

Show(0, 79, 133, 265, 0)

Show(159, 239, 133, 265, 0)

}

//---------------------------------------------------------------------------

void Flicker(void)

{

UINT i, j

BlockWrite(0, 239, 0, 399)

for ( i = 0i <= 399i++ )

{

if(i &1)

for ( j = 0j <= 239j++ )

W_RGB(0xFFFF)

else

for ( j = 0j <= 239j++ )

W_RGB(0x0000)

}

}

//---------------------------------------------------------------------------

void Flicker_SCT(void)

{

UINT i, j

BlockWrite(0, 239, 0, 399)

for ( i = 0i <= 399i++ )

for ( j = 0j <= 239j++ )

{

if(i%3)

W_RGB(0X7BEF)

else

W_RGB(0)

}

}

//---------------------------------------------------------------------------

void GAMMA(void)

{

Show(0, 239, 0, 399, 0x0000)

ShowString(200, 380, "000")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X1082)

ShowString(200, 380, "016")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X2104)

ShowString(200, 380, "032")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X3186)

ShowString(200, 380, "048")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X4208)

ShowString(200, 380, "064")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X528A)

ShowString(200, 380, "080")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X630C)

ShowString(200, 380, "096")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X738E)

ShowString(200, 380, "112")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X8410)

ShowString(200, 380, "128")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0X9492)

ShowString(200, 380, "144")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XA514)

ShowString(200, 380, "160")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XB596)

ShowString(200, 380, "176")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XC618)

ShowString(200, 380, "192")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XD69A)

ShowString(200, 380, "208")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XE71C)

ShowString(200, 380, "224")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XF79E)

ShowString(200, 380, "240")Delayms(500)while( PINB &(1 <<KB_NEXT) )

Show(0x0000, 0x00EF, 0x0000, 0x018F, 0XFFFF)

ShowString(200, 380, "255")Delayms(500)while( PINB &(1 <<KB_NEXT) )

}

//---------------------------------------------------------------------------*/

void Show(UINT sx, UINT ex, UINT sy, UINT ey, UCHAR dat1, UCHAR dat2, UCHAR dat3)

{

UINT x, y, i, j

BlockWrite(sx, ex, sy, ey)

x = ex - sx

y = ey - sy

for ( i = 0i <= yi++ )

for ( j = 0j <= xj++ )

{

W_RGB(dat1,dat2,dat3)

}

}

//---------------------------------------------------------------------------

void ILI9481B_Initial(void)

{

W_COM(0X20)

W_COM(0X11)

Delayms(20)

W_COM(0XD0)//

W_DATA(0X07) // VC[2:0]

W_DATA(0X41) // PON,BT[2:0]

W_DATA(0X16) // VCIRE,VRH[3:0]=1A

W_COM(0XD1)

W_DATA(0X00) // SELVCM

W_DATA(0X2C) // VCM[5:0]0X2C30

W_DATA(0X13) // VDV[4:0]0X111313crosstalk较重

W_COM(0XD2)

W_DATA(0X01) // AP0[2:0]0X03CROSSTALK好点

W_DATA(0X11) // DC10[2:0],DC00[2:0]

W_COM(0XC0)//****** *******

W_DATA(0X10) // REV &SM &GS

W_DATA(0X3B) // NL[5:0]

W_DATA(0X00) // SCN[6:0]

W_DATA(0X02) // NDL , PTS[2:0]

W_DATA(0X11) // PTG , ISC[3:0]

W_COM(0XC1)

W_DATA(0X10)

W_DATA(0X10)//LINE TIMMING增大改善CROSSTALK>14会闪烁

W_DATA(0X88)

W_COM(0XC5) // Frame rate

W_DATA(0X03)

W_COM(0XC8) // Gamma Setting

W_DATA(0X00) // KP1[2:0],KP0[2:0]

W_DATA(0X66) // KP3[2:0],KP2[2:0]

W_DATA(0X15) // KP5[2:0],KP4[2:0]

W_DATA(0X24) // RP1[2:0],RP0[2:0]

W_DATA(0X00) // VRP0[3:0]

W_DATA(0X08) // VRP1[4:0]

W_DATA(0X26) // KN1[2:0],KN0[2:0]

W_DATA(0X11) // KN3[2:0],KN2[2:0]

W_DATA(0X77) // KN5[2:0],KN4[2:0]

W_DATA(0X42) // RN1[2:0],RN0[2:0]

W_DATA(0X08) // VRN0[3:0]

W_DATA(0X00) // VRN1[4:0]

W_COM(0XE4)

W_DATA(0XA0)

W_COM(0XF0)

W_DATA(0X01)

W_COM(0XF3)

W_DATA(0X30)

W_DATA(0X0A)

W_COM(0XF7)

W_DATA(0X80)

W_COM(0X36) // Set_address_mode

W_DATA(0X0A) // Bit3: RGB/BGR

Delayms(120)

W_COM(0X3A)

W_DATA(0X66)

W_COM(0X29)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11232126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存