版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、8位数码管显示电子时钟c51单片机程序时间:2012-09-10 13:52:26 来源: 作者:/*8位数码管显示 时间格式 055000 标示05点50分00秒S1 用于小时加1操作S2 用于小时减1操作S3 用于分钟加1操作S4 用于分钟减1操作*/#include<reg52.h>sbit KEY1=P30; /定义端口参数sbit KEY2=P31;sbit KEY3=P32;sbit KEY4=P33;sbit LED=P12; /定义指示灯参数code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
2、0x7f,0x6f; /共阴极数码管09unsigned char StrTab8; /定义缓冲区unsigned char minute=19,hour=23,second; /定义并初始化为 12:30:00void delay(unsigned int cnt) while(-cnt);/*/* 显示处理函数 */*/void Displaypro(void) StrTab0=tabhour/10; /显示小时 StrTab1=tabhour%10; StrTab2=0x40; /显示"-" StrTab3=tabminute/10; /显示分钟 StrTab4=ta
3、bminute%10; StrTab5=0x40; /显示"-" StrTab6=tabsecond/10; /显示秒 StrTab7=tabsecond%10;main() TMOD |=0x01; /定时器0 10ms inM crystal 用于计时 TH0=0xd8; /初值 TL0=0xf0; ET0=1; TR0=1; TMOD |=0x10; /定时器1用于动态扫描 TH1=0xF8; /初值 TL1=0xf0; ET1=1; TR1=1; EA =1; Displaypro(); /调用显示处理函数 while(1) if(!KEY1) /按键1去抖以及动作
4、 delay(10000); if(!KEY1) hour+; if(hour=24) hour=0; /正常时间 小时 加1 Displaypro(); if(!KEY2) /按键2去抖以及动作 delay(10000); if(!KEY2) hour-; if(hour=255) hour=23; /正常时间 小时减1 Displaypro(); if(!KEY3) /按键去抖以及动作 delay(10000); if(!KEY3) minute+; if(minute=60) minute=0; /分加1 Displaypro(); if(!KEY4) /按键去抖以及动作 delay(1
5、0000); if(!KEY4) minute-; if(minute=255) minute=59; /分减1 Displaypro(); /*/* 定时器1中断 */*/void time1_isr(void) interrupt 3 using 0 /定时器1用来动态扫描 static unsigned char num; TH1=0xF8; /重入初值 TL1=0xf0; switch (num) case 0:P2=0;P0=StrTabnum;break; /分别调用缓冲区的值进行扫描 case 1:P2=1;P0=StrTabnum;break; case 2:P2=2;P0=S
6、trTabnum;break; case 3:P2=3;P0=StrTabnum;break; case 4:P2=4;P0=StrTabnum;break; case 5:P2=5;P0=StrTabnum;break; case 6:P2=6;P0=StrTabnum;break; case 7:P2=7;P0=StrTabnum;break; default:break; num+; /扫描8次,使用8个数码管 if(num=8) num=0;/*/* 定时器0中断 */*/void tim(void) interrupt 1 using 1 static unsigned char c
7、ount; /定义内部局部变量 TH0=0xd8; /重新赋值 TL0=0xf0; count+; switch (count) case 0: case 20: case 40: case 60: case 80:Displaypro();break; /隔一定时间调用显示处理 case 50:P1=P1;break; /半秒 LED 闪烁 default:break; if (count=100) count=0; second+; /秒加1 if(second=60) second=0; minute+; /分加1 if(minute=60) minute=0; hour+; /时加1
8、if(hour=24) hour=0; 基于单片机的LCD1602控制总线模式时间:2012-09-10 13:50:39 来源: 作者:第一行显示"Welcome"第二行显示="Happy day"若要显示其他字符,请直接往数组 LCMLineOne16和LCMLineTwo16填充相应的代码。直接上图,仿真图如下:源程序如下,可以对比时序方式,理解总线的操作方法。#include<reg51.h>/#include<absacc.h>#define uchar unsigned char#define uint unsigne
9、d int #define busy 0x80uchar xdata LCMWriteCOM _at_ 0x80ff; /写指令寄存器uchar xdata LCMReadCOM _at_ 0xa0ff ; /读指令寄存器uchar xdata LCMWriteData _at_ 0xc0ff ; /写数据寄存器uchar xdata LCMReadData _at_ 0xe0ff ; /读数据寄存器uchar data LCMLineOne16="Welcome" /第一行显示的数据uchar data LCMLineTwo16="Happy day"
10、 /第二行显示的数据void Delayms(uchar ms) uchar i,j; for(i=0;i<ms;i+) for(j=0;j<57;j+) ;/写指令寄存器void LCMWriteC(uchar COMData) uchar LCMStatus; do LCMStatus=(LCMReadCOM&busy); while(LCMStatus!=0); LCMWriteCOM=COMData;/读指令寄存器uchar LCMReadC()uchar LCMStatus; do LCMStatus=(LCMReadCOM&busy); while(LC
11、MStatus!=0); LCMStatus=LCMReadCOM; return(LCMStatus);/读数据寄存器uchar LCMReadD(uchar addr)uchar LCMStatus; do LCMStatus=(LCMReadCOM&busy); while(LCMStatus!=0); LCMWriteC(0x80+addr); LCMStatus=LCMReadData; return(LCMStatus);/写数据寄存器带地址void LCMWriteDAdd(uchar addr,uchar LCMData)uchar LCMStatus; do LCMS
12、tatus=(LCMReadCOM&busy); while(LCMStatus!=0); LCMWriteC(0x80+addr); LCMWriteData=LCMData;/写数据寄存器无地址void LCMWriteD(uchar LCMData)uchar LCMStatus; do LCMStatus=(LCMReadCOM&busy); while(LCMStatus!=0); LCMWriteData=LCMData;/初始化void LCMInit(void) Delayms(15); LCMWriteCOM=0x38; Delayms(5); LCMWriteCOM=0x38; Delayms(5); LCMWriteCOM=0x38; Delayms(5); LCMWriteC(0x38); LCMWriteC(0x08); LCMWriteC(0x01); LCMWriteC(0x06); LC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东力明科技职业学院单招综合素质考试模拟试卷(研优卷)附答案详解
- 2024年四川广元利州职业学院单招职业技能考试题库及参考答案详解一套
- 2026年青岛藏马山职业学院高职单招职业技能考试题库附参考答案详解(B卷)
- 2024年太行装备制造学院高职单招职业技能考试模拟试卷附答案详解【培优B卷】
- 2025年承德应用技术大学专科高职单招职业技能考试题库及一套完整答案详解
- 2027年唐河职业学院高职单招职业适应性测试考试模拟试卷含答案详解【A卷】
- 2025年九江职业技术学院高职单招职业技能考试模拟试卷及完整答案详解【历年真题】
- 2026年四川职业技术学院高职单招职业技能考试模拟试卷【综合题】附答案详解
- 2024年安徽江淮职业学院高职单招职业技能考试题库附完整答案详解【名师系列】
- 2026年湘宁职业学院高职单招职业技能考试题库及参考答案详解(精练)
- 2025年新疆生产建设兵团兴新职业技术学院辅导员招聘笔试试题附答案
- T∕CNCIA 01043-2025 粉末涂装涂层质量技术要求 农林及工程机械
- 更年期综合征自我管理专家共识2025解读
- DB3211∕T 1078-2024 居民小区邻长制自治团队工作规范
- 工业产品生产、销售单位质量安全总监、安全员培训考核题题库及答案
- 内河造船厂可行性研究报告
- 职业规划及心态培训课件
- 机电安装教学课件
- 2025年中考数学总复习《二次函数与反比例函数》专项检测卷(附答案)
- 婚前教育手册
- DL∕T 397-2010 电力地理信息系统图形符号分类与代码
评论
0/150
提交评论