51单片机C语言led流水灯及数码管实现秒表

51单片机C语言练习题

单片机型号

普中科技的
在这里插入图片描述

led练习题

led小灯闪烁

#include<reg52.h>
sbit LED = P0^0;
void main()
{unsigned int i=0;while(1){LED = 1;for(i=0;i<60000;i++);LED = 0;for(i=0;i<60000;i++);}
}

led流水灯

#include<reg52.h>void main()
{unsigned char LED = 0x01;unsigned int i=0;while(1){P0 = LED;LED = LED << 1;//从左向右依次点亮LEDif(LED == 0) //点亮第八盏后,点亮第一盏{LED = 0x01;}for(i=0;i<40000;i++);//延迟}
}

每隔一秒点亮一次 led,led闪烁,定时器实现

  • 配置定时器工作模式
  • 定时器赋初值
  • 启动定时器
  • 判断定时器是否溢出
#include<reg52.h>
sbit LED = P0^0;
void main()
{unsigned char cnt = 0;unsigned int i=0;TMOD = 0x01;TH0 = 0xD8;TL0 = 0xF0;TR0 = 1;LED = 0;while(1){if(TF0 == 1){TF0 = 0;TH0 = 0xD8;TL0 = 0xF0;cnt++;if(cnt == 100){cnt = 0;LED = ~LED;}}}}

数码管练习题

静态数码管依次显示0-F,每隔一秒更换一次

#include<reg52.h>
unsigned char code segCodeTable[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void main()
{unsigned char cnt = 0;unsigned int i=0;TMOD = 0x01;TH0 = 0xD8;TL0 = 0xF0;TR0 = 1;while(1){if(TF0 == 1){TF0 = 0;TH0 = 0xD8;TL0 = 0xF0;cnt++;if(cnt == 100){cnt = 0;P0 = segCodeTable[i];i++;}if(i == 16){i = 0;}}}}

数码管实现秒表

#include<reg52.h>
//共阴极数码管
unsigned char code segCodeTable[16] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79};
unsigned char code posCodeTable[8] = {
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选控制   查表的方法控制
//数码管显示缓冲区,初始时刻为全零
unsigned char LEDBuffer[6] = {0x3f,0x3f,0x3f,0x3f,0x3f,0x3f };
void main()
{	  unsigned int cnt = 0;unsigned long sec = 0;unsigned char i = 0;TMOD = 0x01;TH0 = 0xFC;TL0 = 0x18;TR0 = 1;while(1){if(TF0 == 1){TF0 = 0;TH0 = 0xFC;TL0 = 0x18;cnt++;if(cnt == 1000){cnt = 0;sec++;//每隔一秒刷新一次数码管显示缓冲区LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];LEDBuffer[2] = segCodeTable[sec/100%10];LEDBuffer[3] = segCodeTable[sec/1000%10];LEDBuffer[4] = segCodeTable[sec/10000%10];LEDBuffer[5] = segCodeTable[sec/100000];}//每隔1ms输出一次段码与位码P0 = LEDBuffer[i];P1 = posCodeTable[i];i++;if(i == 6){i = 0;}}}}

中断方式实现数码管秒表

#include<reg52.h>
//共阴极数码管
unsigned char code segCodeTable[16] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79};
unsigned char code posCodeTable[8] = {
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选控制   查表的方法控制
//数码管显示缓冲区,初始时刻为全零
unsigned char LEDBuffer[6] = {0x3f,0x3f,0x3f,0x3f,0x3f,0x3f };
unsigned char i = 0;
unsigned char flag1s = 0;unsigned int cnt = 0;
void main()
{	  unsigned long sec = 0;TMOD = 0x01;TH0 = 0xFC;TL0 = 0x18;TR0 = 1;EA = 1;ET0 = 1;while(1){if(flag1s == 1){sec++;flag1s = 0;//每隔一秒刷新一次数码管显示缓冲区LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];LEDBuffer[2] = segCodeTable[sec/100%10];LEDBuffer[3] = segCodeTable[sec/1000%10];LEDBuffer[4] = segCodeTable[sec/10000%10];LEDBuffer[5] = segCodeTable[sec/100000];}}}void InterruptTime0() interrupt 1
{TH0 = 0xFC;TL0 = 0x18;cnt++;if(cnt == 1000){cnt = 0;flag1s = 1;}//每隔1ms输出一次段码与位码P0 = LEDBuffer[i];P1 = posCodeTable[i];i++;if(i == 6){i = 0;}
}

数码管高位为零不显示

#include<reg52.h>
//共阴极数码管
unsigned char code segCodeTable[16] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79};
unsigned char code posCodeTable[8] = {
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选控制   查表的方法控制
//数码管显示缓冲区
unsigned char LEDBuffer[8] = {0x3f,0x00,0x00,0x00,
0x00,0x00,0x00,0x00};
unsigned int  cnt = 0;
unsigned char i = 0;
unsigned char flag1s = 0;
unsigned char temp = 0x7f;
void main()
{unsigned long sec = 0;TMOD = 0x01;TH0 = 0xFC;TL0 = 0x18;TR0 = 1;EA =1;ET0 =1;while(1){if(flag1s == 1){flag1s = 0;//刷新数码管显示缓冲区sec++;if(sec>=0&&sec<10){LEDBuffer[0] = segCodeTable[sec%10];}else if(sec>=10&&sec<100)	//sec小于10,不更新数码管高位显示缓冲区{LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];}else if(sec>=100&&sec<1000){LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];LEDBuffer[2] = segCodeTable[sec/100%10];}else if(sec>=1000&&sec<10000){LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];LEDBuffer[2] = segCodeTable[sec/100%10];LEDBuffer[3] = segCodeTable[sec/1000%10];}else if(sec>=10000&&sec<100000){LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];LEDBuffer[2] = segCodeTable[sec/100%10];LEDBuffer[3] = segCodeTable[sec/1000%10];LEDBuffer[4] = segCodeTable[sec/10000%10];}else if(sec>=100000){LEDBuffer[0] = segCodeTable[sec%10];LEDBuffer[1] = segCodeTable[sec/10%10];LEDBuffer[2] = segCodeTable[sec/100%10];LEDBuffer[3] = segCodeTable[sec/1000%10];LEDBuffer[4] = segCodeTable[sec/10000%10];LEDBuffer[5] = segCodeTable[sec/100000];}			}}
}void InterruptTimer0() interrupt 1
{TH0 = 0xFC;TL0 = 0x18;cnt++;if(cnt == 1000){cnt = 0;flag1s = 1;}//每隔一ms输出一次段码和位码P0 = LEDBuffer[i];P1 = posCodeTable[i];i++;if(i == 6){i = 0;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内聚和耦合(自己的理解)

网上对于内聚和耦合的资料太多&#xff0c;这里结合我的感受和其他人的答案http://blog.csdn.net/zhiquan/article/details/4255161谈谈自己的理解 以下是我对内聚和耦合的理解&#xff08;例子来源于生活&#xff09;。 1.内聚&#xff1a; i.偶然内聚&#xff1a;如果一个模块…

(转)交换机攻击方法描述

利用交换机漏洞的攻击方法如下&#xff1a;一、生成树攻击生成树协议(STP)可以防止冗余的交换环境出现回路。要是网络有回路&#xff0c;就会变得拥塞不堪&#xff0c;从而出现广播风暴&#xff0c;引起MAC表不一致&#xff0c;最终使网络崩溃。使用STP的所有交换机都通过网桥协…

无用的设计模式之装饰者模式

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 装饰者设计模式本来是很常用的模式&#xff0c;常用到随处可见&#xff0c;jdk的bio设计都是遵循这个模式的&#xff0c;偶然的机会发现&#xff0c;貌似jdk中bio的装饰者模式和设计模式中的装饰者设计模式却有…

转-HTC 手机生产日期,产地查询 以及 SN码 IMEI码 查询等问题汇总

问&#xff1a;什么是IMEI码&#xff1f;什么是SN码&#xff1f; 答&#xff1a;IMEI码&#xff0c;国际移动装备辨识码&#xff08;International Mobile Equipment Identity number&#xff0c;IMEI&#xff09;。SN码即Serial Number&#xff0c;产品序列号。 问&#xff1a…

C#生成带Logo二维码

1.下载ThoughtWorks.QRCode引用并添加在工程中 2.在实现类QRCodeEncoderDemo中引入Dll&#xff0c;添加方法 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Web;using ThoughtWorks.QRC…

51单片机实现三位十进制数加减乘除运算

51单片机实现三位十进制数加减乘除运算 一.题目 51单片机IO接口作业 请将附件给出的Proteus图用51单片机完成一个计算器功能。 1、显示采用动态分时8位共阳数码管输出。 2、采用4*4矩阵键盘输入&#xff0c;键盘上已经标识对应键。 3、完成三位十进制数的加、减、乘、除运…

未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version=11.0.0.0, ...”或它的某一个依赖项~[解决方案]...

配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version11.0.0.0, Cultureneutral, PublicKeyToken71e9bce111e9429c”或它的某一个…

方法javaJVM学习笔记-内存处理

本文是一篇关于方法java的帖子 大多数JVM将内存区域分离为Method Area&#xff08;Non-Heap&#xff09;&#xff0c;Heap&#xff0c;Program Counter Register&#xff0c;Java Method Statck&#xff0c;Native Method Stack和Direct Memomry&#xff08;备注&#xff1a;Di…

数据结构单向不循环链表实现多项式合并

多项式合并 思路 多项式合并 P1 5 2x 8x ^8 3x^16 P2 6x 16x^6 - 8x^8 P P1 P2 5 8x 16x^6 3x^16 使用带头结点的单向不循环链表 每个节点分为三个部分&#xff0c;系数项&#xff0c;指数项&#xff0c;指针域 结构体表示为 struct node_st {int exponent;int …

下 终端_Linux/UNIX 下终端复用利器 tmux

tmux 是一个终端复用器(terminal multiplexer)。简介tmux 是一个终端复用器类自由软件&#xff0c;功能类似 GNU Screen&#xff0c;但使用 BSD 许可发布。用户可以通过 tmux 在一个终端内管理多个分离的会话&#xff0c;窗口及面板&#xff0c;对于同时使用多个命令行&#xf…

消失的字符串——c语言函数中的数据存储方式以及字符串实现

2019独角兽企业重金招聘Python工程师标准>>> 事情是这样的&#xff0c;最近在学习翁老师的Mooc之C语言程序设计&#xff0c;插一句&#xff0c;真的是好老师&#xff0c;讲的真的太好了&#xff0c;在c里的字符串这里&#xff0c;翁老师演示了一个小程序&#xff0c…

JQuery 文本框高亮显示插件

以前使用Mootools Js框架&#xff0c;文本框有个$(id).highlight()高亮方法&#xff0c;使其高亮显示&#xff0c;效果如下&#xff1a; JQuery 中没有这个方法&#xff0c;自己今天写了一个Plugin&#xff0c;把代码贴出来分享一下&#xff1b; 代码如下&#xff1a; jquery-h…

链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链

最近研究链方法&#xff0c;稍微总结一下&#xff0c;以后继续补充&#xff1a; 弁言&#xff1a; 上一专题分析了下编译器是如何来翻译委托的&#xff0c;从中间语言的角度去看委托&#xff0c;希望可以帮助大家进一步的理解委托&#xff0c;然而之前的分析都是委托只是封装一…

51单片机lcd1602的简单实用

基础知识准备 lcd1602简介 图片来自b站斌哥单片机 需要关注的有以下几点&#xff1a; RS : 高数据低命令&#xff1b;RS 1时&#xff0c;lcd1602读写数据&#xff0c;RS0时&#xff0c;lcd1602读写命令R/W&#xff1a;高读低写&#xff1b;RW1时&#xff0c;单片机读取lcd160…

firedebug调试Jquery

不了解的同学先“点这里”看看什么是Firebug。简单来说&#xff0c;Firebug是Firefox上用来监视、编辑和调试站点的CSS、HTML、DOM和JavaScript的扩展工具。 我们先到Firebug的主页上下载最新的版本装上&#xff0c;下面开始调试&#xff1a; 1、查看、编辑HTML元素及其(转) 安…

51单片机数字钟的实现

作业 用51单片机完成一个数字钟的计时及校时功能。 1、设置8个数码管的显示缓冲区为DISPBUFF[8],并初始化为02,02,-,04,08,-,03,06. 2、定时器0每隔5ms刷新一次数码管显示缓冲区&#xff0c;并显示时间(中断来做&#xff09; 3、定时器1负责精确定时&#xff0c;计时1s,每隔…

Google Map API 学习三

转载于:https://www.cnblogs.com/MyFlora/p/3154066.html

慎用SELECT INTO复制表

很多时候我们习惯于用SELECTINTO 复制一个表或表结构&#xff0c;因为它方便&#xff0c;快捷&#xff0c;而且在某些情况下效率比INSERT INTO 效率要高一些。但是要注意&#xff1a; SELECT INTO 复制表或表结构的时候&#xff0c;只是得到了一个“外壳”&#xff0c;就像克隆…

信号的采样与插值重建(包含matlab)

实验任务 双频信号的采样和插值重建&#xff1a;对双频信号进行采样&#xff08;符合奈奎斯特低通采样定理&#xff09;&#xff0c;绘制波形和频谱&#xff1b;编制sinc函数插值函数&#xff0c;对采样进行恢复&#xff0c;绘制波形。 实验原理 matlab代码 clear all; clos…

dc概论之IO约束

版权声明&#xff1a;转载时请以超链接形式标明文章原始出处和作者信息及本声明http://bb2hh.blogbus.com/logs/39654476.html 注明&#xff1a;如需转载&#xff0c;请注明作者出处&#xff0c;谢谢&#xff5e;&#xff0c;Author&#xff1a;pythonlong以下根据资料和个人体…