个人所得税计算器

  • 格式:doc
  • 大小:262.50 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要

个人所得税计算器是一款使用方便、快捷超乎想象的个人所得税计算工具。该计算器以STC89C52芯片为核心,用两个3位数码管显示,利用简单的C语言编写相应程序进行有效的税率计算。其软件按照国家《个人所得税法》相关规定制作,计算结果精度不高,只能粗略地计算,有效数位数有限。键盘可以实现工资输入,通过按下对应的按键显示运算结果。个人所得税计算器可非常方便地对工资薪金进行所得税的计算,是各类行政、企事业单位的会计人员、办税人员的得力助手,相信使用本计算器后定能大大减轻税收人员的工作量和提高工作效率。

关键词:STC89C52;税率;计算;显示;键盘

目录

设计要求 (1)

1 方案论证与对比 (1)

1.1 方案一 (1)

1.2 方案二 (1)

1.3 方案对比与选择 (2)

2 系统硬件电路设计 (2)

2.1 主控芯片STC89C52 (2)

2.2 键盘电路的设计 (4)

2.3 显示电路 (4)

3 系统程序设计 (5)

3.1 主程序 (5)

3.2 键盘扫描子程序 (6)

3.3 显示子程序 (7)

3.4 税率计算子程序 (7)

3.5 其他子程序 (9)

4 系统功能测试与整体指标 (9)

4.1 硬件系统的调试 (9)

4.2 软件系统的调试 (9)

5 详细仪器清单 (10)

6 总结与思考 (11)

7 致谢 (11)

参考文献 (12)

附录一:系统电路原理图 (13)

附录二:程序 (14)

个人所得税计算器

设计要求

利用单片机作为控制核心,完成一个个人所得税计算器。具体要求如下:

(1)通过键盘输入个人收入情况;

(2)按确定键后显示应交的个人所得税的值;

(3)最大收入值为99999元;

(4) 除基本计算以外,还具有数据清零,出错警示,退格处理,记忆功能。

1方案论证与对比

1.1方案一

利用STC89C52的P1,P2两个口的16个引脚实现16个按键的独立式键盘的线路的连接。16个按键经上拉电阻拉高后,分别接到单片机的P1口和P2口的8条I/O 线上。在无键按下情况下,这16各引脚线上输入均为高电平,当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。16个控制16种不同的声音。这种方案简单易控制,但缺点是占用太多的I/O口。

1.2方案二

利用可编程并行口8255A芯片的PC口的8个引脚,即低4位作为回送线,高4位作为扫描线,来实现4*4矩阵式键盘的线路的连接,并且可以通过三极管来驱动数码管显示键码值,同时STC89C52可以控制发光二极管的控制。这种键盘适合采用动态扫描的方式进行识别,即如果采用低电平扫描,回送线必须被上拉为高电平;如果采用高电平扫描,则回送线需被下拉为低电平。这样使用一个8位I/O口(行、列各用4位)即可完成控制。这种方案优点是使用较少的I/O口线可以实现对较多的键的控制。

1.3 方案对比与选择

经过对比分析,便于更多的扩展空间,需要更多闲置的I/O 口,所以我们选择了方案2,以更少的I/O 口实现更多键盘控制。

下图为硬件系统整体设计框图:

图1 硬件系统总体设计框图

2 系统硬件电路设计

该电路采用STC89C52单片机最小化应用设计,采用共阳7段LED 数码管显示,8255A 芯片扩展I/O 口,6个数码管位选端连接8255A 的PA 口,段码输入端并联接入PB 口;4*4矩阵键盘8根线接PC 口:行线接PC.0~PC.3,列线(扫描线)接入PC.4~PC.7。

在4*4矩阵键盘设计中,8255PA 口输出数码管显示位选,PB 口输入显示段码数据;显示部分中,PC 高四位作扫描线,低四位作回送线。

为提供共阳LED 数码管列扫描驱动电压,用三极管9012作电源驱动输出。

2.1 主控芯片STC89C52

P0口:P0口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它STC89C52

单片机

控制器 8255A PA PB PC 6位LED

4x4 矩阵键盘

可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

图2 STC89C52芯片引脚图