电脑发送大写A下位机显示流水灯。电脑发送大写字母B下位机数码管显示0-F.- /*******************************************************
- 功能 :串口程序。电脑发送字母,下位机(实验板)
- 显示流水灯和数码管显示0-F
- 单片机:STC12C5A60S2
- 晶振 :11.0592M(必须用这个频率的晶振要不会出错)
- 作者 :苏义江
- 时间 ; 20015-12-12
- 注释 :数码管用P2口通过锁存器573驱动位和段。
- 位的锁存端用P0^6控制
- 段的锁存端用P0^7控制
- *******************************************************/
- #include
- #define uchar unsigned char
- #define uint unsigned int
- ***it wei=P0^6;//位使能
- ***it duan=P0^7;//段使能
- //共阳数码管段码
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
- 0xa1,0x86,0x8e,0x89};
- //位码
- uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar a,i;
- void init_uart()//串口初始化
- {
- TMOD=0X20;//T1工作在方式2及自动重装
- TH1=0XFD;//波特率9600
- TL1=0XFD;
- TR1=1;
- // SCON=0X50; //SCON=0X50也可以写成SM0=0;SM1=1;
- SM0=0;
- SM1=1;
- REN=1;
- ES=1; //启动串口中断
- EA=1;
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=700;y>0;y--);
- }
- void liushui()//流水灯
- {
- for(i=0;i<8;i++)
- {
- P0=tab;
- delay(200);
- }
- }
- void diplay()//数码管显示0-F
- {
- wei=1; //打开573位码锁存端
- P2=0;
- wei=0; //锁存数据
- for(i=0;i<16;i++)
- {
- duan=1; //打开573段码锁存端
- P2=table;
- duan=0; //锁存数据
- delay(1000);
- P2=0XFF; //消隐
- }
- }
- void main()
- {
- init_uart();
- while(1);
- }
- void uate() interrupt 4
- {
- ES=0; //先关闭串口中断防止出错
- RI=0; //发送标志位清零
- a=SBUF;
- switch(a)
- {
- case 'A': liushui();break;//电脑发送A实验板显示流水灯
- case 'a': P0=0; break;//电脑发送a实验板显示LED灯全亮
- case 'B': diplay();break;//电脑发送B实验板数码管显示0-F
- }
- ES=1;//启动串口中断,继续发送
- }
|