基于AVR单片机电子考试系统

功能用途:采用两个单片机系统实现四则运算考试及判卷功能,具体内容包括:
⑴两个单片机系统分别作为服务器和答题终端。服务器负责验证考生个人信息,发送试题到终端,定时收卷及判分功能。答题终端负责输入考生个人信息,答题,修改答案及传送答案到服务器。
⑵服务器验证考生个人信息,若信息不正确则向终端发出提示信息。信息验证正确后将试题发送到答题终端,同时开始计时。无论答题是否完成,考试时间到则强制收题。也可在考试时间尚有剩余时接收答题终端发送过来的答案。收题后进行判分工作并给出最终得分及答题情况统计信息。对回答错误的题目则给出原题及正确答案。
⑶答题终端在收到试题后向考生显示试题内容(可逐道显示)并接受考生输入的答案。试题显示应具备翻页功能以允许考生反复浏览试题或检查所作答案。当考生检查完毕且考试时间尚有剩余,允许考生向服务器发送最终答案。
⑷实现服务器和答题终端的两个单片机系统均应包含键盘和LCD液晶显示模块。两个单片机系统通过串口进行通信。
机系统通过串口进行通信。
在这里插入图片描述
(1)客户段代码
#include <mega16.h>
#include <delay.h>

#define BAUD 9600 // 波特率采用9600bps
#define CRYSTAL 4000000 // 系统时钟8MHz

#define BIT0 0X01
#define BIT1 0X02
#define BIT2 0X04
#define BIT3 0X08
#define BIT4 0X10
#define BIT5 0X20
#define BIT6 0X40
#define BIT7 0X80

unsigned char const BIT[]={BIT0,BIT1,BIT2,BIT3,BIT4,BIT5,BIT6,BIT7};

//计算和定义波特率设置参数
#define BAUD_SETTING (unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1) // 波特率计算
#define BAUD_H (unsigned char)(BAUD_SETTING>>8) // 高8位
#define BAUD_L (unsigned char)(BAUD_SETTING) // 低8位

unsigned char const num_str[]={“0123456789”};
void USART_INIT(void);
void USART_SEND(unsigned char data); // USART发送子程序
interrupt [USART_RXC] void USART_RCV_INT(void); // USART接收中断服务
void lcd_gpio_init(void);
void LcdInitiate(void);
void LCD1602_string(unsigned char hang,unsigned char lie,unsigned char const p);
void LCD1602_char(unsigned char hang,unsigned char lie,unsigned char sign);
void KEY_INIT(void);
void KEY_CHECK(void);
void key(void);
unsigned char input_buf[16],input_cnt = 0;
unsigned char timu_buf[5][16],daan_buf[5][2];
unsigned char flag_steep = 0,rx_buf[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bbxyliyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值