1、个人所得税课程设计报告课程名称:单片机原理及应用课程设计设计项目 个人所得税计算器 院系 信息学院 专业 电子信息工程 班级 电信二班 学生姓名 学号 起止日期 指导老师 成绩评定项目权重成绩1设计过程中出勤,学习态度0.22课程设计质量与答辩0.53设计报告书写与图纸规范0.3总成绩指导教师评语: 指导老师签名: 年 月 日目录1 摘要.42 系统设计.42.1 设计要求.4.2.2 主控芯片的简介.43 单元电路设计与计算.53.1 主控电路硬件的设计.53.5 按键电路设计.53.6 各电路图样.54 软件设计.54.1 软件设计思路.54.2 软件设计原理图.55程序设计.65.1 程
2、序调试需要用到的工具.65.2 调试过程.65 设计总结.6参考文献.6附录.6 一 摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,他已广泛的应用到我们生活中的各个领域,电子、科技、通信、汽车、工业等。我们这次设计的个人所得税计算器也是利用单片机制作而成的。该计算器设计师采用C语言编写,实现了个人所得税的运算,比较实用和方便。该设计电路是采用STC89C52单片机为主要控制电路,然后使用驱动电路驱动六位LED数码管现实数据,利用44矩阵键盘完成电路的实际操作,电路比较简单,但是很使用方便。关键词:单片机;个人所得税计算器;STC89C52单片机;串行通信;数码
3、管显示;键盘扫描二 系统设计2.1设计要求 1、通过键盘输入个人收入情况; 2、按确定键后,通过串口将个人所得税的值显示到电脑上; 3、最大收入值为99999元; 2.2 主控芯片简介 AT89C52是一个低电压,高性CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 3单元电路设计与计算 3.1主控电路硬件的设计主控电路在整
4、个的系统中充当着最重要的角色,它在整个系统中起到了系统宏观调节的作用,首先主控电路要通过通信接收来自取号机的数据,将客户的取号存入系统之中,同时主控电路还要实时接收来自服务窗口的数据。对于来自窗口的请求数据,主控芯片接收后立即处理,判断之后将对应的客户号码发送到服务窗口和大厅的显示屏及语音系统。强大的通信及数据处理就要求主控电路要有强大的处理能力,才能时刻保持整个系统的运行畅通,不会出现数据丢失或发生错误等现象。完成本次课程设计所需主控芯片有多种多样。说明如下:(1)STC89C52RC:该芯片是采用8051核的ISP在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反
5、复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟/机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/精简指令集结构,内部集成MAX810 专用复位电路。(2)STC12C5410AD:宏晶公司出款的STC12C5410AD单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,兼容传
6、统的8051数据指令代码,但提高了8-10倍的速度。内部使用了MAX810专用复位电路。程序存储空间10K,片上集成512字节RAM。包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时计数器、UART串口、I/O接口、高速AD转换、SPI接口、PCA、看门狗及片内R/C震荡器和外部晶振体振荡电路等模块。STC89C52系列单片机具有完整的功能模块,对89C52系列单片机有学习基础,理解使用方便,且能够完成基本的实验操作,STC89C52系列内含三个定时器中断,两个外部中断,一个串口中断,比STC89C51多一个定时器2,定时器数量更能满足要求,所以本系统中主控电路
7、采用的是STC公司出款的STC89C52RC单片机。根据设计要求STC89C52RC单片机最小系统如图 6所示: 图 6单片机最小系统 3.3 按键电路设计图 11单片机独立按键电路如图 11所示:我们的按键电路采用的是独立式键盘,此设计方便设计,K1,K2,K3,K4,一边端口右接GND,另外一边分别连接单片机的I/O端口。独立键盘判键速度快,便于顾客叫号时等待时间短,硬软件结构简单,利于我们设计者设计。当一个按键按下时,对应I/O的口就得到了一个低电平。四 软件设计4.1 软件设计思路初始化串口 设置显示数码管按键检测设置数据确认按键是否按下输出数据到串口4.2 软件设计原理图 图、LED
8、显示及驱动电路 图、单片机电路 图、矩阵按键电路 五 程序设计 5.1 程序调试需要用到的工具 元件名称类型或量程数量芯片Rst89C521片5.2 调试过程 将用keil编译产生的HEX文件下载到单片机开发板中,通过外围电路接入一个已知的被测电阻,看数码管上的显示数值是否接近已知的电阻值,若不对,则反复调试程序,直到正确为止。AD的分辨率只有八位,分辨率小,所以测量小电阻的时候误差小,随测量电阻的变大误差变大。六 设计总结这次单片机课程设计意义非同一般,把我们从单深入的理论编程到硬件软件综合实现一个使用的电路。通过这学期的单片机的学习,知道了单片机在实际应用中占据很重要的作用,也了解单片机本
9、身的功能,用编程控制;也了解了单片机的一些扩展功能。通过这次设计,我们更深入地了解到单片机的使用原理和功能。为期两周的设计中,我们看到很多同学都很努力,很认真,我们也不敢懈怠。虽说时间有点仓促,但老师和同学们夜以继日在解决问题,我们做电阻测量的设计中也遇到些许问题,但通过他人的指点,并查阅很多有价值的书籍,我们从中认识了不少。也增强了我们自己发现问题解决问题的能力。还有在编程的时候要仔细,要实现一个完整的功能就要考虑全面,在测试程序的时候要善于发现错误,而且可能是一些小问题,比如说把立即数和地址混用,这是很常见的。两周的设计完满结束了,经过我们自己的努力和同学的帮忙终于有了成果,特别离不开指导
10、老师的悉心教导,我受益匪浅,相信他的工作作风和知识筑成都是我们学习榜样,给我很大的启迪。感谢这些老师不畏辛劳,热心精心的指导。在这里向他们说声谢谢,你们辛苦了。参考文献1 谢四连.单片微机原理与应用.附录#include #define uchar unsigned char#define uint unsigned int char ledcode=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E; sbit ADDR0=P10;sbit ADDR1=P11;sbit ADDR2=
11、P12;sbit ADDR3=P13;sbit ENLED=P14;sbit hang1=P23;sbit hang2=P22;sbit hang3=P21;sbit hang4=P20;sbit lie1=P24;sbit lie2=P25;sbit lie3=P26;sbit lie4=P27;unsigned long sui;uchar xianshi5;void delay_ms(unsigned int cnt);uchar keyscan() /键盘检测 uchar num=0xff; hang1=0; if(lie1=0) delay_ms(10); if(lie1=0) nu
12、m=1; if(lie2=0) delay_ms(10); if(lie2=0) num=2; if(lie3=0) delay_ms(10); if(lie3=0) num=3; hang1=1; hang2=0; if(lie1=0) delay_ms(10); if(lie1=0) num=4; if(lie2=0) delay_ms(10); if(lie2=0) num=5; if(lie3=0) delay_ms(10); if(lie3=0) num=6; hang2=1; hang3=0; if(lie1=0) delay_ms(10); if(lie1=0) num=7; i
13、f(lie2=0) delay_ms(10); if(lie2=0) num=8; if(lie3=0) delay_ms(10); if(lie3=0) num=9; hang3=1; hang4=0; if(lie1=0) delay_ms(10); if(lie1=0) num=0; if(lie2=0) delay_ms(10); if(lie2=0) num=10; if(lie3=0) delay_ms(10); if(lie3=0) num=11; hang4=1; return num; void shumaguan() /在数码管上显示 ADDR0=0; ADDR1=0; A
14、DDR2=0; P0=xianshi0;delay_ms(2); P0=0xff; ADDR0=1; ADDR1=0; ADDR2=0; P0=xianshi1; delay_ms(2); P0=0xff; ADDR0=0; ADDR1=1; ADDR2=0; P0=xianshi2;delay_ms(2); P0=0xff; ADDR0=1; ADDR1=1; ADDR2=0; P0=xianshi3; delay_ms(2); P0=0xff; ADDR0=0; ADDR1=0; ADDR2=1; P0=xianshi4;delay_ms(2); P0=0xff; unsigned lon
15、g sheding;unsigned long shuju10; void fasong(unsigned char x)/发送到串口 SBUF = x; while(!TI); TI = 0; void main() uchar key_temp; ADDR3=1; ENLED=0; SCON=0x50; /串口初始化 PCON=0x00; TMOD=0x20; TH1=0xfd; TL1=0xfd; TI=0;RI=0; TR1=1; while(1) xianshi4=ledcodesheding/10000; xianshi3=ledcodesheding/1000%10; xians
16、hi2=ledcodesheding/100%10; xianshi1=ledcodesheding/10%10; xianshi0=ledcodesheding%10; key_temp=keyscan(); if(key_temp!=0xff) if(key_temp=11) sheding=0; shuju0=0; shuju1=0; shuju2=0; shuju3=0; shuju4=0; if(key_temp=9) shuju0=shuju1; shuju1=shuju2; shuju2=shuju3; shuju3=shuju4; shuju4=key_temp; shedin
17、g=shuju0*10000+shuju1*1000+shuju2*100+shuju3*10+shuju4; if(key_temp=10) if(sheding0) sui=sheding*0.03+0; else sui=0; else if(sheding1500)&(sheding4500)&(sheding9000)&(sheding35000)&(sheding55000)&(sheding80000) sui=sheding*0.45-13505; fasong(sui/10000+0x30); fasong(sui/1000%10+0x30); fasong(sui/100%10+0x30); fasong(sui/10%10+0x30); fasong(sui%10+0x30); fasong(32); while(keyscan()!=0xff); shumaguan() ; void delay_ms(unsigned int cnt) / 延时 unsigned char i; while(cnt-) for(i=0; i=110; i+);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1