设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加1(数码管初始值为0,9加1 后显示0)。

作者&投稿:况洪 (若有异议请与网页底部的电邮联系)

程序清单如下:

#include < reg51.h >// 51单片机头文件

#define uchar unsigned char// 宏定义,用uchar替代无符号字符型

#define uint  unsigned int// 宏定义,用uint 替代无符号整数型

sbit Key = P2 ^ 7;

uchar Count = 0; 

uchar code DataChar[10] = // 定义数码管的段码 '0'~'9'、'-'、' ' 'P'

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

};//延时N毫秒

void DelayNms( uint N )// 利用x、y作简单的自减运算,消耗单片机指令周期,达到延时的目的

{

uint x,y;

for( x=N; x>0; x-- )

for( y=110; y>0; y-- );

}

//数码管显示  // 显示方式为动态扫描,视觉暂留原理

void Display( uchar Num )// *p指向Main函数中的数组ShowNum的首地址

{

P0 = DataChar[ Num ];// 向P0赋段码值

DelayNms(2);// 短暂的延时

P0 = 0x00;// 让数码管熄灭,否则会造成数字重叠

}

void main( void )

{

while(1)

{

if( Key == 0 )

{

DelayNms(30);

if( Key == 0 )

{

Count += 1;

Count = (Count>9)? 0 : Count;

}

while( !Key );

}

Display( Count );

}

}

扩展资料

8051单片机具有如下功能:

8位CPU·4kbytes程序存储器(ROM) (52为8K)

128bytes的数据存储器(RAM) (52有256bytes的RAM)

32条I/O口线·111条指令,大部分为单字节指令

21个专用寄存器

2个可编程定时/计数器·5个中断源,2个优先级(52有6个)

一个全双工串行通信口

外部数据存储器寻址空间为64kB

外部程序存储器寻址空间为64kB

逻辑操作位寻址功能·双列直插40PinDIP封装

单一+5V电源供电

CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口,既可用作输入,也可用作输出

T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。

参考资料来源:百度百科-51单片机



~

求单片机程序设计编程题
答:那就做做我的毕业设计题目吧~!有很多个 !我只做了其中一个 单片机类的毕业设计题目及要求 1,题目:计算器 要求:能够进行8位数的加减乘除运算,设置不同的按键输入数据、运算符号、等于号,在数码管和点阵屏上显示相应的结果。运算范围是0.0000001--99999999。2,题目:温度计 要求:测量当前的温度...

一个花样流水灯单片机程序(要求1,3,5,7灯亮,2,4,6,8灯亮然后全灭)
答:单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个...

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
答:define uchar unsigned char define uint unsigned int uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77,0x7C, 0x39, 0x5E, 0x79, 0x71, 0x76, 0x38, };sbit duan=P2^0;sbit wei=P2^1;uchar ...

设计一个计时为1分钟的电子秒表单片机实验如何实现LED的动态扫描?_百...
答:要设计一个使用单片机实现的计时为1分钟的电子秒表,同时实现LED的动态扫描,你可以按照以下步骤进行:硬件准备:单片机:如Arduino UNO,具有数字和模拟输入/输出引脚。LED:根据你的需要选择LED的数量和颜色。7段显示器:用于显示秒表的数字,可选。按键:用于启动、暂停和重置秒表。适当的电阻:用于限制...

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
答:while(1){ display(fb(),fs(),fg());} } void init(){ num=0;a=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} void display(ucharbai,ucharshi,ucharge){ P1=0xfd;P0=table[bai];delay(1);P1=0xfb;P0=table[shi];delay(1);P1=0xf7;...

...帮帮我啊!用单片机编辑一个数字钟的程序啊,要求如下:
答:使用KEIL编辑出数字钟完整程序;数字钟有八个按键,八个按键功能分别为:1、按键一:用来修改时间和闹钟;每按一下小时上加一;2、按键二:用来修改时间和闹钟;每按一下小时上减一;... 使用KEIL编辑出数字钟完整程序;数字钟有八个按键,八个按键功能分别为:1、按键一:用来修改时间和闹钟;每按一下小时上加一;2、...

我想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一...
答:你这数码管的1、2口就这么悬着或者接dp一起了真的没问题吗……全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。然后一个全局变量代表秒 编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第...

求利用单片机89c51一个6位LED数码管显示功能 程序
答:include<reg52.h> define uchar unsigned char define uint unsigned int sbit dula=P2^6;sbit wela=P2^7;void delay(uint z);void display(uchar num1,uchar num2,uchar num3);uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//uchar code tablewe[]...

用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设...
答:delay(1);P2=0xff;tmp=tmp<<1;} void main( ){ unsigned char z,s=00,m=00,h=00;给时钟初始值 while(1){ for(z=0;z<100;z++){ tmp=0x01;P2=tab[h/10];小时显示 disp();P2=tab[h%10];disp();P2=tab[m/10];分钟显示 disp();P2=tab[m%10];disp();P2=tab[s/10];...

跪求单片机课程设计 要完全呦
答:5. 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。二.课程设计的体要求 a) 原理图设计。1. 原理图设计要符合项目的工作原理,连线要正确,端了要不得有标号。2. 图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明...