最近閑的無聊,就接了5個系里面同學的畢業設計,這幾天加班累得我,當然是收費的,都是同學,差不多就500一個,然而班級一個同學讓我幫他調設備,也是網上買的,居然花了2800,社會,社會........老子做了5個,還沒人家一個賺的多,小豬佩奇送給自己安慰一下自己。。。。。。。。廢話不想說,直接看代碼吧.....都是很簡單的,很多東西都是現成的,我就是為了騙黑幣。。。。。。暴露自己了
單片機源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- typedef bit BOOL;
-
- unsigned int sec = 0,min = 0,aa,tmp;
- unsigned char ss,sg,ms,mg,count,count1;
- sbit key1 = P0^0; //系統啟動按鍵
- sbit key2 = P0^1; //投幣三元按鍵
- sbit beep = P3^7; //蜂鳴器,洗衣完成
- sbit led1 = P0^2; //等待運行燈
- sbit led2 = P0^3; //系統運行燈
- sbit led3 = P0^4; //網上預約燈
- sbit rs=P0^7;
- sbit rw=P0^6;
- sbit lcden=P0^5;
- char code dis1 []={"Waiting To Run!"};
- char code dis2 []={"system running!"};
- char code dis3 []={"time remaining:"};
- void delay_ms(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void send(unsigned char a) //單字節發送函數
- { //注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻
- ES =0;
- TI=0;
- SBUF=a;
- while(TI==0);
- TI=0;
- ES = 1;
- }
- void send_str(unsigned char *str) //發送字符串函數
- {
- while(*str != '\0')
- send(*str++);
- }
- void ctrl() //接收處理函數
- {
- switch(tmp)
- {
- case '1': //查詢洗衣機是否被預約
- if(count1 == 0)
- {
- send_str(" the system is not running\n! ");
- }
- else
- {
- send_str(" the system is running\n! ");
- }
-
- break;
-
- case '2': //查詢洗衣機剩余洗衣時間
- if(count1 == 0)
- {
- send_str(" time remaining: 00:00\n");
- }
- else
- {
- send_str(" time remaining: \n");
- send((unsigned char) 2-ms+'0');
- send((unsigned char) 9-mg+'0');
- send(':');
- send((unsigned char) 5-ss+'0');
- send((unsigned char) 9-sg+'0');
- send('\n');
- }
- break;
- case '3': //預定洗衣機
- led3 = 1;
- count1 = 1;
- send_str(" the machines is reserved by you!\n");
- break;
- case '4': //啟動洗衣機
- led2 = 1;
- led3 = 0;
- count = 3;
- break;
-
- default:
- break;
- }
- }
- void init(void)
- {
- ES=0; //關中斷
- SCON = 0x50; // REN=1允許串行接受狀態,串口工作模式1,
- //10位UART(1位起始位,8位數據位,1位停止位,無奇偶校驗),波特率可變
- TMOD = 0x21;
- TH0 = (65535-50000)/256;
- TL0 = (65535-50000)%256;
-
- TH1=TL1=0xFD; // 波特率9600 (本次測試采用晶振為11.0592)
- PCON &= 0x7f; // 波特率不倍增
- TR1 = 1; //定時器1開始工作,產生波特率
- //發送標志位置0
- TI=0; //接收標志位置0
- RI=0;
- ES=1;
-
-
- EA = 1; //開總中斷
- ET0 = 1; //開定時器中斷
- }
- void write_com(uchar com)
- {
- rs=0;
- lcden=0;
- P2=com;
- delay_ms(5);
- lcden=1;
- delay_ms(5);
- lcden=0;
- }
- void write_date(uchar date)
- {
- rs=1;
- lcden=0;
- P2=date;
- delay_ms(5);
- lcden=1;
- delay_ms(5);
- lcden=0;
- }
- void lcd_init()
- {
- rw=0;
- lcden=0;
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);
- }
- void write_fm(uchar add,uchar data1,uchar data2)
- {
- write_com(0x80+0x40+add);
- write_date(0x30+data1);
- write_date(0x30+data2);
- }
- void main()
- {
- char i = 0;
-
- init();
- lcd_init();
- led1 =1;
- led2 =0;
- led3 =0;
- beep = 0;
- key1 = 1;
- key2 = 1;
- count1 = 0; //0為系統沒有運行;1為系統已經被預定
-
- write_com(0x80);
- i=0;
- while (dis1 [i]!='\0')
- {
- write_date(dis1 [i]);
- i++;
- }
-
- while(key1 == 1)
- {
- if(count == 3)
- {
- count = 0;
- led2 = 1;
- write_com (0x01);
- while(1)
- {
- TR0 = 1; //開啟定時器
- ss = sec/10;
- sg = sec%10;
- ms = min/10;
- mg = min%10;
- write_com(0x80);
- i=0;
- while (dis1 [i]!='\0')
- {
- write_date(dis3 [i]);
- i++;
- }
-
- write_fm(4,2-ms,9-mg);
- write_date(':');
- write_fm(7,5-ss,9-sg);
-
- if(ms == 2&&mg == 9&&ss == 5&&sg == 9)
- {
- ET0 = 0;
- TR0 = 0; //關定時器
- }
- }
- }
- }
-
-
- if(key1 == 0)
- {
- delay_ms(20);
- write_com (0x01);
- while(key1 != 1)
- {
- led1 = 0;
- write_com(0x80);
- i=0;
- while (dis2 [i]!='\0')
- {
- write_date(dis2 [i]);
- i++;
- }
- count1 = 1; //人工投幣
- if(key2 == 0)
- {
- delay_ms(20);
- if(key2 == 0)
- {
- count++;
- while(!key2);
- }
- }
- if(count == 3)
- {
- count = 0;
- led2 = 1;
- write_com (0x01);
- while(1)
- {
- TR0 = 1; //開啟定時器
- ss = sec/10;
- sg = sec%10;
- ms = min/10;
- mg = min%10;
- write_com(0x80);
- i=0;
- while (dis1 [i]!='\0')
- {
- write_date(dis3 [i]);
- i++;
- }
-
- write_fm(4,2-ms,9-mg);
- write_date(':');
- write_fm(7,5-ss,9-sg);
-
- if(ms == 2&&mg == 9&&ss == 5&&sg == 9)
- {
- ET0 = 0;
- TR0 = 0; //關定時器
- }
- }
-
- }
- }
- }
-
- }
- void timer0() interrupt 1
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
趙桂黎.rar
(44.86 KB, 下載次數: 40)
2018-4-20 20:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|