1、接收串口发来的命令进行输出显示,当按键按下后将按键信息通过串口发送出去。 实验箱模块功能:实现相应的计算和控制功能。 扩展多位数码管,实现多位显示(动态扫描) 加入了蜂鸣器,可作声音报警使用。1.2 设计思路及设计框图1.2.1设计思路(1)串行通信基本通信方式:通信双方要正确的进行数据传输,需要解决何时开始传输、何时结束传输,以及数据传输速率等问题,这就是数据传输中的同步问题。 通常,实现数据同步有两种方式:异步通信和同步通信。 1异步通信: 数据一帧一帧地传送。发送端和接收端可以由各自的时钟控制数据的发送和接收,两个 时 钟源彼此独立,互不同步。 数据的一帧:由一个字符代码组成。 :RS-
2、232C接口采用双极性信号、公共地线和负逻辑;不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!在实际应用时,必须通过专用电平转换芯片进行电平转换。电平转换芯片MC1488、MC1489、 MAX232MC1488可实现TTLRS-232的电平转换;MC1489可实现RS-232TTL的电平转换。 MAX232芯片可完成TTL到EIA双向电平的转换 。通过使用一对max232(自己做的板子上一个,实验箱上一个)完成电平转换,将单片机的SBUF和s2410芯片的串行通信寄存器完成数据传送从而达到远距离通信的目的。1.2.2总体设计框图 2 各个模块程序
3、的设计3 调试过程4 功能测试4.3 误差分析5 实训心得体会附录附录1:程序清单1、嵌入式AREA mb,CODE,READONLYENTRY EXTERN Main B Main B . END#define GPHCON (*(volatile unsigned *)0x56000070)#define ULCON0 (*(volatile unsigned *)0x50000000)#define UCON0 (*(volatile unsigned *)0x50000004)#define UBRDIV0 (*(volatile unsigned *)0x50000028)#defi
4、ne rUTXH0 (*(volatile unsigned *)0x50000020)/发送缓冲寄存器#define rUTRSTAT0 (*(volatile unsigned *)0x50000010) #define rURXH0 (*(volatile unsigned *)0x50000024)/接收缓冲寄存器 #define uchar unsigned charuchar revBuf;/接收到的数据int m = 99,ms = 99;int M =20;/*发送*/void send(uchar m,uchar ms,uchar led,uchar speak)while(
5、!(rUTRSTAT0 & 0x02);rUTXH0=0xBB;rUTXH0=ms+led*128;rUTXH0=m+speak*128;/*秒表复位:复位后LED灯点亮,蜂鸣器不响数码管置为M.ms*/void reset()m = M;ms = 0;send(m,ms,1,1);延时延时0.01s0.01/1/202.8MHzvoid delay()int i = 0;for(i=0;i0x00002000;i+);ms 每10ms自减一次void run_stop()int i;while(1)if(rUTRSTAT0 & 0X1)revBuf = rURXH0;if(revBuf =
6、0x01)break;if( ms = -1 & m = 0 ) for(i=0;10;i+) if(i%2=0) send(0,0,0,1); else send(0,0,1,1); break; if(ms = -1) ms=99; m-; send(m,ms,0,1);delay();ms-;void add()if(M0)/M-;/void Main()GPHCON=0xa2*2;ULCON0=0x3;UCON0=0x5;UBRDIV0=329; 0X1)/接收是否完毕revBuf=rURXH0;switch(revBuf)/case 0x01:run_stop();break;cas
7、e 0x02:add();case 0x03:sub();case 0x04:reset();default:2、单片机#include #define uint unsigned intunsigned char cnt; / 区分数码管显示位unsigned char KEY = 0;/ 按键锁定unsigned char speak = 0;/蜂鸣器 不响unsigned char led = 0;/指示灯 不亮int mg=99,ms=99;/数码管整数位(099)小数位(099) 初始化显示数字unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x
8、6d,0x7d,0x07,0x7f,0x6f; /数码管0-9断码表void uart_isr() interrupt 4/中断方式4,串行口I/O中断 /*接收模块0xBB 表示接下来要接收两个数码管数据单片机串行口数据缓冲器SBUF*/if(RI) /接收中断标志位RI RI = 0;if(SBUF = 0xBB)while(!RI);RI=0;ms=SBUF;ms = SBUF & 0x7f;led = SBUF/128; mg=SBUF;mg = SBUF &speak = !(SBUF/128);void Com_Init(void)/计数器初始化 TMOD = 0x20;/T1计时器 PCON = 0x00;/波特率不倍增,在方式1、2、3中0表示不倍增,1表示倍增 SCON = 0x50;/ 串行口控制器配置 TH1 = 0xFD; /T1高8位 TL1 = 0xFD;/T1地8位 TR1 = 1; ES=1; void Timer_Init(void)/配置定时器TMOD|=0x01;TH0=0xFC;TL0=0x18;TR0=1;EA=1;ET0=1;void Show_Init() /按键、蜂鸣器初始状态 P2_0=1;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1