单片机课程设计-数字显示称

单片机课程设计-数字显示称
单片机课程设计-数字显示称

单片机课程设计

题目数显称

学院计算机与信息学院

班级电子信息科学与技术11-1

姓名刘伟杰

学号20112799

1、用户需求

数显称,根据“压力测量实验”的原理,能够检测并在数码管上显示出压力传感器上的压力读数。

2、设计任务

(目标、如何实现) 设计一数显称:

(1)用NBCTFT彩屏显示压力传感器的数据包括压力值(N)和转化后的重量(Kg)(2)可以进行初始压力的校准

3、原理框图及说明

根据设计任务,设计如下框图:

图1、原理框图

电源部分,通过升压模块使用一节18650电池为单片机提供5V稳压电源;NBCTFT 彩屏作为主要显示设备,显示压力以及重量的具体数值,包括一个表盘实时显示重量;称重传感器,采用电桥作为压力的传感器,输出模拟量到HX711;HX711,是一个24位精度的ADC,这里采用商家提供的成品芯片hx711直接通过IIC协议读取ADC的数字量,并传送到单片机;单片机模块,使用STC12C5A60S2芯片,此芯片工作在1T(12倍速)状态,是普通的51单片机工作速度的12倍,适合作为界面的演示包括扫屏指针的更新等操作。通电后,彩屏进行初始化,各个变量定义以及初始化,随后开始传感器的开机校准,读取空载重量作为初始值,后面的重量会以此作为基准开始计算,随后进行采集压力以及显示的重复状态,并实时显示在彩屏上。

根据原理框图,设计电路图如附件1.

注:由于在仿真中找不到彩屏包括压力传感器的相关模型,故在proteus仿真中采用简单模型代替,无法进行真实仿真。

4、主要电路说明、元件选择及参数计算

4.1复位与振荡电路

复位电路如图2,由C5和R48构成。由于stc12c单片机为低电平复位,图示电路利用电容的特性,在刚刚外加5V电源时RST脚的电压为低。时间常数=RC=38mS,满足芯片复位要求。(P4,RST段)由于电压为5V,可选择耐压6.3V的电解电容即可。

图2、复位与振荡电路

振荡电路按照说明书的推荐,选择12MHz晶体,C7、C8选择33pF瓷片电容。

4.2 显示电路

显示电路采用NBCTFT 3.2寸LED液晶触摸屏作为主要显示设备,此彩屏的色阶指数为65536色,分辨率为320x240 (Pixel),屏幕的具体引脚说明如下:

由于在此次课程设计中没有使用触摸屏的设定,故采用的数据端为AD0-AD7,控制信号为S-指令/数据 ,WR-写控制 ,CS-使能 ,RST-复位,没有使用RD (读控制)信号,因为不需要读取显示屏的内容。主板上一个稳压芯片 LM1117-3.3 作用是把5V 电压转换为3.3V ,以符合单片机的5V 供电电压。由于TFT 屏提供了官方的库文件驱动程序,故在主程序中只要按需调用相应程序便可实现初始化以及内容的显示。

图3、显示电路

4.3 压力传感器

平行梁式称重传感器作用原理为将应变片黏贴到受力的力敏型弹性元件上,当弹性元器件受力产生变形时,应变片产生相应的变化,进而使电阻阻值发生变化,由力引起的阻值变化转换为电压的变化,通过测量输出电压的数值再通过AD数模转换即可得到压力值。

图4、压力传感器示意图

图5、压力传感器电路图

4.4 AD数模转换电路

HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。

图6、HX711集成芯片电路图

HX711芯片通过I2C协议与主机进行通讯,将压力传感器传过来的电压值(模拟量)通过HX711转换为24bit 的数字量,通过单片机的相应计算和转换得到相应的压力值和质量值。具体的HX711时序图如下:

图7、HX711芯片时序图

4.5 报警电路

因为买的压力传感器的最大承重为5KG,故在测量的时候不能过度放置重物,所以在检测压力的时候要注意限制加以提示,故设计报警电路,在超过5kg时发出响声报警。

图8、报警电路图

4.6 电源电路

电源采用可变升压模块,将一节3.7V的18650电池通过升压模块升至稳定的5V,供单片机以及其他外设使用,同时内部有稳压芯片,包括隔离电路,保护整个电路的稳定和安全性。

5、软件规划

5.1软件划分及主流程图

根据设计要求,采用NBCTFT彩屏显示主体数据,在开机时启动显示屏的初始化(包括对学号和作者的名字显示,秤盘的表面、刻度、指针的初始化,重量以及压力的数字显示初始化等),随后开始进行第一次系统的校准,获取一次压力作为校准值,随后进入大循环开始不断采集压力传感器的数据,并在相应的数字值处显示,并且反映到秤盘的指针上,实现实时的指针随着压力的变化而变化。

设计的全局变量:

(1)AD转换值缓冲区,unsigned long hx711_temp;;(2)校准的数据缓冲区,unsigned int jiaozhun;(3)每次测重量时的缓冲区,unsigned int weight;(4)重量的真实返回到显示屏上的值,float tru_weight;(5)压力的数据缓冲区,float Presure;(6)秤盘上指针的位置前后值寄存区,temp0,temp1;

设计函数如下:

(1)主函数main()

入口:无,出口:无。维持程序运转。

(2)显示屏初始化void init(void)

功能:开机时对显示屏进行初始化,包括秤盘面的指针以及刻度、数据、标示位等进行初始化。

入口:无,出口:无。

(2)对数据进行校准void adjust(void )

