⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial port_1602.c

📁 功能:开机检验数码管好坏
💻 C
字号:
/**********************
编写时间:2008年09月28日
编辑:小鱼儿
功能:用串口通讯发送一个十六进制数,用1602显示,并有八个发光二极管
      以二进制的形式点亮,其十六进值与1602显示一致。
***********************/

#include "reg52.h"   //头文件
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int 
uchar a,b,flag,num;
sbit lcden=P3^4;  //LCD使能位引脚定义
sbit lcdrs=P3^5;  //LCD数据命令选择引脚定义
sbit dula=P2^6;//数码管段选
sbit wela=P2^7;//数码管位选
sbit beep=P2^3;//蜂鸣器引脚定义
uchar code table[]="         ";	

void delay(uint z)//延时子程序
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=125;y>0;y--);
}

/*************************
1602
**************************/
void write_com(uchar com) //写命令 
{
    lcdrs=0;
    P0=com;
    delay(1);
    lcden=1;
    delay(1);
    lcden=0;
} 

void write_data(uchar date)  //写数据 
{
    lcdrs=1;
    P0=date;
    delay(1);
    lcden=1;
    delay(1);
    lcden=0;
}

void init() //初始化 
{
    dula=0;
    wela=0;
    lcden=0;
    write_com(0x38);//显示模式设置
    write_com(0x0c);//不显示光标
    write_com(0x06);
    write_com(0x01);//显示清零 
    write_com(0x80+0x10);
}

void main()
{
	init();
    TMOD=0x20;//设置定时/计数器T1的工作方式为方式2
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;//运行控制位 
    SM0=0;
    SM1=1;//SCON 串行口的工作方式为方式1
    REN=1;//允许串行接受
    EA=1; //开总中断
    ES=1;//开串行口中断允许位
    PCON=0x00;
    beep=1;//关蜂鸣器	
    while(1)
    {
        write_com(0x80);
        for(num=0;num<2;num++)
        {
            write_data(table[SBUF]); //第一行显示
            delay(100);
        }
        if(flag==1)
    	{
            ES=0;//
            flag=0;
            SBUF=a;
            while(!TI); 
            TI=0;//TI为发送中断标志位,硬件置1,软件置0
            ES=1;			
       `}
	}
}

void serial() interrupt 4
{
    P1=SBUF;
    a=SBUF;
    flag=1;
    RI=0;//接受中断标志位,硬件置1,软件置0
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -