|
主從機(jī)之間的叫號取號串行通信,缺少頭文件 求大神指導(dǎo)如何 編寫?
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
屏幕截圖 2021-05-06 191617.jpg (468.71 KB, 下載次數(shù): 80)
下載附件
仿真如圖
2021-5-6 19:18 上傳
單片機(jī)源程序如下:
- #include "LCD1602.h" //包含自定義頭文件
- #include "reg51.h"
- #include <math.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit btn1 = P1^0; //1號窗口
- sbit btn2 = P1^1; //2號窗口
- sbit btn3 = P1^2; //3號窗口
- sbit beep = P1^6; //蜂鳴器
- sbit Green = P2^3;
- uchar S = 1; //初始化主機(jī)按鈕電平
- uchar an = 0;//叫號數(shù)
- uchar an_1 = 0;
- uchar an_2 = 0;
- uchar an_3 = 0;
- uchar receiveData = 0; //接收到的數(shù)據(jù)
- //*************************延時函數(shù)***************************//
- void delay(uint i){
- int j=0;
- for(j=0;j<i;j++);
- }
- //******************************串口初始化函數(shù)**************************************
- void UsartInit(){
- SCON=0X50; //設(shè)置為串口工作方式1
- TMOD=0X20; //設(shè)置定時器工作方式2
- PCON=0X00; //波特率不加倍 PCON第一位是SMOD與波特率的倍數(shù)有關(guān)
- TH1=0XF3; //計數(shù)器初始值設(shè)置,波特率是2400的
- TL1=0XF3;
- ES=1; //打開接收中斷
- EA=1; //打開總中斷
- TR1=1; //打開計數(shù)器
- LCD_init(); //LCD1602顯示屏初始化
- }
- //*********************************蜂鳴器響應(yīng)函數(shù)***********************************
- void beepx(){
- beep=0;
- delay(10000);
- beep=1;
- }
- //************************數(shù)據(jù)發(fā)送函數(shù)*********************
- void sendchar(){
- TI = 0;
- SBUF = an;
- while(!TI); //等待發(fā)送數(shù)據(jù)完成
- TI = 0;
- }
- //********************************窗口工作選擇**************************
- void Win_sel(){
- if(btn1 == 0){
- delay(1000);
- if(btn1 == 0){
- if(receiveData>an){
- an++;
- an_1 = an;
- LCD_row(2);
- LCD_DispString("num:");
- LCD_disp_char(2, 6, an_1 / 10 + '0');
- LCD_disp_char(2, 7, an_1 % 10 + '0');
- sendchar();
- }
- while(!btn1);
- delay(1000);
- }
- }
- else if(btn2 == 0){
- delay(1000);
- if(btn2 == 0){
- if(receiveData>an){
- an++;
- an_2 = an;
- LCD_row(2);
- LCD_DispString("num:");
- LCD_disp_char(2, 10, an_2 / 10 + '0');
- LCD_disp_char(2, 11, an_2 % 10 + '0');
- sendchar();
- }
- while(!btn2);
- delay(1000);
- }
- }
- else if(btn3 == 0){
- delay(1000);
- if(btn3 == 0){
- if(receiveData>an){
- an++;
- an_3 = an;
- LCD_row(2);
- LCD_DispString("num:");
- LCD_disp_char(2, 14, an_3 / 10 + '0');
- LCD_disp_char(2, 15, an_3 % 10 + '0');
- sendchar();
- }
- while(!btn3);
- delay(1000);
- }
- }
- }
- //*******************************串口模式************************
- void time1 (void) interrupt 4
- {
- if(RI == 1)
- {
- receiveData = SBUF;//出去接收到的數(shù)據(jù)
- RI = 0;//清除接收中斷標(biāo)志位
- }
- }
- //*************************主函數(shù)*******************************
- int main(void){
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
51hei.png (9.14 KB, 下載次數(shù): 49)
下載附件
2021-5-6 20:59 上傳
所有資料51hei提供下載:
51單片機(jī)排隊叫號系統(tǒng)完整.zip
(32.22 KB, 下載次數(shù): 79)
2021-5-6 19:18 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|