练习001:51单片机Proteus仿真:点亮一个灯
1、器件清单
Proteus关键词 | 元器件 |
---|---|
CAP | 固定电容 |
CAP-ELEC | 电解电容 |
AT89C51 | AT89C51单片机 |
CRYSTAL | 晶振 |
BUTTON | 复位按键 |
RES | 电阻 |
RESPACK | 排阻 |
LED-YELLOW | 黄色发光二极管 |
2、电路
3、代码
#include <reg51.h> //单片机头文件
sbit LED=P0^0; //定义LED为端口P0^0
void main() //主程序
{
while(1) //无限循环
{
LED=0; //P0^0输出低电平,发光二极管点亮
//LED=1; //P0^0输出高电平,发光二极管关闭
}
}
练习002:51单片机Proteus仿真:流水灯
1、器件清单(参考练习001)
2、电路
1、画一条总线
2、将线路连接到总线
按住ctrl划线,画斜线连接线需要把“自动连接器”也称“自动连线”按钮放开。
3、将相应节点一一连接
Tool–Property Assignment Tool属性赋值工具
3、代码
#include <reg52.h> //单片机头文件 void Delay(); //延时子程序说明 void main() //主程序 { unsigned char i; unsigned char temp; P0=0xff; //二进制11111111 while(1) //无限循环 { temp=0x80; //二进制10000000 for(i=0;i<8;i++) { P0=~temp; //取反 Delay(); //延时 temp=temp>>1 //右移一位 } } } /*延时子程序使LED在变化时有一个停留时间,通过一个外循环和内循环的空操作,共循环255×255次*/ void Delay() { unsigned char i,j; for(i=0;i<255;i++) //外循环255次 for(j=0;j<255;j++); //内循环255次 }
练习003:51单片机Proteus仿真:一位数码管计数
1、器件清单
Proteus关键词 | 元器件 |
---|---|
AT89C51 | AT89C51单片机 |
RES | 电阻 |
BUTTON | 按键 |
7SEG-COM-AN-GRN | 数码管(绿色) |
数码管接线结构图
数码管有两种,共阴和共阳,很好区分的,公共端在上边的就是共阳的,习惯上画VCC时是放在上边的,公共端在下边的就是共阴了,画地时习惯上放在下边的。再说数码管的7段,从上边的横开始起叫A,按顺时针方向依此为ABCDEFG,最后说左边的引脚,从上边开始向下,依此是ABCDEFG。这样就对应上了,根据显示数字的需要在各段加有效电平就显示出相应的数字了。如下面的图是一种测试方法。左边的两个就是共阳的,右边的一个就是共阴的。
2、电路
自动
手动
3、代码
一位数码管自动计数代码
#include <reg51.h>
unsigned char code Tab[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//0-9,共阳数码管码段表
void Delay()//简单延时子程序
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
void main()//主程序
{
unsigned char i=1;
while(1)
{
P0=Tab[i];//送相应码段表值
Delay();
i++;
if(i>9) i=0;
}
}
一位数码管手动计数代码
#include <reg51.h> unsigned char code Tab[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0-9,共阳数码管码段表 unsigned char p=1; void Delay()//简单延时子程序 { unsigned char i; for(i=300;i>0;i--); } void main()//主程序 { EA=1;//开总允许开关 IT0=1;EX0=1;//开外部中断0和外部中断0允许分开关 IT1=1;EX1=1;//开外部中断1和外部中断1允许分开关 while(1) { P0=Tab[p]; //输出码段表 Delay(); } } void intersvr0(void) interrupt 0 using 1 //外部中断0处理子程序 { p++; if(p>9) p=9; } void intersvr1(void) interrupt 2 using 1 //外部中断1处理子程序 { p--; if(p<1) p=1; }
标签:单片机,UAV2105,void,UAV2101,unsigned,char,数码管,51MCU,子程序 From: https://www.cnblogs.com/yilangUAV/p/17753293.html