AVR单片机对电子时钟的设计.doc

上传人:白大夫 文档编号:3249936 上传时间:2019-08-06 格式:DOC 页数:11 大小:41.50KB
返回 下载 相关 举报
AVR单片机对电子时钟的设计.doc_第1页
第1页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《AVR单片机对电子时钟的设计.doc》由会员分享,可在线阅读,更多相关《AVR单片机对电子时钟的设计.doc(11页珍藏版)》请在三一文库上搜索。

1、AVR单片机对电子时钟的设计#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#definextal8#defineCSPA5#defineSIDPA6#defineSCLKPA7#defineSet_CS()DDRA|=(1#defineSet_SID()DDRA|=(1#defineSet_SCLK()DDRA|=(1#defineClr_CS()DDRA|=(1#defineClr_SID()DDRA|=(1#defineClr_SCLK()DDRA|=(1#defineHH2/定义

2、时为2#defineMM1/定义分为1#defineSS0/定义秒为0volatileunsignedcharTIme_h_m_s3=0,0,0;/时间的时分秒存贮单元volaTIleunsignedcharflash_sign=0x00;/=/函数声明voidDelay(uintms);/延时子程序voidSerial_W_1byte_to_LCD(ucharRS,ucharW_data);voidSerial_send_cmd(ucharsend_cmd);voidSerial_send_data(ucharsend_data);voidWrite_8bits(ucharW_bits);v

3、oidLCD_Init(void);voidSerial_send_string_to_xy(ucharrow,ucharcol,uchar*p);voidDisplay_cLOCk1(ucharrow,ucharcol,uchar*TIme);/*=功能:TIMER2溢出中断函数=*/SIGNAL(SIG_OUTPUT_COMPARE2)/_VECTOR(3)statICunsignedcharhalf_second;if(+half_second)=2)if(+Time_h_m_sSS)=60)Time_h_m_sSS=0;if(+Time_h_m_sMM)=60)Time_h_m_sMM

4、=0;if(+Time_h_m:MCU端口初始化函数说明:*/voidPort_init(void)DDRC=(1PORTC=0x00;ASSR|=(1TCCR2|=(1OCR2=63;/*函数名:Serial_send_string入口参数:*p_send_data出口参数:无建立日期:2008年05月09日修改日期:函数作用:发送字符串子函数说明:*/voidSerial_send_string(uchar*p_send_data)uchar*p_temp;p_temp=p_send_data;while(*p_temp!=0)Serial_send_data(*p_temp+);/=/*

5、函数名:Serial_send_string_to_xy入口参数:row,col,*p出口参数:无建立日期:2008年04月13日修改日期:函数作用:说明:*/voidSerial_send_string_to_xy(ucharrow,ucharcol,uchar*p)switch(row)case0:Serial_send_cmd(0x80+col);break;case1:Serial_send_cmd(0x90+col);break;case2:Serial_send_cmd(0x88+col);break;case3:Serial_send_cmd(0x98+col);break;de

6、fault:break;while(*p!=0)Serial_send_data(*p+);/写数据到RAM/*/intmain(void)PORTA=0XFF;/DDRA=0XFF;/PA口全部设为输出模式Port_init();Clr_CS();Clr_SID();Clr_SCLK();LCD_Init();Delay(10);LCD_Init();/初始化两边是关键,否则液晶上电重起将不能显示sei();/开总中断while(1)asm(“nop”);asm(“nop”);Serial_send_cmd(0x30);/基本指令集,绘图显示OFF/Serial_send_cmd(0x01)

7、;/清除显示Serial_send_string_to_xy(0,0,“现在时间:”);Display_clock1(1,3,Time_h_m_s);/*函数名:LCD_Init入口参数:无出口参数:无建立日期:2008年05月09日修改日期:函数作用:12864液晶初始化函数说明:*/voidLCD_Init(void)ucharcmd;Delay(50);cmd=0x30;/功能设置8位数据,基本指令Serial_send_cmd(cmd);Delay(20);cmd=0x0C;/显示状态ON,游标OFF,反白OFFSerial_send_cmd(cmd);/写指令Delay(20);cm

8、d=0x01;/清除显示Serial_send_cmd(cmd);/写指令Delay(20);cmd=0x02;/地址归位Serial_send_cmd(cmd);/写指令Delay(20);cmd=0x80;/设置DDRAM地址Serial_send_cmd(cmd);/写指令Delay(20);/延时/*函数名:Serial_send_cmd入口参数:cmd出口参数:无建立日期:2008年4月13日修改日期:函数作用:写一个字节指令的到12864液晶,说明:*/voidSerial_send_cmd(ucharsend_cmd)Serial_W_1byte_to_LCD(0,send_cm

9、d);/*函数名:Serial_send_data入口参数:cmd出口参数:无建立日期:2008年4月13日修改日期:函数作用:写一个字节数据到12864液晶,说明:*/voidSerial_send_data(ucharsend_data)Serial_W_1byte_to_LCD(1,send_data);名:Serial_Serial_W_1byte_to_LCD_to_LCD入口参数:RW、RS、W_data出口参数:无建立日期:2007年3月3日修改日期:函数作用:写一个字节的数据到12864液晶,包括指令和数据说 明:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶;(一

10、般RW都设为0,即只向液晶写数据,不读数据)RS=1,写入的是数据;RS=0,写入的是指令;一般模式:RW=0,RS=1;写数据RW=0,RS=0;写指令*/void Serial_W_1byte_to_LCD(uchar RS, uchar W_data)uchar H_data,L_data,S_ID = 0xf8; /11111 RWRS 0if(RS = 0)S_ID else /if(RS=1)S_ID “= 0X02;H_data = W_data;H_data /屏蔽低4位的数据L_data = W_data; /xxxx0000格式L_data = 4; /xxxx0000格式

11、L_data /屏蔽高4位的数据Set_CS();asm(”nop“);asm(”nop“);Write_8bits(S_ID); /发送S_IDasm(”nop“);Write_8bits(H_data); /发送H_dataasm(”nop“);Write_8bits(L_data); /发送L_dataasm(”nop“);Clr_CS();/*函 数 名:Write_8bits入口参数:W_bits出口参数:无建立日期:2007年3月3日修改日期:函数作用:负责串行输出8个bit位说 明:*/void Write_8bits(uchar W_bits)uchar i,Temp_data

12、;Temp_data = W_bits;for(i=0; i8; i+)if(Temp_dataClr_SID();elseSet_SID();asm(”nop“);asm(”nop“);Set_SCLK();asm(”nop“);asm(”nop“);Clr_SCLK();asm(”nop“);asm(”nop“);Temp_data = 1;Clr_SID();/*函 数 名:Delay入口参数:ms出口参数:无建立日期:2007年3月3日修改日期:函数作用:毫秒级的延时程序,当晶振为12MHz时,xtal=12;说 明:*/void Delay(uint ms)uint i;while(ms-)for(i=1;i(uint)(xtal*143-2);i+);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1