Ðề tài: Về char trong CCS
View Single Post
Old 19-04-2011, 02:13 PM   #1
tornado1990
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 2
:
Về char trong CCS

Xin chào mọi người!
Mình tham gia diễn đàn khá lâu rồi tuy nhiên chưa có đóng góp nào cả. Mặc dù vậy cũng mong các bậc đàn anh chỉ bảo thêm các vấn đề mà bản thân còn chưa hiểu
Code:
 //chuong trinh chuyen ki tu can hien thi ra ma font
void Convert(unsigned int source)
{
	unsigned int position,i;
	position=(source>39)? (source-40)*6:0;
	position=(source==32)? 88*6:position;
	position=(source==87)? 87*6:position;
	for(i=position;i<(position+6);i++)
	{
		Array[d]=ma[i];
		if(source==0) Array[d]=0;
		d++;
	}
	
}
là một đoạn code để chuyển string sang mã led hiển thị trên led matrix, ma[] là một mảng lớn chứa các mã font 7x6 của các chữ cái phục vụ quét
Code:
unsigned char code ma[]={0,
0,62,65,65,0,0,			//(				0
0,65,65,62,0,0,			//)			  	1
16,56,60,56,16,0,		//*				2
8,8,127,8,8,0,			//+				3
0,0,9,18,28,0,			//,				4
8,8,8,8,8,0,			//-				5
0,7,5,7,0,0,			//.				6
1,2,28,32,64,0,			///				7
62,65,65,65,62,0,		//0				8
17,33,127,1,1,0,		//1				9
35,69,73,73,49,0,		//2				10
34,65,73,73,54,0,		//3				11
12,20,36,79,4,0,		//4				12
114,73,73,73,70,0,		//5				13
62,73,73,73,38,0,		//6				14 
65,66,68,72,112,0,		//7				15
54,73,73,73,54,0,		//8				16
50,73,73,73,62,0,		//9				17
0,0,99,99,0,0,			//:				18
0,0,101,102,0,0,		//;				19
0,8,20,34,65,0,			//<				20
9,9,9,9,9,0,			//=				21
65,34,20,8,0,0,			//>				22
0,48,64,77,48,0,		//?				23
62,65,89,56,0,0,		//@				24
63,68,68,68,63,0,		//A				25
127,73,73,73,54,0,		//B				26
62,65,65,65,34,0,		//C				27
127,65,65,65,62,0,		//D				28
127,73,73,73,65,0,		//E				29
127,72,72,72,64,0,		//F				30
62,65,73,73,46,0,		//G				31
127,8,8,8,127,0,		//H				32
65,65,127,65,65,0,		//I				33
70,65,65,126,64,0,		//J				34
127,8,20,34,65,0,		//K				35
127,1,1,1,1,0,			//L				36
127,32,24,32,127,0,		//M				37
127,32,16,8,127,0,		//N				38

....// còn nhiều nữa
....//
}
Code:
void send_str(unsigned char *str,unsigned char color,unsigned char position,bit shi)
{
	unsigned char x,y=0;
	g_r=color;
	//nap font 12 ki tu vao mang Array de hien thi
	d=0;
	y=0;
	while(y<12)
	{
		if(*str!='\0')
		{
			Convert(*str);
			str++;
		}
		if(*str=='\0') Convert(0);
....//// còn nữa
Vấn đề của em là chỗ "unsigned char *str" dấu * ở đây có ý nghĩa gì, biến kiểu này em biết là 8bit không dấu nhưng trong bài giá trị cho ra của nó là gì? Chẳng hạn send_str("A") thì *str là số có giá trị ra sao? Có phải là mã ASCII không? Các chỗ so sánh *str=='\0' có ý nghĩa như thế nào?
Code:
send_str("Nhiet do phong hien tai la:",orange,0,1);
Em là newbie trong vụ CCS này, tuy có đọc nhiều tài liệu do các anh gởi nhưng cũng chưa thể "thông" hết được. Code trên là của một bài mẫu do một thành viên post lên tuy nhiên bài đã khá lâu rồi với lại do download nhiều quá nên cũng chả nhớ phải tìm lại ở đâu!
Rất mong nhận được sự giúp đỡ của mọi người!
tornado1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn