苏嵌学习日志12 07.20
学习日志 姓名 :刘易中 日期 :2018/7/20
今日学习任务 |
编写一个基于单片机的数字时钟,并用6位数码管显示,且可以调节时分秒 |
今日任务完成情况 |
完成编写 |
今日开发中出现的问题汇总 |
有一些变量数组定义有误 对于延时时长的把控 |
今日未解决问题 |
6位数码管一直有些闪烁,秒表跳得略慢 |
今日开发收获 |
怎样显示6位数码管 |
自我评价 |
自己独立编写程序还是有困难,上网参考了很多程序自己整合了一下基本完成了任务,但很多细节或者深入的问题还是不太清楚。 |
其他 |
无 |
sbit SEG1 = P0^0; //显示1
sbit SEG2 = P0^1; //显示2
sbit SEG3 = P0^2; //显示3
sbit SEG4 = P0^3; //显示4
sbit SEG5 = P0^4; //显示5
sbit SEG6 = P0^5; //显示6
sbit DUAN=P2^6;
sbit WEI=P2^7;
unsigned char code tab[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管
uchar Display_Digit[20];
unsigned int count;//秒计时
//-------时间--------------
uchar shi=0,fen=0,miao=0;// 时分秒
//-------时间--------------
uchar set;
uchar flag; //模式 0 1 2 3
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=65;y>0;y--);
}
void DIS_SEG(void)
{
Display_Digit[0]=shi%100/10; //时
Display_Digit[1]=shi%10; //时
Display_Digit[2]=fen%100/10; //分
Display_Digit[3]=fen%10; //分
Display_Digit[4]=miao%100/10; //秒
Display_Digit[5]=miao%10; //秒
DUAN=1;
P0=tab[Display_Digit[0]]; // 数码管显示负数 或正的百位
DUAN=0;
delay(1);
WEI=1;
P0=0xfe; //片选数码管
delay(3);
P0=0xff; //关闭数码管
WEI=0;
DUAN=1;
P0=tab[Display_Digit[1]]+0x80; //十位
DUAN=0;
delay(1);
WEI=1;
P0=0xfd;
delay(3);
P0=0xff;
WEI=0;
DUAN=1;
P0=tab[Display_Digit[2]]; //个位和小数点
DUAN=0;
delay(1);
WEI=1;
P0=0xfb;
delay(3);
P0=0xff;
WEI=0;
DUAN=1;
P0=tab[Display_Digit[3]]+0x80; //小数位
DUAN=0;
delay(1);
WEI=1;
P0=0xf7;
delay(3);
P0=0xff;
WEI=0;
DUAN=1;
P0=tab[Display_Digit[4]];
DUAN=0;
delay(1);
WEI=1;
P0=0xEF;
delay(3);
P0=0xff;
WEI=0;
DUAN=1;
P0=tab[Display_Digit[5]];
DUAN=0;
delay(1);
WEI=1;
P0=0xDF;
delay(3);
P0=0xff;
WEI=0;
}
void S2_ADD(void)
{
if(flag==1)
{
shi++;
if(shi>23)
{
shi=23;
} //最大值23
}
if(flag==2) //
{
fen++;
if(fen>59)
{
fen=59;
} //最大值59
}
if(flag==3)
{
miao++;
if(miao>59)
{
miao=59;
} //最大值59
}
}
void S3_SUB(void)
{ if(flag==1)
{
if(shi<1)
{
shi=1;
}
shi--; //最小减到0
}
if(flag==2)
{
if(fen<1)
{
fen=1;
}
fen--; //最小减到0
}
if(flag==3)
{
if(miao<1)
{
miao=1;
}
miao--; //最小减到0
}
}
void KEY_SCAN(void) //键盘扫描
{
if(S1==0)//切换 设置
{ delay(10);
if(S1==0)
{
while(!S1)
if(set==0)
{
set=1;TR1=0;EA=0;
}
else
{
set=0;
TR1=1;
EA=1;
}//设置时间,退出切换
}
}
if(S2==0) //加
{
delay(10); //延时去抖动
S2_ADD();
//加
while(!S2){;}
} //等待按键释放
if(S3==0) //减
{
delay(10); //延时去抖动
S3_SUB(); // 减
while(!S3){;} //等待按键释放
}
if(S4==0)//切换 设置
{
delay(10);
if(S4==0)
{ flag++;
TR1=0;
EA=0;
if(flag>3)
{
flag=1;
} //在 1 2 3中切换
while(!S4){;}
}
}
}
//--------------key---------------------------------------
int main()
{
P0=0;
TMOD=0x10; //定时器1方式2
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //开启定时器,
while(1)
{
KEY_SCAN();//键盘扫描
DIS_SEG(); //数码管显示
}
return 0;
}
//定时器1
void timer1_() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
if(count>20)
{
count=0;
miao++;
if(miao==60) //秒
{
miao=0;
fen++;
if(fen==60) //分
{
fen=0;
shi++;
if(shi==24) //时
{
shi=0;
}
}
}
}
}
苏嵌学习日志12 07.20相关推荐
- 苏嵌学习日志08 07.16
学习日志 刘易中 07.16 今日学习任务 C51单片机的基本常识.LED灯.蜂鸣器.普通按键.矩阵按键 今日任务完成情况 复习了C51单片机的理论知识,介绍了LED灯.蜂鸣器.按键的简单编程和仿真 ...
- 苏嵌学习日志03 07.13
学习日志 姓名:刘易中 日期:2018/07/13 今日学习任务 结构体.结构体和链表.内存管理.关键字union.enum.typedef等. 今日任务完成情况 (详细说明本 ...
- 苏嵌学习日志06 07.14
本文参考自: 原文地址 姓名:刘易中 日期:7.14 1. 题目:通过编程实现,统计1~n有多少个9 提示:n通过参数传入 #include<stdio.h> int ma ...
- Python学习日志12 - 办公自动化
Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志12课 - 办公自动 ...
- 苏嵌//张朋//2018.07.13
苏嵌 ...
- 苏嵌//张朋//2018.07.23
苏嵌 ...
- //苏嵌//张朋//2018.07.11
苏嵌 ...
- 苏嵌//张朋//2018.07.16
苏嵌 ...
- 分享Silverlight/WPF/Windows Phone一周学习导读(12月20日-12月26日)
上周圣诞节,Silverlight社区有些冷清,没有太多新鲜的事情.总结上周的Silverlight,WPF和Windows Phone的学习文章. 本周Silverlight学习资源更新: 解决Si ...
最新文章
- 可视化生信分析利器 Galaxy 之 Docker 开发
- java公寓管理系统设计与实现_学生公寓(宿舍)管理系统的设计与实现(论文范文, jspjava).docx_蚂蚁文库...
- 暂停停止继续播放 0201 winform
- 【转】Java和C++的区别有哪些?
- RecycleView的网格样式
- Golang--defer的mi魂汤
- 没有算法资源,产品经理如何从0到1搭建推荐系统?
- 【Java方法】从方法中返回多个值
- vim的ex模式介绍
- 分数加减乘除混合运算带答案_分数加减乘除混合运算专项训练
- c语言中char ch和getchar()是什么意思?
- YOLOv3网络结构细致解析
- 深圳夫妻随迁入户办理详解
- 梦幻西游唯美版3D模型展示
- pandas美国人口分析实例
- 寒冬,是修炼内功的最好机会
- 微信小程序-云函数获取用户openid
- ROCm 5.4.3 在 ubuntu 20.04 上安装并运行示例
- 有关1793年中英第一次正式接触的几本书
- 网神防火墙证书失效处理步骤
热门文章
- 国产化半实物仿真测试工具——Etest
- JavaScript中的参数传递
- Android高工:细说 Android 多线程,211本硕如何通过字节跳动、百度、美团Android面试
- pip:ffi.h: No such file or directory“
- 腾讯音乐 知乎 微信公众账户 搜狗
- 轩辕Linux开放实验室
- [转]多媒体封装格式详解---MP4
- pr值高的域名对网站有什么价值?
- F(w)的模是偶函数,相位角是奇函数
- 假设一个录像厅有0,1,2三种不同的录像片可由观众选择放映。录像厅的放映规则为: 1)任何时刻最多只能放映一种录像片,正在放映的录像片是自动循环放映的。最后一个观众主动离开时结束当前录像片的放映。