教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

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

来源:网络收集 时间:2026-09-04
导读: P4SEL = 0x00; P4DIR = 0xFF; //数据口输出模式 P5SEL = 0x00; P5DIR|= BIT5 + BIT6 + BIT7; //1602液晶控制口设置为输出模式 } //*********************************************************************** //向D

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_wri …… 此处隐藏:2582字,全部文档内容请下载后查看。喜欢就下载吧 ……

MSP430x14x系列单片机程序实例(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/436083.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)