国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
用51單片機實現流水線打包計數器程序+Proteus仿真
[打印本頁]
作者:
eng
時間:
2021-7-6 16:20
標題:
用51單片機實現流水線打包計數器程序+Proteus仿真
設計要求:
1.檢測流水線上有無物品,無物品顯示P。
2.有物品通過開始計數并在數碼管上顯示,每計滿100個,蜂鳴器響一下,提醒工作人員打包。
3.通過按鍵可以修改計件數。
完整源碼和proteus仿真文件
:
計數.rar
(47.75 KB, 售價: 3 E幣)
2023-5-26 13:26 上傳
點擊文件名下載附件
售價: 3 E幣
[記錄]
[
購買
]
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png
(21.93 KB)
下載附件
2021-7-6 16:18 上傳
部分源碼:完整請下載附件
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit FMQ=P3^7;
//按鍵
sbit K1=P3^0;
sbit K2=P3^1;
bit flag_KEY=0; //按鍵松開標志位
//數碼管引腳
sbit Num1=P2^0;
sbit Num2=P2^1;
sbit Num3=P2^2;
sbit Num4=P2^3;
unsigned char ScanTime=1; //數碼管4個位
unsigned int Num=0;
//數碼管段碼表
unsigned char code SEG_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
/*-------------------------------------
數碼管顯示
---------------------------------------*/
void display()
{
P0=0x00;
P2=0xFF;
switch(ScanTime)
{
//----------數碼管第1位--------------
case 1:
if(Num==0)
{
P0=0x00;
}
else
{
P0=SEG_Tab[Num/1000];
}
Num1=0;
break;
//-----------數碼管第2位-------------
case 2:
if(Num==0)
{
P0=0x00;
}
else
{
P0=SEG_Tab[Num/100%10];
}
Num2=0;
break;
//-----------數碼管第3位-------------
case 3:
if(Num==0)
{
P0=0x00;
}
else
{
P0=SEG_Tab[Num/10%10];
}
Num3=0;
break;
//-----------數碼管第4位-------------
case 4:
if(Num==0)
{
P0=0x73;
}
else
{
P0=SEG_Tab[Num%10];
}
Num4=0;
break;
//------------------default---------------
default: break;
}
//-----數碼管循環------
ScanTime++;
if(ScanTime>4)
{
ScanTime=1;//循環掃描
}
}
/*-------------------------------------
按鍵掃描
---------------------------------------*/
void keyscan()
{
if(K1==0)
{
if(flag_KEY==1)//按鍵只響應1次
{
flag_KEY=0;
if(Num<999)
{
Num++;
}
}
}
else if(K2==0)
{
if(flag_KEY==1)//按鍵只響應1次
{
flag_KEY=0;
if(Num>0)
{
Num--;
}
}
}
else//按鍵松開
{
flag_KEY=1;
}
}
void delay_ms(unsigned int ms)// 延時子程序
{
unsigned int a,b;
for(a=ms;a>0;a--)
for(b=123;b>0;b--);
}
/*-------------------------------------
主函數
---------------------------------------*/
void main()
{
while(1)
{
display();
keyscan();
delay_ms(10);
if(Num>=100)
{
FMQ=0;
}
else
{
FMQ=1;
}
}
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0