基于单片机的1602电子时钟设计.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的1602电子时钟设计

基于单片机的1602电子时钟设计 一.实验目的: (1)用单片机设计基于单片机的1602电子时钟显示; (2)熟练掌握Keil软件; (3)熟练掌握Proteus软件仿真; (4)掌握单片机的I/O接口的工作原理; (5)掌握LCD显示器的原理和编程方法; (6)掌握独立式键盘的工作原理和编程方法; (7)掌握单片机下载方法; 二.实验要求 (1)可实现时钟显示 (2)可调整时间 三.实验内容 (1)画仿真图如图1 图1 (2)编写程序 (3)下载运行 (4)运行结果,分析其中的错误 四.程序 #include reg51.h #include LCD_drive.h #define uchar unsigned char #define uint unsigned int uchar year=12,mon=10,day=10,hour=12,min=00,sec=00; uchar count_10ms; sbit k7=P3^0; sbit k1=P3^2; sbit k2=P3^3; sbit k3=P3^4; sbit k4=P3^5; sbit k5=P3^6; sbit k6=P3^7; bit k1_flag=0; uchar code line1_data[] = {----}; uchar code line2_data[] = {****}; uchar disp_buf[12]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void LCD_conv(char in1,in2,in3,in4,in5,in6) { disp_buf[0]=in1/10+0x30; disp_buf[1]=in1%10+0x30; disp_buf[2]=in2/10+0x30; disp_buf[3]=in2%10+0x30; disp_buf[4]=in3/10+0x30; disp_buf[5]=in3%10+0x30; disp_buf[6]=in4/10+0x30; disp_buf[7]=in4%10+0x30; disp_buf[8]=in5/10+0x30; disp_buf[9]=in5%10+0x30; disp_buf[10]=in6/10+0x30; disp_buf[11]=in6%10+0x30; } void LCD_disp() { lcd_wcmd(0x04|0x80); lcd_wdat(disp_buf[0]); lcd_wdat(disp_buf[1]); lcd_wdat(0xb0); lcd_wdat(disp_buf[2]); lcd_wdat(disp_buf[3]); lcd_wdat(0xb0); lcd_wdat(disp_buf[4]); lcd_wdat(disp_buf[5]); lcd_wcmd(0x44|0x80); lcd_wdat(disp_buf[6]); lcd_wdat(disp_buf[7]); lcd_wdat(0x3a); lcd_wdat(disp_buf[8]); lcd_wdat(disp_buf[9]); lcd_wdat(0x3a); lcd_wdat(disp_buf[10]); lcd_wdat(disp_buf[11]); } void timer1() interrupt 3 { TH1=0xdc; TL0=0x00; count_10ms++; if(count_10ms=100) { count_10ms=0; sec++; if(sec=60) { sec=0; min++; if(min=60) { min=0; hour++; if(hour=24) { hour=0; day++; if(day=30) { day=1; mon++; if(mon=12) { mon=1; year++; } } } } } } } void keyprocess() { TR1=0; if(k2==0) { Delay_ms(10); if(k2==0) { while(!k2); year++; } } if(k3==0) { Delay_ms(10); if(k3==0) {

文档评论(0)

hai1956012 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档