📄 cah.c
字号:
#include"reg51.h"
#include<LCD1602.h>
#include "lcd1602.c"
#include "hardware.h"
sbit P1_7= P1^7;
unsigned int c=0;
unsigned char code_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90};
unsigned char mark=0;
unsigned int swit=0;
int i,k,m,led=0,lednum=0,lcd=0;
char x=0x40,l=0;
init_rs232(void)/*初始化串行端口*/
{
SCON=0X50; //设定串行接口工作模式1,允许接收数据
TMOD=0X20; //设定计时器1 工作模式2
TH1=0XFD; //设定波特率为9600BPS(用在普通89C51上,11.0592MHZ)
TR1=1; //启动计时器1开始计数
//TI=1; //发送准备好
}
void delay(unsigned int n) //延时
{
unsigned int i=0;
unsigned char y;
for(i=0; i<n; i++);
for(y=0; y<0; y++);
}
void kk(){
if(c==255){
mark=0;
led=0;
swit=0;
P1=0xff;
P0=0xff;
return ;
}
if(mark==0){
mark=c;
if(mark==4){
P1_7=~P1_7;
}
return ;
}else if(mark==1){//LED模式
switch(c){
case 0: P0=0xff; break; //LED1亮
case 1: P0=0xfe; break; //LED2亮
case 2: P0=0xfd; break; //LED3亮
case 3: P0=0xfb; break; //LED4亮
case 4: P0=0xf7; break; //LED5亮
case 5: P0=0xef; break; //LED8亮
case 6: P0=0xdf; break; //LED6亮
case 7: P0=0xbf; break; //LED7亮
case 8: P0=0x7f; break; //LED8亮
case 9: P0=0xff; break; //全灭
case 10: P0=0; break; //全亮
default: break;
}
}else if(mark==2){//数码管模式
if(led<2){
swit=c;
led=2;
}else{
led=1;
swit=c*200+swit;
}
}else if(mark==3){//液晶屏模式
// lcd=1;
}else if(mark==4){//蜂鸣
P1_7=~P1_7;
}
}
serial() interrupt 4 using 1 //串口中断程序
{
if(RI==1) //接收中断
{
RI=0; //清标志位
c=SBUF; //把接收到的数据发到缓冲区,引起发送中断,把收到的数据发回去
kk();
}
if(TI==1) //发送中断
{
TI=0; //清标志
//SBUF=c; //C的数据装到缓冲区
}
}
void main()
{
P0=0xff;
P1=0Xff;
init_rs232();
IE=0x90;
//LCD_cls();
//LCD_initial();
mark=0;
led=0;
swit=0;
P1=0xff;
P0=0xff;
while(1)
{
if(mark==2 && led>0){
P0=code_Tab[swit%10];
P1=0xf7;
delay(300);
P1=0xff;
P0=code_Tab[(swit/10) % 10];
P1=0xfb;
delay(300);
P1=0xff;
P0=code_Tab[(swit/100) % 10];
P1=0xfd;
delay(300);
P1=0xff;
P0=code_Tab[(swit/1000) % 10];
P1=0xfe;
delay(300);
P1=0xff;
}else if(lcd ==1){
// LCD_printc('i');
//return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -