51单片机:在2位数码管上循环显示00-99,间隔0.5秒
2018-01-09 11:51
393 查看
原理图
#include <reg52.h> #define uint unsigned int // 宏 #define uchar unsigned char sbit a = P1^0; sbit b = P1^1; sbit c = P1^2; sbit d = P1^3; uchar code table[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极0-916进制编码 void delayms(uint); //延时函数声明 void display(uint); //自定义位选函数 uint num=0; uchar shi=0; void display(uint num) { d=1; //共阳极数码管高电平有效 P0=table[num%10]; //循环显示0-9 delayms(5); //刷新 P0=0XFF; d=0; c=1; //共阳极数码管高电平有效 P0=table[(num/10)%10]; //循环显示0-9 delayms(5); //刷新 P0=0XFF; c=0; } void jishu() interrupt 1 { if(shi==10) { //10*50MS定时时间为0.5秒 shi=0; num++; } TH0=(65536-50000)/256; //重新赋值 TL0=(65536-50000)%256; shi++; //50毫秒加1,加20次为一秒 } void delayms(uint xms) //延时程序 { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void main() { TMOD=0X01; /*中断初始化*/ TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; //中断总开关 ET0=1; //请求中断 TR0=1; //允许中断 while(1) { //关闭其他位 a=0; b=0; display(num); //调用函数 } }
相关文章推荐
- 两位数码管循环显示00~99的实验
- (4)51单片机入门案列-8个数码管中循环显示数字0-9
- 发光管200ms时间间隔闪烁 数码管实现0~59s循环显示
- 数码管00~99显示,
- 51单片机单个数码管循环显示0~9
- 用C语言编程使51单片机的数码管左移循环显示
- 20141016 【Arduino + C51单片机】 八段数码管--数字循环显示
- 使用 For 循环的自动索引功能创建数组y1=sin(x/10)和y2=cos(x/10),(x=0-99),并分别用一个波形图和一个波形图表来进行显示。
- 数码管循环显示1-9
- C51驱动数码管显示0~99
- 数码管0到9循环显示
- 阶段小项目1:循环间隔1秒lcd显示红绿蓝
- 51单片机 时钟程序设计 数码管可闪烁显示数值
- 数码管9到0循环显示
- 51单片机循环点亮数码管
- 51单片机 学习之旅[4] 数码管 动态显示
- 51单片机 数码管的静态显示和动态显示
- 基于51单片机的00-99秒表--C语言
- 00~99 再从99~00动态循环程序
- 数码管从0到9再从9到0循环显示