c语言程序 数字时钟的设计,数字时钟C语言设计
#include
#include
unsigned char data dis_digit;
unsigned char key_s, key_v;
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳
//0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00 共阴
unsigned char data dis_buf[6];
unsigned char data dis_index;
unsigned char hour,min,sec;
unsigned char sec100;
sbit K1 = P3^0;
sbit K2 = P3^1;
bit scan_key();
void proc_key();
void inc_sec();
void inc_min();
void inc_hour();
void display();
void delayms(unsigned char ms);
void main(void)
{
P1 = 0x00;
P2 = 0x00;
TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式
TH1 = 0xdc; // 11.0592MHZ
TH0 = 0xFC;
TL0 = 0x17;
hour = 12;
min = 00;
sec = 00;
sec100 = 0;
dis_buf[0] = dis_code[hour / 10]; // 时十位
dis_buf[1] = dis_code[hour % 10]; // 时个位
dis_buf[2] = dis_code[min / 10]; // 分十位
dis_buf[3] = dis_code[min % 10]; // 分个位
dis_buf[4] = dis_code[sec / 10]; // 秒十位
dis_buf[5] = dis_code[sec % 10]; // 秒个位
dis_digit = 0xfe;
dis_index = 0;
TCON = 0x01;
IE = 0x8a; // 使能timer0,1 中断
TR0 = 1;
TR1 = 1;
key_v = 0x03;
while(1)
{
if(scan_key())
{
delayms(10);
if(scan_key())
{
key_v = key_s;
proc_key();
}
}
}
}
bit scan_key()
{
key_s = 0x00;
key_s |= K2;
key_s <<= 1;
key_s |= K1;
return(key_s ^ key_v);
}
void proc_key()
{
EA = 0;
if((key_v & 0x01) == 0) // K1
{
inc_hour();
}
else if((key_v & 0x02) == 0) // K2
{
min++;
if(min > 59)
{
min = 0;
}
dis_buf[2] = dis_code[min / 10]; // 分十位
dis_buf[3] = dis_code[min % 10]; // 分个位
}
EA = 1;
}
void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
// 选通P2.0口数码管
// dis_buf --- 显于缓冲区基地址
{
TH0 = 0xFC;
TL0 = 0x17;
P2 = 0xff; // 先关闭所有数码管
P1 = dis_buf[dis_index]; // 显示代码传送到P1口
P2 = dis_digit; //
dis_digit = _crol_(dis_digit,1); // 位选通值左移, 下次中断时选通下一位数码管
dis_index++; //
dis_index &= 0x07; // 数码管全部扫描完一遍之后,再回到第一个开始下一次
}
void timer1() interrupt 3
{
TH1 = 0xdc; // TH1 = 0xdc 11.0592MHZ 默认12MHZ
TL1 = 0x00; // TL1 = 0
sec100++;
if(sec100 >= 100)
{
sec100 = 0;
inc_sec();
}
}
void inc_sec()
{
sec++;
if(sec > 59)
{
sec = 0;
inc_min();
}
dis_buf[4] = dis_code[sec / 10]; // 秒十位
dis_buf[5] = dis_code[sec % 10]; // 秒个位
}
void inc_min()
{
min++;
if(min > 59)
{
min = 0;
inc_hour();
}
dis_buf[2] = dis_cod
c语言程序 数字时钟的设计,数字时钟C语言设计相关推荐
- 可运行的C语言程序的拓展名,可运行的c语言程序的扩展名为什么?
可运行的c语言程序的扩展名为".exe".c语言程序经过"编译程序"编译之后,生成一个后缀为".obj"的二进制文件:然后由"连接 ...
- 收音机c语言程序,基于51单片机的数字FM调频收音机的设计(附接线图,主程序代码)...
基于51单片机的数字FM调频收音机的设计(附接线图,主程序代码)(任务书,开题报告,论文15000字) 摘要 在当今的社会时代中,信息的传输扮演着极其重要的地位.随着科学技术的不断发展与进步,人类的生 ...
- c语言0x前缀的作用,有趣的问题,C语言程序中,为什么十六进制数字以前缀0x开头呢?...
C语言允许程序员逐位操作变量,此时,最直观的数字表示方式自然是二进制.不过这样常常会让数字看起来"过长",例如十进制的 255 使用二进制表示为 11111111,因此,在C语言程 ...
- 模糊控制洗衣机c语言程序,以洗衣机模糊控制为例的教学案例设计方法
刘金琨 [摘要]为了突出智能控制教学发展需要,在教学方面需要加大对相关课程案例建设的研究.教师可以以洗衣机模糊控制为例,介绍模糊逻辑控制系统的设计步骤,并通过Matlab仿真分析来加以讲解,深化学生对 ...
- c语言程序设计基础课后习题答案,2011级C语言程序设计基础教程课后习题答案
1.C 语言课后习题习题答案详解(11 级教材)第 1 章1.1 填空题1.1.1 应用程序 ONEFUNC.C 中只有一个函数,这个函数的名称是 _main .1.1.2 一个函数由_函数头 _和_ ...
- 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...
书山有路勤为径 学海无涯苦作舟 一.思考题. 1.你如何向别人解释清楚什么是编程.什么是计算机语言? 2.什么是C语言? 二.解答题. 1.用C语言编写程序:求任意两个整数的和.如果是小数的话,要求输 ...
- 200个c语言程序(由简单到复杂),200个c语言程序(由简单到复杂)
200个C语言程序(由简单到复杂)从简单到难的200来个经典C程序csdn上的不过那里要资源分,自己下了下来,放到论坛里.有需要的童鞋可以下载学习学习.第一部分 基础篇 001 第一个C程序 002 ...
- c语言程序中复合句用什么表示,c语言程序设计(包云)c第1章概述
<c语言程序设计(包云)c第1章概述>由会员分享,可在线阅读,更多相关<c语言程序设计(包云)c第1章概述(50页珍藏版)>请在人人文库网上搜索. 1.c语言计算机编程,讲座: ...
- c语言程序设计基础教程 金艳,重庆理工大-C语言程序设计基础教程_习题答案(纪纲_金艳).doc...
习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...
- C需语言程序中的基本控制结构有哪些,C语言程序的基本控制结构1.ppt
第三讲 C语言程序的 基本控制结构,参考书 <计算机程序设计基础>第三章 <C程序设计>第四章.第五章,本讲主要内容,结构化程序设计 if 语句 switch 语句 while ...
最新文章
- 使用CruiseControl.Net全面实现持续集成
- 四大组件之 Activity_任务和返回栈
- Java的jar文件安装成windows 服务
- 存储过程 psal emp.sal%type是什么意思
- SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法
- Hadoop之zookeeper快速安装
- C#_自动化测试 (四) 自动卸载软件
- vs C4996的错误解决方法
- 自学android编程教程,安卓编程入门教程 安卓编程如何自学
- GB18030字符编码格式和点阵字库
- 不删除文字聊天的微信清理工具,快速释放空间,Python 编写,附源码
- 数据结构Java第四版pdf_数据结构与抽象:Java语言描述(原书第4版) 中文pdf完整版[131MB]...
- lumia 1520Android刷机包,诺言基亚Lumia 1520官方体系破开格提升固件释出产
- 幼儿园数学目标_幼儿园数学活动目标的制定
- 手机工商银行怎么转账_工行手机银行可以转账吗
- jar包双击打不开或者闪退的解决办法
- Fastadmin 自带的导入Excel功能
- 虚拟机无法复制文件到windows
- 定解问题(一)| 通解与特解 + 适定性 | 偏微分方程(五)
- 哪有什么岁月静好,只是有人在替你负重前行。致敬消防员、医护工作者、平凡英雄,感恩有你们。