LED闪烁有5种效果,数码管点亮有3种效果,包含小彩蛋哟

实现代码如下:

//#include <reg52.h>
#include <REGX52.H>//typedef unsigned char uchar;
#define uchar unsigned charsbit HC595_RCK = P0^6;
sbit HC595_SCK = P0^5;
sbit HC595_DATA = P0^7;uchar LED_1_ARRAY[2] = {0x00, 0x00};//点亮LED
void send_data(uchar l_one, uchar l_two)
{uchar i;HC595_RCK = 0;for(i = 0; i < 8; i++){HC595_SCK = 0;HC595_DATA = l_one & 0x80? 1 : 0;l_one = l_one << 1;HC595_SCK = 1;}for(i = 0; i < 8; i++){HC595_SCK = 0;HC595_DATA = l_two & 0x80? 1 : 0;l_two = l_two << 1;HC595_SCK = 1;}HC595_RCK = 1;
}//led 效果1
code uchar Led8_One_Array[16] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
code uchar Led8_Two_Array[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};//led 效果2
code unsigned char Led8_One2_Array[16] = {0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
code unsigned char Led8_Two2_Array[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF};//led 效果4
code unsigned char Led8_One4_Array[16] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
code unsigned char Led8_Two4_Array[16] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};//led 效果5
code unsigned char Led8_One5_Array[17] = {0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00};
code unsigned char Led8_Two5_Array[17] = {0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00};sbit HC595_RCK2 = P1^0;
sbit HC595_SCK2 = P1^1;
sbit HC595_DATA2 = P1^4;code uchar SM_Array[11] = {0x3F, 0x06, 0x5B, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7F, 0x6F, 0x00};
code uchar SHU_Wei_Array[8] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};//数码管 520效果
code unsigned char SHU_Duan2_Array[8] = {0, 5, 2, 0, 1, 3, 1, 4};//数码管显数
void Shu_Show_Data(uchar Data_One, uchar Data_Two)
{uchar i;HC595_RCK2 = 0;for(i = 0; i < 8; i++){HC595_SCK2 = 0;HC595_DATA2 = Data_One & 0x80? 1 : 0;Data_One = Data_One << 1;HC595_SCK2 = 1;}for(i = 0; i < 8; i++){HC595_SCK2 = 0;HC595_DATA2 = Data_Two & 0x80? 1 : 0;Data_Two = Data_Two << 1;HC595_SCK2 = 1;}HC595_RCK2 = 1;
}void time0_init()
{TMOD = 0x01;  //设置 T0 为模式 1TH0 = 0xFC;  //为 T0 赋初值 0xFC67,定时 1msTL0 = 0x66;TR0 = 1;EA = 1;  //使能总中断ET0 = 1;  //使能 T0 中断
}unsigned int cnt = 0, cnt2 = 1, sec = 0;  //记录 T0 中断次数uchar led_p_type = 1;//led效果,共5种
uchar led_run_c = 0;//led运行次数
char led_i = 0;//led内部计数
uchar led_giv = 0;//led公共计数变量uchar shu_sec_array[8] = {0x00};
uchar shu_p_type = 1;//数码管效果,共4种
uchar shu_run_c = 0;//数码管运行次数
char shu_i = 0;//数码管内部计数
uchar shu_giv = 0;//数码管公共计数变量
uchar ii;//数码管循环变量
uchar iii = 0;//数码管延时大循环
uchar iiii = 0;//数码管延时大循环2void main()
{time0_init();while(1){if(cnt == 200)//0.2s{cnt = 0;switch(shu_p_type) {case 1:if(iiii == 0) {shu_giv = shu_i % 8;for(ii = 0; ii < 8; ii++) {if(ii == shu_giv) {shu_sec_array[ii] = iii;} else {shu_sec_array[ii] = 10;}}if(shu_giv == 7) {shu_run_c ++;shu_i = 0;if(shu_run_c == 2) {shu_run_c = 0;shu_p_type ++;shu_giv = 0;iii = 0;iiii = 0;break;}}iii ++;if(iii == 10) {shu_i ++;iii = 0;}}iiii ++;if(iiii == 2) iiii = 0;break;case 2:if(iii == 0) {shu_giv = shu_i % 10;for(ii = 0; ii < 8; ii++)shu_sec_array[ii] = shu_giv;shu_i ++;if(shu_giv == 9) {shu_run_c ++;shu_i = 0;if(shu_run_c == 2) {shu_run_c = 0;shu_p_type ++;shu_giv = 0;iii = 0;break;}}}iii ++;if(iii == 2) iii = 0;break;case 3:for(ii = 0; ii < 8; ii++)shu_sec_array[ii] = SHU_Duan2_Array[ii];if(shu_i % 8 == 7) {shu_run_c ++;shu_i = 0;if(shu_run_c == 3) {shu_run_c = 0;shu_p_type ++;shu_giv = 0;break;}}shu_i ++;break;case 4:sec ++;shu_sec_array[7] = sec / 1 % 10;shu_sec_array[6] = sec / 10 % 10;shu_sec_array[5] = sec / 100 % 10;shu_sec_array[4] = sec / 1000 % 10;shu_sec_array[3] = sec / 10000 % 10;shu_sec_array[2] = sec / 100000 % 10;shu_sec_array[1] = sec / 1000000 % 10;shu_sec_array[0] = sec / 10000000 % 10;break;}}if(cnt2 == 300) {//0.3scnt2 = 0;switch(led_p_type) {case 1:led_giv = led_i % 32;if(led_giv < 16) {LED_1_ARRAY[0] = Led8_One_Array[led_giv];LED_1_ARRAY[1] = Led8_Two_Array[led_giv];} else {LED_1_ARRAY[0] = Led8_One_Array[31 - led_giv];LED_1_ARRAY[1] = Led8_Two_Array[31 - led_giv];}led_i ++;if(led_i == 32) {led_run_c ++;led_i = 0;if(led_run_c == 2) {LED_1_ARRAY[0] = Led8_Two2_Array[0];LED_1_ARRAY[1] = Led8_Two2_Array[0];led_run_c = 0;led_p_type ++;led_giv = 0;break;}}break;case 2:led_giv = led_i % 16;LED_1_ARRAY[0] = Led8_One2_Array[led_giv];LED_1_ARRAY[1] = Led8_Two2_Array[led_giv];led_i ++;if(led_i == 16) {led_run_c ++;led_i = 0;if(led_run_c == 3) {LED_1_ARRAY[0] = Led8_Two2_Array[0];LED_1_ARRAY[1] = Led8_Two2_Array[0];led_run_c = 0;led_p_type ++;led_giv = 0;break;}}break;case 3:if(led_i % 2 == 0) {LED_1_ARRAY[0] = Led8_Two2_Array[15];LED_1_ARRAY[1] = Led8_Two2_Array[15];} else {LED_1_ARRAY[0] = Led8_Two2_Array[0];LED_1_ARRAY[1] = Led8_Two2_Array[0];}led_i ++;if(led_i == 2) {led_run_c ++;led_i = 0;if(led_run_c == 6) {LED_1_ARRAY[0] = Led8_Two2_Array[0];LED_1_ARRAY[1] = Led8_Two2_Array[0];led_run_c = 0;led_p_type ++;led_giv = 0;break;}}break;case 4:led_giv = led_i % 16;LED_1_ARRAY[0] = Led8_One4_Array[led_giv];LED_1_ARRAY[1] = Led8_Two4_Array[led_giv];led_i ++;if(led_i == 16) {led_run_c ++;led_i = 0;if(led_run_c == 3) {LED_1_ARRAY[0] = Led8_Two2_Array[0];LED_1_ARRAY[1] = Led8_Two2_Array[0];led_run_c = 0;led_p_type ++;led_giv = 0;break;}}break;case 5:led_giv = led_i % 17;LED_1_ARRAY[0] = Led8_One5_Array[led_giv];LED_1_ARRAY[1] = Led8_Two5_Array[led_giv];led_i ++;if(led_i == 17) {led_run_c ++;led_i = 0;if(led_run_c == 3) {LED_1_ARRAY[0] = Led8_Two2_Array[0];LED_1_ARRAY[1] = Led8_Two2_Array[0];led_run_c = 0;led_p_type = 1;led_giv = 0;break;}}break;}}}
}uchar p = 0;/* 定时器 0 中断服务函数 */
void InterruptTimer0() interrupt 1{TH0 = 0xFC;  //重新加载初值TL0 = 0x66;cnt++;  //中断次数计数值加 1cnt2++;Shu_Show_Data(SM_Array[shu_sec_array[p]], SHU_Wei_Array[p++]);if(p == 8) p = 0;send_data(LED_1_ARRAY[0], LED_1_ARRAY[1]);}

吴鉴鹰51单片机学习—中断、定时器同时点亮数码管和LED各种效果相关推荐

  1. 51单片机:中断实现按键按一下数码管从00加到99循环(C语言)

    51单片机:中断实现按键按一下数码管从00加到99循环(C语言) 题目要求: 在51单片机上通过C语言编写代码,使用中断,按键按一下数码管上面的数字从00开始加1,实现00--99的循环 准备工作: ...

  2. 51单片机学习-5定时器与中断

    5 定时器与中断 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github ...

  3. 51单片机学习----中断

    什么是中断? 当CPU正在处理某件事的时候,突然有一个紧急的事情发生了,要求CPU暂停当前的工作,转而去处理这个紧急的事情,处理完之后,再回到原理被中断的地方,继续原来的工作,这样的过程就叫中断.比如 ...

  4. 51单片机(一)工程建立、点亮任意几个LED灯、烧录、锁存器

    工程建立.点亮1个LED灯.点亮任意几个LED灯.烧录 一. 建立工程 1.建立工程文件夹 2.创建工程文件 3.创建.c源文件 4.添加.c源文件到工程 二.点亮一个LED灯 1.察看原理图,明确电 ...

  5. 51单片机学习——中断

    1.中断源及其中断标志 外部中断0:中断号为0:中断标志为IE0:中断服务程序入口为0003H: 定时器0:中断号为1:中断标志为TF0:中断服务程序入口为000BH: 外部中断1:中断号为2:中断标 ...

  6. 51单片机用中断实现流水灯,数码管和点阵同时显示

    小白自备笔记··· ···· 数码管1S左移,6位数码管从999999每一秒钟减一倒着计数,点阵9-0倒计时显示. #include<reg52.h> //头文件 #include< ...

  7. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  8. 吴鉴鹰谈一个单片机初学者的傲慢与偏见

    最近论坛上发了一个连载帖子--吴鉴鹰单片机实战项目精讲,因此受到不少网友的关注,在这里吴鉴谢谢各位网友的支持.关心和信任.       在帖子中留了几个群号,有两千多读者加了群,通过QQ向我询问了很多 ...

  9. 使用51单片机采用中断方式进行串口通信的学习记录:

    使用51单片机进行串口通信的学习记录之中断方式: 1.51单片机采用中断方式的串口通信过程及程序分析: 所谓中断方式,就是串口收/发标志位出发中断后,在中断中执行既定操作,可通过函数调用来实现. 接收 ...

最新文章

  1. js如何让高度和宽度保持一致_如何实现一个下载进度条/播放进度条
  2. Navicat Premium 连接 Oracle 数据库
  3. 集美大学1511,1512软件工程课程作业总结
  4. Linux下RabbitMQ服务器搭建
  5. 莫烦Pytorch神经网络第四章代码修改
  6. SpringBoot实战教程(6)| 整合Druid
  7. 【机器学习】无监督学习:PCA和聚类
  8. tcp/ip 协议的传输过程
  9. android获得手机目录,关于android手机文件目录的收集
  10. K2P加USB口刷入Padavan
  11. 【老生谈算法】matlab实现追赶法算法——追赶法算法
  12. 马哥linux脚本,马哥全套linux运维教程
  13. 泰勒展开简单直观理解与常用公式
  14. 庚子新年玩扫雷(模拟)(东北农业大学庚子新年欢乐赛)
  15. 清华王牌专业建系70年,撑起中国半导体半壁江山,王兴李健都是系友
  16. 穆迪将收购GCR Ratings多数股权以拓展非洲业务
  17. 一个小的UGM的Demo
  18. go语言实现发送邮件带附件
  19. 绑定新浪微博API 实现验证 登录 返回接口获取信息
  20. SSH框架笔记_SSH三大框架的工作原理及流程

热门文章

  1. 访问学者J1签证后可以提前多久去美国?
  2. 东京乌鸦满天飞(二)
  3. linux 部署Javaweb项目
  4. 基于深度模型的Out of Distribution(OOD)检测相关方法介绍
  5. win10备份失败解决方案
  6. java io的异常_Java 异常与IO流
  7. mousewheel在火狐浏览器不兼容的问题
  8. 头歌动手画CPU第1关到第12关答案
  9. IntelliJ IDEA的Rebuild顺序,运行的文件跟原文件不相同
  10. 上海软考报名时间成绩查询上海计算机软考考点报名入口