历史上的今天
今天是:2025年08月15日(星期五)
2019年08月15日 | 单片机之利用按键来使数码管上两位示数增加
2019-08-15 来源:eefocus
#include #include "./delay/delay.h" sbit seg_select = P2^1; sbit bit_select = P2^0; sbit key1 = P1^0; #define SEGPORT P0 unsigned 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*/ #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*/ { 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); } } #ifndef _DELAY_H_
void delay_us(unsigned char t)
上一篇:单片机之矩阵键盘的驱动程序
史海拾趣
|
8. 第八章 dScope for Windows使用详解 1. 第一节 概述 1. 1. 主窗口(Mainframe Window) 可设置其它各种调试窗口,设置断点、观察点,修改地址空间,加载文件等等; 2. 2. 调试窗口(DEBUG Window) 支持用户程序的各种显示方式,可连续运行 ...… 查看全部问答> |
|
#include __CONFIG (INTRC & PROTECT & MCLREN & WDTEN); const unsigned char cs @ 0x1FF; void DelayUs( int x) // 32US {while(--x!=0) { CLRWDT(); NOP(); unsigned ...… 查看全部问答> |
|
现在有一个应用程序,实时性不够,想在windows下加一个实时模块!经过查找资料,目前确定的方案是添加一个实时驱动模块,而这个模块就用一个内核模式驱动程序来实现!该程序通过接管实时定时器的中断,也就是系统时钟中断,然后先将控制权交给实时 ...… 查看全部问答> |
|
请使用英文版 Visual studio 2005/2008的朋友帮个小忙,谢谢! 公司要找其它公司做应用软件,用WINCE生成的SDK还得附加个英文的使用说明,但是我的VS是中文版的,截图全是中文字,公司的人说不行,所以请使用英文版的朋友帮我截个图,非常感谢! 发到我的邮箱里就可以veabolho@126.com 截图的内容就像这张 … 查看全部问答> |
|
最近做项目的时候碰到了一个因为局部变量导致堆栈越界的问题,虽然最后靠扩大堆栈空间暂时解决了,但这也限制了全局变量的定义。有没有一种好的方法来解决这些问题了?看了看编译后的MAP文件,发现MDK将STACK放在了最后一个全局变量的后面。现 ...… 查看全部问答> |
|
求助,哪位告诉能指点下, 在8962上面使用lwip 如何实现不同网段的能够连接啊???就是公司网络 192.168.1.12的电脑 可以 ping通 192.168.2.2的电脑但是我的板子 192.168.1.10 ping不同 192.168.2.2的电脑… 查看全部问答> |
|
AtmelStudio6.0 下atmega88的调试和仿真 AtmelStudio6.0 下atmega88的调试和仿真 这几天一直在调试atmega88PA这款单片机,用的开发环境是AtmelStudio6.0,绕了不少弯路,网上关于这方面的资料也不多;在这里分享一下自己的调试过程,供大家一起学习。 1、双击快捷方式打开 ...… 查看全部问答> |
|
TI 移动手机电源系统可以满足从电池到显示和通讯接口的全部电源管理需求。这款解决方案包含高度集成和优化的器件,为手机应用而特别设计,并且将电源和RF 系统中的主导负载效率提升到最高,同时它具有集成保护功能,实现了安全的电池管理和相机闪光 ...… 查看全部问答> |




