名称:按键控制 8X8LED 点阵屏显 示图形

说明:每次按下 K1 时,会使 8X8LED 点阵屏循环显示不同图形。本例同时使用外部中断和定 时中断

#include"reg52.h"
#include"intrins.h"
#define led P0                //宏定义
typedef unsigned int u16;
typedef unsigned char u8;
sbit src=P3^6;             //移位寄存器时钟输入
sbit rc=P3^5;              //存储寄存器时钟输入
sbit ser=P3^4;             //串行数据输入
sbit key=P3^2;             //按键
u8 duan[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
u8 count=0;
u8 i;
u8 flag=0;                 //标志位void delay(u16 x)          //延时函数1us
{while(x--);
}void tim_init()                //定时器初始化
{EA=1;                 //中断总允许位ET0=1;                 //定时计数器中断允许位TMOD=0X01;             //定时器0的方式1   0000 0001TH0=0XD8;                //高八位TL0=0XF0;             //低八位TR0=1;                    //开启定时
}void int0_init()           //中断初始化
{EX0=1;                    //外部中断允许位IT0=1;                    //下降沿触发
}void c595(u8 date)         //c595芯片初始化
{u8 a;src=0;                   //移位寄存器时钟输入rc=0;                   //存储寄存器时钟输入for(a=0;a<8;a++){ser=date>>7;       //选择最高位date<<=1;         //向左移一位src=1;              _nop_();            //一个机器周期时间(在intrins头文件中)_nop_();src=0;}rc=1;_nop_();_nop_();rc=0;
}void main()
{led=0xcc;c595(0x00);tim_init();int0_init();while(1);
}void int0() interrupt 0   //中断服务函数
{if(key==0){delay(4);    //消抖if(key==0){while(key==0);    //判断是否松手flag=1;}}
}void tim0()  interrupt 1
{TH0=0XD8;      TL0=0XF0;count++;if(count==50){if(flag==1){i++;c595(duan[i]);led=~led;delay(100);if(i==7) {i=0;flag=0;}}count=0;}
}

51单片机—按键控制点阵显示相关推荐

  1. 【Proteus仿真】51单片机+按键控制步进电机驱动+LCD1602显示

    [Proteus仿真]51单片机+按键控制步进电机驱动+LCD1602显示 Proteus仿真 在Proteus当中,步进电机选取的不同,接线的顺序不同,为了避免在接线出错,将里面的两种步进电机都选择 ...

  2. 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...

    现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...

  3. 普中51单片机按键-数码管显示

    基于普中单片机按键-数码管显示 简介 1.硬件部分 普中单片机开发板 数码管 独立按键 2.软件部分 keil软件 硬件部分 普中单片机开发板 数码管 独立按键 (这些都是开发板的最基本的配置) 软件 ...

  4. 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...

  5. 51单片机按键控制数码管0~9_51单片机外部中断

    前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...

  6. 51单片机之8×8点阵显示(74HC595)

    目标:8×8点阵显示一个心 1:显示原理(扫描) 点阵在显示图形时并不是对应的LED同时点亮,而是显示一行(行扫描)或一列(列扫描)后,快速切换到下一行或下一列,依次显示到最后一行或一列.利用余晖效应 ...

  7. 51单片机按键控制数码管0~9_(51单片机)课设项目1-按键控制步进电机转向、转速、启停。...

    总体设计方案 硬件部分实现电机转动和数码管显示,包括控制开关模块.电机转动模块.数码管显示模块.软件部分实现对步进电机的控制功能,主要设计思想通过控制程序的开关来控制电机的转动启停.方向.速度.电源驱 ...

  8. 51单片机按键控制输出pwm的占空比

    之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机.这样做的话不但麻烦.效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯 ...

  9. 51单片机按键控制数码管0~9_对于常用的数码管,你有多熟悉?

    数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法.有不足和疏忽的地方,请不吝指正. 一.工作原理数码管是一种半导体发光器件, ...

最新文章

  1. 主机入侵防御系统(HIPS)分析
  2. 计算机语言中索引什么意思,算法索引
  3. PHP的SQL注入攻击的技术实现以及预防措施
  4. 学习ansible playbook之前先了解下YAML语法
  5. lm358数据手册_如何阅读运放的数据手册(1)查找数据手册
  6. Android quot;QR二维码扫描quot;
  7. 海南计算机网络技术学校,三亚广播电视大学计算机网络技术专业_海南报名_网络教育计算机网络技术专业教学计划_中国教育在线...
  8. 第三章 汇编语言和汇编软件
  9. 【C语言进阶深度学习记录】十九 #pragma使用与分析
  10. 基于java银行ATM管理系统设计(含源文件)
  11. 【BZOJ1057】【codevs1428】棋盘制作,悬线法
  12. 重启物理机后kvm无法启动虚拟机
  13. html中.inner样式,关于通过innerHTML插入样式的问题
  14. 根据入职日期计算工龄
  15. spring boot 中用到的thymeleaf (模板引擎)
  16. 别光盯着未来!看看海尔智家此前都布局了什么?
  17. 安卓编程用什么软件_如何用手机进行编程?有哪些值得推荐的软件?
  18. 夕阳红旅游团需求规格说明书
  19. 指针秒懂1(如梦初醒):
  20. Linux篇之解决root密码修改失败报错之Authentication token manipulation error

热门文章

  1. 简单工厂模式(代码实现)
  2. python怎么写lnx_python数字计算(未完)
  3. 杭州火车南站与杭州火车站的区别 杭州一日游
  4. 从三国演义谈创业的一点启示
  5. 热点︱赵长鹏被美CFTC起诉,Binance会是下一个Tiktok吗?
  6. 关注Parallels Desktop 10 for Mac破解版存在的危害
  7. Beautiful Soup属性和方法及文档
  8. 商人的奴隶:程序员绝对是一盏省油的灯
  9. 移动工资高?华为员工笑了(转)
  10. java是高级语言_java高级语言