|
C#上位機(jī)源碼
0.png (7.61 KB, 下載次數(shù): 120)
下載附件
2017-12-27 15:33 上傳
上位機(jī)程序與源碼
0.png (16.2 KB, 下載次數(shù): 96)
下載附件
2017-12-27 15:30 上傳
0.png (3.5 KB, 下載次數(shù): 110)
下載附件
2017-12-27 15:30 上傳
單片機(jī)下位機(jī)源程序如下:
- #include<reg51.h>
- #include<intrins.h> //因為要用到左右移函數(shù),所以加入這個頭文件
- #define GPIO_DIG P0
- #define GPIO_LED P0 //將P2口另外取名為GPIO_LED
- #define GPIO_PLACE P2 //1111-1101
- bit cmdArrived = 0; //命令到達(dá)標(biāo)志,即接收到上位機(jī)下發(fā)的命令
- unsigned char cmdIndex;
- unsigned char n;
- unsigned int i;
- unsigned char code DIG_PLACE[8]={
- 0xfd,0xbf,0xfd,0xf7,0xef,0x7f,0xfd,0xfb};//學(xué)號16130712
- unsigned char code DIG_CODE[3]={
- 0x6d,0x5b,0x3f};
- //520的顯示
- unsigned char DisplayData[8];//用來存放要顯示的8位數(shù)的值
- sbit Beep = P1^5 ;
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- sbit RELAY = P1^4; //定義繼電器使用的IO口
- sbit K1 = P0^0; //定義按鍵使用的IO口
- //520子程序
- void Delay10ms(unsigned int c) //誤差 0us
- {unsigned char a, b;
- for (;c>0;c--)
- {
- for (b=38;b>0;b--)
- {
- for (a=130;a>0;a--);
- }
- }
- }
- void smg()
- {
- unsigned char i = 0;
- while(1)
- {
- GPIO_DIG = ~DIG_CODE[i];
- i++;
- if(i == 3)
- {
- i = 0;
- }
- Delay10ms(50);
- }
- }
- //0-7
- void DigDisplay()
- {
- unsigned char i;
- unsigned int j;
- for(i=0;i<8;i++)
- {switch(i) //位選,選擇點亮的數(shù)碼管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//顯示第0位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//顯示第1位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//顯示第2位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//顯示第3位
- case(4):
- LSA=0;LSB=0;LSC=1; break;//顯示第4位
- case(5):
- LSA=1;LSB=0;LSC=1; break;//顯示第5位
- case(6):
- LSA=0;LSB=1;LSC=1; break;//顯示第6位
- case(7):
- LSA=1;LSB=1;LSC=1; break;//顯示第7位
- }
- GPIO_DIG=DisplayData[i];//發(fā)送段碼
- j=10; //掃描間隔時間設(shè)定
- while(j--);
- GPIO_DIG=0x00;//消隱
- }
- }
- void dsmg()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- DisplayData[i]=DIG_CODE[i];
- }
- while(1)
- {
- DigDisplay();
- }
- }
- //SHANSHUO
- void shanshuo(void)
- {
- unsigned char LED;
- LED = 0xFE;
- while(1)
- {
- P0 = LED;
- Delay10ms(50);
- LED = _crol_(LED,1);
- }
- }
- //
- void jidianqi()
- {
- while(1)
- {
- if(K1 == 0) //如果按鍵按下
- {
- RELAY = 0; //繼電器閉合
- }
- else
- {
- RELAY = 1;
- }
- }
- }
- void UsartConfiguration()
- {
- SCON=0X50; //設(shè)置為工作方式1
- TMOD=0X20; //設(shè)置計數(shù)器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF3; //計數(shù)器初始值設(shè)置,注意波特率是4800的
- TL1=0XF3;
- ES=1; //打開接收中斷
- EA=1; //打開總中斷
- TR1=1; //打開計數(shù)器
- }
- void Usart() interrupt 4
- {
-
- if (RI) //接收到字節(jié)
- {
- cmdIndex = SBUF;
- RI = 0; //清零接收中斷標(biāo)志位
- SBUF = cmdIndex;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
- cmdArrived = 1;
- }
- if (TI) //字節(jié)發(fā)送完
- { TI = 0; //清零發(fā)送中斷標(biāo)志位
- }
- //清除發(fā)送完成標(biāo)志位
- }
- void main()
- {
- UsartConfiguration();
- while(1)
- {
- if(cmdArrived) //進(jìn)入中斷,接受完數(shù)據(jù)且使得cmdIndex = SBUF后才執(zhí)行,假如SBUF=0x01
- {
- cmdArrived = 0;
- if(cmdIndex==0x33)
- {
- GPIO_LED=0x01;//0000 0010
- while(1)
- {
- for(n=0;n<7;n++) //左移7次,這樣子就會到達(dá)最左邊
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
0.png (13.5 KB, 下載次數(shù): 146)
下載附件
2017-12-27 15:29 上傳
所有資料51hei提供下載:
所有作業(yè).rar
(4.15 MB, 下載次數(shù): 481)
2017-12-27 15:35 上傳
點擊文件名下載附件
51單片機(jī)下位機(jī)各種程序 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|