icc avr LCD1602显示屏程序

发布者:世界因你而精彩最新更新时间:2017-12-15 来源: eefocus关键字:icc  avr  LCD1602  显示屏 手机看文章 扫描二维码
随时随地手机看文章

入口参数说明: 

    // control port 
    //#define SET_RS  sbi(PORTB,5) 
    //#define CLR_RS  cbi(PORTB,5) 

    //#define OUT_RS  sbi(DDRB,5) 
     
    //#define SET_RW  sbi(PORTB,6) 
    //#define CLR_RW  cbi(PORTB,6) 
    //#define OUT_RW  sbi(DDRB,6) 
     
    //#define SET_E   sbi(PORTB,7) 
    //#define CLR_E   cbi(PORTB,7) 
    //#define OUT_E   sbi(DDRB,7) 
     
    // data port 
    //#define SET_D4  sbi(PORTD,4) 
    //#define CLR_D4  cbi(PORTD,4) 
    //#define OUT_D4  sbi(DDRD,4) 
     
    //#define SET_D5  sbi(PORTD,5) 
    //#define CLR_D5  cbi(PORTD,5) 
    //#define OUT_D5  sbi(DDRD,5) 
     
    //#define SET_D6  sbi(PORTD,6) 
    //#define CLR_D6  cbi(PORTD,6) 
    //#define OUT_D6  sbi(DDRD,6) 
     
    //#define SET_D7  sbi(PORTD,7) 
    //#define CLR_D7  cbi(PORTD,7) 
    //#define OUT_D7  sbi(DDRD,7) 
     
    // busy port 
    //#define GET_BF  gbi(PIND,7) 
    //#define OUT_BF  sbi(DDRD,7) 
    //#define IN_BF      cbi(DDRD,7) 
     
---------------------------------------------------------------------- 
接口定义: 
LCD1602                ATmega16 
1.GND        --------    GND 
2.VCC        --------    VCC 
3.V0        --------    V0 
4.RS        --------    由外部程序定义 
5.R/W        --------    由外部程序定义 
6.E        --------    由外部程序定义 
7.D0        --------    NC 
8.D1        --------    NC 
9.D2        --------    NC 
10.D3        --------    NC 
11.D4        --------    由外部程序定义 
12.D5        --------    由外部程序定义 
13.D6        --------    由外部程序定义 
14.D7        --------    由外部程序定义 
15.LED+        --------    VCC 
16.LED-        --------    GND 

说明: 
(1)使用ATmega16的7根IO口操作LCD1602 
(2)该程序的优点是:7根IO可任意定义,不需分布在固定的一组PORT口上 
(3)该程序的缺点是:IO定义的写法较为繁琐 
---------------------------------------------------------------------- 
待定参数说明: 
    //#define DELAY()        {_nop_();_nop_();_nop_();} 

----------------------------------------------------------------------     
对外变量说明: 

---------------------------------------------------------------------- 
对外函数说明: 

---------------------------------------------------------------------- 
10101010101010101010101010101010101010101010101010101010101010101010*/ 

#ifndef LCD1602_H 
#define LCD1602_H 

#include "D:\ICC_H\CmmICC.H" 

/* 待定参数 */ 
#define DELAY()        {NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();} 

/* 不考虑移植性的写法 */ 
//uint8 bdata bdat; 
//sbit bdat0=bdat^0; 
//sbit bdat1=bdat^1; 
//sbit bdat2=bdat^2; 
//sbit bdat3=bdat^3; 
//sbit bdat4=bdat^4; 
//sbit bdat5=bdat^5; 
//sbit bdat6=bdat^6; 
//sbit bdat7=bdat^7; 
/* 考虑移植性的写法 */ 
uint8 bdat; 
#define bdat0 (bdat&0x01) 
#define bdat1 (bdat&0x02) 
#define bdat2 (bdat&0x04) 
#define bdat3 (bdat&0x08) 
#define bdat4 (bdat&0x10) 
#define bdat5 (bdat&0x20) 
#define bdat6 (bdat&0x40) 
#define bdat7 (bdat&0x80) 

#define CGRAM0 0x00 
#define CGRAM1 0x01 
#define CGRAM2 0x02 
#define CGRAM3 0x03 
#define CGRAM4 0x04 
#define CGRAM5 0x05 
#define CGRAM6 0x06 
#define CGRAM7 0x07 

