版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、我的觸摸屏驅(qū)動(dòng)源代碼 /*C頭文件*/#include "au_types.h"#define DEVICE_NAME "tpanel"#define IRQ_1 7#define GPIO_1_PORT
2、; GPIO_1#define GPIO_1_PORT_ADDR GPIO_1_BASE/ 觸摸屏返回值結(jié)構(gòu)體typedef struct uint32 pressure; uint32 x; uint32 y;TS_RET;/ 校準(zhǔn)值結(jié)構(gòu)體typedef struct int32 x; int32 y;TS_POINT;static TS_POINT T
3、sPoint10;#define TS_IOC_MAGIC 0xd9#define CALIBRATE _IOW(TS_IOC_MAGIC, 1, sizeof(TsPoint)#define CALIBRATE_START _IOW(TS_IOC_MAGIC, 2, sizeof(uint8)/ 以下為觸摸屏控制器管腳設(shè)置#define ADS7843_CSS() writew(0xff, (GPIO_1
4、_PORT_ADDR + 0x200) / cs = 1 (p1.7)#define ADS7843_CSC() writew(0x00, (GPIO_1_PORT_ADDR + 0x200) / cs = 0#define ADS7843_DCLKS() writew(0xff, (GPIO_1_PORT_ADDR + 0x40) / dclk = 1(p1.4)#define ADS7843_DCLKC() wr
5、itew(0x00, (GPIO_1_PORT_ADDR + 0x40) / dclk = 0#define ADS7843_DINS() writew(0xff, (GPIO_1_PORT_ADDR + 0x20) / din = 1(p.3)#define ADS7843_DINC() writew(0x00, (GPIO_1_PORT_ADDR + 0x20) / din = 0#define ADS7843
6、_DOUTR() readw(GPIO_1_PORT_ADDR + 0x10) / dout p1.2/ ADS7843控制字 #define AIN_X 0xD4#define AIN_Y
7、60; 0x94/ ADS7846控制字/#define AIN_X 0xD0 /#define AIN_Y 0x90 /#define DELAY_200NS
8、0; 200 / 操作時(shí)序控制宏(即延時(shí)控制值)#define DELAY_200NS 400 / 操作時(shí)序控制宏(即延時(shí)控制值)#define PEN_DOWN 1 &
9、#160; / 筆按下#define PEN_UP 2 / 筆抬起#define PEN_FLEETING 4 / 筆拖拽#define
10、;MAX_TS_BUF 16 / 最大緩沖區(qū)數(shù)#define BUF_HEAD (TsDev.bufTsDev.head) / 取隊(duì)列頭值#define BUF_TAIL (TsDev.bufTsDev.tail)
11、160; / 取隊(duì)列尾值#define INCBUF(x, mod) (+(x) & (mod)-1) / 位移加一#define TS_TIMER_DELAY (HZ/28) / 定時(shí)時(shí)長(zhǎng)為36ms/#define TS_TIMER_DELAY (HZ/15
12、)#define TS_TIMER_DELAY1 (HZ/10) / 定時(shí)時(shí)長(zhǎng)為100ms/*C源代碼*/#include <linux/config.h>#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/types.h>#include <linux/kernel.h> &
13、#160; / printk#include <linux/fs.h> / file結(jié)構(gòu)#include <linux/init.h>#include <linux/sched.h>#include <linux/delay.h>#include <linux/string.h>#include <linux/poll.h>#include <linux/interr
14、upt.h>#include <linux/devfs_fs_kernel.h>#include <linux/timer.h>#include <asm/hardware.h>#include <asm/irq.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/ioctl.h>#include "hi_gpio.h"#include "touch_screen.h"#define _CA
15、LIBRATE_ 1 / 使用校準(zhǔn)參數(shù),否則使用固定的校準(zhǔn)值/ 以下為觸摸屏較正用#define SCREEN_WIDTH 800#define SCREEN_HEIGHT 460#define NR_EQUATIONS 6#define LSHIFT(x) (x)<<10)#define RSHIFT(x)
16、 (x)>>12)static int VarsNR_EQUATIONS*4;static int CalibrateOk = FALSE; / 是否校準(zhǔn)過(guò)#define Vars1 Vars#define Vars2 (Vars + NR_EQUATIONS)#define Vars3 (Vars + NR_EQUATIONS * 2)#define Vars4 (Vars + NR_EQUATIONS * 3)/ 觸摸屏設(shè)備結(jié)構(gòu)體typedef struct
17、0;uint32 penStatus; TS_RET bufMAX_TS_BUF; uint32 head, tail; wait_queue_head_t wq; spinlock_t lock;TS_DEV;static TS_DEV TsDev;static struct timer_list ts_timer; &
18、#160; / 定義定時(shí)器變量static uint32 touch_screen_major = 0; / 觸摸屏設(shè)備號(hào)static uint8 Ready = 1;/* 名稱:DelayNo()* 功能:短軟件延時(shí)。* 入口參數(shù):i 延時(shí)參數(shù),值越大,延時(shí)越久* 出口參數(shù):無(wú)*/void DelayNo(uint32 i) for(; i>0; i-);/* 名稱:TestDelayNo()* 功能:測(cè)試短軟件延時(shí),以便于產(chǎn)生
19、正確的時(shí)序。* 入口參數(shù):無(wú)* 出口參數(shù):無(wú)*/void TestDelayNo(void) while(1) ADS7843_DCLKS(); DelayNo(DELAY_200NS); ADS7843_DCLKC(); &
20、#160; DelayNo(DELAY_200NS); /* 名稱:ADS7843_IOInit()* 功能:初始化ADS7843的控制I/O,CS=1,DCLK=0,DIN=0。* 入口參數(shù):無(wú)* 出口參數(shù):無(wú)*/void ADS7843_IOInit(void) ADS7843_CSS(); / CS = 1 ADS7843_DCLKC();
21、 / DCLK = 0 ADS7843_DINC(); / DIN = 0 DelayNo(DELAY_200NS);/* 名稱:ADS7843_IRQR()* 功能:ADS7843的PENIRQ引腳測(cè)量,返回當(dāng)前此引腳的電平值。* 入口參數(shù):無(wú)* 出口參數(shù):返回為0表示PENIRQ為低電平狀態(tài),否則
22、為高電平。*/uint8 ADS7843_IRQR(void) uint8 dat3; uint8 val; DelayNo(1); val = readw(GPIO_1_PORT_ADDR + 0x80); if(val) dat0 = 1; else dat0 = 0; /DelayNo(1); val = readw(GPIO_1_PORT_ADDR + 0x80);
23、; if(val) dat1 = 1; else dat1 = 0; /DelayNo(1); val = readw(GPIO_1_PORT_ADDR + 0x80); if(val) dat2 = 1; else dat2 = 0; /DelayNo(1); if(dat0 + dat1 + dat2) > 1) return(1);
24、0; else return(0); /* 名稱:ADS7843_WriteRead()* 功能:對(duì)ADS7843進(jìn)行讀寫操作。操作按照ADS7843的規(guī)定,* 24Clocks,先寫8位控制數(shù)據(jù),然后讀取12位的轉(zhuǎn)換結(jié)果。* 入口參數(shù):data 控制數(shù)據(jù)* 出口參數(shù):返回值為讀出的數(shù)據(jù)*/ void ADS7843_WriteRead(uint8 data, uint16 *ret) uint8 i;
25、60;uint16 ret_dat; data = data | 0x80; / 設(shè)置S位 ADS7843_IOInit(); ADS7843_CSC(); / CS = 0 for(i=0; i<8; i+) if( (data&0x80) != 0 ) ADS7843_DINS()
26、; / DIN = 1 else ADS7843_DINC(); / DIN = 0 DelayNo(DELAY_200NS); ADS7843_DCLKS(); / DCLK = 1 DelayNo(DELAY_200NS);
27、 ADS7843_DCLKC(); / DCLK = 0 data = data<<1; ADS7843_DINC(); / DIN = 0 DelayNo(DELAY_200NS * 3); ADS7843_DCLKS(); / DCLK = 1 DelayNo(DELAY_200NS);
28、ADS7843_DCLKC(); / DCLK = 0 ret_dat = 0; for(i=0; i<12; i+) ret_dat = ret_dat<<1; DelayNo(DELAY_200NS); ADS7843_DCLKS(); / DC
29、LK = 1 if( ADS7843_DOUTR() != 0 ) ret_dat = ret_dat | 1; DelayNo(DELAY_200NS); ADS7843_DCLKC(); / DCLK = 0 if(i = 6)
30、60;DelayNo(DELAY_200NS * 2); for(i=0; i<3; i+) DelayNo(DELAY_200NS); ADS7843_DCLKS(); / DCLK = 1 DelayNo(DELAY_200NS); ADS7843_DCLKC(); / DCLK = 0
31、0; DelayNo(DELAY_200NS); ADS7843_CSS(); / CS = 1 *ret = ret_dat;/* 名稱: DoGaussianElimination* 功能:* * 入口參數(shù):* 出口參數(shù):*/ static uint8 DoGaussianElimination(int* x, const TS_POINT* src_pts, const TS_POINT* dst_pts)
32、 int x12, x23, y12, y23, nx12, nx23, ny12, ny23; int numerator, denominator1, denominator2; x12 = (src_pts0.x - src_pts1.x); x23 = (src_pts1.x - src_pts2.x); y12 = (src_pts0.y - src_pts1.y); y23 = (
33、src_pts1.y - src_pts2.y); nx12 = (dst_pts0.x - dst_pts1.x); nx23 = (dst_pts1.x - dst_pts2.x); ny12 = (dst_pts0.y - dst_pts1.y); ny23 = (dst_pts1.y - dst_pts2.y); denominator1 = x12*y23 - x23*y12;
34、60; if (denominator1 = 0) return FALSE; denominator2 = y12*x23 - y23*x12; if (denominator2 = 0) return FALSE;
35、160; numerator = nx12*y23 - nx23*y12; x 0 = LSHIFT (numerator) / denominator1; numerator = nx12*x23 - nx23*x12; x 1 = LSHIFT (numerator) / denominator2; x 2 = LSHIFT (dst_pts 0.x) - x 0 * src_pts 0.x - x 1 * s
36、rc_pts 0.y; numerator = ny12*y23 - ny23*y12; x 3 = LSHIFT (numerator) / denominator1; numerator = ny12*x23 - ny23*x12; x 4 = LSHIFT (numerator) / denominator2; x 5 = LSHIFT (dst_pts 0.y) - x
37、3 * src_pts 0.x - x 4 * src_pts 0.y; return TRUE;/* 名稱: SetMouseCalibrationParameters* 功能:* * 入口參數(shù):* 出口參數(shù):*/ static uint8 SetMouseCalibrationParameters(const TS_POINT* src_pts, const TS_POINT* dst_pts) TS_POINT my_src_pts 3; TS_PO
38、INT my_dst_pts 3; my_src_pts0 = src_pts0; my_src_pts1 = src_pts1; my_src_pts2 = src_pts4; my_dst_pts0 = dst_pts0; my_dst_pts1 = dst_pts1; my_dst_pts2 = dst_pts4; if (!DoGauss
39、ianElimination(Vars1, my_src_pts, my_dst_pts) return FALSE; my_src_pts0 = src_pts1; my_src_pts1 = src_pts2; my_src_pts2 = src_pts4; my_dst_pts0 = ds
40、t_pts1; my_dst_pts1 = dst_pts2; my_dst_pts2 = dst_pts4; if (!DoGaussianElimination(Vars2, my_src_pts, my_dst_pts) return FALSE; my_src_pts0 = src_pt
41、s2; my_src_pts1 = src_pts3; my_src_pts2 = src_pts4; my_dst_pts0 = dst_pts2; my_dst_pts1 = dst_pts3; my_dst_pts2 = dst_pts4; if (!DoGaussianElimination(Vars3, my_src_pts, my_dst_pts)
42、; return FALSE; my_src_pts0 = src_pts0; my_src_pts1 = src_pts3; my_src_pts2 = src_pts4; my_dst_pts0 = dst_pts0; my_dst_pts1 = dst_pts3; &
43、#160; my_dst_pts2 = dst_pts4; if (!DoGaussianElimination(Vars4, my_src_pts, my_dst_pts) return FALSE; #if 0 printf("Vars:"); int i; for (i=0; i<4*NR_EQUATION
44、S; i+) if (i>0 && !(i%4) printf("n"); printf("%dt", Varsi); printf("n");#endif return TRUE;/* 名稱: DoMouseCalibrate* 功能: 校準(zhǔn)* * 入口參數(shù):* 出口參數(shù):*/ int32 DoMou
45、seCalibrate(uint16 * x0, uint16 * y0) #ifdef _CALIBRATE_ / 使用校準(zhǔn)參數(shù),否則使用固定的校準(zhǔn)值 int x = *x0; int y = *y0; int x1, y1, x2, y2, x3, y3, x4, y4; printk("src: x:%4d y:%4dn", x, y); x1 = Vars10 * x + Vars11
46、 * y + Vars12; y1 = Vars13 * x + Vars14 * y + Vars15; x2 = Vars20 * x + Vars21 * y + Vars22; y2 = Vars23 * x + Vars24 * y + Vars25; x3 = Vars30 * x + Vars31 * y + Vars32; y3 = Vars33 * x + Vars34 * y + Vars35;&
47、#160; x4 = Vars40 * x + Vars41 * y + Vars42; y4 = Vars43 * x + Vars44 * y + Vars45; x = RSHIFT(x1 + x2 + x3 + x4); y = RSHIFT(y1 + y2 + y3 + y4); if (x < 0) x = 0; else if (x > SCREEN_WIDTH) x = SCR
48、EEN_WIDTH; if (y < 0) y = 0; else if (y > SCREEN_HEIGHT) y = SCREEN_HEIGHT; *x0 = x; *y0 = y; printk("des: x:%4d y:%4dn", x, y);#else #define TOUCH_LEFT (709) /1
49、00 #define TOUCH_TOP (1093) /400 #define TOUCH_RIGHT (3369) /100 #define TOUCH_BOTTOM (3215) /700 int32 ScaleX = (TOUCH_RIGHT - TOUCH_LEFT) * 10 / 600; /10倍 int32 ScaleY = (TOUCH_BOTTOM - TOUCH_TOP) * 10
50、/ 300; /10倍 int32 x, y; x = *x0; y = *y0; x = (x-TOUCH_LEFT)*10 / ScaleX + 100; y = (y-TOUCH_TOP)*10 / ScaleY + 100; if (x<0) x = 0; if (x>SCREEN_WIDTH) x = SCREEN_WIDTH; if (y<0) y
51、= 0; if (y>SCREEN_HEIGHT) y = SCREEN_HEIGHT; *x0 = x; *y0 = y; printk("*x:%dt y%dn", x, y);#endif return TRUE;/* 名 稱:get_lcd_xy* 功 能:讀取觸摸屏上觸摸點(diǎn)的坐標(biāo)。*
52、160; 程序會(huì)一直等待,直到有觸摸輸入。* 入口參數(shù):x 用于保存觸摸點(diǎn)x坐標(biāo)(LCD)的變量指針* y 用于保存觸摸點(diǎn)y坐標(biāo)(LCD)的變量指針* 出口參數(shù):無(wú)* 說(shuō) 明:先通測(cè)量y軸的觸摸輸入,判斷是否有觸摸動(dòng)作。如果有,則進(jìn)行數(shù)據(jù)采集,* 并進(jìn)行去極值平均濾
53、波處理。最后還要判斷觸摸輸入是否合法,只有* 當(dāng)觸摸輸入合法時(shí)才返回。*/int32 get_lcd_xy(uint16 *vx, uint16 *vy) static uint8 i, temp; static uint16 vx_dat = 0; static uint16 vy_dat = 0; static u
54、int16 x_max_data = 0; static uint16 x_min_data = 0; static uint16 y_max_data = 0; static uint16 y_min_data = 0; static uint32 x_sum = 0; static uint32 y_sum = 0; / 屏校準(zhǔn)后不讀取拖動(dòng)狀態(tài)的數(shù)據(jù),只有按下和抬起有發(fā)送給GUI if (TsD
55、ev.penStatus = PEN_FLEETING) && (CalibrateOk = TRUE) return -1; while(1) / 進(jìn)行數(shù)據(jù)采集 ADS7843_WriteRead(AIN_X, &vx_dat); x_ma
56、x_data = vx_dat; x_min_data = vx_dat; x_sum = vx_dat; ADS7843_WriteRead(AIN_Y, &vy_dat); y_max_data = vy_dat; y_min_data = vy_dat; y_sum = vy_dat; for (i = 1; i <
57、; 21; i+) udelay(100); temp = ADS7843_IRQR(); if (temp != 0) break; ADS7843_WriteRead(AIN_X, &vx_dat); if (vx_dat > x_max_data)
58、0; x_max_data = vx_dat; if (vx_dat < x_min_data) x_min_data = vx_dat; x_sum += vx_dat; ADS7843_WriteRead(AIN_Y, &vy_da
59、t); if (vy_dat > y_max_data) y_max_data = vy_dat; if (vy_dat < y_min_data) y_min_data = vy_dat; y_sum += vy_dat; &
60、#160;#if 1 / 去極值求平均值 /* if (x_max_data - x_min_data) > 200) return -1; if (y_max_data - y_min_data) > 200) return -1; */ if (i < 3)
61、 return -1; *vx = (x_sum - x_max_data - x_min_data) / (i-2); *vy = 4096 - (y_sum - y_max_data - y_min_data) / (i-2); /printk("1.x:%d y:%d i = %dn", *vx, *vy, i); printk("1.x:%d y:%d
62、n", *vx, *vy); #else / 取極值求平均值 *vx = (x_max_data + x_min_data) / 2; *vy = 4096 - (y_max_data + y_min_data) / 2; printk("2.x:%d y:%dn", *vx, *vy); #endif #ifdef _CALIBRATE_ / 使用校準(zhǔn)參
63、數(shù)校準(zhǔn),否則使用固定參數(shù)校準(zhǔn) if (CalibrateOk = TRUE) DoMouseCalibrate(vx, vy); / 觸摸屏校準(zhǔn) #else DoMouseCalibrate(vx, vy); #endif return 0;
64、160; /* Function: ts_put_value Description: 將采樣到的數(shù)據(jù)填充到隊(duì)列中并喚醒進(jìn)程來(lái)讀取 Input: 1. x 橫坐標(biāo) 2. y 縱坐標(biāo) Output: 無(wú) Return: 無(wú) Others:*/static void ts_put_value(uint16 x, uint16 y) BUF_H
65、EAD.x = x; BUF_HEAD.y = y; BUF_HEAD.pressure = TsDev.penStatus; TsDev.head = INCBUF(TsDev.head, MAX_TS_BUF); Ready = 1; wake_up_interruptible(&(TsDev.wq);/* Function: ts_get_value Description: 從隊(duì)列中讀取采樣到的數(shù)據(jù) Input: 無(wú) Out
66、put: 1. 采樣到的值 Return: 成功-采樣到值的字節(jié)數(shù),失敗= -1 Others:*/static uint32 ts_get_value(TS_RET *ts_ret) /printk("touchscreenko ts_get_value_1n"); if (TsDev.head != TsDev.tail) ts_ret->x = BUF_TAIL.x; ts_ret->y =
67、BUF_TAIL.y; ts_ret->pressure = BUF_TAIL.pressure; TsDev.tail = INCBUF(TsDev.tail, MAX_TS_BUF); /printk("touchscreenko ts_get_value_2n"); return sizeof(TS_RET); else Ready = 0; ret
68、urn -1; /* Function: gpio_init Description: GPIO初始化 Input: 無(wú) Output: 無(wú) Return: 無(wú) Others:*/void gpio_init(void) int32 tmp; / 設(shè)置GPIO1方向 gpio_dirgetbyte(GPIO_1_PORT, &tmp); printk(&
69、quot;gpio_init-:0x%xn",GPIO_1_PORT); tmp |= 0x98; / 設(shè)置gpio1的3,4,7為輸出 tmp &= 0xDB; / 設(shè)置gpio1的2,5為輸入 gpio_dirsetbyte(GPIO_1_PORT, tmp); / 設(shè)置GPIO1中的5為中斷口
70、60;gpio_interruptset_byte( GPIO_1_PORT, 0x20,0,0,1 / SENSE_BOTH, / SENSE_LEVEL,
71、60; / EVENT_FALLING_EDGE ); / 屏蔽GPIO1.5中斷 tmp = 0x20; gpio_interruptdisable_byte(GPIO_1_PORT, tmp); / 清除GPIO1.5中斷標(biāo)志 gpio_interruptclear_byte(GPIO_1_PORT,tmp); / 使能GPIO1.5中斷 gpio_interruptenable_byte(GPIO_1_P
72、ORT,tmp);/* Function: ts_interrupt Description: 觸摸屏中斷處理 Input: 無(wú) Output: 無(wú) Return: 無(wú) Others:*/static irqreturn_t ts_interrupt(int32 irq, void *dev_id, struct pt_regs *reg) int32 handled = 0; uint8
73、 current_irq; int32 tmp; printk(KERN_NOTICE "ENTER INTE"); tmp = 0x20; gpio_interruptdisable_byte(GPIO_1_PORT, tmp); / 查詢?cè)摴苣_中斷是否匹配上 current_irq = readw(GPIO_1_PORT_ADDR + GPIO_RIS); current_irq = current_irq &a
74、mp; tmp; / 讀取中斷管腳上的電平 tmp = ADS7843_IRQR(); if (current_irq = 0 | tmp != 0) / 中斷沒(méi)匹配上或中斷管腳上的電平不為低則不處理 tmp = 0x20; gpio_interruptclear_byte(GPIO_1_PORT, tmp); gpio_interruptenable_byte(GPIO_1_PORT, tmp); else
75、 /printk("pen_downn"); TsDev.penStatus = PEN_DOWN; / 筆狀態(tài)置為按下 ts_timer.expires = jiffies + TS_TIMER_DELAY; add_timer(&ts_timer); / 啟動(dòng)定時(shí)器 /printk("ts_interruptn&quo
76、t;); handled = 1; return IRQ_RETVAL(handled);/* Function: ts_timer_handler Description: 定時(shí)器處理 Input: 無(wú) Output: 無(wú) Return: 無(wú) Others:*/static void ts_timer_handler(unsigned long data) int3
77、2 temp; static uint16 x = 0; static uint16 y = 0; / 讀取中斷管腳上的電平 temp = ADS7843_IRQR(); if (temp = 0) / 去抖處理 /printk("PEN_FLEETINGn"); temp = get_lcd_xy(&x, &y);
78、; / 讀取觸摸屏的值 if (temp = 0) ts_put_value(x, y); / 把筆狀態(tài)與觸摸屏的值加入到隊(duì)列中 TsDev.penStatus = PEN_FLEETING; / 下一個(gè)狀態(tài)改為拖拽 ts_timer.expires = jiffies + TS_TIME
79、R_DELAY1; add_timer(&ts_timer); else if (TsDev.penStatus != PEN_UP) del_timer(&ts_timer); if (TsDev.penStatus = PEN_FLEETING) TsDev.penStatus = PEN_UP; ts_put_value(x, y); / 把抬筆狀態(tài)加入到隊(duì)列中 TsDev.penStatus = PEN_UP; temp = 0x20; gpio_interruptclear_byte(GPIO_1_PORT, temp); gpio_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 打合作種植合同范例
- 戰(zhàn)略顧問(wèn)合同范例
- 商用物業(yè)租賃合同范例
- 果園管理勞動(dòng)合同范例
- 學(xué)生電腦出售合同范例
- 專業(yè)雕塑合同范例
- 教育培訓(xùn)公司合同范例
- 孵化場(chǎng)合同范例
- 棗陽(yáng)合同范例處理
- 出租小型家具合同范例
- 肝癌患者的護(hù)理疑難病例討論記錄文本
- 四大經(jīng)典之溫病
- SCH系列通徑壁厚對(duì)照表
- 石化裝置動(dòng)設(shè)備操作規(guī)程
- ?;◢u(海南儋州)民宿眾籌計(jì)劃書
- 注塑件通用技術(shù)條件
- 人大代表選舉主持詞_1
- KingSCADA初級(jí)教程工程安全和用戶管理
- 消防安裝工程質(zhì)量通病及防治措施
- 植物大戰(zhàn)僵尸兒童填色畫2
- 數(shù)控車床出廠檢驗(yàn)表(共5頁(yè))
評(píng)論
0/150
提交評(píng)論