功能:开机时对传感器的数据进行第一次采集,获得的值作为后面的称量基准。

入口:无,出口:无。改动校准数据缓冲区jiaozhun。

(3)称重void Get_Weight(void )

功能:通过HX711对压力传感器获取的压力值进行处理,通过转换公式获得物体重量以及压力大小。

入口:无,出口:无。改变压力以及重量的数据缓冲区。

(4)将指定字符串(包括中英文)输出到指定位置void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor)

功能:根据x,y的值将字符串s打印到显示屏具体位置,并配置前面板色和背景色。

入口:指定坐标x,y,指定字符串s,指定前、背景色fColor、bColor

出口:无。

(5在指定两点连线void Line(uchar X0, uchar Y0, uchar X1, uchar Y1,unsigned int color);

功能:根据X0,Y0,X1,Y1在两点之间连线

入口:指定坐标(X0,Y0),(X1,Y1),指定线条颜色

出口:无。

(6)显示数字void LCDShow_uCharNumber( int x,int y,float uCharNumber,unsigned int forecolor, unsigned int bkcolor);

功能:在指定位置显示指定数字

入口:指定坐标(x,y),指定数字前、背景色forecolor、bkcolor

出口:无。

(7)画圆void draw_circle(int x, int y, int r, int color);

功能:根据(x,y),r的大小在圆心画半径为r的圆

入口:指定坐标(x,y),半径r,指定线条颜色color

出口:无。

(8)清屏void CLR_Screen(unsigned int bColor);

功能:将屏幕以指定颜色清屏

入口:指定清屏颜色

出口:无。

(9)读取HX711的AD转换值unsigned long HX711_Read(void)

功能:读取压力传感器的压力值经过ADC转换过后的数值,并将此值返回

入口:无

出口:AD转换值缓冲区hx711_temp。

(10)系统延时void delayms(unsigned int tt)

功能:根据tt值延时相应毫秒

入口:指定延时时间tt

出口:无。

(11)秤盘面指针的运动void Pointer(float w)

功能:根据w的角度值确定指针停留的具体位置

入口:角度w

出口:无。

5.2压力传感器的具体转换系数计算

传感器的满量程输出电压=激励电压*灵敏度1.0mv/v ,例如:供电电压是5v乘以灵敏度1.0mv/v=满量程5mv。相当于有5Kg重力产生时候产生5mV 的电压。此次使用的压力传感器的最大值为5KG。711模块A 通道带有128倍信号增益,可以将5mV 的电压放大128倍,然后采样输出24bit AD转换的值,单片机通过指定时序将24bit 数据读出。

在5V的供电电压下5Kg的传感器最大输出电压是5v*1mv/V = 5mV ,经过128倍放大后,最大电压为5mV*128 = 640mV ,经过AD 转换后输出的24bit 数字值最大为:640mV* 2^24/5V ≈2147483。

程序中通过hx711_temp = HX711_Read()获取当前采样的AD 值,最大2147483,存放在long 型变量hx711_temp中。因long 型变量计算速率和存放空间占用资源太多,固除以100,缩放为int 型,便于后续计算。假设重力为A Kg(A<5Kg),假设测量出来的AD 值为y ,5Kg传感器输出,发送给AD模块儿的电压为A Kg * 5mV / 5Kg = A mV ,经过128倍增益后为128 * A = 128AmV ,转换为24bit 数字信号为128A mV * 2^24 / 5V = 429496.7296A,所以y = 429496.7296A /100 = 4294.967296 A ,因此得出 A = y /

4294.96729Kg ≈y / 4.30 g ,所以得出程序中计算公式tru_weight = (unsigned int)((float) tru_weight/4.30+0.05)。

tru_weight的最大值限定在5000左右,通过函数的处理,去掉小数部分,得到的精度为四位数,既最小的分辨率为1g,AD的最小分辨率为1/(2^24)*5V。

5.3数显称的标定

此次购买的压力传感器的有效范围为0-5KG,这就涉及到一个标定的问题。所谓标定,是使用标准的计量仪器对所使用仪器的准确度(精度)进行检测是否符合标准,一般大多用于精密度较高的仪器,它可以赋予仪器或测量系统分度值,确定仪器或测量系统的静态特性指标,消除系统误差,改善系统的正确度,在科学测量中,标定是一个不容忽视的重要步骤。

对于压力计的一种较为科学的标定方法是将一个已知数值的重物放在压力计上,并且输入此时的重物重量,让系统记住对于数值的重物应该在相对应的数据下,然后建立线性方程获得相应更改过后的系数来弥补压力计可能存在的非线性误差。

而在此次的压力计中,由于实验室没有标定的相关实验设备,故我们采用1L装的矿泉水瓶装满水来进行标定。我们将矿泉水瓶装上水然后放到食堂的电子秤上进行称量,连同瓶子加水调至1Kg,然后将水瓶放在我们设计的压力计上,看数值是否准确,通过软件的方法修改相应的系数进行标定,但是这种方法仍然存在相对较大的误差。

6、测试

图9、主程序框图

7、体会与感想

作为杨兴明老师的创新基地核心成员之一所以之前对单片机并不陌生,之前也做过不少项目,所以这次拿到题目的时候已经有了基本思路,当时只是单纯的想按照题目要求在数码管上显示出压力和重量的数值,并没有考虑更多,可是后来在实际的代码调试阶段发现在数码管上的显示是用动态扫描的,而每次AD采集一次数据并且转换完成大概需要几个毫秒的时间,这就造成了无论显示和采集程序的相对位置的变化都不能改变数码管的显示停顿问题。所以第二次我采用了LCD1602的液晶屏来作为主要显示设备,由于液晶屏不用一直扫描屏幕只需要把更新之后的数据重新刷新到显示屏上即可便克服了显示的停顿问题。后来看到好几个人都是用LCD1602做的显示设备便觉得有点枯燥后来就改成了用NBCTFT彩屏显示,一方面在颜色方面可以有更多选择,另外一方面由以前那种带指针的电子秤让我想到我可以在显示屏上也完成这样一个设计,所以我便开始了用TFT屏作为主要显示设备的具体代码实现。

由于屏幕的扫描对单片机的速度有着更高的要求,故我舍弃了C51的单片机,采用了STC12C5A60S2这块芯片,12C系列芯片内部未进行12分频,比51单片机工作的频率快了十二倍,很适合作为屏幕扫描的主控芯片。

由于之前也做过TFT屏的显示项目所以我对这个屏幕的具体操作还是比较熟悉的,利用Bresenham 画圆算法,便可以在屏幕的指定圆心坐标画出指定半径的圆,利用math.h中的sin(),cos()函数构造圆方程,利用角度w作为变量便可定位到圆上的任何一点坐标。可是在定位圆上坐标的时候发现系统的sin,cos函数的其实角度都是从正向x轴向着-2/pi开始算起,所以我后来用角度范围判断的方法弥补了+2/pi的缺陷,使得指针的位置可以正确无误的指到圆上任何位置。

最大的问题便是我在写完指针的代码之后发现我明明做过了指针的上一次状态消隐(需要擦出上一次指针的位置才能才能不造成上次指针的像素残留)可是在实际中还是会有不少点未来得及消除,残留在了屏幕上。我一开始想到可能是时间不够还未来得及使得扫描不干净,可是后来在特地延长了消隐的时间后还是一样的结果我便开始思考是不是扫描的消隐程序本身有问题。在经过与班里同学共同讨论之后总结出可能是因为我设定的w角度在经过角度和弧度转化的过程中将一些更细致的点的坐标忽略了导致清屏不干净,故我采用了循环消隐的方法将指针当前角度的前3度和后3度所转换过后的弧度点都消隐了一遍,这次便彻底消除了残留的问题。

在写代码的时候有一点给我感触最深的地方便是越简单的代码越难找出错误,明明就那么几行代码,可是硬是出不来想要的结果,可是换个人来看也许马上就能找到一个小错误,也许自己都会诧异怎么会犯那么幼稚的错误。在写LCD1602代码的时候,明明驱动函数自己之前都用过,可是屏幕上硬是没有任何显示,连初始化都过不去,用debug模式调试也没有任何结果出来,搞了一个晚上无果,后来第二天换了一个1602就好了,硬件问题有时候也是不可避免的错误之一。

在这次设计的一周内,也有很多别人找我调试代码,问问题,有些问题我也不是很清楚,不过大多数都是在相互之间讨论之后得出了一个好的结果,所以相互之间的想法交换式很有必要的,尤其是在这种代码的问题上,也许别人的一个小意见或者是一个小的提醒可以解决你一直困扰在心中的问题。在帮别人调试代码的时候我自己也能学号好多知识,比如我已开始只是对ADC0809比较熟悉,不过这次大家用的ADC型号各种各样,所以在调试代码的时候我也学到了别的型号的ADC驱动的方法,包括容易出现的错误,在帮别人找代码中的bug 是一件既麻烦又很享受的过程,一方面可能对于别人的代码一点概念都没有,或者说没有一个大概的思路就要找出其中的bug是一件很难得事情,另外一方面找出bug又是一件很令人

激动人心的事情,也可以知道自己在以后写代码的过程中可能容易犯的错误,为自己以后的写代码提高了效率。代码最重要的是执行的效率,一个代码的好坏不是看它能干什么事情,而是看他能干好一件事的时候同时又能节约硬件资源,节约执行时间。

附1、原理图

附2、程序清单

(注:NBCTFT的驱动库函数过多不予显示)

main.c

#include

#include

#include

#include

void adjust()

{

hx711_temp = HX711_Read();

jiaozhun = hx711_temp/100;

jiaozhun+=12;

}

void Get_Weight()

{

hx711_temp = HX711_Read();

weight = hx711_temp/100;

tru_weight =jiaozhun- weight;

//获取实物的AD采样数值。

tru_weight = (unsigned int)((float)tru_weight/4.22+0.05);

//计算实物的实际重量,重量大加,小减,4~5

tru_weight=tru_weight/1000;

Presure=tru_weight*9.8;

}

void Pointer(float w)

{

w*=10;

if(w<12.5)

{

w=w*360/50+270;

if(w!=temp0)

{

for(temp1=temp0-2;temp1

{

Line(120+8*cos(temp1*3.14/180),140+8*sin(te mp1*3.14/180),(120+80*cos(temp1*3.14/180)),(140+8 0*sin(temp1*3.14/180)),Blue);

Line(120+8*cos(temp1*3.14/180),140+8*sin(te mp1*3.14/180),(120+80*cos(temp1*3.14/180)),(140+8

0*sin(temp1*3.14/180)),Blue);

Line(120+8*cos(temp1*3.14/180),140+8*sin(te mp1*3.14/180),(120+80*cos(temp1*3.14/180)),(140+8 0*sin(temp1*3.14/180)),Blue);

}

}

Line(120+8*cos(w*3.14/180),140+8*sin(w*3.14 /180),(120+80*cos(w*3.14/180)),(140+80*sin(w*3.14/ 180)),Red);

temp0=w;

}

else

{

w=(w*360/50-90);

if(w!=temp0)

{

for(temp1=temp0-1;temp1

{

Line(120+8*cos(temp1*3.14/180),140+8*sin(te mp1*3.14/180),(120+80*cos(temp1*3.14/180)),(140+8 0*sin(temp1*3.14/180)),Blue);

Line(120+8*cos(temp1*3.14/180),140+8*sin(te mp1*3.14/180),(120+80*cos(temp1*3.14/180)),(140+8 0*sin(temp1*3.14/180)),Blue);

Line(120+8*cos(temp1*3.14/180),140+8*sin(te mp1*3.14/180),(120+80*cos(temp1*3.14/180)),(140+8 0*sin(temp1*3.14/180)),Blue);

}

}

Line(120+8*cos(w*3.14/180),140+8*sin(w*3.14 /180),(120+80*cos(w*3.14/180)),(140+80*sin(w*3.14/ 180)),Red);

temp0=w;

}

}

void main()

{

init();

adjust();

delayms(5000);

Line(120+8*cos(temp0*3.14/180),140+8*sin(te mp0*3.14/180),(120+80*cos(temp0*3.14/180)),(140+8 0*sin(temp0*3.14/180)),Blue);

while(1)

{

Get_Weight();

LCDShow_uCharNumber(120,280,tru_weight,W hite,Blue);

LCDShow_uCharNumber(120,300,Presure,Whit e,Blue);

Pointer(tru_weight);

};

}

main.h

#ifndef __main_H__

#define __main_H__

#include //******************全局变量***************************

unsigned int Device_code;

/* LCD color */

#define White 0xFFFF

#define Black 0x0000

#define Blue 0x001F

#define Blue2 0x051F

#define Red 0xF800

#define Magenta 0xF81F

#define Green 0x07E0

#define Cyan 0x7FFF

#define Yellow 0xFFE0

extern int i=0;

extern unsigned long hx711_temp =0;

extern unsigned int jiaozhun = 0,weight=0;

extern float Presure=0,tru_weight=0,temp0=270,temp1=0;

extern void init()

{

Device_code=0x9328;

TFT_Initial(); //tft初始化

CLR_Screen(White); //清屏

LCD_PutString(70,50,"MCU Design",Blue2,White);

LCD_PutString(80,90,"20112799",Blue2,White);

LCD_PutString(80,130,"刘伟杰",Blue2,White);

delayms(5000);

CLR_Screen(Blue); //清屏

draw_circle(120,140,100,Green);

draw_circle(120,140,101,Green);

draw_circle(120,140,102,Green);

draw_circle(120,140,3,Green);

draw_circle(120,140,4,Green);

for(i=18;i<=360;i+=36)

{

draw_circle((120+100*cos(i*3.14/180)),(140+10 0*sin(i*3.14/180)),4,Yellow);

draw_circle((120+100*cos(i*3.14/180)),(140+10 0*sin(i*3.14/180)),3,Yellow);

draw_circle((120+100*cos(i*3.14/180)),(140+10 0*sin(i*3.14/180)),2,Yellow);

};

LCD_PutString((113+100*cos(270*3.14/180)),(1 20+100*sin(270*3.14/180)),"0Kg",White,Blue);

LCD_PutString((121+100*cos(342*3.14/180)),(1 10+100*sin(342*3.14/180)),"1Kg",White,Blue);

LCD_PutString((122+100*cos(54*3.14/180)),(14 5+100*sin(54*3.14/180)),"2Kg",White,Blue);

LCD_PutString((100+100*cos(126*3.14/180)),(1 45+100*sin(126*3.14/180)),"3Kg",White,Blue);

LCD_PutString((100+100*cos(198*3.14/180)),(1 10+100*sin(198*3.14/180)),"4Kg",White,Blue);

Line(120+8*cos(temp0*3.14/180),140+8*sin(te mp0*3.14/180),(120+80*cos(temp0*3.14/180)),(140+8 0*sin(temp0*3.14/180)),Red);

LCD_PutString(40,280,"Weight:

Kg",Cyan,Blue);

LCD_PutString(40,300,"Pressure:

N",Cyan,Blue);

}

#endif

HX711.h

#ifndef __HX711_H__

#define __HX711_H__

#include

#include

sbit DOUT=P1^6; //端口设定

sbit SCK=P1^7;

extern void Delay_us(void);//函数或者变量声明extern unsigned long HX711_Read(void);//返回24位转换数据

#endif

NBCTFT.h

#ifndef __NBCTFT_H__

#define __NBCTFT_H__

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif unsigned char code pic[];

void TFT_Initial(void);

void show_colour_bar (void);

void Write_Cmd_Data(unsigned char x, unsigned int y);

void Write_Cmd(unsigned char DH,unsigned char DL); void Write_Data(unsigned char DH,unsigned char DL); void delayms(unsigned int tt);

void show_photo(void);

void Write_Data_U16(unsigned int y);

Read_RegData(unsigned char Regaddr);

void CLR_Screen(unsigned int bColor);

void PutGB3232(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor,unsigned int bColor);

void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);

void LCD_PutString(unsigned short x, unsigned short y, char *s, unsigned int fColor, unsigned int bColor);

void LCD_PutChar8x8(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);

void Put16x16(unsigned short x, unsigned short y, unsigned char g[2], unsigned int fColor,unsigned int bColor);

void Put_pixel(unsigned int x,unsigned int y,unsigned int color);

void address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2);

void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1);

void line(int x1,int y1,int x2,int y2,int color);

void draw_circle(int x, int y, int r, int color);

void Line( uchar X0,uchar Y0, uchar X1,uchar Y1, unsigned int color);

void LCDShow_uCharNumber( int x, int y, float uCharNumber, unsigned int forecolor,unsigned int bkcolor);

#endif

附3、使用说明书

正常测量的时候直接启动系统的电源开关即可,待系统初始化后便可以进行物体的重力、质量测量了。

如果有物体需要“去皮”则可以将象征性的“皮”放在秤盘上进行开机校准,之后便开始进行物体的去皮测量。

单片机课程设计 简易计算器的设计

目录 摘要 (1) 绪论 (1) 1.设计要求及功能分析 (1) 1.1 设计要求 (1) 1.2 基本功能 (2) 2.设计方案 (2) 2.1 硬件部分设计方案 (2) 2.1.1 单片机部分 (2) 2.1.2 按键部分 (2) 2.1.3 显示部分 (2) 2.2 软件部分设计方案 (2) 3.系统的硬件总体设计 (4) 3.1 系统的总体硬件设计 (4) 3.2 键盘连接电路 (4) 3.3 显示屏连接电路 (5) 3.4 单片机芯片AT89C51 (6) 3.5 外接电路 (7) 4.系统的软件总体设计 (8) 4.1 键盘识别程序设计 (8) 4.2 显示程序 (11) 4.3 运算程序 (11) 5.元器件清单及程序清单 (12) 5.1 元器件清单 (12) 5.2 程序清单 (12) 6.软件仿真 (18) 6.1 仿真验证 (18) 6.2 性能分析 (20) 6.3 出现故障及其原因 (20) 6.4 解决方法 (20) 结论 (20) 参考文献 (21) 致谢 (21) 附录PCB图 (22)

简易计算器的设计 学生:李飞马鹏超舒宏超 指导老师:王孝俭 摘要:单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 关键词:单片机、计算器、控制电路、仿真。 绪论 设计要求掌握数码管移位动态扫描显示的编程方法,掌握矩阵扫描的编程方法,掌握数据在内部运算的编程方法。设计任务实现最大8位正整数加、减、乘、除,具备清零、等于功能,16个按键功能依次为:数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除。 1.设计要求及功能分析 1.1设计要求: 本次单片微型计算机与接口技术课程设计做的是利用C51单片机为主体的计算器,实现了简单的加、减、乘、除功能。采取的是键盘输入和液晶显示屏的输出结果显示。主要硬件构成部分由四个,一个AT89C51单片机芯片,一个液晶显示屏,一个4*4键盘和一个排阻(10K)做P0口的上拉电阻,可以实现16位的数值操作计算。 1.2基本功能: 首先,计算器可现实8位数字,开机运行时,只有数码管最低位显示为“0”,其他位全部不显示;

武汉工程大学单片机多路抢答器的课程设计资料

电气信息学院 单片机技术课程设计报告 课题名称多路抢答器的设计 专业班级10 电气4班 学号2010500238 __________________ 学生姓名________ 杨彬____________ 扌旨导教师______ 易先军___________ 评分_____________________________

2013年6月17日至6月21日

课程设计量化评分标准 指导老师评语:

答辩记录 1、例举设计过程中遇到的问题及其解决方法(至少两例)。答:(1)问题说明:对于采用独立式按键设计还是行列式按键设计有所困扰。 解决方法:行列式键盘是采用X*丫型按键来实现I/O的扩展的,这种按键的排 列方式可以有效的提高I/O 的利用率。 (2)问题说明:Proteus 软件中,从元器件库中调出的元件有的不能仿真。 解决方法:Proteus 里面又不是器件是没有仿真模型的,只是个原理图 符号,故必须选含仿真模型的器件。 2、教师现场提的问题记录在此(不少于2个问题)。 (1)Proteus 软件的主要功能是什么? 答:Proteus 软件可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。 (2)如果有多个按键几乎同时按下,你是如何来保证最先按下的按钮抢答成功的? 答:可以通过锁存器达到目的。当有第一个按键被按下时,锁存器将迅速锁存优先抢答者的按键状态,并能同时禁止其他选手按键,使其按键操作无效。

现如今生活娱乐的多元化已是现代的生活方式之一。知识、娱乐比赛更是流行于各行各业,而其中又以抢答形式为主。在抢答过程中,为了知道哪一组或 哪一位选手优先获得抢答权,必须要设计一个系统来完成这个任务,避免人的主观意识判断错误。在抢答中,只靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差甚小,也可分辨出哪组优先答题。此次设计使用AT89C51单片机为核心控制元件,设计一个简易的抢答器,与数码管、报警器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断电路等。设计的抢答器具有实时显示抢答选手的号码和抢答时间的特点,而复位电路,则使其能再开始新的一轮答题和比赛,与此同时还利用汇编语言编程,使其能够实现一些基本的功能。 关键词:AT89C51单片机;抢答器;数码管;报警器 I

单片机课程设计-电子钟

中北大学 单片机课程设计说明书 数字钟设计 1 设计任务与要求 (1)

1.1设计任务 (1) 1.2设计要求 (1) 2单片机简介 (2) 2.1单片机的发展历程 (2) 3系统设计思路和方案 (3) 3.1系统总体方案 (3) 3.2硬件简介 (3) 3.2.1硬件选择 (3) 3.2.2 51单片机的构成 (4) 3.2.3 STC89C52RC引脚功能说明 (5) 3.2.4 LED简介 (6) 3.3 Keil调试 (7) 4、系统实物图 (9) 5、课程设计体会 (9) 参考文献 (10) 附录A (11) 附录B (13) 附录C (14)

1 设计任务与要求 1.1设计任务 本课题应完成以下设计内容: 1)硬件设计 设计数字钟的电路原理图,用PROTEL绘制硬件电路。制作实物。 2)软件设计 (1)时、分、秒的设置及显示; (2)画出程序框图; (3)调试与分析。用PROTEUS仿真。 3)课程设计说明书 1.2设计要求 本课程设计的基本要求是使学生全面掌握单片机控制系统设计的基本理论,熟悉掌握MCS-51 系列单片机的编程方法,具体要求:本例利用AT89C51的定时器和6位7段数码管,设计一个电子时钟。显示格式为“XX XX XX”,由左向右分别是:时、分、秒。

