我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 2271|回复: 5

MSP430G2553通过1602显示内置温度传感器的小程序

[复制链接]

该用户从未签到

18

主题

36

回帖

157

积分

二级逆天

积分
157

社区居民

QQ
发表于 2014-10-23 19:31:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
#include<msp430g2553.h>
#define uchar unsigned char
#define uint unsigned int
#define P20 0
#define P21 1
#define P22 2

#define RS_CLRP2OUT &= ~(1 << P20) //RS置低
#define RS_SETP2OUT |= (1 << P20) //RS置高

#define RW_CLRP2OUT &= ~(1 << P21) //RW置低
#define RW_SETP2OUT |= (1 << P21) //RW置高

#define EN_CLRP2OUT &= ~(1 << P22) //E置低
#define EN_SETP2OUT |= (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-27H,40H-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的原因CGROM和CGRAM与字符的对应关系
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.5,VR+=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);
}
}
回复

使用道具 举报

该用户从未签到

0

主题

385

回帖

331

积分

二级逆天

积分
331

社区居民终身成就奖

QQ
发表于 2014-10-23 19:53:46 | 显示全部楼层
                  
回复

使用道具 举报

  • TA的每日心情
    奋斗
    前天 09:37
  • 签到天数: 77 天

    [LV.6]常住居民II

    128

    主题

    1万

    回帖

    8419

    积分

    二级逆天

    积分
    8419

    终身成就奖特殊贡献奖原创先锋奖社区居民灌水天才奖优秀斑竹奖宣传大使奖忠实会员最爱沙发社区劳模

    QQ
    发表于 2014-10-23 23:08:13 | 显示全部楼层
    学习中!!!!!!!!!!1
    回复

    使用道具 举报

    该用户从未签到

    30

    主题

    1018

    回帖

    1万

    积分

    三级逆天

    积分
    13199

    社区居民新人进步奖灌水天才奖最爱沙发贴图大师奖幽默大师奖金点子奖终身成就奖宣传大使奖忠实会员

    QQ
    发表于 2014-10-24 08:16:22 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    6

    主题

    706

    回帖

    653

    积分

    游客

    积分
    653

    社区居民终身成就奖

    QQ
    发表于 2014-10-24 09:22:04 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-4 20:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    3252

    回帖

    2673

    积分

    二级逆天

    孤独的奔跑者

    积分
    2673

    终身成就奖社区居民

    QQ
    发表于 2014-10-24 09:58:12 | 显示全部楼层
    回复

    使用道具 举报

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

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表