欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機累加累減程序與Proteus仿真圖
[打印本頁]
作者:
18896597781
時間:
2021-5-29 12:18
標(biāo)題:
單片機累加累減程序與Proteus仿真圖
累加累減程序最大數(shù)值十999。
按加建KEY1數(shù)值加1并顯示;
按減建KEY1數(shù)值減1并顯示;
按歸零鍵數(shù)值歸零并顯示;
附件包含完整程序和仿真設(shè)計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
無標(biāo)題.png
(220.58 KB, 下載次數(shù): 59)
下載附件
2021-5-29 12:11 上傳
單片機源程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define DB P1
/*************** 物理連接
P2^0對應(yīng) LCD_RS;
P2^1對應(yīng)LCD_RW;
P2^2對應(yīng)LCD_E;
P1對應(yīng)LCD_DB;
P3^0對應(yīng)KEY1加鍵;
P3^1對應(yīng)KEY2減鍵;
P3^2對應(yīng)KEY3清零鍵;
******************/
void LCD_init(); //1602初始函數(shù)
void LCD_write_command(uchar dat); //1602寫命令函數(shù)
void LCD_write_dat(uchar dat); //1602寫數(shù)據(jù)函數(shù)
void delay40us(uint n); //延時函數(shù),單次40US
void display(uint tt); //顯示函數(shù)
uint KEY_scan(uint num);
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;
sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit KEY3=P3^2;
uint num,key; //全局變量
uchar table[]="The num is";
//**************延時函數(shù),單次約40US************
void delay40us(uint n)
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++); //在這個延時循環(huán)函數(shù)中我只做了2次循環(huán),
} //實踐證明我的LCD1602 上普
//通的指令只需1次循環(huán)就能可靠完成
//*************LCD初始化函數(shù)***************
void LCD_init()
{
LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
LCD_write_command(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍
LCD_write_command(0x06);//設(shè)定輸入方式,增量不移位--------------
LCD_write_command(0x01);//清除屏幕顯示----------------
delay40us(100); //實踐證明,我的LCD1602上,用for 循環(huán)200 次就能可靠完成清屏指令
}
//*****************1602寫命令函數(shù)************
void LCD_write_command(uchar dat)
{
DB=dat;
LCD_RS=0; //寫命令
LCD_RW=0; //寫容許
LCD_E=1; //LCD_E下降沿觸發(fā)寫
LCD_E=0;
delay40us(1); //延時確保寫成功
}
//*************1602寫數(shù)據(jù)函數(shù)*************
void LCD_write_dat(uchar dat)
{
DB=dat;
LCD_RS=1; //寫數(shù)據(jù)
LCD_RW=0; //寫容許
LCD_E=1; //LCD_E下降沿觸發(fā)寫
LCD_E=0;
delay40us(1); //延時確保寫成功
}
//****************讀鍵盤***************
uint KEY_scan(uint num )
{
if(KEY1==0) //加鍵按下
delay40us(25); //延遲1MS
if(KEY1==0) //確認(rèn)加鍵按下
{
if(num==1000)
num=0;
++num; //顯示當(dāng)前數(shù)值
display(num);
while(!KEY1); //等待加鍵松開
}
if(KEY2==0)
delay40us(25);
if(KEY2==0)
{
if(num==0)
num=1000;
--num;
display(num);
while(!KEY2);
}
if(KEY3==0)
delay40us(25);
if(KEY3==0)
{
num=0;
display(num);
while(!KEY3);
}
return num;
}
//********************顯示當(dāng)前數(shù)值***********
void display(uint tt)
{
LCD_write_command(0x80+68);
LCD_write_dat(0x30+tt/100);
delay40us(15);
LCD_write_dat(0x30+tt/10%10);
delay40us(15);
LCD_write_dat(0x30+tt%10);
delay40us(15);
}
//************主函數(shù)************
main()
{
uchar k;
P3=0xff;
num=0;
LCD_init();
LCD_write_command(0x80);
for(k=0;k<12;++k)
{
LCD_write_dat(table[k]);
delay40us(1500);
}
while(1)
{
num= KEY_scan(num);
}
}
復(fù)制代碼
所有資料51hei提供下載:
累加累減程序.zip
(62.77 KB, 下載次數(shù): 13)
2021-5-29 12:15 上傳
點擊文件名下載附件
仿真設(shè)計和程序
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1