当前位置:首页 > 测试程序
  • TI产品成为Wi-Fi联盟802.11g测试程序的关键部分

    德州仪器公司 (TI) 推出的WLAN解决方案已成为Wi-Fi 联盟802.11g测试程序的关键组成部分,目前该测试程序已用于验证符合最近批准的IEEE 802.11g标准修正规范的Wi-Fi产品的可互操作性。为获得802.11g Wi-Fi认证而提交的所有产品都将根据TI基于TNETW1130的参考设计进行测试。此外,这些作为认证程序中唯一组成部分的参考设计已被选择测试在802.11b与802.11g混合模式网络中确保实现可互操作性的机制。TI 的产品不仅纳入了Wi-Fi 联盟 802.11g测试计划当中,而且与其它 802.11g 产品的可互操作性也最先通过了 Wi-Fi 认证。     TI的TNETW1130器件实施了在802.11g标准中规定的保护机制,从而允许更新、更快的802.11g产品与原有的802.11b产品进行互操作,并共享同一个2.4 GHz频谱。如果没有这些保护机制,则原有802.11b产品与802.11g产品将相互产生干扰,从而降低整个网络的吞吐能力。正是由于有这些机制,才得以确保使用802.11g Wi-Fi CERTIFIED™设备的用户能够享用802.11g带来的较高数据速率,同时尽可能地减少与802.11b设备共享同一个网络所造成的不利影响。     TNETW1130完全符合IEEE 802.11g标准修正规范,目前该标准已批准通过,并且TI开始向全球的原设备制造商 (OEM) 以及原设计制造商 (ODM) 供货。此外,TI 所有802.11b产品均实施了802.11g保护机制,完全可与802.11g产品实现可互操作性。

    时间:2004-12-16 关键词: 802.11 Wi-Fi 产品 测试程序

  • pic的第一个测试程序

    昨天拿到板子,焊接完毕。用i/o控制继电器,发现不好用,马上查三极管,果然画图的时候把封装搞错了,幸运的是直接颠倒焊接就行,刚毕业的时候犯过这样的错误,没想到现在还犯。问题1解决。调试12864液晶,采用st7920的12864,串行方式。从51移植过来的,但死活不显示,检查硬件连接没有问题,程序上调整时序也不行,下午的时候看看网上的例子,发现一个寄存器ADCON1,仔细18f2550手册,才知道i/o需要设置成数字i/o,因为我用的i/o第二功能正好是ad的输入设置成0x0f之后,显示ok,上个测试程序#include__CONFIG(1,USBPLL&IESODIS&FCMDIS&HSPLL&CPUDIV1&PLLDIV5);//Configword2__CONFIG(2,VREGEN&PWRTDIS&BOREN&BORV20&WDTDIS&WDTPS32K);//Configword3__CONFIG(3,PBDIGITAL&LPT1DIS&MCLREN);//Configword4__CONFIG(4,XINSTDIS&STVREN&LVPDIS&ICPORTDIS&DEBUGDIS);//Configword5,6and7(protectionconfiguration)__CONFIG(5,UNPROTECT);__CONFIG(6,UNPROTECT);__CONFIG(7,UNPROTECT);#defineBKRA3//定义LCD的读/写控制口#defineSCLKRA2//定义LCD的使能口#defineSIDRA1//定义通信方式控制口#defineCSRA0//定义复位口#defineLED1RC1#defineLED2RC0#definerelay1RB4#definerelay2RB5#definex10x80#definex20x88#definey0x80#definecomm0#definedat1unsignedcharconstnum_lcd[]={"0123456789:.-"};unsignedcharconstready[]="ASDFGHJKJ";voidIO_init();voidLcd_Init(void);voidWrite_Char(unsignedcharstart,unsignedcharddata);voidSend_Byte(unsignedcharbbyte);voidDelaynms(unsignedintdi);voidClr_Scr(void);voidLCD_Set_XY(unsignedcharX,unsignedcharY);voidLCD_Write_String(unsignedcharX,unsignedcharY,unsignedchar*s);voidLCD_Write_Number(unsignedchars);voidDisplay_Img(unsignedcharconst*img);//voidWr_Lcd(unsignedchardat_comm,unsignedcharcontent);//-------------------------------------------//主程序voidmain(){IO_init();LED1=1;LED2=1;BK=0;relay1=0;relay2=0;Lcd_Init();Delaynms(100);LCD_Write_String(1,1,ready);LCD_Set_XY(3,0);LCD_Write_Number(1);while(1){}}//-------------------------------------------//I/O口设置函数voidIO_init(){TRISA=0X00;//设置A口为输出TRISB=0X00;//设置A口为输出//TRISD=0X00;//设置D口为输出ADCON1=0X0f;//设置A口为普通I/O口TRISC=0X00;}/*******************************************************************************************函数名称:Lcd_init*功能描述:初始化LCD*参数:参数名称:输入/输出?类型描述**返回值:*作者:*创建日期:2008-12-19*全局变量:*全局静态变量:*局部静态变量:*----------------------------------------修改历史------------------------------------------*当前版本:修改人:修改日期:*修改说明:******************************************************************************************/voidLcd_Init(void){Delaynms(200);//启动等待,等LCM讲入工作状态CS=1;Write_Char(0,0x30);//8位介面,基本指令集Write_Char(0,0x0c);//显示打开,光标关,反白关Write_Char(0,0x01);//清屏,将DDRAM的地址计数器归零LED1=0;}/*******************************************************************************************函数名称:Write_char*功能描述:写指令或数据*参数:参数名称:输入/输出?类型描述**返回值:*作者:*创建日期:2006-12-19*全局变量:*全局静态变量:*局部静态变量:*----------------------------------------修改历史------------------------------------------*当前版本:修改人:修改日期:*修改说明:******************************************************************************************/voidWrite_Char(unsignedcharstart,unsignedcharddata){unsignedcharstart_data,Hdata,Ldata;if(start==0)start_data=0xf8;//写指令elsestart_data=0xfa;//写数据Hdata=ddata&0xf0;//取高四位Ldata=(ddata

    时间:2018-09-28 关键词: 测试程序 pic

  • mini2440的LEDS驱动程序和测试程序详解

    一 leds的驱动程序位置:linux 2.6.29/drivers/char/mini2440_leds.c#include #include #include #include //具体头文件位置/opt/FriendlyARM/mini2440/linux-2.6.29/arch/arm/mach-s3c2410/include/mach/*.h#include #include #include //具体的头文件位置为/opt/FriendlyARM/mini2440/linux-2.6.29/include/linux/*.h#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "leds" //定义驱动程序的名字为ledsstatic unsigned long led_table [] = {S3C2410_GPB5,S3C2410_GPB6,S3C2410_GPB7,S3C2410_GPB8,}; //定义引脚的寄存器数组(无符号长整形,对应于引脚的地址)static unsigned int led_cfg_table [] = {S3C2410_GPB5_OUTP,S3C2410_GPB6_OUTP,S3C2410_GPB7_OUTP,S3C2410_GPB8_OUTP,}; //定义引脚功能,为输出(无符号整形)static int sbc2440_leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg){switch(cmd) {case 0:case 1: if (arg > 4) { //设备节点,文件描述符,LED灯编号,LED灯状态四个命令参数 return -EINVAL; } s3c2410_gpio_setpin(led_table[arg], !cmd); return 0;default: return -EINVAL; //EINVAL:表示向函数传递了无效的参数(errno符号变量)}}//初始化字符设备驱动的file_operations 的结构体static struct file_operations dev_fops = {.owner = THIS_MODULE,.ioctl = sbc2440_leds_ioctl,};static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR, /* 动态设备号 */.name = DEVICE_NAME, /* 将在/dev目录生成led设备 */.fops = &dev_fops, /* 驱动接口 */};static int __init dev_init(void){int ret;int i;for (i = 0; i < 4; i++) {/*设置GPIO对应的配置寄存器GPIOCON为输出状态*/ s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]);/*设置GPIO对应的数据寄存器GPIODAT为低电平,在模块加载结束后,四个LED应该是全部都是发光状态*/s3c2410_gpio_setpin(led_table[i], 0);}//注册设备ret = misc_register(&misc);printk (DEVICE_NAME"tinitializedn");return ret;}//注销设备驱动static void __exit dev_exit(void){misc_deregister(&misc);}module_init(dev_init); /*声明加载模块初始化函数*/module_exit(dev_exit); /*声明卸载模块清除函数*/MOUDLE_LICENSE("GPL"); /*许可证声明*/MODULE_AUTHOR("FriendlyARM Inc."); /*作者信息*/1 static 关键字的重要性 全局变量和函数全部用static 进行修饰,则其作用的范围仅仅限于当前的文件,而不是整个系统。防止编译器在连接时,会报告命名错误的“名字空间污染”的问题。2 ioctl()函数static int sbc2440_leds_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) ioctl函数是文件结构中的一个属性分量。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。 struct inode *inode,是设备节点号。fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,unsigned long arg是控制命令的个数。 驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数控制设备的I/O通道。如果函数返回一个非负值,那么该值会被返回给调用程序,表示成功。韩式一般通过switch{case}对设备的一些特性进行控制。switch{case}结构,每一个case对应一个命令码,做出一些相应的操作。在本例中的cmd有两个可选项0和1.0表示灯灭,1表示灯亮。所以case 0,1都要进行操作。由于实际的硬件连接中,是低电平灯亮。所以在对引脚赋值时要取反。 s3c2410_gpio_setpin(led_table[arg], !cmd)3 static int __init dev_init(void)_init 宏,定义在include/linux/init.h中。对于非模块加载的驱动程序,通过_init 宏,会把函数中的代码放到.text.init段。这个段在系统启动后会被释放。这样函数代码只有在启动时执行一次,所以可以释放它们以节省内存空间,3初始化字符设备驱动的file_operations 的结构体结构体file_operations在头文件 linux/fs.h中定义,用来存储驱动内核模块提供的对 设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的 事务的函数的地址。4ret = misc_register(&misc);misc_register()用主编号10调用 register_chrdev(),设备名称和函数表指针通过miscdevice数据结构获得。同样,miscdevice 数据结构还保存设备驱动程序所使用的次要号码。完成设备的注册。5 printk()利用 printk可以实现内核到Linux 控制台的格式化输出。其用法与标准C的printf类似。在调用驱动程序时,依靠printk输出信息跟踪程序,是很有效的方法。与标准C的printf 不同的是,printk支持分级输出。默认为第四级的输出KERN_ERR。二 LED测试程序/opt/FriendlyARM/mini2440/examples/leds#include /*下面函数要用到的头文件*/#include #include #include int main(int argc, char **argv) /*运行时参数传递,开或关哪个LED*/{int on; /*定义led状态变量,1表示灯亮,2表示灯灭*/int led_no; /*定义led变量--哪个led*/int fd; /*定义led设备文件描述符的变量*/if ( argc != 3 || /*判断命令输入参数个数*/ sscanf(argv[1], "%d", &led_no) != 1 || /* 第一个字符串参数表示要操作led*/

    时间:2018-11-28 关键词: 测试程序 mini2440 leds驱动

  • S3C2440下linux按键驱动编写及测试程序

    驱动程序tang2440_buttons.c#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "buttons"/*定义中断所用的结构体*/struct button_irq_desc { int irq; //按键对应的中断号 int pin; //按键所对应的 GPIO 端口 int pin_setting; //按键对应的引脚描述,实际并未用到,保留 int number; //定义键值,以传递给应用层/用户态 char *name; //每个按键的名称};/*结构体实体定义*/static struct button_irq_desc button_irqs [] = { {IRQ_EINT8 , S3C2410_GPG(0) , S3C2410_GPG0_EINT8 , 0, "KEY0"}, {IRQ_EINT11, S3C2410_GPG(3) , S3C2410_GPG3_EINT11 , 1, "KEY1"}, {IRQ_EINT13, S3C2410_GPG(5) , S3C2410_GPG5_EINT13 , 2, "KEY2"}, {IRQ_EINT14, S3C2410_GPG(6) , S3C2410_GPG6_EINT14 , 3, "KEY3"}, {IRQ_EINT15, S3C2410_GPG(7) , S3C2410_GPG7_EINT15 , 4, "KEY4"}, {IRQ_EINT19, S3C2410_GPG(11), S3C2410_GPG11_EINT19, 5, "KEY5"},};/*开发板上按键的状态变量,注意这里是’0’,对应的 ASCII 码为 30*/static volatile char key_values [] = {'0', '0', '0', '0', '0', '0'};/*因为本驱动是基于中断方式的,在此创建一个等待队列,以配合中断函数使用;当有按键按下并读取到键值时,将会唤醒此队列,并设置中断标志,以便能通过 read 函数判断和读取键值传递到用户态;当没有按键按下时,系统并不会轮询按键状态,以节省时钟资源*/static DECLARE_WAIT_QUEUE_HEAD(button_waitq);/*中断标识变量,配合上面的队列使用,中断服务程序会把它设置为 1,read 函数会把它清零*/static volatile int ev_press = 0;/*本按键驱动的中断服务程序*/static irqreturn_t buttons_interrupt(int irq, void *dev_id){ struct button_irq_desc *button_irqs = (struct button_irq_desc *)dev_id; int down; /*获取被按下的按键状态*/ down = !s3c2410_gpio_getpin(button_irqs->pin); /*状态改变,按键被按下,从这句可以看出,当按键没有被按下的时候,寄存器的值为 1(上拉),但按键被按下的时候,寄存器对应的值为 0*/ if (down != (key_values[button_irqs->number] & 1)) { // Changed /*如果 key1 被按下,则 key_value[0]就变为’1’,对应的 ASCII 码为 31*/ key_values[button_irqs->number] = '0' + down; ev_press = 1; /*设置中断标志为 1*/ wake_up_interruptible(&button_waitq); /*唤醒等待队列*/ } return IRQ_RETVAL(IRQ_HANDLED);}/**在应用程序执行 open(“/dev/buttons”,...)时会调用到此函数,在这里,它的作用主要是注册 6 个按键的中断。*所用的中断类型是 IRQ_TYPE_EDGE_BOTH,也就是双沿触发,在上升沿和下降沿均会产生中断,这样做是为了更加有*效地判断按键状态*/static int s3c24xx_buttons_open(struct inode *inode, struct file *file){ int i; int err = 0; for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) { if (button_irqs[i].irq < 0) { continue; } /*注册中断函数*/ err = request_irq(button_irqs[i].irq, buttons_interrupt, IRQ_TYPE_EDGE_BOTH, button_irqs[i].name, (void *)&button_irqs[i]); if (err) break; } if (err) { /*如果出错,释放已经注册的中断,并返回*/ i--; for (; i >= 0; i--) { if (button_irqs[i].irq < 0) { continue; } disable_irq(button_irqs[i].irq); free_irq(button_irqs[i].irq, (void *)&button_irqs[i]); } return -EBUSY; } /*注册成功,则中断队列标记为 1,表示可以通过 read 读取*/ ev_press = 1; /*正常返回*/ return 0;}/**此函数对应应用程序的系统调用 close(fd)函数,在此,它的主要作用是当关闭设备时释放 6 个按键的中断处理函数*/static int s3c24xx_buttons_close(struct inode *inode, struct file *file){ int i; for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) { if (button_irqs[i].irq < 0) { continue; } /*释放中断号,并注销中断处理函数*/ free_irq(button_irqs[i].irq, (void *)&button_irqs[i]); } return 0;}/**对应应用程序的 read(fd,...)函数,主要用来向用户空间传递键值*/static int s3c24xx_buttons_read(struct file *filp, char __user *buff, size_t count, loff_t *offp){ unsigned long err; if (!ev_press) { if (filp->f_flags & O_NONBLOCK) /*当中断标识为 0 时,并且该设备是以非阻塞方式打开时,返回*/ return -EAGAIN; else /*当中断标识为 0 时,并且该设备是以阻塞方式打开时,进入休眠状态,等待被唤醒*/ wait_event_interruptible(button_waitq, ev_press); } /*把中断标识清零*/ ev_press = 0; /*一组键值被传递到用户空间*/ err = copy_to_user(buff, (const void *)key_values, min(sizeof(key_values), count));return err ? -EFAULT : min(sizeof(key_values), count);}static unsigned int s3c24xx_buttons_poll( struct file *file, struct poll_table_struct *wait){ unsigned int mask = 0; /*把调用 poll 或者 select 的进程挂入队列,以便被驱动程序唤醒*/ poll_wait(file, &button_waitq, wait); if (ev_press) mask |= POLLIN | POLLRDNORM; return mask;}/*设备操作集*/static struct file_operations dev_fops = { .owner = THIS_MODULE, .open = s3c24xx_buttons_open, .release = s3c24xx_buttons_close, .read = s3c24xx_buttons_read, .poll = s3c24xx_buttons_poll,};static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = &dev_fops,};/*设备初始化,主要是注册设备*/static int __init dev_init(void){ int ret; /*把按键设备注册为 misc 设备,其设备号是自动分配的*/ ret = misc_register(&misc); printk (DEVICE_NAME"tinitializedn"); return ret;}/*注销设备*/static void __exit dev_exit(void){ misc_deregister(&misc);}

    时间:2018-07-26 关键词: 测试程序 Linux s3c2440 按键驱动

  • S3c2440 I2C驱动与测试程序追踪交叉分析

    VMware虚拟机+Fedora10, 硬件平台TQ2440, 内核2.6.30.4最近学习linux I2C驱动, 用刘洪涛老师的测试程序测试内核自带的驱动, 打开调试语句dev_dbg后(具体参考我的另一篇博客),发现应用程序对应的驱动程序豁然开朗, 然后自己添加了一些dev_dbg后, 对于不理解的地方也有了一定的参考提示, 记录下来与大家分享.测试程序如下:----------------------------------------------------------------------------- /*i2c_test.c * hongtao_liu */ #include #include #include #include #include #include #include #include #define I2C_RETRIES 0x0701 #define I2C_TIMEOUT 0x0702 #define I2C_RDWR 0x0707 /*********定义struct i2c_rdwr_ioctl_data和struct i2c_msg,要和内核一致*******/struct i2c_msg { unsigned short addr; unsigned short flags; #define I2C_M_TEN 0x0010 #define I2C_M_RD 0x0001 unsigned short len; unsigned char *buf; };struct i2c_rdwr_ioctl_data { struct i2c_msg *msgs; int nmsgs; /* nmsgs这个数量决定了有多少开始信号,对于“单开始时序”,取1*/ };/***********主程序***********/ int main() { int fd,ret; struct i2c_rdwr_ioctl_data e2prom_data; fd=open("/dev/i2c-0",O_RDWR); /* *dev/i2c-0是在注册i2c-dev.c后产生的,代表一个可操作的适配器。如果不使用i2c-dev.c *的方式,就没有,也不需要这个节点。 */ if(fd

    时间:2018-11-08 关键词: 测试程序 s3c2440 i2c驱动 追踪交叉

  • 基于s3c2410开发板的UART测试程序

    如下程序实现的是开发板从PC端口接受一个字符,并把该字符加1后发送会PC端口。(在本开发板测试成功)对于不同的主频要设置好UBRDIV0的值,在技术文档中有这个值的计算公式。#define ULCON0 (*(volatile unsigned *)0x50000000) //UART 0 Line control#define UCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control#define UFCON0 (*(volatile unsigned *)0x50000008) //UART 0 FIFO control#define UMCON0 (*(volatile unsigned *)0x5000000c) //UART 0 Modem control#define UTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status#define UBRDIV0 (*(volatile unsigned *)0x50000028) //UART 0 Baud rate divisor#define UTXH0 (*(volatile unsigned char *)0x50000020) //UART 0 Transmission Hold#define URXH0 (*(volatile unsigned char *)0x50000024) //UART 0 Receive buffer#define GPHCON (*(volatile unsigned *)0x56000070)#define GPHDAT (*(volatile unsigned *)0x56000074)#define GPHUP (*(volatile unsigned *)0x56000078)int Main(){unsigned long TXH0READY = 0x2;unsigned long RXH0READY = 0x1;//init uartGPHCON |= 0xa0;GPHUP |= 0x0c;//PULLUP is enable;//init uart controllorULCON0 = 0x03;UCON0 = 0x245;UFCON0 = 0x00;UMCON0 = 0x00;UBRDIV0= 26;while(1){while(!(UTRSTAT0 & RXH0READY));c = URXH0;while(!(UTRSTAT0 & TXH0READY));//waitUTXH0 = c+1;}while(1);return(0);}

    时间:2018-07-23 关键词: 测试程序 uart s3c2410

  • AVR+DS1302时钟芯片测试程序

    #include #include #include "delay.h"#include "lcd.h"#define uchar unsigned char#define uint unsigned int#define DS1302_RST_SET PORTA |= ( 1 > 4; DS1302TIMEDISP[t + 1] = DS1302TIME[i] & 0x0f;}}//将时间合成void TimeMix( void ){ uchar t = 0;uchar i = 0;uchar j = 0; for( i = 0; i < 8; i++ ) { t = i * 2; DS1302TIME[i] = ( ( DS1302TIMEDISP[t]

    时间:2018-07-18 关键词: 测试程序 AVR 时钟芯片 ds1302

  • 51的测试程序(主要是用仿真串口进行测试)

    /******************************************************************************************************************************************************************************/#include #include #include "lcd_51.h"#include "delay_51.h"#include "24c64.h"#include "key.h"//#include "adc0832.h"#define uchar unsigned char#define uint unsigned int//adc0832部分uchar ReadAdc0832( uchar channel ) reentrant;//ADC0832端口定义#define ADC0832_SCK_H P1_1 = 1#define ADC0832_SCK_L P1_1 = 0#define ADC0832_DIDO_H P1_2 = 1#define ADC0832_DIDO_L P1_2 = 0#define ADC0832_DIDO P1_2#define ADC0832_CS_H P1_0 = 1#define ADC0832_CS_L P1_0 = 0//按键部分uchar sure = 0;uchar model = 0;uchar add_b = 0;uint add_p = 0x0000;//串口部分//uchar flag44 = 0;//uchar flagadc0832 = 0;//uchar flag24c64 = 0;//uchar flagshumaguang = 0;uchar flagwhole = 5;//uchar flagno = 1;uchar flagfillallow = 0;uchar flagsendmessage44 = 0;uchar flagsendmessageadc0832 = 0;uchar flagsendmessageshumaguang = 0;uchar flagsendmessage24c64 = 0;uchar flagdoing24c64 = 0;//波特率宏定义#define RELOAD_COUNT 0xfd;//SMOD=1, crystal=11.0592, baud= 19200//#define RELOAD_COUNT 0xFa//SMOD=1, crystal=11.0592, baud= 9600//#define RELOAD_COUNT 0xf4//SMOD=1, crystal=11.0592, baud= 4800//#define RELOAD_COUNT 0xe8//SMOD=1, crystal=11.0592, baud= 2400//缓冲区#define Rec_Max 9 //定义最大值#define COMRECSIZE 16 //定义缓冲区大小uchar Rec_buf[COMRECSIZE];uchar *Point2Rec_buf; //定义指向数组Rec_buf的指针uchar Rec_n = 0; //接收字节个数初始化为0uchar RecFullFlag = 0; //接收满标志初始化为0//-----------------------------------------------------串口部分接口函数--------------------------------------------------/*********************************************************************** 函数名:串口初始化函数** 例子 : UART_Init();***********************************************************************/void UART_Init( void ){SCON |= 0x50; //串口工作方式1, 波特率可变, 波特率由T1决定, 允许接收位REN = 1.无奇偶校验位PCON |= 0x80; //波特率加倍TMOD |= 0x20; //T1, 8位自动, 方式2, 之所以选择工作方式2是因为它有自动加载功能,可以避免程序反复装入初值引起的误差TH1 = RELOAD_COUNT;//赋初值高8位TH RELOAD_COUNT由前宏定义TL1 = RELOAD_COUNT;//赋初值低8位THES = 1; //开串口中断ET1 = 0; //禁止T1中断允许, 以免产生不必要的中断带来的频率误差TR1 = 1; //打开T1//EA = 1; //注意, 还没有打开全局中断}//串口接收中断服务程序void serial_INT4( void ) interrupt 4{ if( RI ) { RI = 0; //硬件置位,软件清零if( flagdoing24c64 == 0 ){switch( SBUF ){case '1':{//4*4flagwhole = 1;flagsendmessage44 = 1;LCD_write_string( 1, 0, " made by hebei " ); LCD_write_string( 2, 0, " TEST 4*4 --> 0 " );} break;case '2':{//ADCflagwhole = 2;flagsendmessageadc0832 = 1;LCD_write_string( 1, 0, " made by hebei " ); LCD_write_string( 2, 1, "TEST ADC--> " );} break;case '3':{//shumaguangflagwhole = 3;flagsendmessageshumaguang = 1;LCD_write_string( 1, 0, " made by hebei " ); LCD_write_string( 2, 0, "TEST shumaguang " );} break;case '4':{//24C64flagwhole = 4;flagsendmessage24c64 = 1;LCD_write_string( 1, 1, "0000 >0 is " ); //LCD_write_string( 2, 0, " ");} break; case '5':{//结束flagwhole = 5;LCD_write_string( 1, 0, " made by hebei " ); LCD_write_string( 2, 0, " NO TEST " );} break;}}if( flagdoing24c64 == 1 ){if( flagfillallow == 1 ){ Rec_buf[Rec_n++] = SBUF; if( Rec_n == Rec_Max ) RecFullFlag = 1;} }}return;}/*********************************************************************** 函数名:串口发送一个字符** 例子 : UART_Sendstr( 'a' );**** 说明 : UART_SendCh(10); //** UART_SendCh(13); //回车换行*********************************************************************/void UART_SendCh( uchar Tmp_char ){TI = 0;SBUF = Tmp_char;while( !TI ){;}}/*********************************************************************** 函数名:串口发送字符串函数** 例子 : UART_Sendstr( "how are you?" );***********************************************************************/void UART_SendStr( uchar *str ){ ES=0; //disable uart0 interrupt;while( *str ){ TI = 0;SBUF = ( *str );++str;while( !TI ){;} //waitting for sending finished.}TI=0;ES=1;}//-----------------------------------------------------串口部分接口函数结束--------------------------------------------------//-----------------------------------------------------外部中断0部分接口函数(24c64按键)--------------------------------------------------//外中断初始化void Int0init( void ){EX0 = 1; //允许外中断0IT0 = 1; //边沿触发}//void modelchang( void ){ model++;model %= 3; //model在0-2之间switch( model ){case 0: LCD_write_char( 1, 0, ' ' ); LCD_write_char( 1, 6, ' ' ); break;case 1: LCD_write_char( 1, 0, '>' ); LCD_write_char( 1, 6, ' ' ); break;case 2: LCD_write_char( 1, 0, ' ' ); LCD_write_char( 1, 6, '>' ); break;default: break;}}//void add( void ){uint k = add_p; switch( model ) { case 1: add_p++;add_p %= 0x000A;LCD_write_char( 1, 4, ( add_p & 0x000f ) + 0x30 ); break;case 2:add_b %= Rec_Max;LCD_write_char( 1, 7, ( add_b & 0x000f ) + 0x30 );LCD_write_char( 1, 12, I2cReadDataFromAddr( 0xa0, k + add_b ) ); //从24C64里面读数据add_b++;break;default : break; }}//确定void ok( void ){sure = 1;}//外中断0服务程序void int0_int( void ) interrupt 0{EA = 0; //禁止再次外中断if( ( P3 & 0x3c ) != 0x3c ){ delay_nms( 20 ); //去除抖动if( ( ( P3 & 0x3c ) != 0x3c ) ){switch( P3 & 0x3c ) { //模式 case 0x30 : modelchang(); break; //加 case 0x28 : add(); break; //确定 case 0x18 : ok(); break; default : break; }}}EA = 1; //打开外中断}//-----------------------------------------------------外部中断0部分接口函数结束--------------------------------------------------//-----------------------------------------------------芯片74HC595以及74HC139部分接口函数(数码管)--------------------------------------------------//595端口定义#define HC595_SHCP_H P0_0 = 1#define HC595_SHCP_L P0_0 = 0#define HC595_DS_H P0_1 = 1#define HC595_DS_L P0_1 = 0#define HC595_STCP_H P0_2 = 1#define HC595_STCP_L P0_2 = 0//139端口定义#define HC139A_H P0_3 = 1#define HC139A_L P0_3 = 0#define HC139B_H P0_4 = 1#define HC139B_L P0_4 = 0//共阳a-7 b-6 c-5 d-4 e-3 f-2 g-1 h-0uchar code Atab[] = //注意,此处要定义为code{ 0x03,/*0*/ 0x9F,/*1*/ 0x25,/*2*/ 0x0D,/*3*/ 0x99,/*4*/ 0x49,/*5*/ 0x41,/*6*/ 0x1F,/*7*/ 0x01,/*8*/ 0x09,/*9*/};//139译码void HC139_Sendbyte( uchar senddata ){ switch( senddata ) { case 0: HC139A_L; HC139B_L; break; case 1: HC139A_H; HC139B_L; break; case 2: HC139A_L; HC139B_H; break; case 3: HC139A_H; HC139B_H; break; default: break; }}/************************************ 函数作用:向595发送一个字节数据的低n位** 入口参数:要写的字节 senddata** 返回值 : 无***********************************/void HC595_Send( uchar Btemp ){ uchar i; for( i = 0; i < 8; i++ ) { if( 0x01 & Btemp ) //先发送低位, 再发高位 HC595_DS_H; else HC595_DS_L; HC595_SHCP_L;//asm("nop"); HC595_SHCP_H;//asm("nop"); Btemp = Btemp >> 1; }//锁存 HC595_STCP_L;//delay_nus( 1 );HC595_STCP_H;}//数码管显示void NumDisplay( unsigned char Bit, unsigned char num ){ HC139_Sendbyte( Bit );HC595_Send( Atab[num] ); //第3位数字显示数num}//注意此函数在循环体中使用//内部包含5ms延时void DataDisp( long int datal ){ uchar i;unsigned int wei[4]; wei[0] = datal / 1000;wei[1] = (datal - wei[0] * 1000) / 100;wei[2] = (datal - wei[0] * 1000 - wei[1] * 100) / 10; wei[3] = datal % 10;//显示停留时间 for( i = 0; i < 5; i++ ){ NumDisplay( 0,wei[0] ); delay_nms( 3 ); NumDisplay( 1, wei[1] ); delay_nms( 3 ); NumDisplay( 2, wei[2] ); delay_nms( 3 ); NumDisplay( 3, wei[3] ); delay_nms( 3 );}}//-----------------------------------------------------芯片74HC595以及74HC139部分接口函数(数码管)结束--------------------------------------------------//-----------------------------------------------------ADC0832驱动部分函数--------------------------------------------------/*********************************************************************** 函数名 :ADC0832读数据程序** 入口 :需转换通道channel [0:1]** 返回 : 无符号字符型 uchar** 例子 : Data_adc = ReadAdc0832( 0 ); //读取adc0832芯片的0通道模拟电压** 说明 : 使用时请在芯片加上精准电压源, 建议用专用芯片*********************************************************************///工作时序//当cs由高变低时,选中ADC0832。在时钟的上升沿,DI端的数据移入ADC0832内部的多路地址移位寄存器。//在第一个时钟期间,Dl为高,表示启动位,紧接着输入两位配置位。当输入启动位和配置位后,选通输入模拟通道,转换开始。//转换开始后,经过一个时钟周期延迟,以使选定的通道稳定。ADC0832接着在第4个时钟下降沿输出转换数据。//数据输出时先输出最高位(D7~DO);输出完转换结果后,又以最低位开始重新输出一遍数据(D7~DO),两次发送的最低位共用。当片选cS//为高时,内部所有寄存器清0,输出变为高阻态。如果要再进行一次模傲转换,片选cs必须再次从高向低跳变,后面再输入启动位和配置位//adc0832读数据uchar ReadAdc0832( uchar channel ) reentrant{ uchar i = 0; uchar outdata = 0; //初始化: 选通 数据口保持高电平//当cs由高变低时,选中ADC0832。在时钟的上升沿,DI端的数据移入ADC0832内部的多路地址移位寄存器 ADC0832_CS_L; // 使能 ADC0832_DIDO_H; // ADC0832_SCK_L; //第一次触发 _nop_();_nop_(); ADC0832_SCK_H; // _nop_();_nop_();//模拟通道的选择及单端输入和差分输入的选择ADC0832_DIDO_H; ADC0832_SCK_L; //第二次触发_nop_();_nop_(); ADC0832_SCK_H; _nop_();_nop_();if( channel == 1 ) { ADC0832_DIDO_H; } else { ADC0832_DIDO_L; }ADC0832_SCK_L; //第三次触发 _nop_();_nop_();ADC0832_SCK_H;_nop_();_nop_(); ADC0832_SCK_L;_nop_();_nop_(); ADC0832_DIDO_H; //置为输入准备读数据 ADC0832_SCK_H;_nop_();_nop_();outdata = 0; //初始化 //读数据D7~D0 for( i = 1; i

    时间:2018-08-01 关键词: 测试程序 51 仿真串口

  • PIC12F629 LED输出测试程序

    PIC12F629 LED输出测试程序GP0,GP1,GP2,GP5输出高电平;GP4输出脉冲(LED闪烁)#include__CONFIG(0x3114);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡voiddelay(){unsignedlongi;for(i=0;i

    时间:2018-09-13 关键词: 测试程序 pic12f629 led输出

  • PS2键盘51测试程序2

    // PS2键盘测试程序2// 功能:1602显示PS2键盘第1类按键的键值,显示单个按键字母小写及数字和标点,不考虑组合键。// 指示灯: 接收按键值 P30(run) 取反。 键盘上电P31亮,接收按键值,P31灭。#include sbit PS2CLK=P3^3; // PS2时钟sbit PS2DATA=P3^4; // PS2数据sbit RUN=P3^0; // 运行标志指示灯sbit P31=P3^1; // 运行标志指示灯#define lcd_bus P0 // 数据总线sbit rs =P2^0; //数据&指令选择,H:写数据,L:写指令sbit rw =P2^1; //读&写选择,H:read,L:writesbit e =P2^2; //读写使能sbit bf =P0^7; //忙闲状态标志位,H:内部正执行操作,L:空闲void chk_busy(void);//检测LCD忙闲void init_lcd(void);//LCD初始化void wr_comm(unsigned char comm); //写指令void wr_comm_no(unsigned char comm);//写指令,不检测忙闲void wr_data(unsigned char dat); // 写数据void wr_str(unsigned char *p); //显示字符串unsigned char rd_lcd(void);//读LCD数据void delayus(unsigned char us);//延时子程序 usvoid delayms(unsigned int ms); //延时子程序 msunsigned char bitnum=0; // 中断接收键盘数据位的个数unsigned char keyval=0; // 存放按键值unsigned char keynum=0; // 存放中断接收键盘数据的个数unsigned char key[3]={0,0,0}; // 存放按键的1B通码和2B断码unsigned char lcdbuf[2]={'0',0}; //unsigned char code unshifted[][2]= //shift键没按下译码表{ 0x0e,'`', 0x15,'q', 0x16,'1', 0x1a,'z', 0x1b,'s', 0x1c,'a', 0x1d,'w', 0x1e,'2', 0x21,'c', 0x22,'x', 0x23,'d', 0x24,'e', 0x25,'4', 0x26,'3', 0x29,' ', 0x2a,'v', 0x2b,'f', 0x2c,'t', 0x2d,'r', 0x2e,'5', 0x31,'n', 0x32,'b', 0x33,'h', 0x34,'g', 0x35,'y', 0x36,'6', 0x39,',', 0x3a,'m', 0x3b,'j', 0x3c,'u', 0x3d,'7', 0x3e,'8', 0x41,',', 0x42,'k', 0x43,'i', 0x44,'o', 0x45,'0', 0x46,'9', 0x49,'.', 0x4a,'/', 0x4b,'l', 0x4c,';', 0x4d,'p', 0x4e,'-', 0x52,''', 0x54,'[', 0x55,'=', 0x5b,']', 0x5d,'\', 0x61,'

    时间:2018-10-15 关键词: 测试程序 ps2键盘

  • PS2键盘测试程序3

    // PS2键盘测试程序3(完成键盘的基本功能,但没有实现单片机向键盘发送命令,控制键盘num、caps指示灯)// 功能:1602显示PS2键盘第1类按键的键值,可以显示大小写,显示在第2行// 显示pageup、pagedown、方向键(上、下、左、右)的按下次数,显示在第1行// 显示capslock、numlock的状态,显示在第1行// 指示灯: 接收按键值 P30(run) 取反。 键盘上电P31亮,接收按键值,P31灭。// Caps 对大写字母起作用 , 收到非字母,caps不起作用#include sbit PS2CLK=P3^3; // PS2时钟sbit PS2DATA=P3^4; // PS2数据sbit RUN=P3^0; // 运行标志sbit P31=P3^1; // 运行标志#define lcd_bus P0 // 数据总线sbit rs =P2^0; //数据&指令选择,H:写数据,L:写指令sbit rw =P2^1; //读&写选择,H:read,L:writesbit e =P2^2; //读写使能sbit bf =P0^7; //忙闲状态标志位,H:内部正执行操作,L:空闲void chk_busy(void);//检测LCD忙闲void init_lcd(void);//LCD初始化void wr_comm(unsigned char comm); //写指令void wr_comm_no(unsigned char comm);//写指令,不检测忙闲void wr_data(unsigned char dat); // 写数据void wr_str(unsigned char *p); //显示字符串unsigned char rd_lcd(void);//读LCD数据void delayus(unsigned char us);//延时子程序 usvoid delayms(unsigned int ms); //延时子程序 msunsigned char bitnum=0; // 中断次数,即接收键盘数据位的个数unsigned char keyval=0; // 存放按键值unsigned char lcdbuf[17]={'C','a','p',' ','0',' ','N','u','m',' ','0',' ','U','P',' ','0',0}; // 1602第1行unsigned char lcdbuf2[17]={'0',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 1602第2行bit E0_flag=0,F0_flag=0,Shift_flag=0,Caps_flag=0,Num_flag=0,BF=0,Flag=0; // 标志位unsigned char up='0',down='0',left='0',right='0',pgup='0',pgdown='0'; // 存放方向键按下的次数unsigned char code unshifted[][2]= //shift键未按下译码表{ 0x0e,'`', 0x15,'q', 0x16,'1', 0x1a,'z', 0x1b,'s', 0x1c,'a', 0x1d,'w', 0x1e,'2', 0x21,'c', 0x22,'x', 0x23,'d', 0x24,'e', 0x25,'4', 0x26,'3', 0x29,' ', 0x2a,'v', 0x2b,'f', 0x2c,'t', 0x2d,'r', 0x2e,'5', 0x31,'n', 0x32,'b', 0x33,'h', 0x34,'g', 0x35,'y', 0x36,'6', 0x39,',', 0x3a,'m', 0x3b,'j', 0x3c,'u', 0x3d,'7', 0x3e,'8', 0x41,',', 0x42,'k', 0x43,'i', 0x44,'o', 0x45,'0', 0x46,'9', 0x49,'.', 0x4a,'/', 0x4b,'l', 0x4c,';', 0x4d,'p', 0x4e,'-', 0x52,''', 0x54,'[', 0x55,'=', 0x5b,']', 0x5d,'\', 0x61,'

    时间:2018-07-12 关键词: 测试程序 ps2键盘

  • FCT用于简化测试程序的开发

    1 引言 数字信号处理技术为工程师进行特殊模拟、混合信号应用开发提供了极大的灵活性。然而这一灵活性的增加也使工程师开发测试程序时存在不易发现的缺陷从而降低测试性能的可能性有所增加。 2 使采样技术符合测试频率的要求 进行模拟DSP测试时工程师依赖复杂的相关采样技术保证采样与测试频率一致。要实现相关采样需要满足下列公式的最优解决方案:     式中:M为采样窗口中的周期数; N为采样点数;Ft为测试频率; Fs为采样频率。 满足该公式测试程序编写人员必须考虑各种限制:M/N的比值必须是素数,N必须是2的整数次幂才能保证使用快速傅立叶变换技术的相关性。同时N必须足够大以提供所需的分辨率,但又不能太大否则测试时间会太长。另外正确的解决方案还必须解决测试设备的物理限制,如采样频率的特殊限制或分辨率的上限。测试频率必须考虑到各种可能,如多谐波测试。另外测试频率的选择必须考虑 FFT方法,测试频率选择不同会使结果很复杂。 过去测试工程师依赖表格或手工计算决定采样参数。实际上这种人工劳动使工程师不得不将精力集中到参数选择问题上。而且当测试标准包括欠采样或过采样方法时这种人工方法会变得非常困难。即使在较简单的情况下,这种需要反复试验的方法会使工程师考虑是否还有更好的参数设置可以更高效的进行测试。 3 使用新的软件工具决定采样频率和高速仪器设置 领先的ATE供应商(如科利登)提供的独特频率计算工具(FCT)是一种交互式的软件工具,可以帮助测试程序开发人员决定模拟测试中的采样频率(图1)。FCT是科利登OctetTM 系统中的程序开发软件工具,该工具可以计算不同的方案,在测试系统能力范围内避免N值太大或太小。因此FCT能够根据测试系统的配置和特定的应用找到最佳的参数设置组合。有了这些参数设置,测试工程师能够简单的拖拽参数值到Octet的模拟波形工具(AWT)用来产生波形。     另外,科利登的仪器设置工具(IST)简化了测试程序的开发和高速仪器的设置。传统的系统中,工程师开发测试程序需要详细的了解测试系统中配置的每个仪器的详细命令。IST消除了这一烦杂的工作。由于IST中存储了关于系统仪器限制和能力的信息,该工具可以提供简单的交互式的方法用于产生C程序代码。测试程序开发过程中,测试工程师填写一张IST中的表格,描述预期的波形。而关于产生该波形所需的参数设置、信号捕获和分析工作则由IST完成。测试程序开发人员不再需要掌握不同仪器的命令和编程机制,可以把精力集中于更高层面的测试应用,优化测试方法。 4 结论 通过自动分析的方法,新型的软件工具,如 FCT,可以帮助测试工程师节省人工劳动同时可以得到更好的测试结果。除了象FCT和IST这样的工具,领先的ATE公司,如科利登,正在不断加强测试软件的能力以提高测试产能和质量。

    时间:2012-10-02 关键词: 测试程序 fct

  • 基于FCT的简化测试程序的开发

    1 引言 数字信号处理技术为工程师进行特殊模拟、混合信号应用开发提供了极大的灵活性。然而这一灵活性的增加也使工程师开发测试程序时存在不易发现的缺陷从而降低测试性能的可能性有所增加。 2 使采样技术符合测试频率的要求 进行模拟DSP测试时工程师依赖复杂的相关采样技术保证采样与测试频率一致。要实现相关采样需要满足下列公式的最优解决方案:     式中:M为采样窗口中的周期数; N为采样点数;Ft为测试频率; Fs为采样频率。 满足该公式测试程序编写人员必须考虑各种限制:M/N的比值必须是素数,N必须是2的整数次幂才能保证使用快速傅立叶变换技术的相关性。同时N必须足够大以提供所需的分辨率,但又不能太大否则测试时间会太长。另外正确的解决方案还必须解决测试设备的物理限制,如采样频率的特殊限制或分辨率的上限。测试频率必须考虑到各种可能,如多谐波测试。另外测试频率的选择必须考虑 FFT方法,测试频率选择不同会使结果很复杂。 过去测试工程师依赖表格或手工计算决定采样参数。实际上这种人工劳动使工程师不得不将精力集中到参数选择问题上。而且当测试标准包括欠采样或过采样方法时这种人工方法会变得非常困难。即使在较简单的情况下,这种需要反复试验的方法会使工程师考虑是否还有更好的参数设置可以更高效的进行测试。 3 使用新的软件工具决定采样频率和高速仪器设置 领先的ATE供应商(如科利登)提供的独特频率计算工具(FCT)是一种交互式的软件工具,可以帮助测试程序开发人员决定模拟测试中的采样频率(图1)。FCT是科利登OctetTM 系统中的程序开发软件工具,该工具可以计算不同的方案,在测试系统能力范围内避免N值太大或太小。因此FCT能够根据测试系统的配置和特定的应用找到最佳的参数设置组合。有了这些参数设置,测试工程师能够简单的拖拽参数值到Octet的模拟波形工具(AWT)用来产生波形。     另外,科利登的仪器设置工具(IST)简化了测试程序的开发和高速仪器的设置。传统的系统中,工程师开发测试程序需要详细的了解测试系统中配置的每个仪器的详细命令。IST消除了这一烦杂的工作。由于IST中存储了关于系统仪器限制和能力的信息,该工具可以提供简单的交互式的方法用于产生C程序代码。测试程序开发过程中,测试工程师填写一张IST中的表格,描述预期的波形。而关于产生该波形所需的参数设置、信号捕获和分析工作则由IST完成。测试程序开发人员不再需要掌握不同仪器的命令和编程机制,可以把精力集中于更高层面的测试应用,优化测试方法。 4 结论 通过自动分析的方法,新型的软件工具,如 FCT,可以帮助测试工程师节省人工劳动同时可以得到更好的测试结果。除了象FCT和IST这样的工具,领先的ATE公司,如科利登,正在不断加强测试软件的能力以提高测试产能和质量。

    时间:2012-10-27 关键词: 测试程序 fct

  • 利用模型设计测试程序开发智能设备方案

    有谁会想到,为了去一趟杂货店,我们的汽车需要多少电子控制单元(ECU)不停地运作?又有谁会想到,今天的汽车所能带给我们的舒适享受已将过去我们认为烦恼、琐碎的驾驶变成了一种美好的体验。然而,随着基于软件的设备变得更加普遍和复杂,嵌入式工程师越来越面临着简化设备的设计和测试过程,实现设备缺陷可追溯性的巨大挑战。 越来越多的智能设备正在进入我们生活的角角落落,包括您的电脑、智能电话、最新的苹果iPad等。而设备中的嵌入式软件还在不停地促使您的汽车、洗衣机和电网向着智能化的方向发展。事实上,在我们的生活中,已经越来越难找到不包含嵌入式软件的大型电子设备了。 目前的嵌入式开发过程通常包括不同形式的设计仿真、验证、确认和系统测试。在这些阶段,设计和测试工具间很难过渡。这往往会造成需要将测试代码、测试案例和仿真与I/O接口重新写入到模型中。 此外,由于传统设计工具也正变得越来越繁重,而模型和用例也日益复杂,我们很难将用于纯仿真测试的多个模型联结在一起。这些问题对企业在利润、人员需求、文档化及产品上市时间等方面提出了挑战。 实时测试软件的角色 对之前开发过程中用到的设计和测试工具、模型以及仿真数据进行复用,是目前嵌入式控制设备开发的一个趋势。许多设计和测试工程师在整个开发过程中会积极地复用设计模型。然而,如果这些工程师在设计流程中也对测试进行复用,那么就能进一步实现更高的效率和质量(如图1所示)。 图1 实时测试软件帮助实现模型和测试任务在整个嵌入式设计流程中的复用 为了满足这一需求,一种新型软件——实时测试软件诞生了。该软件能够帮助工程师在整个嵌入式设计流程中复用测试任务,例如,激励配置、测试序列、分析程序和需求跟踪。所谓“实时”是指该软件对嵌入式系统其余部分进行建模,从而具备在真实环境中,对测试设备进行测试固件的能力。 在设计流程的各个阶段,从最初的产品定义一直到最终的系统测试,您可以通过使用相同的测试软件组件来获得更好的连续性。这对于诊断临床故障而言尤为重要——由于特征采集和生产中的测试程序不同导致很难判断故障原因的案例屡见不鲜。 例如,当开发嵌入式控制软件时,激励配置、分析程序以及其他模型在环(MIL)设计任务中使用到的组件将会被复用,以创建硬件在环(HIL)以及原型控制器的现场测试。 一旦这一阶段完成,演进的软件测试组件将是HIL、子系统和系统集成测试系统开发的起点。 最终,在设计阶段制造商所使用的生产测试计划与原先设计阶段的测试计划具有相同的“DNA”。同样地,在ASIC设计中,计算机辅助工程(CAE)工具使用的测试台和分析仪将应用于基于仪器的测试系统。最后,开发团队将以同样的方式来生产和检查结果。 这样将使这些团队更快更高效地做出决策和调整,节省了时间成本和预算。这种方法不仅使得团队在应对测试中出现问题时具有高度的灵活性和适应能力,并且,当由于中期项目需求变动而产生更多测试用例,或在设计流程各阶段中进行故障追溯时,这一方法也是很有帮助的。 然而,尤其需要注意的是,尽管实时测试软件使得嵌入式设计和测试的效率有了显著的提升,但在解决您的嵌入式设计和测试需求时,您需要考虑到的绝对不仅于此。为了确保您开发需求的准确性并保证您的设计可转成真实的产品,除了聘请专家以外,您还应该制定并遵循风格指南和精细的流程。 有些公司已经开始以全新的视角看待嵌入式开发程序,把测试组件作为开发过程中一个通用DNA。这样的公司无疑将更具有竞争力。设计完成后进行的测试任务将会成为产品设计过程中不可缺少的一环。 尽管他们本身的目的不同,但随后的测试组件将会共享一个通用的结构。他们在某些时候会是之前步骤的克隆,在另一些情况下则是其他步骤的演变。这一关系将会扩展目前项目的通用需求到测试组件和过程的实际复用。这将大大节省成本、时间和人力,同时终端用户可以从最新的软件设备中获得更佳的品质

    时间:2018-06-14 关键词: 测试程序 智能设备 模型设计

  • 美对LED灯测试程序TBT通报展开评议

    据美国市场研究机构弗里多尼亚(Freedonia)的研究报告显示,预测到2016年美国灯具市场将达250亿美元。预计美国照明灯具的需求将按每年7.4%增加,至2016年达到251亿美元。 美国LED照明灯具TBT通报评议会主要针对美国最近发布的LED灯测试程序TBT(技术性贸易壁垒协议)通报(G/TBT/N/USA/698号)展开评议,该测试程序规定了测量LED灯流明输出、输入功率和相对光谱分布的方法。此外,还规定了测量LED光源光通维持率的方法,以预测LED灯的额定寿命。 据了解,这些规定都与LED灯具产品密切相关,而美国又是我国LED灯具的主要出口市场之一,2011年我国对美国的LED灯具出口额达上百亿元。此次美国通报的法规一旦正式实施,将有可能对我国LED产业造成较大影响。 照明灯具产品包括非便携和便携式装置,以及单独出售的零部件和配件,如售后灯镇流器、配件、开关等,对灯具的需求主要是由非便携式装置,占2011年总照明灯具的需求的近三分之二。非便携式灯具主要来源于在建筑和车辆应用的全方位的广泛使用,预计到2016年,受益于建筑活动的全放兴起以及车辆需求的增加,非便携式装置的需求预计后期也会增强。 预计在2011年和2016年之间非便携式灯具的需求几乎增加一倍,纵观各主要细分市场,减少能耗的灯具品牌将得到最佳的增长前景。这在很大程度上可以归因于2007年提出的能源独立和安全法中的节能照明产品需求:限制销售白炽灯的规定。这些法规将努力推动荧光灯、卤素灯、高强度放电照明灯具以及LED光源的需求。

    时间:2012-12-24 关键词: 测试程序 LED tbt

  • 美国发布LED照明灯具测试程序新规

    美国led照明灯具tbt通报评议会主要针对美国最近发布的led灯测试程序tbt通报展开评议,该测试程序规定了测量led灯流明输出、输入功率和相对光谱分布的方法。此外,还规定了测量led光源光通维持率的方法,以预测led灯的额定寿命。 据了解,这些规定都与led灯具产品密切相关,而美国又是我国led灯具的主要出口市场之一,2012年我国对美国的led灯具出口额达上百亿元。此次美国通报的法规一旦正式实施,将有可能对我国led产业造成较大影响。 目前led照明在市场中的份额很小,但其更长的使用寿命和更高的效率使其需求会有大幅增长。led光源技术进步的步伐也将使它们更节能、更明亮、更实惠。此外,照明灯具制造商也在开发专为led的装置,以优化其性能,使其在照明产品品中成为主流产品。 美国led高速发展的前景也归因于2007年提出的能源独立和安全法中的节能照明产品需求:限制销售白炽灯的规定。这些法规将努力推动荧光灯、卤素灯、高强度放电照明灯具以及led光源的需求。 根据美国市场研究机构弗里多尼亚的研究报告,预测美国的照明灯具需求将以每年7.4%的速度增长,到2016年将可达250亿美元。

    时间:2013-05-31 关键词: 美国 发布 测试程序 LED

发布文章

技术子站

更多

项目外包

更多

推荐博客