77范文网 - 专业文章范例文档资料分享平台

MSP430x14x系列单片机程序实例(7)

来源:网络收集 时间:2019-08-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

DQ_OUT; DQ_CLR;

delay_us(4); //延时4uS if (value & 0x01) {

DQ_SET; }

delay_us(80); //延时80uS DQ_SET; //位结束 value>>= 1; } }

//************************************************************************* // 发送温度转换命令

//*************************************************************************

/*启动ds1820转换*/ void ds1820_start(void) {

DS18B20_Reset();

ds1820_write_byte(0xCC); //勿略地址 ds1820_write_byte(0x44); //启动转换 }

//************************************************************************* // DS8B20读取温度信息

//*************************************************************************

unsigned int ds1820_read_temp(void) {

unsigned int i;

unsigned char buf[9];

DS18B20_Reset();

ds1820_write_byte(0xCC); //勿略地址 ds1820_write_byte(0xBE); //读取温度 for (i = 0; i < 9; i++) {

buf[i] = ds1820_read_byte(); }

i = buf[1]; i <<= 8; i |= buf[0];

temp_value=i;

temp_value=(uint)(temp_value*0.625); //不是乘以0.0625的原因是为了把小数点后一位数据也转化为可以显示的数据 //比如温度本身为27.5度,为了在后续的数据处理程序中得到BCD码,我们先放大到275

//然后在显示的时候确定小数点的位置即可,就能显示出27.5度了 return i; }

//************************************************************************* // 温度数据处理函数

//************************************************************************* void data_do(uint temp_d) {

uint A2t;

A1=temp_d/100; //分出百,十,和个位 A2t=temp_d0; A2=A2t/10; A3=A2t; }

//*********************************************************************** // 主程序

//*********************************************************************** void main(void) {

uchar j;

WDT_Init(); //看门狗初始化 Clock_Init(); //时钟初始化

Port_Init(); //端口初始化,用于控制IO口输入或输出 DS18B20_Reset(); //复位D18B20 while(1) {

ds1820_start(); //启动一次转换 ds1820_read_temp(); //读取温度数值

data_do(temp_value); //处理数据,得到要显示的值 for(j=0;j<200;j++) {

Display_DS18B20(A1,A2,A3); //显示温度值 } } }

10、DS1302-12864在12864液晶中显示测试程序

/******************************************************************** //DM430-A型最开发板实时时钟DS1302测试程序,显示到12864液晶上

//显示模式为汉字模式,直接将12864插入12864接口即可,朝外,液晶位于主板外侧 //注意选择液晶的电源,位于电位器附近,可选5V或3.3V,根据液晶电压进行选择 ********************************************************************/ #include #include \

/*定义初始时间,BCD码格式,下面时间201-11-14,09:55:00,星期一*/ unsigned char time_buf[8] = {0x20,0x11,0x11,0x14,0x09,0x55,0x00,0x01};

//************************************************************************* // 初始化IO口子程序

//************************************************************************* void Port_Init() {

P4SEL = 0x00; P4DIR = 0xFF; P5SEL = 0x00;

P5DIR|= BIT0 + BIT1 + BIT5 + BIT6 + BIT7; PSB_SET; //液晶并口方式 RST_SET; //复位脚RST置高 }

//*********************************************************************** //向DS1302写入一字节数据

//*********************************************************************** void DS1302_write_byte(unsigned char addr, unsigned char d) {

unsigned char i; RESET_SET; //启动DS1302总

/*写入目标地址:addr*/ IO_OUT;

addr = addr & 0xFE; //最低位置零 for (i = 0; i < 8; i ++) { if (addr & 0x01) {

IO_SET; } else

{

IO_CLR; }

SCK_SET; SCK_CLR;

addr = addr >> 1; }

/*写入数据:d*/ IO_OUT;

for (i = 0; i < 8; i ++) {

if (d & 0x01) {

IO_SET; } else {

IO_CLR; }

SCK_SET; SCK_CLR; d = d >> 1; }

RESET_CLR; //停止DS1302总线 }

//*********************************************************************** // 从DS1302读出一字节数据

//*********************************************************************** unsigned char DS1302_read_byte(unsigned char addr) {

unsigned char i; unsigned char temp; RESET_SET; /*写入目标地址:addr*/ IO_OUT;

//启动DS1302总线

addr = addr | 0x01; //最低位置高 for (i = 0; i < 8; i ++) {

if (addr & 0x01) {

IO_SET; } else {

IO_CLR; }

SCK_SET; SCK_CLR; addr = addr >> 1; }

/*输出数据:temp*/ IO_IN;

for (i = 0; i < 8; i ++) {

temp = temp >> 1; if (IO_R) {

temp |= 0x80; } else {

temp&= 0x7F; }

SCK_SET; SCK_CLR; }

RESET_CLR; //停止DS1302总线 return temp; }

//*********************************************************************** // 向DS302写入时钟数据

//*********************************************************************** void DS1302_write_time(void) {

DS1302_write_byte(DS1302_control_add,0x00); //关闭写保护 DS1302_write_byte(DS1302_sec_add,0x80); //暂停 //DS1302_write_byte(DS1302_charger_add,0xa9); //涓流充电 DS1302_write_byte(DS1302_year_add,time_buf[1]); //年 DS1302_write_byte(DS1302_month_add,time_buf[2]); //月 DS1302_write_byte(DS1302_date_add,time_buf[3]); //日 DS1302_write_byte(DS1302_day_add,time_buf[7]); //周 DS1302_write_byte(DS1302_hr_add,time_buf[4]); //时 DS1302_write_byte(DS1302_min_add,time_buf[5]); //分 DS1302_write_byte(DS1302_sec_add,time_buf[6]); //秒 DS1302_write_byte(DS1302_day_add,time_buf[7]); //周 DS1302_write_byte(DS1302_control_add,0x80); //打开写保护

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库MSP430x14x系列单片机程序实例(7)在线全文阅读。

MSP430x14x系列单片机程序实例(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/681230.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: