看看这个视频,自己再尝试着来一下仿真,下面的这些全部都是仿真要用到的内容
?
具体教程看看这个视频
proteus结合keil对51单片机仿真(基础入门实践)_哔哩哔哩_bilibili
学习单片机你只需要掌握两个软件即可一个是keil,另一个是proteus
#include<reg51.h>
/*
0xc9,0xfx
*/
void main()
{
while(1)
{
P2=0xf9;
}
}
数码管让它实现在上面打印出来0到一
也是上面那个哔哩哔哩视频教程,我这个是已经可以运行的,
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*
0xc9,0xfx
*/
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
void nixie_show()
{
uchar i;
for(i=0;i<10;i++)
{
P2=seg[i];
delay(300);
}
}
void main()
{
while(1)
{
nixie_show();
}
}
这个是单片机用来显示数码管数字的
这是那位大哥的教程,那么可以关注一下这位大哥
proteus结合keil对51单片机仿真(基础入门实践)_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1PT4y1G7vp?p=8&share_source=copy_web
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*
0xc9,0xfx
*/
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
void nixie_show()
{
uchar i;
for(i=0;i<10;i++)
{
P2=seg[i];
delay(300);
}
}
void main()
{
while(1)
{
P3=0x01;
P2=0xa4;
}
}
单片机点亮数码管会出现的错误
像这样它的灯显示的就会有那么一点奇怪了,但是这个代码没有问题,可以和下面的另一个代码比较一下看看为什么
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*
0xc9,0xfx
*/
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code place_code[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar cache[8]={0,0,0,0,0,0,0,0};
void tranfer(uchar a,s,d,f,g,h,j,k)
{
cache[0]=a;
cache[1]=s;
cache[2]=d;
cache[3]=f;
cache[4]=g;
cache[5]=h;
cache[6]=j;
cache[7]=k;
}
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
void nixie_show()
{
uchar i;
for(i=0;i<8;i++)
{
P3=place_code[i];
//P2=0xff;
P2=seg[cache[i]];
}
}
void main()
{
tranfer(0,1,2,3,4,5,6,7);
while(1)
{
nixie_show();
}
}
这个才可以显示完整的0,1,2,3,4,5,6,7,8,9
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*
0xc9,0xfx
*/
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code place_code[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar cache[8]={0,0,0,0,0,0,0,0};
void tranfer(uchar a,s,d,f,g,h,j,k)
{
cache[0]=a;
cache[1]=s;
cache[2]=d;
cache[3]=f;
cache[4]=g;
cache[5]=h;
cache[6]=j;
cache[7]=k;
}
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
void nixie_show()
{
uchar i;
for(i=0;i<8;i++)
{
P3=place_code[i];
P2=0xff;
P2=seg[cache[i]];
}
}
void main()
{
tranfer(0,1,2,3,4,5,6,7);
while(1)
{
nixie_show();
}
}
这个又是一个表示0到九的数字的代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*
0xc9,0xfx
*/
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code place_code[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code place_code1[8]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
uchar cache[8]={0,0,0,0,0,0,0,0};
void tranfer(uchar a,s,d,f,g,h,j,k)
{
cache[0]=a;
cache[1]=s;
cache[2]=d;
cache[3]=f;
cache[4]=g;
cache[5]=h;
cache[6]=j;
cache[7]=k;
}
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
void nixie_show()
{
uchar i;
for(i=0;i<8;i++)
{
P3=place_code1[i];
P2=0xff;
P2=seg[cache[i]];
}
}
void main()
{
tranfer(0,1,2,3,4,5,6,7);
while(1)
{
nixie_show();
}
}
这个就是上面的那个代码的效果图,学习单片机的过程是需要坚持的,上面的那个博主发的软件呢个protes好像无法使用,你可以自己想办法下载,也可以自己花钱在淘宝上面或者拼多多上面弄
单片机的学习真的是不会太容易的,因为网上的资料真的真的老师有漏的,自己要多多的积累,多看一些
这个成功的设置了按键,按一下变换了一个数字
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P30=P3^0;
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar i=0;
void display()
{
if (P30==0);
{
while(P30==0);
P2=seg[i];
i++;
if(i>=10) i=0;
}
}
void main()
{
while(1)
{
display();
}
}
这个是图片
这个也是按键的代码,添加了延时程序
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P30=P3^0;
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar i=0;
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
void display()
{
if (P30==0);
{
delay(10);
while(P30==0);
P2=seg[i];
i++;
if(i>=10) i=0;
}
}
void main()
{
while(1)
{
display();
}
}
后面还有一些例子,自己可以看看上面的那个哔哩哔哩博主的视频,我就不一个个的打出来了。毕竟学习是自己的事。
|