2单片机简介 2.1单片机的发展历程 单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段, 16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。、32位单片机推出阶段,以满足不同的用户需要。纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。 2.2实用价值与理论意义 在单片机模块里比较常见,数字时钟是一种用0数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更高的使用寿命,新词得到了广泛的应用。 数字时钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公用场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度远远超过老式钟表,钟表的数字化给人们的生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。因此研究数字时钟及扩大其应用有着非常现实的意义。

单片机课程设计报告书----电子秤

一、设计任务及要求: 设计任务: 完成一个简单的使用数字电子秤的硬件与软件部分的设计。 设计要求: 1.利用单片机实现对所设计的电子秤的各项功能的控制。 2.电子秤能够LCD液晶显示出商品的名称、价格,重量、总价等信息。 3.电子秤具有储存几种简单商品价格的功能。 4.电子秤的测量范围要求达到5KG,测量精度要求达到0.001。 5.电子秤能够自动完成商品的价格计算。 指导教师签名: 2010 年6月16 日二、指导教师评语: 指导教师签名: 2010 年7月3日三、成绩 验收盖章 2010 年7 月日

基于单片机的实用电子秤的设计 1 设计目的 单片机以其功能强,体积小,功耗低,易开发等很多优势被广泛应用。本 次数字电子秤的设计就是需要通过选择合适的单片机来进行主控,再结合A/D 转换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件 的设计过程中用到键盘扫描、液晶显示驱动、模数转换程序及汉字库的的设计, 做到对我们所学数电、模电、单片机等知识的综合应用,最终实现所设计数字 电子秤的各项功能,达到“巩固知识,培养技能,学而用之”的实践目的。通过这次课程设计,不但要提高我们在工作中的学习能力、探究能力、应用能力和动 手能力,还要历练我们不畏艰难、不懂便学、有漏必补的认真严谨的工作态度,强化我们的社会适应力和社会竞争力,为走向社会提前试水,完善自我。 2 设计的主要内容及要求 本设计主要完成一个简单实用数字电子秤的硬件电路部分和软件部分的设计。硬件部分包括数据采集、最小系统板、人机交互界面三大部分。其中,数 据采集部分由压力传感器和A/D 转换部分组成;人机界面部分为键盘输入、 液晶显示。软件部分应用单片机 C 语言实现了本设计的全部控制功能。本设 计的数字电子秤要求能够显示商品的名称、价格、总量、总价等;能够自动完 成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能, 一旦重量超出了自身重量的测量的范围,发出警报;同时对数字电子秤的测量 范围要达到5KG,测量精度要求达到0.001。 3 整体设计方案 整个数字电子秤电路由压力传感电路(ADC0832采样)、模数转换系统、单 片机主控制电路、LM4229显示电路、蜂鸣器报警电路和4*4键盘电路6 个部

