第5章 总结
时光荏苒,转眼间两个星期过去了,在这两个星期里,我们终于完成了数字电压表的课程设计。这两周,是精彩的两周,它让我收获颇丰,也让我感慨良多。
首先我们要做的是焊电路板,在同组伙伴的配合下,我们花了一个下午终于焊好了电路板,并且能成功运行下载。第二天我们就开始查关于数字电压表的课程设计资料,网络、书本等等,能帮到我的一点也不能放过。设计中用到了Protues和keil两款软件,我们在嵌入式实验中用过,但不是很熟悉,所以找元器件时费了不少时间,特别是LED显示器。最后好不容易把线路接完,然后就开始仿真。课设中遇到的最难的就是C程序不知道怎样编写,经过多方查找资料,同时也向老师和同学们请教,才解决了问题。
最终磕磕绊绊还是把课程设计完成了,可能它并不完美,但是也是自己亲手设计的,多少有点成就感。
8
附 录
附录A 整机原理图
RV1(2)RV110%RV0(2)LCD1LM016LVSSVDDVEE1kR49K64%RV0RSRWERS4RW5E6IN 0123+88.8VoltsR31K1k+88.8VoltsRP1RESPACK-8U2IN 026IN 127IN 228IN 312345ADD AADD BADD CALE252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417STARTEOCOUT 1OUT 2OUT 3OUT 4OUT 5OUT 6OUT 7OUT 8C111nFX1CRYSTALU119XTAL1p002p013p024p035p046p057p068p079C2181nFXTAL2C391uFRSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617p00p01p02p03p04p05p06p07ADD AADD BADD CRSRWEALESTARTEOCOEp00p01p02p03p04p05p06p077891011121314D0D1D2D3D4D5D6D7OE9OER210k293031PSENALEEAR110kOUT 81OUT 72OUT 63OUT 54OUT 45OUT 36OUT 27OUT 18P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51
9
附录B 程序清单
LCD1602.c
#include
#define uint unsigned int #define uchar unsigned char
sbit rs=P2^3; sbit rw=P2^4; sbit en=P2^5;
uchar code t1[]={%uchar code t2[]={\void delay(uint ms) {
uint i,j;
for(i=ms;i>0;i--) for(j=110;j>0;j--); }
void writelcd_cmd(uchar cmd)//向1602液晶显示器里写入命令的函数{ en=0; rs=0; rw=0; delay(1); P0=cmd; en=1; delay(1); en=0; }
void writelcd_dat(uchar dat)//向1602液晶显示器里写入数据的函数{ en=0;
10
rs=1; rw=0; delay(1); P0=dat; en=1; delay(1); en=0; }
void lcd_init() //初始化1602液晶显示器的函数{
uchar i,j;
writelcd_cmd(0x38); delay(5);
writelcd_cmd(0x38); delay(5);
writelcd_cmd(0x38); writelcd_cmd(0x08); writelcd_cmd(0x01); writelcd_cmd(0x06); writelcd_cmd(0x0c); writelcd_cmd(0x80); for(i=0;i<16;i++) {
writelcd_dat(t1[i]); }
writelcd_cmd(0xc0); for(j=0;j<16;j++) {
writelcd_dat(t2[j]); } }
mian.c
#include
#define uint unsigned int
11
#define uchar unsigned char
sbit ale=P2^6; sbit start=P2^7; sbit eoc=P3^0; sbit oe=P3^1;
sbit adda=P2^0; sbit addb=P2^1; sbit addc=P2^2;
uchar add;
uint voltdata,realvolt;
void addselect()
{ switch(add) {
case 0:adda=0;addb=0;addc=0;break; case 1:adda=0;addb=1;addc=0;break;
default:break; } }
uint adtrans() {
addselect(); ale=1; ale=0;
start=1; //启动AD转换。 start=0;
while(eoc==0); //等待转换结束。 oe=1;
voltdata=P1; //出入转换结果。
12