51单片机—按键控制点阵显示
名称:按键控制 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单片机—按键控制点阵显示相关推荐
- 【Proteus仿真】51单片机+按键控制步进电机驱动+LCD1602显示
[Proteus仿真]51单片机+按键控制步进电机驱动+LCD1602显示 Proteus仿真 在Proteus当中,步进电机选取的不同,接线的顺序不同,为了避免在接线出错,将里面的两种步进电机都选择 ...
- 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...
现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...
- 普中51单片机按键-数码管显示
基于普中单片机按键-数码管显示 简介 1.硬件部分 普中单片机开发板 数码管 独立按键 2.软件部分 keil软件 硬件部分 普中单片机开发板 数码管 独立按键 (这些都是开发板的最基本的配置) 软件 ...
- 51单片机按键控制数码管显示0-9
实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...
- 51单片机按键控制数码管0~9_51单片机外部中断
前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...
- 51单片机之8×8点阵显示(74HC595)
目标:8×8点阵显示一个心 1:显示原理(扫描) 点阵在显示图形时并不是对应的LED同时点亮,而是显示一行(行扫描)或一列(列扫描)后,快速切换到下一行或下一列,依次显示到最后一行或一列.利用余晖效应 ...
- 51单片机按键控制数码管0~9_(51单片机)课设项目1-按键控制步进电机转向、转速、启停。...
总体设计方案 硬件部分实现电机转动和数码管显示,包括控制开关模块.电机转动模块.数码管显示模块.软件部分实现对步进电机的控制功能,主要设计思想通过控制程序的开关来控制电机的转动启停.方向.速度.电源驱 ...
- 51单片机按键控制输出pwm的占空比
之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机.这样做的话不但麻烦.效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯 ...
- 51单片机按键控制数码管0~9_对于常用的数码管,你有多熟悉?
数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法.有不足和疏忽的地方,请不吝指正. 一.工作原理数码管是一种半导体发光器件, ...
最新文章
- 主机入侵防御系统(HIPS)分析
- 计算机语言中索引什么意思,算法索引
- PHP的SQL注入攻击的技术实现以及预防措施
- 学习ansible playbook之前先了解下YAML语法
- lm358数据手册_如何阅读运放的数据手册(1)查找数据手册
- Android quot;QR二维码扫描quot;
- 海南计算机网络技术学校,三亚广播电视大学计算机网络技术专业_海南报名_网络教育计算机网络技术专业教学计划_中国教育在线...
- 第三章 汇编语言和汇编软件
- 【C语言进阶深度学习记录】十九 #pragma使用与分析
- 基于java银行ATM管理系统设计(含源文件)
- 【BZOJ1057】【codevs1428】棋盘制作,悬线法
- 重启物理机后kvm无法启动虚拟机
- html中.inner样式,关于通过innerHTML插入样式的问题
- 根据入职日期计算工龄
- spring boot 中用到的thymeleaf (模板引擎)
- 别光盯着未来!看看海尔智家此前都布局了什么?
- 安卓编程用什么软件_如何用手机进行编程?有哪些值得推荐的软件?
- 夕阳红旅游团需求规格说明书
- 指针秒懂1(如梦初醒):
- Linux篇之解决root密码修改失败报错之Authentication token manipulation error