#define TRUE    1 
#define FALSE    0 
bool LCD1602Err = FALSE; 

/*-------------------------------------------------------------------- 
函数名称:LCD1602读读读读读忙~ 
函数功能:都说是读读读读读忙咯~ 
注意事项:对于高速CPU,应加延时,好像是废话~ 
提示说明:无 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
void busy(void) 

    uint16 busyCounter=0; 
    bool busySta;        //用于探测 lcd busy status 
    IN_BF; 
    SET_D4; 
    SET_D5; 
    SET_D6; 
    SET_D7; 
    DELAY(); 
    CLR_RS; 
    DELAY(); 
    SET_RW; 
    DELAY(); 

    do 
    { 
        SET_E;    
        DELAY(); 
/* 这里读取AC4-AC6位及BF的值,程序不需记录AC4-AC6的值,所以不存储 */ 
        busySta=(bool)GET_BF;   
        CLR_E; 
        DELAY();  
/* 读取 "BUSY"时,"D4-D7"状态可能已经改变,必须再次设为输出"1" */ 
        SET_D4; 
        SET_D5; 
        SET_D6; 
        SET_D7; 
        DELAY(); 
        SET_E;    
        DELAY(); 
/* 这里读取AC0-AC3位的值,程序不需记录AC0-AC3的值,所以不存储 */ 
        CLR_E;    
        DELAY(); 
        if(busyCounter==1000) 
        { 
            LCD1602Err=TRUE;    //标识LCD1602错误,方便上缴系统报错 
            return ;            //避免由于LCD1602错误而导致程序阻塞 
        } 
        busyCounter++; 
    } 
    while(busySta); 

    LCD1602Err=FALSE; 
    CLR_E; 
    OUT_BF; 

