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

📄 main.c

📁 51系列单片机实验课程:计数 (通过串口
💻 C
字号:
/*****************************************************
激情创造,精彩无限-------欢迎进入单片机的世界
*****************************************************/
/*****************************************************
程序说明:本程序是将串口接收到的数据中的A的个数进行计算,显示结果
硬件连接:使用实验箱BACK 3部分电路。
程序版本:
作者:ZJ
编写时间:2007年12月11日
修改记录:
备注:
*****************************************************/

#include <reg52.h>

sbit SEGLOCK = P1^3;
sbit POSITLOCK = P1^2;

code unsigned char LedCode[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
code unsigned char LedPosit[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};

unsigned char ch;			//定义一个接收数据的临时变量
unsigned char number;

void Delay (unsigned int Dat)
{
	unsigned int i;
	for (i=0;i<Dat;i++);
}

void Display (void)
{
	P0 = LedCode[number/10];	//送出十位数字
	SEGLOCK = 1;				//锁存段码
	SEGLOCK = 0;
	P0 = LedPosit[6];			//送出十位的位选信号
	POSITLOCK = 1;				//锁存位选信号
	POSITLOCK = 0;
	Delay(20);					//延时
	P0 = LedPosit[8];			//送出消隐信号
	POSITLOCK = 1;
	POSITLOCK = 0;
	
	P0 = LedCode[number%10];	//送出个位数字
	SEGLOCK = 1;				//锁存段码
	SEGLOCK = 0;
	P0 = LedPosit[7];			//送出个位的位选信号
	POSITLOCK = 1;				//锁存位选信号
	POSITLOCK = 0;
	Delay(20);					//延时
	P0 = LedPosit[8];			//送出消隐信号
	POSITLOCK = 1;
	POSITLOCK = 0;
}

void main (void)
{
	SCON = 0x50;						//设定串口的工作方式
	TMOD = (TMOD & 0x0f) | 0x20;		//设定T1作为波特率发生器的工作模式
	TH1 = -11059200L/32/12/9600;		//设定T1的初值	
	TL1 = TH1;
	TR1 = 1;							//启动波特率发生器
	ES = 1;								//开启串口中断
	EA = 1;								//开启总的中断
	while (1)
	{
		Display();						//主程序里循环执行显示程序
	}
}

void Uart_int (void) interrupt 4		//串口中断服务程序
{
	if ( RI==1 )						//判断是否有数据收到
	{
		ch = SBUF;						//有数据收到,将数据从接收缓冲器中取出
		RI = 0;
		if ( ch=='a' )					//判断取出的数据是否为'A'字母
			if( ++number>=100 )			//如果是'A'字母,对计数变量加1,并判断是否超过100

⌨️ 快捷键说明

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