




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、8位数码管显示电子时钟c51单片机程序时间:2012-09-10 13:52:26 来源: 作者:/*8位数码管显示 时间格式 055000 标示05点50分00秒s1 用于小时加1操作s2 用于小时减1操作s3 用于分钟加1操作s4 用于分钟减1操作*/#includesbit 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,0x7f,0x6f; /共阴极
2、数码管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=tabminute%10; strtab5=0x40; /
3、显示- 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去抖以及动作 delay(10000); if(!key1) hour+; if(hour
4、=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(10000); if(!key4) minute-; if(minute=255
5、) 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=strtabnum;break; case 3:p2=3;p0=strtabnu
6、m;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 count; /定义内部局部变量 th0=0xd8; /重新赋值 tl0=0xf
7、0; 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 if(hour=24) hour=0; 基于单片机的lcd1602控制总线模式
8、时间:2012-09-10 13:50:39 来源: 作者:第一行显示welcome;第二行显示=happy day;若要显示其他字符,请直接往数组 lcmlineone16和lcmlinetwo16填充相应的代码。直接上图,仿真图如下:源程序如下,可以对比时序方式,理解总线的操作方法。#include/#include#define uchar unsigned char#define uint unsigned int #define busy 0x80uchar xdata lcmwritecom _at_ 0x80ff; /写指令寄存器uchar xdata lcmreadcom _a
9、t_ 0xa0ff ; /读指令寄存器uchar xdata lcmwritedata _at_ 0xc0ff ; /写数据寄存器uchar xdata lcmreaddata _at_ 0xe0ff ; /读数据寄存器uchar data lcmlineone16=welcome; /第一行显示的数据uchar data lcmlinetwo16=happy day; /第二行显示的数据void delayms(uchar ms) uchar i,j; for(i=0;ims;i+) for(j=0;j57;j+) ;/写指令寄存器void lcmwritec(uchar comdata)
10、uchar lcmstatus; do lcmstatus=(lcmreadcom&busy); while(lcmstatus!=0); lcmwritecom=comdata;/读指令寄存器uchar lcmreadc()uchar lcmstatus; do lcmstatus=(lcmreadcom&busy); while(lcmstatus!=0); lcmstatus=lcmreadcom; return(lcmstatus);/读数据寄存器uchar lcmreadd(uchar addr)uchar lcmstatus; do lcmstatus=(lcmreadcom&bu
11、sy); while(lcmstatus!=0); lcmwritec(0x80+addr); lcmstatus=lcmreaddata; return(lcmstatus);/写数据寄存器带地址void lcmwritedadd(uchar addr,uchar lcmdata)uchar lcmstatus; do lcmstatus=(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); lcmwri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度河北省护师类之护师(初级)综合练习试卷A卷附答案
- 2025江苏扬州宝应县“乡村振兴青年人才”招聘67人笔试模拟试题及答案详解一套
- 2024年度河北省护师类之妇产护理主管护师考前自测题及答案
- 2025广西来宾市招聘乡村振兴专员221人笔试备考题库及完整答案详解1套
- 山东省济宁市2024-2025学年高三上学期1月期末质量检测练习物理试卷
- 江苏省无锡市惠山区(锡山高级中学锡西分校)2024-2025学年高一下学期期中物理试题(春卷)(解析版)
- 河南省信阳市2024-2025学年高一下学期期中教学质量检测物理试卷(解析版)
- 山东省枣庄市2023-2024学年高二下学期期中质量检测数学试题(解析版)
- 适合不同肤质的化妆品
- 淡蓝国潮故事春节团圆梦
- 2025年新高考2卷(新课标Ⅱ卷)英语试卷
- 制造企业加班管理制度
- 护理试卷试题及答案
- 2025年中考物理压轴题分类汇编:单选题(功、能与简单机械综合53题)原卷版+解析
- 通风维修质保合同协议
- 风景园林设计报告
- DB31/T 1367-2022养老机构服务质量监测与评价规范
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 人教版高一下学期期末考试数学试卷与答案解析(共五套)
- MOOC 思辨式英文写作-南开大学 中国大学慕课答案
- 国家开放大学电大本科《管理英语4》期末试题题库及答案(试卷号:1389)
评论
0/150
提交评论