📄 main.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 + -