单片机课程设计计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号:

学生姓名: 学生成绩: 指导教师: 课程设计时间:至

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,,……;论文中的表、图和公式按章编号,如:表、表……;图、图……;公式()、公式()。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

(完整版)基于51单片机的4人抢答器课程设计

基于51单片机的4人抢答器设计 设计要求: 以单片机为核心,设计一个4位竞赛抢答器:同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。 设置一个系统清除和抢答控制开关S,开关由主持人控制。 抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。 当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 工作原理: 通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。

#include #define uchar unsigned char #define uint unsigned int uchar num; //定义中断变量,num计满20表示1秒时间到uchar num1; //十秒倒计时显示初始值 uchar flag1,flag2; //清零键及开始键按下标志位 uchar flag3,flag4=0; //定义键盘按下标志位 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //数码管编码

基于单片机的电子时钟课程设计报告

目录 一、引言········ 二、设计课题········· 三、系统总体方案········· 四、系统硬件设计······ 1.硬件电路原理图 2.元件清单 五、系统软件设计········· 1.软件流程图 2.程序清单 六、系统实物图········ 七、课程设计体会········ 八、参考文献及网站········· 九、附录·········

一.引言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用HD74LS373驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。

单片机电子秤设计报告

基于单片机的电子秤 单片机电子秤设计报告 秤是一种在实际工作和生活中经常用到的测量器具。随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。 和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片 机设计实现,具有精度高、功能强等特点。本课题设计的电子秤具有基本称重、键盘输入、计算价格、显示、超重报警功能。该电子秤的测量范围为 0-10Kg,测量精度达到 5g,有高精度,低成本,易携带的特点。电子秤采用液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。另外,该电子秤电路简单,使用寿命长,应用范围广,可以应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。 一、功能描述 1、采用高精度电阻应变式压力传感器,测量量程 0-10kg ,测量精度可 达 5g 。 2、采用电子秤专用模拟 / 数字( A/D)转换器芯片 hx711 对传感器信号进行调理转换, HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片

