|
電腦發(fā)送大寫(xiě)A下位機(jī)顯示流水燈。電腦發(fā)送大寫(xiě)字母B下位機(jī)數(shù)碼管顯示0-F.- /*******************************************************
- 功能 :串口程序。電腦發(fā)送字母,下位機(jī)(實(shí)驗(yàn)板)
- 顯示流水燈和數(shù)碼管顯示0-F
- 單片機(jī):STC12C5A60S2
- 晶振 :11.0592M(必須用這個(gè)頻率的晶振要不會(huì)出錯(cuò))
- 作者 :蘇義江
- 時(shí)間 ; 20015-12-12
- 注釋 :數(shù)碼管用P2口通過(guò)鎖存器573驅(qū)動(dòng)位和段。
- 位的鎖存端用P0^6控制
- 段的鎖存端用P0^7控制
- *******************************************************/
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit wei=P0^6;//位使能
- sbit duan=P0^7;//段使能
- //共陽(yáng)數(shù)碼管段碼
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
- 0xa1,0x86,0x8e,0x89};
- //位碼
- uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar a,i;
- void init_uart()//串口初始化
- {
- TMOD=0X20;//T1工作在方式2及自動(dòng)重裝
- TH1=0XFD;//波特率9600
- TL1=0XFD;
- TR1=1;
- // SCON=0X50; //SCON=0X50也可以寫(xiě)成SM0=0;SM1=1;
- SM0=0;
- SM1=1;
- REN=1;
- ES=1; //啟動(dòng)串口中斷
- EA=1;
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=700;y>0;y--);
- }
- void liushui()//流水燈
- {
- for(i=0;i<8;i++)
- {
- P0=tab[i];
- delay(200);
- }
- }
- void diplay()//數(shù)碼管顯示0-F
- {
- wei=1; //打開(kāi)573位碼鎖存端
- P2=0;
- wei=0; //鎖存數(shù)據(jù)
- for(i=0;i<16;i++)
- {
- duan=1; //打開(kāi)573段碼鎖存端
- P2=table[i];
- duan=0; //鎖存數(shù)據(jù)
- delay(1000);
- P2=0XFF; //消隱
- }
- }
- void main()
- {
- init_uart();
- while(1);
-
- }
- void uate() interrupt 4
- {
- ES=0; //先關(guān)閉串口中斷防止出錯(cuò)
- RI=0; //發(fā)送標(biāo)志位清零
- a=SBUF;
- switch(a)
- {
- case 'A': liushui();break;//電腦發(fā)送A實(shí)驗(yàn)板顯示流水燈
- case 'a': P0=0; break;//電腦發(fā)送a實(shí)驗(yàn)板顯示LED燈全亮
- case 'B': diplay();break;//電腦發(fā)送B實(shí)驗(yàn)板數(shù)碼管顯示0-F
- }
- ES=1;//啟動(dòng)串口中斷,繼續(xù)發(fā)送
- }
復(fù)制代碼
|
|