欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

时钟程序 51单片机 时间可设定

  • 资源ID:158301822       资源大小:54.54KB        全文页数:11页
  • 资源格式: DOC        下载积分:15积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要15积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

时钟程序 51单片机 时间可设定

/* 时钟 设置按键由P2.3口输入 加1按键由P2.2口输入*/#include <reg51.h>#define u8 unsigned char#define uchar unsigned char#define u16 unsigned int#define uint unsigned intsbit SCLK=P14;sbit SDIN=P15;sbit DC=P16;sbit SCE=P17;void Wr_LCD_byte(u8 dat,u8 cmd);void Set_LCD_XY(u8 X,u8 Y);void Clr_LCD(void);void Wr_LCD_chr(u8 col,u8 row,u8 ch);void LCD_Init(void);void delayms(unsigned int m);uchar keyscan(void);unsigned char code chr= 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,/ 0 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F ,/ 1 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E ,/ 0 2 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 ,/ 1 3 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 ,/ 2 4 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 ,/ 3 5 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 ,/ 4 6 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 ,/ 5 7 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 ,/ 6 8 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 ,/ 7 9 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 ,/ 8 10 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E ,/ 9 11 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C ,/ A 12 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 ,/ B 13 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 ,/ C 14 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C ,/ D 15 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 ,/ E 16 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 ,/ F 17 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A ,/ G 18 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F ,/ H 19 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 ,/ I 20 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 ,/ J 21 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 ,/ K 22 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 ,/ L 23 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F ,/ M 24 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F ,/ N 25 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E ,/ O 26 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 ,/ P 27 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E ,/ Q 28 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 ,/ R 29 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 ,/ S 30 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 ,/ T 31 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F ,/ U 32 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F ,/ V 33 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F ,/ W 34 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 ,/ X 35 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 ,/ Y 36 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 ,/ Z 37 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 ,/ a 38 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 ,/ b 39 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 ,/ c 40 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F ,/ d 41 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 ,/ e 42 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 ,/ f 43 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C ,/ g 44 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 ,/ h 45 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 ,/ i 46 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 ,/ j 47 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 ,/ k 48 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 ,/ l 49 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 ,/ m 50 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 ,/ n 51 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 ,/ o 52 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 ,/ p 53 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC ,/ q 54 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 ,/ r 55 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 ,/ s 56 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 ,/ t 57 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C ,/ u 58 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C ,/ v 59 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C ,/ w 60 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 ,/ x 61 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C ,/ y 62 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 ,/ z 63 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 ,/ . 64 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 ,/ : 65 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 ,/ > 66 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 ,/ ! 67 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 ,/ " 68 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 ,/ # 69 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 ,/ $ 70 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 ,/ % 71 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 ,/ & 72 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 ,/ ' 73 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 ,/ ( 74 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 ,/ ) 75 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 ,/ * 76 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 ,/ + 77 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 ,/ , 78 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 ,/ - 79 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 ,/ _ 80 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 ,/ / 81 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 ,/ 82 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 ,/ 82 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 ,/ 84;/*-wr_LCD_byte:通过SPI端口向LCD5110写入数据 输入参数:dat(byte):写入的数据 cmd(0、1):指令0,数据1-*/void Wr_LCD_byte(u8 dat,u8 cmd)unsigned char i; SCE=0; DC=cmd; for(i=0;i<8;i+) if(dat&0x80)SDIN=1; elseSDIN=0; dat=dat<<1; SCLK=0; SCLK=1; DC=1; SCE=1; SDIN=1;/*-set_LCD_XY:设置光标位置输入参数:X(0-83)、Y(0-5) -*/void Set_LCD_XY(u8 X,u8 Y) Wr_LCD_byte(0x40|Y,0); Wr_LCD_byte(0x80|X,0);/*-clr_LCD: LCD5110清屏-*/void Clr_LCD(void) unsigned char c,r; Set_LCD_XY(0,0); for(r=0;r<6;r+) for(c=0;c<84;c+) Wr_LCD_byte(0x00,1); /*-wr_LCD_chr:显示8*16大小的半角字符输入函数:col(0- 9):显示位置 - 列 row(0- 5):显示位置 - 行 ch:(0-39):字符位置(位于数组chr中) -*/void Wr_LCD_chr(u8 col,u8 row,u8 ch) unsigned char i; Set_LCD_XY(col*6,row); for(i=0;i<6;i+) Wr_LCD_byte(chrch*6+i,1); /*-LCD_init: LCD5110初始化-*/void LCD_Init(void)Wr_LCD_byte(0x21,0);/初始化LCD,功能设定使用扩充指令Wr_LCD_byte(0xc8,0);/设定液晶偏置电压Wr_LCD_byte(0x20,0);/使用基本指令 Wr_LCD_byte(0x0C,0);/设定显示模式,正常显示void delayms(unsigned int m) /延时程序 unsigned int i; while(-m) for(i=0;i<372;i+);/*- 键盘扫描程序-*/uchar keyscan(void) /键盘扫描函数,使用行列反转扫描法 uchar cord_h,cord_l;/行列值中间变量 P3=0x0f; /行线输出全为0 cord_h=P3&0x0f; /读入列线值 if(cord_h!=0x0f) /先检测有无按键按下 delayms(10); /去抖 if(cord_h!=0x0f) cord_h=P3&0x0f; /读入列线值 P3=cord_h|0xf0; /输出当前列线值 cord_l=P3&0xf0; /读入行线值 return(cord_h+cord_l);/键盘最后组合码值 return(0xff); /返回该值#define SETUPCTRL 0xF7#define PLUSCTRL 0xFB#define NONE 0xFD#define MENUCTRL 0xFEuchar screen614=0; /6×14列屏幕内容数组uchar time1Counter = 0; /定时器1计数器uint dpyCounter = 0; /用于控制光标处闪烁uchar hour = 23; /小时初始化uchar minute = 59; /分钟初始化uchar second = 0; /秒初始化uchar col; uchar row = 2; /显示在第3行uchar setupFlag = 0; /设置标志sbit LED0 = P00;sbit LED1 = P01;sbit LED2 = P02;sbit LED3 = P04;sbit LED = P07;/*- 定时器1初始化子程序-*/void Init_Timer1(void)/定时50ms TMOD |= 0x10; /使用模式1,16位定时器 TH1 = (65536-50000)/256; /给定初值,定时器计数50ms溢出 TL1 = (65536-50000)%256; EA=1; /总中断打开 ET1=1; /定时器中断打开 TR1=1; /定时器开关打开/*- 定时器1中断子程序-*/void Timer1_isr(void) interrupt 3 using 2 TH1 = (65536-50000)/256; /重新赋值 TL1 = (65536-50000)%256; if (1=setupFlag) /设置时钟时 time1Counter = 0; /定时器1计数器要清零 return; time1Counter+; /定时器1计数器加1 if (20 = time1Counter) /1s更新一次time1Counter = 0; /定时器1计数器清零second+; /秒加1if (60 = second)second = 0;minute+;if (60 = minute)minute = 0;hour+;if (24 = hour)hour = 0; screenrow5 = hour/10 + 2; /更新小时显示内容 screenrow6 = hour%10 + 2; screenrow8 = minute/10 + 2; /更新分钟显示内容 screenrow9 = minute%10 + 2; screenrow11 = second/10 + 2; /更新秒显示内容 screenrow12 = second%10 + 2;/*- 外部中断0子程序-*/void External_isr(void) interrupt 0 using 1 uchar hourH; uchar hourL; uchar minuteH; uchar minuteL; uchar ctrl; LED = 0; ctrl = P2; /按键从P2口输入 switch(ctrl) case SETUPCTRL: /按下设置键 LED3 = 0; if (0 = setupFlag) setupFlag = 1; col = 4; dpyCounter = 0; col+; if (7 = col) /第7列已显示“:” col+; if (10 = col) /以完成设置 setupFlag = 0; /设置标志清零 break; case PLUSCTRL: /按下加1键 LED2 = 0; if (1=setupFlag) switch(col) /光标所在列数 case 5: /小时十位处 hour += 10; if (hour > 23) hour %= 10; break; case 6: /小时个位处 hourH = hour/10; hourL = hour%10; hourL+; if (2 = hourH) if (4=hourL) hourL = 0; else if (10=hourL) hourL = 0; hour = hourH*10 + hourL; break; case 8: /分钟十位处 minute += 10; if (minute > 59) minute %= 10; break; case 9: /分钟个位处 minuteH = minute/10; minuteL = minute%10; minuteL+; if (10=minuteL) minuteL = 0; minute = minuteH*10 + minuteL; break; default: break; break; case NONE: LED1 = 0; break; case MENUCTRL: LED0 = 0; break; default: break; screenrow5 = hour/10 + 2; /更新小时显示内容 screenrow6 = hour%10 + 2; screenrow8 = minute/10 + 2; /更新分钟显示内容 screenrow9 = minute%10 + 2; while (!(0xFF=ctrl) /等待按键释放 ctrl = P2;void main()uchar r,c;Init_Timer1(); /初始化定时器1EX0 = 1; /开外部中断0IT0 = 0; /设置低电平可引起外部中断0LCD_Init(); /LCD初始化Clr_LCD(); /LCD清屏screenrow0 = 31; /Tscreenrow1 = 46; /iscreenrow2 = 50; /mscreenrow3 = 42; /escreenrow7 = 65; /:screenrow10 = 65; /:screenrow5 = hour/10 + 2; /计算小时显示的内容 screenrow6 = hour%10 + 2; screenrow8 = minute/10 + 2; /计算分钟显示的内容 screenrow9 = minute%10 + 2;screenrow11 = second/10 + 2; /计算秒显示的内容screenrow12 = second%10 + 2;while(1)if (0=setupFlag) /不处于设置状态 for(r=0; r<6; r+) /6行 for(c=0; c<14; c+) /14列 /:闪烁 if (r=row)&&(7=c)|(10=c) /0.5秒闪烁一次 if (time1Counter < 10) Wr_LCD_chr(c,row,65); /: continue; else Wr_LCD_chr(c,row,0); /显示为空 continue; /正常显示屏幕其他内容 Wr_LCD_chr(c,r,screenrc); elsefor(r=0; r<6; r+) /6行 for(c=0; c<14; c+) /14列 dpyCounter +; if (r=row)&&(c=col) /在光标处,闪烁 if (dpyCounter<=2000) Wr_LCD_chr(col,row,screenrowcol); continue; else Wr_LCD_chr(col,row,0); /显示为空 if (dpyCounter >= 4000) dpyCounter = 0; continue; /非光标处,正常显示内容 Wr_LCD_chr(c,r,screenrc);

注意事项

本文(时钟程序 51单片机 时间可设定)为本站会员(小***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!