串口发送数字,数码管显示对应数字,只是个位数字
单片机源程序如下:
- #include "reg52.h" //包含头文件
- #define uchar unsigned char
- #define uint unsigned int
- #define DM P0
- #define WM P2
- uchar code SMG_DM[]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- uchar code SMG_WM[]={1,2,4,8};
- uchar dis[4];
- uchar dat = 0;
- //-------------------------------------------------------------------------------------
- void delay(uint t)
- {
- while(t--);
- }
- //-------------------------------------------------------------------------------------
- void Uart_Int_Init()
- {
- SCON=0x40;
- TMOD=0x20;
- TH1=TL1=0xFD;
- TR1=1;
- EA=1; //开总中断
- ES=1; //开串口中断
- REN=1; //打开接收
- }
- //=====================================================================================
- void main() //主函数
- {
- Uart_Int_Init();
- delay(1000);
- WM = SMG_WM[0];
-
- while(1)
- {
- DM=SMG_DM[dat];
- }
- }
- //=====================================================================
- void uart_isr(void) interrupt 4
- {
- RI=0; //数据接收完成标志位
-
- dat=SBUF;
- dat-='0';
- if(dat>41)
- dat=dat-41+2;
- }
复制代码 Keil代码与Proteus仿真下载:
串口发送0~9,SMG显示(解压打开).zip
(62 KB, 下载次数: 48)
|