四位共阳极数码管显示函数_求各位大神指正,四位一体共阳极数码管数字钟程序,仿真能运行,实物就只显8个8,不动...
//采用8位数码管动态显示程序
//使用AT89C51单片机,12MHz晶振,P0输出字段码,P2口输出位选码
//用共阳极LED数码管,key0为调时分位选择键,key1为加1键,key2为减1键,key3为确定键
#include "reg51.h"
//包含头文件
#define char unsigned char
//定义无符号字符型
char code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//共阳极LED数码管"0~9","-"的字段码
char code scan_con[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//位选择码
char data dis[8]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};
//显示缓冲区,时、分、秒初始为0,0x0b为"-"的编码
char data timedata[3]={0x00,0x00,0x00};
//分别为秒、分和小时的值
char data ms50=0x00,con=0x00,con1=0x00,con2=0x00;
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit key3=P1^3;
//定义四个按键
//1ms延时函数
delay1ms(int t)
{
int i,j;
for (i=0;i
{
for(j=0;j<120;j++);
}
}
//按键处理函数
keyscan()
{
EA=0;
//关总中断
if (key0==0) //判断第一个按键是否按下
{
delay1ms(10);
//按键消抖
while (key0==0);
//再次判断按键是否按下
con++;
TR0=0;
ET0=0;
//关定时/计数器,关T0中断
if (con>=3)
{
con=0;
TR0=1;
ET0=1;
}
}
if (con!=0)
{
if (key1==0)
//如果第二个按键按下
{
delay1ms(10);
while (key1==0);
timedata[con]++;
//加一功能
if (con==2)
con1=24;
else con1=60;
if (timedata[con]>=con1)
{timedata[con]=0;}
}
}
if (con!=0)
{
if (key2==0)
//如果第三个按键按下
{
delay1ms(10);
while (key2==0);
timedata[con]--;
//减一功能
if (con==2)
con2=23;
else con2=59;
if (timedata[con]<=0)
{
timedata[con]=con2;
}
}
}
if(key3==0)
//如果第四个按键按下
{
delay1ms(10);
while(key3==0);
EA=1;
TR0=1;
ET0=1;
}
EA=1;
//开总中断
}
//数码管显示函数
scan()
{
char k;
dis[0]=timedata[0]%10;
dis[1]=timedata[0]/10;
dis[3]=timedata[1]%10;
dis[4]=timedata[1]/10;
dis[6]=timedata[2]%10;
dis[7]=timedata[2]/10;
for (k=0;k<8;k++)
{
P0=dis_7[dis[k]];
P2=scan_con[k];
delay1ms(1);
P2=0x00;
}
}
//主函数
main()
{
TH0=0x3c;
TL0=0xb0;
TMOD=0x01;
//选择工作方式1
ET0=1;
TR0=1;
EA=1;
while (1)
{
scan();
//调用数码管显示scan()子函数
keyscan();
//调用按键处理keyscan()子函数
}
}
//定时器/计数器T0中断服务函数
void time_intt0(void) interrupt 1
{
ET0=0;
TR0=0;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ms50++;
if (ms50==20)
{
ms50=0x00;
timedata[0]++;
if (timedata[0]==60)
{
timedata[0]=0;
timedata[1]++;
if (timedata[1]==60)
{
timedata[1]=0;
timedata[2]++;
if (timedata[2]==24)
{
timedata[2]=0;
}
}
}
}
ET0=1;
//开T0中断
}
2020-1-4 14:23 上传
protues仿真图,实物加了9012pnp型的三极管驱动数码管的位选。
四位共阳极数码管显示函数_求各位大神指正,四位一体共阳极数码管数字钟程序,仿真能运行,实物就只显8个8,不动...相关推荐
- aoc显示器开机显示计算机,_求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面_...
网友求助:_求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面_ 问题求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面 ...
- 四位共阳极数码管显示函数_新手求助四位共阳数码管显示函数
#include #include "DS1302.H" sbit K_S = P1^0; //显示模式sbit K_M = P1^1; //修改sbit K_I = ...
- 四位共阳极数码管显示函数_【项目8-任务10-小组13】利用四位数码管实现动态扫描显示...
学习任务 1.四位数码管的电路结构与显示原理 (什么是位选.什么是段选.共阴与共阳的区别.显示4位数字,需要多少条口线?显示n位数字呢?) 2.Arduino直接连接四位数码管实现四位阿拉伯数字显示 ...
- 四位共阳极数码管显示函数_数码管模块.doc
数码管模块 数码管 1.概 述 数码管模块采用四位共阳极数码管,用于显示数字和少数特殊字符.可以在机器人项目中使用该模块,用于显示速度.时间.分数.温度.距离等传感器的值.同时,Makeblock提供 ...
- 四位共阳极数码管显示函数_初学者,求助!!设计一个4位LED数码管动态扫描显示电路,用...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; ...
- java 安卓蓝牙程序_求Java大神帮忙,简单修改下安卓蓝牙串口输出程序代码!!急...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 附上蓝牙串口通讯代码, package com.test.BTClient; import java.io.File; import java.io.Fi ...
- 2个JAVA程序能放在一起吗_求JAVA大神把2程序功能组合在一起
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下程序为 图片旋转功能 import java.awt.*; import java.awt.event.*; import java.awt.imag ...
- java大神请出来_求java大神,请分析以下代码,写出执行结果,并解释每行结果输出的原因。...
求java大神,请分析以下代码,写出执行结果,并解释每行结果输出的原因.classPlate{publicPlate(){System.out.println("inPlateconstru ...
- js访问对方手机文件夹_求JS大神帮我写个利用JS来实现手机端和PC端访问自动选择样式文件代码...
展开全部 现在比较流行的办法是 一个网站2套代码,一套是手机一套pc, 在网站首页开e68a84e8a2ad3231313335323631343130323136353331333363353735 ...
- 用java编写圆锥_求java大神帮忙 求大神帮助!Java
导航:网站首页 > 求java大神帮忙 求大神帮助!Java 求java大神帮忙 求大神帮助!Java 相关问题: 匿名网友: 普通类 public class CircularA { //求圆 ...
最新文章
- linux 下的dd,Linux中的dd命令
- Python帮你识破双11的套路
- 将COM+ Events进行到底[转]
- linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例
- 单调栈解木板倒水问题
- Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载
- 线性同余法[纯理论]
- ROS 教程——从入门到入土
- yytext显示html并编辑,YYText的使用
- 手机网页 弹窗layerUI
- C语言实现64格棋盘,在第1个方格放1粒小麦、第2个方格放2粒、第3个方格放4粒小麦,第4个方格放8粒小麦、计算出每个方格应放多少小麦,并计算了总数。把计算的小麦总数与世界小麦年产量相比较。
- 读者提问:如何提高效率?
- VMware Workstation Pro的安装详细过程
- php如何判断一个数是不是整数,php判断变量是否是整数的两种方法
- 我的世界服务器显示大字,我的世界上面指令让界面出现字体 | 手游网游页游攻略大全...
- win10计算机启动慢,如何解决win10系统启动缓慢的问题
- Sam Altman 山姆奥特曼:关于生产率(工作效率)
- linux中nginx启动,重启,关闭命令
- 文件管理系统软件---爱米云网盘
- Python OCR识别图片验证码(二)
热门文章
- wnmp支持php文件,Windows下配置nginx+php(wnmp)
- innodb_buffer_pool_reads、innodb_buffer_pool_read_requests分析与innodb 缓存命中率计算
- java话费充值代码_话费充值接口示例代码
- java代码是干嘛的_程序员究竟是干嘛的呢?
- 计算机网络图标在哪里照,网络设备图标-电脑上的网络图标怎么显示
- html页面字体美化,网页字体的美化-网页设计,HTML/CSS
- 二进制转8421bcd码_码制 || BCD码 || 格雷码 || 奇偶校验码 || 字母数字码 || 数电
- 什么是OBD及组成和作用、工作原理
- 【win10】安装wsl,报错WslRegisterDistribution failed with error: 0x8007019e
- 基于STM32F407格式化SD卡