6220|11

3

帖子

2

TA的资源

一粒金砂(初级)

楼主
 

MSP430G2553 AD转换中1602输出温度 [复制链接]

/*1602RSP2.0RWP2.1EP2.2

7~148个引脚接MSP430P1.0~P1.7,其余按照1602引脚要求连接即可。*/

#include<msp430g2553.h>

#define uchar unsigned char

#define uint unsigned int

#define P20 0

#define P21 1

#define P22 2

#define RS_CLR P2OUT &= ~(1 << P20)        //RS置低

#define RS_SET P2OUT |= (1 << P20)         //RS置高

#define RW_CLR P2OUT &= ~(1 << P21)        //RW置低

#define RW_SET P2OUT |= (1 << P21)         //RW置高

#define EN_CLR P2OUT &= ~(1 << P22)        //E置低

#define EN_SET P2OUT |= (1 << P22)         //E置高

uchar num;

int ADC_CHO;

int c;

int data;

unsigned  char x;

unsigned  char y;

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com)   //输入数据

{

RS_CLR;     //RS置低 输入指令

P1OUT=com;

delay(5);

EN_SET;   

delay(5);

EN_CLR;    //E置低  1->0 执行指令

}

void write_data(uchar data)  //输出数据

{

RS_SET;      //RS置高  RS=1输出数据

P1OUT=data;   

delay(5);

EN_SET;

delay(5);

EN_CLR;     //E置低  1->0 执行指令

}

void init()   //1602初始化,请参考1602的资料

{

EN_CLR;

write_com(0x38);     //设置16*2显示,5*7点阵,8位数据接口

write_com(0x0e);     //光标不显示

write_com(0x06);     //写入新数据后光标右移,显示频不移动

write_com(0x01);    //0000000001 清屏

write_com(0x80);    //修改指针的位置

}

void  display_xy(unsigned  char x,unsigned  char y)

    if(y==0x01)

{

     x = x + 0x40 + 0x80;      }

else

{

    x = x+0x80;   //数据指针设置 80H+地址码 (0-27H40H-67H

}

  write_com(x);

}

void Disp1Char(uchar x,uchar y,uchar data)

{

  display_xy(x,y);

  write_data(data);   ////输出数据

}

void Disp_float(float f_data)        

{           

            unsigned char lcd_table[3];

            int aa;

            aa=f_data;                   

            lcd_table[0]= aa/100;            

            lcd_table[1]= aa%100/10;

            lcd_table[2]=aa%10;

                 Disp1Char(5,0,(lcd_table[0]+0x30)); //显示整数部分的十位数  0x30的原因CGROMCGRAM与字符的对应关系

                 Disp1Char(6,0,(lcd_table[1]+0x30));//显示小数部分的个位

                 Disp1Char(7,0,(0x2e)); //显示小数点"."  小数点对应00101110

                 Disp1Char(8,0,(lcd_table[2]+0x30)); //显示小数部分的十分位     

                                    //加上0x30以便直接得到相应的ASCII码去显示

}

void main()

{       

        WDTCTL = WDTPW + WDTHOLD;

        P2DIR = 0XFF;  

P1DIR = 0XFF; //输出all

P1OUT = 0;     

RW_CLR;   //写数据指令

init();

        ADC10CTL1 |= CONSEQ_2;  //单通道多次转换模式

        ADC10CTL0 |= SREF_1+REFON;//REFON=1选择内部参考源1.5VR+=VREF+and VR-=VSS,打开基准源

        ADC10CTL0 |= ADC10SHT_3+MSC;//过采样率设置为64个采样周期,打开AD转换,MSC多次采样

        ADC10CTL1 |= ADC10SSEL_3+SHS_0;//ACLK2分频为采样时钟,用ADC10SC触发采集

        ADC10CTL1 |= INCH_10;//选择通道10

        ADC10CTL0 |= ADC10ON;//ADC10内核打开

        while(1)

        {

        delay(1000);                     

        ADC10CTL0 |= ENC + ADC10SC; // 开始转换 ENC为转换使能位,ADC10SC转换控制位          

        while((ADC10CTL0 & ADC10IFG)==0);//等待ADC10IFG标志位变高(转换完成)

        ADC_CHO= ADC10MEM;//读取采样结果

        data =(ADC_CHO-746)/(0.000335*678)+286;//计算温度值

c=data;

        if(c>150)

        {P2DIR |= BIT3;

        P2OUT=0x00;

        delay(2000); }

        Disp_float(c);  //显示结果    

         delay(2000);

        }

}

显示温度

最新回复

if(c>150)         {P2DIR |= BIT3;         P2OUT=0x00;         delay(2000); } 楼主,这段代码是什么作用啊?  详情 回复 发表于 2016-4-22 22:40

点评

多谢分享 。 加个单位显示看看?  详情 回复 发表于 2013-7-17 08:30
谢谢分享!:)  详情 回复 发表于 2013-7-15 10:19
 
点赞 关注

回复
举报

6066

帖子

92

TA的资源

裸片初长成(初级)

沙发
 

回复 楼主wylloong 的帖子

谢谢分享!
 
 

回复

672

帖子

0

TA的资源

版主

板凳
 

回复 楼主wylloong 的帖子

多谢分享 。
加个单位显示看看?
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

4
 

y6

很好很实用
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼主能留个QQ吗 想问一些问题 最近刚学着板子··
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

6
 
很不错啊,可以加上温度的单位,还可以再转换成华氏摄氏度

点评

楼主方便聊下吗?  详情 回复 发表于 2013-12-4 19:48
请问一下你能显示吗- - 如果可以加340303125麻烦知道一下··  详情 回复 发表于 2013-8-16 14:26
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼bobde163 的帖子

请问一下你能显示吗- - 如果可以加340303125麻烦知道一下··

点评

这个不难啊,你都能把数字给显示出来了,再显示个摄氏度的单位“C”和华氏温度的单位“F”就行了,当然了,字母边上的小圆圈是显示不出来了  详情 回复 发表于 2013-8-16 19:01
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

8
 

回复 7楼chxiaoer0624 的帖子

这个不难啊,你都能把数字给显示出来了,再显示个摄氏度的单位“C”和华氏温度的单位“F”就行了,当然了,字母边上的小圆圈是显示不出来了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 

回复 6楼bobde163 的帖子

楼主方便聊下吗?
 
 
 

回复

85

帖子

1

TA的资源

一粒金砂(中级)

10
 
又重新开始学习lauchpad......
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

11
 
LZ,你的是5V?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
if(c>150)

        {P2DIR |= BIT3;

        P2OUT=0x00;

        delay(2000); }
楼主,这段代码是什么作用啊?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表