久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > proteus與keil Cx51的單片機仿真(串行通信口)

proteus與keil Cx51的單片機仿真(串行通信口)

作者: 時間:2016-11-24 來源:網絡 收藏
單片機串行口工作于方式0,通過74LS164實現串并轉換,來控制共陽極數碼管的顯示,當按下K01按鈕顯示2010,按下K02鍵顯示1987,按下K03鍵顯示0606,按下K04鍵顯示1988,按下K05鍵顯示1224。其中數字顯示可由自己設定.

電路圖:

本文引用地址:http://cqxgywz.com/article/201611/320719.htm



C程序:

#include
#include
#include
#define uchar unsigned char//宏定義
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P2_0=P2^0;
uchar code discode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//串行方式下共陽極數碼管段碼表0~9
unsigned char leddis[4]={0,1,2,3};//顯存,有幾個數碼管進行定義
void display(void)//數碼管顯示函數
{
unsigned char count;//數碼管個數
P2_0=0;//P2.0引腳輸出清零信號,對74LS164清零
_nop_();
_nop_();//延時,保證清零完成
P2_0=1;//結束對74LS164清零
for(count=4;count>0;count--)
{
SBUF=discode[leddis[count-1]];
while(TI==0);TI=0;
}
}
void main()
{
SCON=0x00;//設定UART的工作方式為方式0
leddis[0]=0;leddis[1]=1;leddis[2]=2;leddis[3]=3;//顯示內容初始化
display();//顯示函數
while(1)
{
if(P1_1==0)//K01按下,即P1_1被按下,顯示2010
{leddis[0]=2;leddis[1]=0;leddis[2]=1;leddis[3]=0;
display();
P1_1=1;}
if(P1_2==0)//K02按下,即P1_2被按下,顯示1987
{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=7;
display();
P1_2=1;}
if(P1_3==0)//K03按下,即P1_3被按下,顯示0606
{leddis[0]=0;leddis[1]=6;leddis[2]=0;leddis[3]=6;
display();
P1_3=1;}
if(P1_4==0)//K04按下,即P1_4被按下,顯示1988
{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=8;
display();
P1_4=1;}
if(P1_5==0)//K05按下,即P1_5被按下,顯示1224
{leddis[0]=1;leddis[1]=2;leddis[2]=2;leddis[3]=4;
display();
P1_5=1;}
}
}




評論


技術專區

關閉