资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
硬件连接图源程序如下:/主程序/*功能:1、KEY1循环选择设置时间模式和设置闹钟模式。 选择设置时间模式时P2.3口灯亮,选择设置闹 钟模式时P2.7口的灯亮。KEY2按下退出模式选 择,同时进入时间/闹钟设置,按KEY1小时位加 ,按KEY2分钟位加。 2、KEY3按下退出时间/闹钟设置,同时显示温度, 循环按KEY3可切换温度与时间的显示。 3、未进入设置模式状态时,KEY2可循环选择闹钟 的开启和关闭。注:在闹钟设置状态下,时钟并没有停止,是不停的走动的。且在时间走动显示过程中,小时和分钟之间的分隔符号每秒闪烁次。小时进制。*/#includemsp430x14x.h#includelcd1602.h/=DS18B20端口=#define OUT_DS18B20_0 P6OUT &=BIT7 /输出#define OUT_DS18B20_1 P6OUT |= BIT7 /输出#define DS18B20_IN P6DIR &=BIT7 /方向设置为输入#define DS18B20_OUT P6DIR |= BIT7 /方向设置为输出/=DS18B20寄存器指令=#define DS18B20_READ_ROM 0x33#define DS18B20_MATCH_ROM 0X55#define DS18B20_SKIP_ROM 0XCC#define DS18B20_SEARCH_ROM 0XF0#define DS18B20_ALARM_SEARCH_ROM 0XEC#define DS18B20_WRITE_RAM 0X40#define DS18B20_READ_RAM 0XBE#define DS18B20_COPY_RAM 0X48 #define DS18B20_CONVERT_TEM 0X44#define DS18B20_EECALL_EEPROM 0XB8#define DS18B20_READ_POWER_SUPPLY 0XB4/=DS18B20相关变量=char temp_data2=0x00,0x00;char dispaly32;/char p_key1=255;char n_key1=255;char p_key2=255;char n_key2=255;char p_key3=255;char n_key3=255;char count1=0;char count2=0;char mode=0;#define push_key1 1#define push_key2 2#define push_key3 3#define key1_in (P1IN&BIT0)#define key2_in (P1IN&BIT1)#define key3_in (P5IN&BIT0)#define key_buffsize 8char key_buffkey_buffsize;char key_indexW=0;char key_indexR=0;char key_count=0;void key_inbuff(char key);char getkey();void scan_io();void delay_ms(unsigned dly) int i,j; for(i=0;idly;i+) for(j=0;j1000;j+);/初始化#define led1_1 P2OUT |=BIT3;#define led1_0 P2OUT &=BIT3;#define led2_1 P2OUT |=BIT7;#define led2_0 P2OUT &=BIT7;#define led3_1 P6OUT |=BIT1;#define led3_0 P6OUT &=BIT1;#define led4_1 P6OUT |=BIT2;#define led4_0 P6OUT &=BIT2;#define Beep_0 P6OUT &=BIT3;#define Beep_1 P6OUT |=BIT3;char hour=0;char min=0;char sec=0;char CLKhour=0;char CLKmin=0;char clkmode=0;char dispmode=0;unsigned int time=0;void init_sysclk() unsigned char i; BCSCTL1 &=XT2OFF; do IFG1 &=OFIFG; for(i=0;i0xee;i+); while(IFG1&OFIFG); BCSCTL2 |=SELM_2;/MCLK 8M DS18B20的转换需要该时钟频率 BCSCTL2 |=SELS;/SMCLK 8Mvoid init_TB() TBCTL=TBCLR; TBCTL |=TBSSEL_2+MC_1+ID_3;/1M TBCCTL0=CCIE; TBCCR0=1000; /1 ms intvoid io_set() P6DIR |=BIT1+BIT2+BIT3; P2DIR |=BIT3+BIT7; P1DIR &=(BIT0+BIT1); P5DIR &=BIT0;void display() P4OUT=0X80; order(); if(hour=12) write_char(p); write_char(m); write_char( ); lcd1602_disp_byte(hour); if(count2=0) write_char(:); if(count2=1) write_char( ); lcd1602_disp_byte(min); lcd1602_disp_space();void displayCLK() P4OUT=0X80; order(); if(CLKhour=12) write_char(p); write_char(m); write_char( ); lcd1602_disp_byte(CLKhour); write_char(:); lcd1602_disp_byte(CLKmin); lcd1602_disp_space();/void key_inbuff(char key) /键盘部分程序 if(key_count=key_buffsize)return; _DINT(); key_count+; key_buffkey_indexW=key; if(+key_indexW=key_buffsize)key_indexW=0; _EINT();char getkey() char key; if(key_count=0)return(0); _DINT(); key_count-; key=key_buffkey_indexR; if(+key_indexR=key_buffsize)key_indexR=0; _EINT(); return(key);void scan_io() p_key1=n_key1; n_key1=key1_in; p_key2=n_key2; n_key2=key2_in; p_key3=n_key3; n_key3=key3_in; if(p_key1=0)&(n_key1!=0)key_inbuff(push_key1); if(p_key2=0)&(n_key2!=0)key_inbuff(push_key2); if(p_key3=0)&(n_key3!=0)key_inbuff(push_key3);#pragma vector=WDT_VECTOR_interrupt void WDT_ISR(void) scan_io();/=void DS18B20_IO_set(void) P6SEL&=0x7f; /=DS18B20延时= void DS1820_delay(int i)while(i-);/=长延时=void Delay(int s)unsigned int i,j;for(i=0; is; i+);for(j=0; js; j+);/=
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号