3、采用 STC89C52单片机作为主控芯片,实现称重、计算价格等主控功 4、采用 128*64 汉字液晶屏显示称重重量、单价、总价等信息。 5、采用 4*4 矩阵键盘进行人机交互,键盘容量大,操作便捷。 6、具有超量程报警功能,可以通过蜂鸣器和 LED灯报警。 7、系统通过 USB电源供电,单片机程序也可通过 USB线串行下载。 二、硬件设计 1、硬件方案 单片机电子秤硬件方案如图 1 所示: 图 1 单片机电子秤硬件方案称重传感器感应被测重力,输出微弱的毫伏级电压信号。该电压信号经过电子秤专用模拟 /数字(A/D)转换器芯片hx711 对传感器信号进行调理转换。 HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片,内置增益控制,精度高,性能稳定。 HX711芯片通过 2 线串行方式与单片机通信。单片机读取被测数据,进行计算转换,再液晶屏上显示出

AT89C51单片机C实现简易计算器

AT89C51单片机简易计算器的设计 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图:

二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

(二)、键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。 图 2 矩阵键盘布局图 矩阵键盘内部电路图如图3所示:

基于单片机STC89C52RC的八路抢答器课程设计报告75092282

基于单片机STC89C52RC的八路抢答器课程设计报告75092282

