导航:首页 > 操作系统 > 单片机led显示keil

单片机led显示keil

发布时间:2022-07-29 06:11:09

⑴ 学校的课程设计,用proteus单片机和keil设计一个LED数码管显示的秒表,如下

你的程序有问题,仿真图不要用三极管驱动,反而不显示。如下画法就行,那4个按键不变,没有画。

程序中的按键处理,方法不当。

先改成如下的程序,先调出能显示,然后你自己再增加按键功能。

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit START = P1 ^0;

sbit STOP = P1 ^1;

sbit RESET = P1 ^2;

sbit dp = P0 ^7;

sbit w1 = P2 ^6;

sbit w2 = P2 ^7;

uchar aa,temp,STOPFLAG,STARTFLAG,miaoshi,miaoge;

uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表错误

void display();

void delay( uint z);

void init();

void main()

{

init();

while(1)

{

display();//不用带参数

if(aa == 20)

{

aa = 0;

temp ++;

if(temp == 60)

{

temp = 0;

}

}

}

}

void delay(uint z)

{ uchar x,y;

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

for(y = 110 ; y > 0; y --);//y不能小于110

}

void display()//不用带参数

{

miaoshi = temp/10;

miaoge = temp%10;

w1 = 1;

P0 = table[miaoshi];

delay(2);

w1 = 0;

w2 = 1;

P0 = table[miaoge];

delay(2);

w2 = 0;

}

void init()

