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

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

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

}

//*********************************************************************** // 从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); }

//*********************************************************************** //函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字

//*********************************************************************** void DisplayCgrom(uchar addr,uchar *hz) {

LCD_write_com(addr); delay_ms(5); while(*hz != '\\0') {

LCD_write_data(*hz); hz++;

delay_ms(5); } }

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

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

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

LCD_write_com(FUN_MODE); //显示模式设置

delay_ms(5);

LCD_write_com(DISPLAY_ON); //显示开 delay_ms(5);

LCD_write_com(CLEAR_SCREEN); //清屏 delay_ms(5); }

//**************************************************************** // Display()显示测试结果

//**************************************************************** void Display(void) {

DisplayCgrom(0x81,\实时时钟演示\}

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

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

volatile uchar temp;

WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置

Port_Init(); //系统初始化,设置IO口属性

Close_LED(); //关闭LED数码管,避免显示乱码 delay_ms(100); //延时100ms

LCD_init(); //液晶参数初始化设置 LCD_clear(); //清屏

DS1302_init(); //DS1302初始化 delay_ms(10);

DS1302_write_time(); //向DS1302写初始数据,如年月和时间等 Display(); while(1) {

delay_ms(200);

DS1302_read_time(); //读DS1302数据

LCD_write_com(0x88); delay_ms(2);

temp = (time_buf[0] >> 4) + '0'; //在LCD上写要显示的数据 LCD_write_data(temp);

delay_ms(2);

temp = (time_buf[0] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[1] >> 4) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[1] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2);

LCD_write_data('-'); delay_ms(2);

temp = (time_buf[2] >> 4) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[2] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2);

LCD_write_data('-'); delay_ms(2);

temp = (time_buf[3] >> 4) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[3] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2);

LCD_write_com(0x9C); delay_ms(5);

temp = (time_buf[4] >> 4) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[4] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2);

LCD_write_data(':'); delay_ms(2);

temp = (time_buf[5] >> 4) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[5] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2);

LCD_write_data(':'); delay_ms(2);

temp = (time_buf[6] >> 4) + '0'; LCD_write_data(temp); delay_ms(2);

temp = (time_buf[6] & 0x0F) + '0'; LCD_write_data(temp); delay_ms(2); } }

11、DS1302-DS1302实时时钟在1602液晶中显示测试程序

/******************************************************************** //DM430-A型开发板实时时钟DS1302控制程序,显示年月日及时间

//显示器件为1602液晶,第一行显示年月日,第二行显示时间,星期信息未显示

//由于开发板默认没有带电池,因此断电后,时间信息会丢失,初始化时间通过time_buf设置

//如果需要在断电情况下保证走时,请买一颗电池安装在主板的电池座里,电池型号1220 //初始化时间设置数据为BCD码形式

//安装电池为保证每次上电不被初始化,请先下载含DS1302_write_time()函数的程序

//再下载不含DS1302_write_time()的程序,避免每次单片机上电被初始化,也可以通过设置函数实现

********************************************************************/ #include #include \

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

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

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

LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; //设置IO口方向为输出 LED8PORT = 0xFF; //P2口初始设置为FF

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

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