信息与电子工程学院 课程设计报告 课程单片机技术应用 设计题目基于单片机STC89C52RC的八路抢答器专业应用电子技术 班级11级4班 成员姓名学号分工成绩 软件部分 硬件部分

目录 一、课程设计概述.................................................................................................................... - 1 - 1.1课程设计背景 (1) 1.2课程设计内容 (1) 1.3课程设计技术指标 (1) 二、方案的选择及确定............................................................................................................ - 1 - 2.1方案一:集成数字电路 (1) 2.2方案二:单片机 (2) 2.3方案分析比较: (2) 三、硬件设计............................................................................................................................ - 3 - 3.1系统硬件设计 (3) 3.2复位电路的设计 (3) 3.3时钟电路设计 (3) 3.4显示电路设计 (4) 3.5按键电路设计 (5) 3.6报警电路设计 (6) 3.7电源模块设计 (7) 四、系统软件设计.................................................................................................................... - 7 - 4.1系统的功能流程 (7) 4.2主程序流程图 (7) 五、系统调试过程.................................................................................................................... - 9 - 5.1软件调试 (9) 5.2硬件调试 (10) 六、总结.................................................................................................................................. - 13 - 七、遇到的问题及解决方法.................................................................................................. - 13 - 八、参考文献.......................................................................................................................... - 13 - 九、附录.................................................................................................................................. - 14 - 9.1仪器与设备 (14) 9.2元器件清单 (14)

