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

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

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

P4SEL = 0x00;

P4DIR = 0xFF; //数据口输出模式 P5SEL = 0x00;

P5DIR|= BIT5 + BIT6 + BIT7; //1602液晶控制口设置为输出模式 }

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

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

unsigned char i;

RESET_SET;

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

//启动DS1302总

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;

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;

//启动DS1302总线 //最低位置高

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); //打开写保护 }

//*********************************************************************** // 从DS302读出时钟数据

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

void DS1302_read_time(void) {

time_buf[1]=DS1302_read_byte(DS1302_year_add); //年 time_buf[2]=DS1302_read_byte(DS1302_month_add); //月 time_buf[3]=DS1302_read_byte(DS1302_date_add); //日 time_buf[4]=DS1302_read_byte(DS1302_hr_add); //时 time_buf[5]=DS1302_read_byte(DS1302_min_add); //分 time_buf[6]=(DS1302_read_byte(DS1302_sec_add))&0x7F; //秒 time_buf[7]=DS1302_read_byte(DS1302_day_add); //周 }

//*********************************************************************** // DS302初始化函数

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

void DS1302_init(void) {

RESET_CLR; //RESET脚置低 SCK_CLR; //SCK脚置低 RESET_OUT; //RESET脚设置为输出 SCK_OUT; //SCK脚设置为输出 }

//*********************************************************************** // 显示屏命令写入函数

//*********************************************************************** void LCD_write_com(unsigned char com) {

RS_CLR; RW_CLR; EN_SET;

DataPort = com; delay_ms(5); EN_CLR; }

//*********************************************************************** // 显示屏数据写入函数

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

void LCD_write_data(unsigned char data) {

RS_SET; RW_CLR; EN_SET;

DataPort = data; delay_ms(5); EN_CLR; }

//*********************************************************************** // 显示屏清空显示

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

void LCD_clear(void) {

LCD_write_com(0x01); delay_ms(5); }

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

// 显示屏字符串写入函数

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

void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) {

if (y == 0) {

LCD_write_com(0x80 + x); } else {

LCD_write_com(0xC0 + x); }

while (*s) {

LCD_write_data( *s); s ++; } }

//*********************************************************************** // 显示屏单字符写入函数

//*********************************************************************** void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) {

if (y == 0) {

LCD_write_com(0x80 + x); } else {

LCD_write_com(0xC0 + x); }

LCD_write_data( data); }

//*********************************************************************** // 显示屏初始化函数

//*********************************************************************** void LCD_init(void) {

LCD_write_com(0x38); //显示模式设置 delay_ms(5);

LCD_write_com(0x08); //显示关闭

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

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