汕头市企业网站建设教程,网站做适配多少钱,wordpress评论开启,图片展示网站php源码一、系统方案 上电初始化完成系统初始化#xff0c;液晶滚动显示北京、莫斯科、东京、伦敦、巴黎、纽约等六个城市的标准时间#xff0c;显示的内容包括地区名及相应地区的年、月、日、星期、时、分、秒。 使用K1按键控制滚动显示或稳定显示某个地区的时间。 使用K3、K4、K5按…一、系统方案 上电初始化完成系统初始化液晶滚动显示北京、莫斯科、东京、伦敦、巴黎、纽约等六个城市的标准时间显示的内容包括地区名及相应地区的年、月、日、星期、时、分、秒。 使用K1按键控制滚动显示或稳定显示某个地区的时间。 使用K3、K4、K5按键可进行时间和日期的设定。在进行年、月、日、时、分、秒的调整时被选中的调节对象能闪烁显示。 二、硬件设计 原理图如下 三、单片机软件设计 1、首先是系统初始化 unsigned char set_mode0; short time_offset0; unsigned char last_display_flag; unsigned char i 0,set_obj0; CLI(); //disable all interrupts PORTA 0xFF; DDRA 0x00;//输入 PORTB 0xFF;//低电平 DDRB 0x00;//输入 PORTC 0xFF;//低电平 DDRC 0xFF;//输出 PORTE 0xFF; DDRE 0xff;//输出 PORTD 0xff; DDRD 0xFF;//输出 PORTD 0xff; PORTF 0xFF; DDRF 0xFF;//输出 PORTG 0xFF; DDRG 0xFF;//输出
LCD12864_Init();XDIV 0x00; //xtal divider
XMCRA 0x00; //external memory
MCUCR 0x00;
TCCR0 (1CS02)|(1CS01);//T/C0工作于定时方式系统时钟256分频
TCNT0 0x00; //计数初值
TIMSK 0x11; //timer interrupt sources
SEI(); //使能全局中断 //initial_ds1302();2、液晶显示程序
void SendCommand(unsigned char command) { CheckState(); LGM12864_CLR_RS; LGM12864_CLR_RW; LCDa_DO command; delay_nus(2); LGM12864_SET_EN; delay_nus(2); LGM12864_CLR_EN; }
unsigned char LCD12864_RecData() { unsigned char temp; CheckState(); LGM12864_SET_RS; LGM12864_SET_RW; LGM12864_SET_EN; tempLCDa_DI; LGM12864_CLR_EN;
return (temp);} 3、按键程序 if((PINA0x01) 0x00) { delay_nms(50); while((PINA0x01) 0x00); work_mode; if(work_mode2) { work_mode 0; } } else if((PINA0x02) 0x00) { delay_nms(50); while((PINA0x02) 0x00); display_flag; if(display_flag7) { display_flag0; } } else if((PINA0x04) 0x00) { delay_nms(50); while((PINA0x04) 0x00); work_mode2; display_flag1; set_obj; if(set_obj8) { //work_mode0; set_obj0; initial_ds1302(); } } else if((PINA0x08) 0x00) { delay_nms(50); while((PINA0x08) 0x00); set_mode; if(set_mode2) { set_mode0; } } 4、核心算法程序 if((display_flag ! last_display_flag)||(work_mode0x02)||(work_mode0x01)) { last_display_flag display_flag; if(display_flag0) { LCD12864_Show_16_16(3,0,Title_Font_Arrary[0]); LCD12864_Show_16_16(4,0,Title_Font_Arrary[1]); LCD12864_Show_16_16(5,0,Title_Font_Arrary[2]); } else { LCD12864_Show_16_16(3,0,Title_Font_Arrary[3(display_flag-1)*2]); LCD12864_Show_16_16(4,0,Title_Font_Arrary[3(display_flag-1)*21]); LCD12864_Show_16_16(5,0,Title_Font_Arrary[13]); } ds1302_dec_data.second H_D(ds1302_data.second); ds1302_dec_data.minute H_D(ds1302_data.minute); ds1302_dec_data.hour H_D(ds1302_data.hour)time_offset; ds1302_dec_data.week H_D(ds1302_data.week); ds1302_dec_data.day H_D(ds1302_data.day); ds1302_dec_data.month H_D(ds1302_data.month); ds1302_dec_data.year H_D(ds1302_data.year); LCD12864_Show_8_16(0,1,Number_Font_Arrary[2]);LCD12864_Show_8_16(1,1,Number_Font_Arrary[0]);for(i0;i3;i){LCD12864_Show_8_16(2i*3,1,Number_Font_Arrary[(*(ds1302_dec_data.yeari))/10%10]);LCD12864_Show_8_16(3i*3,1,Number_Font_Arrary[(*(ds1302_dec_data.yeari))%10]);if(i!2)LCD12864_Show_8_16(4i*3,1,TIME_Font_Arrary[0]);}for(i0;i3;i){LCD12864_Show_8_16(0i*3,2,Number_Font_Arrary[(*(ds1302_dec_data.houri))/10%10]);LCD12864_Show_8_16(1i*3,2,Number_Font_Arrary[(*(ds1302_dec_data.houri))%10]);if(i!2)LCD12864_Show_8_16(2i*3,2,TIME_Font_Arrary[0]);}LCD12864_Show_8_16(0,3,Number_Font_Arrary[ds1302_dec_data.week/10%10]);LCD12864_Show_8_16(1,3,Number_Font_Arrary[ds1302_dec_data.week%10]);if(set_obj0){delay_nms(200);if(set_obj0x03){LCD12864_Show_Anti_White_8_16(2(set_obj-1)*3,1,Number_Font_Arrary[(*((unsigned char*)ds1302_dec_data.yearset_obj-1))/10%10]); LCD12864_Show_Anti_White_8_16(3(set_obj-1)*3,1,Number_Font_Arrary[(*((unsigned char*)ds1302_dec_data.yearset_obj-1))%10]); }else if(set_obj0x04) {LCD12864_Show_Anti_White_8_16(0,3,Number_Font_Arrary[ds1302_dec_data.week/10%10]); LCD12864_Show_Anti_White_8_16(1,3,Number_Font_Arrary[ds1302_dec_data.week%10]); }else if(set_obj0x07){LCD12864_Show_Anti_White_8_16(0(set_obj-5)*3,2,Number_Font_Arrary[(*((unsigned char*)ds1302_dec_data.yearset_obj-1))/10%10]); LCD12864_Show_Anti_White_8_16(1(set_obj-5)*3,2,Number_Font_Arrary[(*((unsigned char*)ds1302_dec_data.yearset_obj-1))%10]); }}}//}四、proteus仿真设计 Proteus软件是一款应用比较广泛的工具它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况这样就可以通过软件仿真来验证我们设计的方案有没有问题如果有问题可以重新选择器件连接器件直到达到我们设定的目的避免我们搭建实物的时候如果当初选择的方案有问题我们器件都已经焊接好了再去卸载下去再去焊接新的方案的器件测试这样会浪费人力和物力也给开发者带来一定困惑Proteus仿真软件就很好的解决这个问题我们在设计之初就使用该软件进行模拟仿真测试选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸焊接实物调试最终完成本设计的作品。