单片机之利用按键来使数码管上两位示数增加
来源:互联网 发布:mac 显卡驱动 编辑:程序博客网 时间:2024/05/17 17:15
#include <reg52.h>#include "./delay/delay.h"sbit seg_select = P2^1;sbit bit_select = P2^0;sbit key1 = P1^0;#define SEGPORT P0unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char TempData[2];void display(void){/*消除重影*/ static unsigned char i = 0; SEGPORT = 0x0; seg_select = 1; seg_select = 0; SEGPORT = 0xff; bit_select = 1; bit_select = 0; SEGPORT = TempData[i]; seg_select = 1; seg_select = 0; SEGPORT = bitdata[i]; bit_select = 1; bit_select = 0; i++; if(2 == i) {i = 0;}}void timer0_init(void){EA = 1; //打开总中断 TMOD |= 0x01; //选择中断方式 TH0 = (65536 - 2000) / 256; TL0 = (65536 - 2000) % 256; ET0 = 1; TR0 = 1;}void timer0_isr(void) interrupt 1{TH0 = (65536 - 2000) / 256; TL0 = (65536 - 2000) % 256; display(); }void main(){ unsigned char disdata = 0; timer0_init(); while(1) { /*消抖*/ if(0 == key1) //有按键按下 { delay_ms(10); if(0 == key1) //确实有按键按下 { while(!key1); //有按键抬起
delay_ms(10); while(!key1); //确实有按键抬起 } disdata++; if(100 == disdata) { disdata = 0; } }TempData[0] = segdata[disdata / 10];TempData[1] = segdata[disdata % 10]; } }
/************************************/
/*delay.h*/
<pre name="code" class="html">#ifndef _DELAY_H_#define _DELAY_H_extern void delay_us(unsigned char t);extern void delay_ms(unsigned char t);extern void delay_s(unsigned char t);#endif
/***************************************/
/*delay.c*/
<pre name="code" class="html">void delay_us(unsigned char t){while(--t);}void delay_ms(unsigned char t){while(t--){delay_us(245);delay_us(245);}}void delay_s(unsigned char t){ while(t--){ delay_ms(200);delay_ms(200); delay_ms(200);delay_ms(200); delay_ms(200);}}
0 0
- 单片机之利用按键来使数码管上两位示数增加
- 单片机之静态数码管
- 51单片机之数码管
- 单片机笔记之数码管
- 51单片机之数码管显示
- 单片机之数码管2011.1.17
- 89C52单片机之数码管
- 51单片机利用74HC595驱动数码管
- 单片机笔记之按键
- 单片机开发之按键
- 单片机之按键
- 单片机按键与数码管试验程序 Proteus仿真
- 单片机4*4按键数码管显示0-9
- 20141119 【 Arduino - DHT11 - 单片机 】 利用单片机数码管 显示 DHT11温湿度
- 单片机之数码管秒表的动态显示
- 51单片机 学习之旅[2] 数码管
- 51单片机入门之四:静态数码管
- 蓝桥杯单片机设计与开发之数码管
- C++复习(2)派生类成员的标志与访问
- 文件输入/输出
- Android开发项目经验
- 为什么Java中1000==1000为false而100==100为true?
- 大时代势不可挡,隔行扫描已经消失。BT.709色彩空间也开始离我们远去
- 单片机之利用按键来使数码管上两位示数增加
- 如何学习基于ARM平台的嵌入式系统
- python的&众不同之处(2)
- 第三周项目2--建设“顺序表”的算法库
- 【学习总结】三种发送短信的方法和四种按钮的点击事件
- android实验一之helloandroid
- 9个完整android开源app项目
- 第3周项目4 -顺序表的应用(1)
- github上的学习材料一:前端涉及的所有知识体系