单片机课程设计--数字钟

单片机课程设计--数字钟 一、设计目的及意义 (1)巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力; (2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力; (3)对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、内容及步骤 二、原理图设计中简要说明设计目的 (1)功能:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。 (2)原理图中所使用的元器件功能在图中的作用 1.主要元件AT89C51 P3.2 /INT0(外部中断0) 定时器/计数器0溢出中断 2.LED及按键开关 用于时间的显示和设定 (3)各器件的工作过程及顺序 计时状态,AT89C51通过P1口持续向LED发送信号,使LED扫描显示刚前时分秒,当出现定时器/计数器0溢出中断时,时间加多1秒,AT89C51从P1口向LED输出新的时间;只按住SET UP键时,进入外部中断0,时间计数停止,通过点击按键H,M,S对时分秒进行调整,新的时间值送给了计时程序,松开SET UP键退出中断,回到计时状态; 按住SET UP键和ALARM键时,进入外部中断0,时间计数停止,通过点击按键H,M对时分进行闹钟定时,AT89C51记忆时分值,退出时先松开SET UP键再松开ALARM; 闹铃:当时间值和设定闹铃值一样时,进行闹铃一分钟。

(3)流程图 Y Y 按下设定键 N (4)程序清单 #include #define uint unsigned int #define uchar unsigned char sbit wela1=P2^0; sbit wela2=P2^1; sbit wela3=P2^2; sbit wela4=P2^3; sbit wela5=P2^4; sbit wela6=P2^5; sbit dp= P1^7; sbit c0= P0^0; sbit c1= P0^1; sbit c2= P0^2; sbit c3= P0^3; sbit c4= P0^4; sbit c5= P0^5; 定时器溢出中断0 LED 扫描显示 初始设定 时间加1秒 外部中断0 按下闹钟? 时间调整 闹钟定时 时间相同? 闹铃

单片机电子秤设计报告共28页文档

单片机电子秤设计报告 秤是一种在实际工作和生活中经常用到的测量器具。随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。 和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片机设计实现,具有精度高、功能强等特点。本课题设计的电子秤具有基本称重、键盘输入、计算价格、显示、超重报警功能。该电子秤的测量范围为0-40Kg,测量精度达到5g,有高精度,低成本,易携带的特点。电子秤采用液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。另外,该电子秤电路简单,使用寿命长,应用范围广,可以应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。 一、功能描述 1、采用高精度电阻应变式压力传感器,测量量程0-40kg,测量精度可达5g。 2、采用电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换,HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。 3、采用STC89C52单片机作为主控芯片,实现称重、计算价格等主控功能。 4、采用128*64汉字液晶屏显示称重重量、单价、总价等信息。 5、采用4*4矩阵键盘进行人机交互,键盘容量大,操作便捷。 6、具有超量程报警功能,可以通过蜂鸣器和LED灯报警。 7、系统通过USB电源供电,单片机程序也可通过USB线串行下载。

二、硬件设计 1、硬件方案 单片机电子秤硬件方案如图1所示: 图1 单片机电子秤硬件方案 称重传感器感应被测重力,输出微弱的毫伏级电压信号。该电压信号经过电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换。HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片,内置增益控制,精度高,性能稳定。HX711芯片通过2线串行方式与单片机通信。单片机读取被测数据,进行计算转换,再液晶屏上显示出来。 矩阵键盘主要用于计算金额。当被测物体重量得到后,用户可以通过矩阵键盘输入单价,电子秤自动计算总金额并在液晶屏显示。电源系统给单片机、HX711电路及传感器供电。 2、称重传感器 传感器是测量机构最重要的部件。称重传感器本身具有单调性,其主要参数指标是灵敏度、总误差和温度漂移。 (1) 灵敏度 称重传感器的电灵敏度为满负荷输出电压与激励电压的比值,典型值是2mV/V。当使用2 mV/V灵敏度和5 V激励电压的传感器时,其满度输出电压为10 mV。通常,为了使用称重传感器线性度最好的一段称重范围,应当仅使用满度范围的三分之二。因此满度输出电压应当大约为6mV。当电子秤应用于工业环境时,在6mV满度范围内测量微小的信号变化并非易事。 (2) 总误差 总误差是指输出误差和额定误差的比值。典型电子秤的总误差指标大约是0.02%,这一技术指标相当重要,它限制了使用理想信号调节电路所能达到的精确度,决定了ADC分辨率的选择以及放大电路和滤波器的设计。

单片机课程设计——基于C51简易计算器

单片机双字节十六进制减法实验设计 摘要 本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计 算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus 仿真。 引言 十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阴极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单.................................. 一、设计任务和要求

单片机课程设计八位竞赛抢答器的设计

单片机原理及接口技术 课程设计 八位竞赛抢答器的设计 姓名: 学号: 指导教师: 院系(部所):机电工程学院 专业:机械设计制造及其自动化 完成日期:2012年12月20日

摘要 随着单子技术的飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念。考虑到需设定限时回答的功能呢个,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示,正常工作时为绿灯,报警或抢答等违规信号时则出现红灯。 关键词:AT89C51;抢答器;计数器

目录 1概述 (1) 2 抢答器的硬件系统设计 (3) 2.1 系统整体方案设计 (3) 2.2 系统硬件组成 (3) 3 最小系统与主控模块的设计与实现 (5) 3.1 单片机最小硬件系统的组成简述 (5) 3.1.1 电源电路 (5) 3.1.2 时钟电路 (6) 3.1.3 复位电路 (7) 3.2 主流程图 (8) 4 模块的设计与实现 (9) 4.1 抢答电路的设计 (9) 4.2 锁存器74HC573 (9) 4.3 主持人控制电路与扬声器的设计...................... 错误!未定义书签。 4.4 显示电路的设计.................................... 错误!未定义书签。 5 软件的设计 (12) 5.1语言选择 (12) 5.2软件总体设计 (12) 总结 (13) 参考文献 (15) 致谢 (16) 附录 (17)

单片机课程设计数字电子钟[修改好的]

单片机技术课程设计说明书数字电子钟 院、部:电气与信息工程学院 学生姓名:郭红满 指导教师:王韧职称副教授 专业:通信工程 班级:1102 完成时间:2013-12-20

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键K1、K2、K3和K4键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。 关键词电子钟;AT89S52;硬件设计;软件设计

ABSTRACT Clock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons K1, K2, K3 and K4 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value. Key words Electronic clock;AT89S52;Hardware Design;Software Design

基于单片机的电子秤的设计样本

四川信息职业技术学院 毕业设计阐明书(论文) 设计(论文)题目: 基于单片机电子秤设计 专业:应用电子技术 班级:应电12-3 学号: 1111111 姓名:某某某 指引教师:某某某

二〇一四年十一月二十五日

四川信息职业技术学院毕业设计(论文)任务书

目录 摘要................................................................................................... 错误!未定义书签。绪论................................................................................................... 错误!未定义书签。第一章方案设计与论证................................................................... 错误!未定义书签。 1.1方案选取 ............................................................................ 错误!未定义书签。 1.2方案论证 ............................................................................ 错误!未定义书签。第二章硬件设计与分析................................................................... 错误!未定义书签。 2.1单片机最小系统 ................................................................ 错误!未定义书签。 2.1.1 芯片简介.............................................................. 错误!未定义书签。 2.1.2 时钟电路设计...................................................... 错误!未定义书签。 2.1.3 复位电路设计...................................................... 错误!未定义书签。 2.2信号采集模块 .................................................................... 错误!未定义书签。 2.2.1 传感器选取.......................................................... 错误!未定义书签。 2.2.2 传感器选取.......................................................... 错误!未定义书签。 2.3数据转换电路 .................................................................... 错误!未定义书签。 2.3.1 A/D转换器选取................................................... 错误!未定义书签。 2.3.2 ADC0832简介 ..................................................... 错误!未定义书签。 2.3.3单片机对ADC0832控制原理 ............................ 错误!未定义书签。 2.4声光报警电路 .................................................................... 错误!未定义书签。 2.5显示电路 ............................................................................ 错误!未定义书签。 2.6整机电路 ............................................................................ 错误!未定义书签。

相关文档
最新文档