{ TMOD = 0x01;

TH0 = (65536 - 50000)/256;

TL0 = (65536 - 50000)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void timer0() interrupt 1

{ TH0 = (65536 - 50000)/256;

TL0 = (65536 - 50000)%256;

aa ++;

}

⑵ 单片机数码管的动态显示问题,求解

我的代码会有很多bug,不过相当于免费的东西,你也就别期待多么好了。

可以参考一下。按照我硬件图来的。

#include<reg51.h>
unsigned char tube1[]={0x5b,0x3f,0x5b,0x3f};//数码管初始状态2020 字符码
unsigned char tube2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极字符码
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit led1=P3^0;
sbit led2=P3^1;
sbit led3=P3^2;
sbit led4=P3^3;
void delay(unsigned int time);
void main()
{
unsigned char i,W;
while(1)
{
if(key1==1&key2==1&key3==1) //初始状态
{
W=0x01;
P3=0X00;
for(i=0;i<4;i++)
{
P1 =W;
W<<=1;
P0=tube1[i];
delay(10);
P1 =0x00;
}
}
if(key1==0) // 按键1按下
{
delay(10);
if(key1==0)
{
led1=1;
led2=0;
led3=0;
led4=0;
W=0x8;
for(i=0;i<10;i++)
{
if(key2==0|key3==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key1);
delay(10);
while(!key1);
}
if(key2==0) //按键2按下
{
delay(10);
if(key2==0)
{
led1=0;
led3=0;
led2=1;
led4=1;
W=0x4;
for(i=0;i<10;i=i+2)
{
if(key1==0|key3==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key2);
delay(10);
while(!key2);
}
if(key3==0) //按键3按下
{
delay(10);
if(key3==0)
{
led1=1;
led3=1;
led2=0;
led4=0;
W=0x2;
for(i=1;i<10;i=i+2)
{
if(key2==0|key1==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key3);
delay(10);
while(!key3);
}
}
}
void delay(unsigned int time)
{
unsigned int j=0;
for(;time> 0;time--)
for(j=0;j<125;j++);
}

⑶ 51单片机“LED滚动显示0123456789AbCdEF” .用keil软件调试,而且一次八位。

是这样的六位换八位,还是六段管换七段管???其实两种都挺简单的

⑷ 用Keil uVision软件编一个让4位LED数码管显示数字的程序

#include<reg52.h>

#include<intrins.h>

sbitwei=P1^0;

sbitan=P1^1;

intw[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

inti,tt;

inttemp;


voidmain()

{

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

tt=0;

i=0;

temp=0xfe;

an=1;

P0=0xfe;

an=0;

wei=1;

P0=0x06;

wei=0;

while(1)

{if(tt==20)

{ tt=0;

i++;

if(i==8)

i=0;

wei=1;

P0=w[i];

wei=0;

an=1;

temp=_crol_(temp,1);

P0=temp;

an=0;

}

}

}


voidtimer()interrupt1

{TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

}

这是我的protues电路图,你可以看看,由于可简化,我没画晶振和复位电路哈

⑸ Keil编程 实现:使用51单片机,实现LED温度的显示,同时设定温度界限,当超过步进电机正转,低于则反转

程序还要自己整合,毕竟自己编的才有成就感,我给你提点思路,液晶显示程序和温度控制程序都看懂的情况下,你可以在定时中断中扫描温度,并判断是否达到阀值,设置一个Bit型的flag,然后在主程序中一直调用步进电子子程序,同样,步进电机中的正转反转由上面提到的flag进行判断。有什么问题继续追问就行

⑹ 用keil编一个led灯闪烁程序

点亮 小灯的程序我们第二课完成了,就是让 LED = 0。熄灭小灯的程序也很简单,就是 LED = 1。点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁了。

我们首先复习一下 Keil 写程序的过程,建立工程-->保存工程-->建立文件-->添加文件到工程-->编写程序-->编译-->下载程序。

LED 对于有 C 基础的同学来说很简单,那我先写出来,大家可以先看下。没有C 语言基础的同学也可以跟着抄一遍,下节课我会补充部分 C 语言基础知识,这样你先抄一遍后,再跟着看 C 语言基础知识的时候也比较容易理解透彻。

纯文本复制

#<reg52.h>

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

main(){ //void 即函数类型

//以下为声明语句部分

unsigned int i = 0; //定义一个变量 i,并赋初值 0

//以下为执行语句部分

ENLED = 0; //U3、U4 两片 74HC138 总使能

ADDR3 = 1; //使能 U3 使之正常输出

ADDR2 = 1; //经 U3 的 Y6 输出开启Q16

ADDR1 = 1;

ADDR0 = 0;

(1){

LED = 0; //点亮小灯

for (i=0; i<30000; i++); //延时一段时间

LED = 1; //熄灭小灯

for (i=0; i<30000; i++); //延时一段时间

}

}

大家把这个程序编译一下,下载到里,就会发现 LED2 这个小灯会闪烁了。

⑺ Keil四个LED灯点亮程序

keil使用教程编写第一个led灯程序
1、新建一个空文件夹
2、打开keil-->newuVisionproject
3、选择目录,命名文件
4、选择芯片
5、添加文件
6、编写C51单片机程序
7、生成可以加载单片机里的hex文件
8、编译生成hex文件
9、将hex文件导入单片机

⑻ Keil编程:51单片机键盘控制LED

刚开始 输出0X55 或0xAA即可
然后判断按键是否按下
单灯流水 for(i=0;i<8;i++)
{ P1=0x01>>i;delayms(200);}
双灯流水
for(i=0;i<8;i+=2)
{ P1=0x03>>i;delayms(500);}
呼吸灯不知怎样呼吸,假如一个灯渐亮渐暗程序如下:
for(i=0;i<100;i++)
{ LED=0;delay100us(i);LED=1;delay100us(100-i);}
假设LED=0是点亮,那么上面就逐渐变亮过程
一亮一灭是10ms 250次就是2·5S
逐渐变暗过程和上面一样,只不过把LED=0 LED=1相互颠倒一下就是了

⑼ 单片机软件keil怎么用

1.首先,开启我们的keil软件,具体的安装步骤就不做太多的介绍了;
2.开启后,点击菜单栏上的Project选项,创建我们的工程,
3.点击后,在箭头所指的文本框中输入你的芯片型号进行查找,...
4.选中芯片点击Ok即可,在左侧的文本框中,选中图中选项右键选择Add New...选项,...
5.选择.c的文件,输入文件名以及文件的存储目录,

阅读全文

与单片机led显示keil相关的资料

热点内容
oppo手机西瓜视频的文件夹 浏览:865
骑手一般用哪个app 浏览:608
程序员老板用什么手机 浏览:848
比心app头像不通过为什么 浏览:105
加密币市值前十走势 浏览:190
单片机学习推荐课程 浏览:473
对数ln的运算法则图片 浏览:735
仿微博app源码 浏览:781
怎么取消调用app 浏览:545
程序员去哪里求助 浏览:834
服务器里的端口是什么 浏览:975
aspnetjavaphp 浏览:399
程序员毕业时间 浏览:285
程序员用户免费软件 浏览:754
51单片机汇编语言指令 浏览:139
女程序员好难 浏览:688
三田压缩机与电装 浏览:710
重生细胞安卓版没键盘怎么玩 浏览:994
小米nfc手机刷加密卡 浏览:290
linux如何下载文件 浏览:808