/*-------------------------------------------------------------------- 
函数名称:LCD1602写操作 
函数功能: 
注意事项:对于高速CPU,应加延时,好像是废话~ 
提示说明:无 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
void write(bool flag,uint8 dat)    //flag=0:command,flag=1:data 
{   
    bdat=dat; 
    busy(); 
    if(flag) 
        SET_RS; 
    else 
        CLR_RS; 
    DELAY(); 
    CLR_RW; 
    DELAY(); 
    if(bdat4) 
        SET_D4; 
    else 
        CLR_D4; 
    if(bdat5) 
        SET_D5; 
    else 
        CLR_D5; 
    if(bdat6) 
        SET_D6; 
    else 
        CLR_D6; 
    if(bdat7) 
        SET_D7; 
    else 
        CLR_D7; 
    DELAY(); 
    SET_E;     
    DELAY(); 
    CLR_E; 
    DELAY();  

    if(bdat0) 
        SET_D4; 
    else 
        CLR_D4; 
    if(bdat1) 
        SET_D5; 
    else 
        CLR_D5; 
    if(bdat2) 
        SET_D6; 
    else 
        CLR_D6; 
    if(bdat3) 
        SET_D7; 
    else 
        CLR_D7; 
    DELAY(); 
    SET_E;         
    DELAY(); 
    CLR_E; 
    DELAY(); 

/*-------------------------------------------------------------------- 
函数名称:LCD1602读操作 
函数功能: 
注意事项:对于高速CPU,应加延时,好像是废话~ 
提示说明:无 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
//void read(uint8 adr) 
//{     
//} 
/*-------------------------------------------------------------------- 
函数名称:LCD1602设置CGRAM内容 
函数功能: 
注意事项:对于高速CPU,应加延时,好像是废话~ 
提示说明:调用LCD1602_setCG(0,userCh),则写入用户定义的字符"userCh" 
输    入:"adr"数据范围:0-8,"buf"为用户需要写入的字符"userCh" 
返    回:无 
--------------------------------------------------------------------*/ 
void LCD1602_setCGRAM(uint8 adr,const uint8 buf[8]) 
{     
    uint8 i; 
    write(0,0x40+adr*8); 
    for(i=0;i<8;i++) 
        write(1,buf[i]); 
/* 不得采样下面写法,因为传入的是数组,最后一个不是’\0’ */ 
    //while(*buf) 
        //write(1,*buf++); 

/*-------------------------------------------------------------------- 
函数名称:LCD1602命令设置 
函数功能: 
注意事项:对于高速CPU,应加延时,好像是废话~ 
提示说明: 
输    入:"CLR_SCR"/"GO_HOME"/"AC_INC"/"AC_DEC"... 
返    回:无 
--------------------------------------------------------------------*/ 
//----    function  ------  1  --------  0  ----LcdWordPos-- 
//        dispEn        |   Enable    |  DISAble    |    bit2 
//        cursorEn    |   Enable    |  Disable    |    bit1 
//        blinkEn        |   Enable    |  Disable    |    bit0 
//------------------------------------------------------ 
//        isACinc        |    INC_AC  |  DEC_AC    |    bit1 
//        shiftEn        |   Enable    |  Disable    |    bit0 
//------------------------------------------------------ 
void LCD1602_setCmd(uint8  *str) 

    static bool dispEn  =0; 
    static bool cursorEn=0; 
    static bool blinkEn =0; 
    static bool shiftEn =0; 
    static bool isACinc =0; 
     
    if(!strcmp(str,"CLR_SCR"))            //clear screen 
        write(0,0x01); 

    else if(!strcmp(str,"GO_HOME"))        //set AC go home 
        write(0,0x02); 
/*-------------------------------------------------- 
isACinc & shiftEn 共用一个命令设置 
--------------------------------------------------*/ 
    else if(!strcmp(str,"INC_AC"))        //set AC as inc mode 
    { 
        isACinc=1; 
        if(shiftEn) 
            write(0,0x07); 
        else  
            write(0,0x06); 
    }         
    else if(!strcmp(str,"DEC_AC"))        //set AC as dec mode 
    {     
        isACinc=0; 
        if(shiftEn) 
            write(0,0x05); 
        else 
            write(0,0x04); 
    }         
    else if(!strcmp(str,"EN_SHIFT"))    //enable shift 
    { 
        shiftEn=1; 
        if(isACinc) 
            write(0,0x07); 
        else 
            write(0,0x06); 
    } 
    else if(!strcmp(str,"DIS_SHIFT"))    //disable shift 
    { 
        shiftEn=0; 
        if(isACinc) 
            write(0,0x05); 
        else 
            write(0,0x04); 
    }     
/*-------------------------------------------------- 
dispEn & cursorEn & blinkEn共用一个命令设置 
--------------------------------------------------*/ 
    else if(!strcmp(str,"OPEN_LCD"))    //opern lcd 
    { 
        dispEn=1; 
        if(cursorEn) 
            if(blinkEn) 
                write(0,0x0F); 
            else 
                write(0,0x0E); 
        else 
            if(blinkEn) 
                write(0,0x0D); 
            else 
                write(0,0x0C); 
    }         
    else if(!strcmp(str,"CLOSE_LCD"))    //close lcd 
    { 
        dispEn=0; 
        if(cursorEn) 
            if(blinkEn) 
                write(0,0x0B); 
            else 
                write(0,0x0A); 
        else 
            if(blinkEn) 
                write(0,0x09); 
            else 
                write(0,0x08); 
    }     
    else if(!strcmp(str,"OPEN_CURS"))    //open cursor     
    { 
        cursorEn=1; 
        if(dispEn) 
            if(blinkEn) 
                write(0,0x0F); 
            else 
                write(0,0x0E); 
        else 
            if(blinkEn) 
                write(0,0x0B); 
            else 
                write(0,0x0A); 
    }     
    else if(!strcmp(str,"CLOSE_CURS"))    //close cursor 
    { 
        cursorEn=0; 
        if(dispEn) 
            if(blinkEn) 
                write(0,0x0D); 
            else 
                write(0,0x0C); 
        else 
            if(blinkEn) 
                write(0,0x09); 
            else 
                write(0,0x08); 
    } 
    else if(!strcmp(str,"EN_BLINK"))    //enable blink cursor 
    { 
        blinkEn=1; 
        if(dispEn) 
            if(cursorEn) 
                write(0,0x0F); 
            else 
                write(0,0x0D); 
        else 
            if(cursorEn) 
                write(0,0x0B); 
            else 
                write(0,0x09); 
    } 
    else if(!strcmp(str,"DIS_BLINK"))    //disable blink cursor 
    { 
        blinkEn=0; 
        if(dispEn) 
            if(cursorEn) 
                write(0,0x0E); 
            else 
                write(0,0x0C); 
        else 
            if(cursorEn) 
                write(0,0x0A); 
            else 
                write(0,0x08); 
    } 
/*-------------------------------------------------- 
dispEn & cursorEn & blinkEn共用一个命令设置 
--------------------------------------------------*/ 
    else if(!strcmp(str,"RIGHT_SCR"))    //right shift screen 
        write(0,0x1c); 
    else if(!strcmp(str,"LEFT_SCR"))    //left shift screen 
        write(0,0x18); 
    else if(!strcmp(str,"RIGHT_CURS"))    //right shift cursor 
        write(0,0x14); 
    else if(!strcmp(str,"LEFT_CURS"))    //left shift cursor 
        write(0,0x10); 

/*-------------------------------------------------------------------- 
函数名称:LCD1602初始化 
函数功能: 
注意事项: 
提示说明:无 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
void LCD1602_init(void) 
{    
    OUT_RS; 
    OUT_RW; 
    OUT_E; 
    OUT_D4; 
    OUT_D5; 
    OUT_D6; 
    OUT_D7; 
    delay50ms(1); 

    CLR_D7; 
    CLR_D6; 
    SET_D5; 
    SET_D4; 
    DELAY(); 
    CLR_RS; 
    DELAY(); 
    CLR_RW;                          

    SET_E; 
    DELAY(); 
    CLR_E; 
    delay50us(200);         
    SET_E; 
    DELAY(); 
    CLR_E; 
    delay50us(200);     
    SET_E; 
    DELAY(); 
    CLR_E; 
    delay50us(200);     
     
    CLR_D7; 
    CLR_D6; 
    SET_D5; 
    CLR_D4; 
    DELAY(); 
    SET_E; 
    DELAY(); 
    CLR_E;                            
    DELAY(); 
    LCD1602_setCmd("OPEN_LCD"); 
    LCD1602_setCmd("CLR_SCR"); 
    LCD1602_setCmd("INC_AC"); 
    //LCD1602_setCmd("OPEN_CURS"); 
    //LCD1602_setCmd("GO_HOME"); 

/*-------------------------------------------------------------------- 
  宏名称:设置AC值 
  宏功能:设置AC值啦 
注意事项: 
提示说明: 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
#define LCD1602_setAC(adr) write(0,adr) 
/*-------------------------------------------------------------------- 
函数名称:输出一个字符 
函数功能: 
注意事项:对于高速CPU,应加延时,好像是废话~ 
提示说明:调用LCD1602_putc(0x80,’A’),则在第一行第一个字符处输出’A’ 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
void LCD1602_putc(uint8 adr,uint8 ch) 

    write(0,adr); 
    write(1,ch); 

/*-------------------------------------------------------------------- 
函数名称:输出一个字符串 
函数功能: 
注意事项:无 
提示说明:调用LCD1602_puts(0x80,"waveShare"),则从第一行第一个位置开始输出"waveShare" 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
void LCD1602_puts(uint8 startAdr,uint8 *str) 

    /* 
    while(*str) 
    { 
        LCD1602_putc(addr++,*str++); 
    } 
    */ 
    //LCD1602_setCmd("AC++"); 
    write(0,startAdr); 
    while(*str) 
        write(1,*str++); 

/*-------------------------------------------------------------------- 
函数名称:输出一个数值(带0) 
函数功能:有时候你可能不是需要"123",而是需要"00123"吧 
注意事项:无 
提示说明:调用LCD1602_putd0(0x8F,123,5),则从0x8B开始到0X8F输出"00123" 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
//for example:dat=123,length=6,output 000123  
void LCD1602_putd0(uint8 endAdr,uint32 dat,uint8 length) 

    sint8 i; 
    speaData(dat,length); 
    //LCD1602_setCmd("AC++"); 
    write(0,endAdr-length+1); 
    for(i=length-1;i>=0;i--) 
        write(1,dataElem[i]+0x30); 

/*-------------------------------------------------------------------- 
函数名称:输出一个数值(不带0) 
函数功能: 
注意事项:无 
提示说明:调用LCD1602_putd(0x8F,123,5),则从0x8B开始到0X8F输出"  123" 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
void LCD1602_putd(uint8 endAdr,uint32 dat,uint8 length) 

    sint8 i; 
    sint8 effectLen; 
    if(dat>999999) 
         effectLen=7; 
    else if(dat>99999) 
         effectLen=6; 
    else if(dat>9999) 
         effectLen=5; 
    else if(dat>999) 
         effectLen=4; 
    else if(dat>99) 
         effectLen=3; 
    else if(dat>9) 
         effectLen=2; 
    else 
         effectLen=1; 
    speaData(dat,effectLen); 
    //LCD1602_setCmd("AC++"); 
    if(length>effectLen) 
    { 
        write(0,endAdr-length+1); 
        for(i=length-effectLen-1;i>=0;i--) 
            write(1,’ ’); 
    } 
    for(i=effectLen-1;i>=0;i--) 
    { 
        if(i==0||dataElem[i]) 
        { 
            write(0,endAdr-i); 
            for(;i>=0;i--) 
                write(1,dataElem[i]+0x30); 
        } 
    } 

/*-------------------------------------------------------------------- 
函数名称:输出一个混合串 
函数功能: 
注意事项:最好不要加载这个函数,因为它将占用将近1K空间 
提示说明:调用LCD1602_sprintf(0x8F,12AB,4),则从0x8B开始到0X8F输出"12ABok" 
输    入: 
返    回:无 
--------------------------------------------------------------------*/ 
//void LCD1602_sprintf(uint8 startAdr,uint32 dat,uint8 length) 
//{ 
//    /* clear the display area first here! */ 
//    //LCD1602_puts(addr,"      "); 
//    sprintf(t,"%luok",dat); 
//    //LCD1602_setCmd("AC++"); 
//    LCD1602_puts(addr,t); 
//} 

#endif 


关键字:icc  avr  LCD1602  显示屏 引用地址:icc avr LCD1602显示屏程序

上一篇:AVR单片机串口多机通讯程序
下一篇:AVR多机通讯

推荐阅读最新更新时间:2024-03-16 15:49

老外用AVR设计的数字电源电路分析
上面这款电路是老外用AVR单片机设计的一款数字电源. 采用按键输入和LCD显示,仅用一个单片机加少量外围元件形成一款电源.设计思路非常好.值得我们大家来学习... 他电路的设计点有1个点非常不错... DA电路...在AVR单片机中并没有DA电路...他这里面采用IO口加电阻分压的方式完成DA电路...这样能省下一个DA.从而使电路更加简洁... HE HE...其实整个电路也不是很复杂...我现在把整个电源的电路各部分分开...爱好分析的朋友可以一起来讨论下.希望大家在讨论的时候能互相学习认识下.哈哈.能改进下电路就更好了... 1.电源电路...这个电源电路输入30V输出5V...设计思路不错... 利用一
[单片机]
老外用<font color='red'>AVR</font>设计的数字电源电路分析
LED显示屏如何分类
LED显示屏如何分类 根据应用场所分类   根据应用场所的不同,可将LED显示屏分为室内与室外两种。   室内屏   主要用于室内,在制作工艺上首先是把发光晶粒做成点阵模块(或数码管),再由模块拼接为一定尺寸的显示单元板,根据用户要求,以显示单元板为基本单元拼接成用户所需要的尺寸。 根据像素点的大小,室内屏分为φ3,φ3.75, φ5, φ8,φ10等。   室外屏   主要用于室外,在制作工艺上首先是把发光晶粒封装成单个的发光二极管,称之为单灯,用于制作室外屏的单灯一般都采用具有聚光作用的反光杯来提高亮度;再由多只LED单灯封装成单只像素管或像素模组,而由像素管或像素模组成点阵式的显示单元箱体,根据用户需要及显示应用场所,
[电源管理]
小米搭乘夏普IGZO快车:能否与苹果比高?
    显示设备屏幕的比拼越来越激烈,已经不是尺寸大小,视角问题的浅层次竞争,各大厂商开始包装推广屏幕的材质,乐此不疲的进行分辨率大战,比如三星对AMO LED 的不懈努力,苹果对视网膜概念的推崇,都说明显示效果的比拼已经到了深层次的阶段,甚至一些鲜为人知的驱动技术都被拿出来说事,其中就包括读起来很拗口的IGZO技术。   最近在手机领域风生水起的小米就向夏普下了一个大的订单,将IGZO屏幕收入囊中,这个订单涉及的数额巨大,不出意外的话,这种屏幕将搭载在小米下一代手机之上。小米也继苹果之后,成为夏普IGZO屏幕的又一重要采购者。那么小米为什么选择此刻出手IGZO屏幕呢?   熟悉这个技术的朋友都知道,苹果的iPadAir就采用
[手机便携]
AVR单片机研究(6):单片机系统开发的典型流程
一 需求分析 确定单片机控制系统要完成的任何和具备的功能。撰写设计任务书,主要内容包括设计和研制单片机应用系统应该达到的要求,要明确提出系统所必须达到的技术指标,如输入输出、功能和性能、价格、物理尺寸和重量、功耗等。 1.1输入和输出 ①信号类型。电信号和非电信号;模拟信号和数字信号。 ②数据特性。信号的电特性,如信号频率,幅值等。 ③设备类型。指输入输出的产生源,如按键,ADC,DAC,LED,LCD等 1.2功能和性能 功能多少,性能高低。综合考虑这两个因素,做出平衡。 1.3价格 生产成本是购买系统组件以及安装组件花销;工程成本是指人力成本和设计过程中的其他成本。 1.4物理尺寸和重量 这个要依据使用领域确定,成为硬件选型的一
[单片机]
单片机实时时钟电路(LCD1602、DS1302)
一、简介 此电路主要有51单片机、LCD1602模块、DS1302芯片组成,通过LCD1062显示当前时间。 二、运行效果 三、源文件 main.c /*想要更多项目私wo!!!*/ #include reg52.h #include intrins.h #include string.h #define uint unsigned int #define uchar unsigned char sbit IO = P1^0; sbit SCLK = P1^1; sbit RST = P1^2; sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2; uchar *
[单片机]
单片机实时时钟电路(<font color='red'>LCD1602</font>、DS1302)
详解LED点阵显示屏的系统设计
随着数字科学的进步和广泛应用,媒体整合理念也日趋完善,户外媒体也已经成为中国21世纪广告界的新宠,其发展潜力也远远高于传统电视、报纸和杂志媒体。本文来介绍一下点阵LED点阵显示屏的系统设计。 一、LED点阵显示屏的组成:由多个LED发光二极管封装在一起组成,是一种新兴的显示器件。为了说明LED点阵显示的原理,以单片机为控制核心, 设计和制作了一种包含硬件和软件两部分的 显示系统。该电路通过按键控制可实现任意多个汉字的卷帘、上移和左移等多种显示形式,可广泛应用于机场、商场、医院等公共场所进行文字广告宣传,信息发布等。而且具有体积小、硬件电路结构简单和容易实现等特点。 二、系统硬件电路的介绍:显示屏控制器的硬件电路部分主要由三个部
[电源管理]
基于AVR单片机的汽车空调控制系统设计
基于AVR单片机的汽车空调控制系统 摘要: AVR单片机功能强大,用AVR单片机开发各种控制系统只需很少的外部器件就可以实现强大的功能。本文介绍的就是利用Atmega16、CodeVisionAVR C开发环境、Proteus仿真软件开发汽车空调自动控制系统。 前言 Atmega16是美国ATMEL公司的高档8位单片机,采用Flash存储器,可以擦写10000次以上、内部集成 、四通道PWM、集成8路10位精度ADC、片内经过标定的RC振荡器、采用精简指令集,具有32个通用工作寄存器,具有只需两个时钟周期的硬件乘法器,运算速度快等。由于其集成度高、处理速度快,使得利用AVR单片机进行系统开发只需很少(甚至没有)的
[单片机]
基于<font color='red'>AVR</font>单片机的汽车空调控制系统设计
基于AVR单片机的服装压力检测系统设计
O 引言 服装是人们生活的一个重要组成部分,它的设计除了款式、花色、光泽等外观因素之外,舒适性也是服装功能性的一个重要组成部分。所谓服装舒适性是指人体着装后,服装具有满足人体要求并排除任何不舒适因素的性能。服装压可分为两种:由服装自身重量形成的垂直压和由服装紧裹身体产生的束缚压。 传统服装压力舒适度测试方法主要有:流体压力法、电阻法、石膏法。其中,使用流体水银压力计或水压机来测量服装压力的方法简单直接,但精度较低,尤其动态测量相当困难;电阻测量方法是将电阻应变片传感器插入衣服内,由于服装压力而使应变片变形导致电阻值的变化,从而将压力变化转换为变化的电压信号,通过测量该变化的电压值得出服装压力测试结果。该方法测试精度高,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved