1、单片机单片机课程设计课程设计 课课 程程 设设 计计 报报 告告 班 级: 姓 名: 学 号: 设计时间: 1 实验一 用单片机做简易计算器 一、一、实验目的实验目的 利用 430 作为主控器组成一个四则运算的计算器。 二、实验功能二、实验功能 1、 可以实现加、减、乘、除以及指数运算。 2、硬件部分包括:430 单片机、显示 4 位的 7 段数码显示管、44 的键盘。其中单片 机的 P2 口将要显示的数据的段码送给显示管,而 P4 口将位码送给显示管。P1 口接键盘,其 中高四位接键盘的四根列线,低四位接键盘的四根行线。 三、流三、流程图程图 开始 关看门狗 初始化 快速查询是否 有按键按下
2、 延时消抖 快速查询是否 有按键按下 扫描键值 计算结果 显示 eer 读取键值 数字键 功能键 键入数值 等待键值 是否溢出 是否溢出 显示结果 Y Y Y Y N N N N 2 四、源代码四、源代码 #include const unsigned char data22 =0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e, 0x8f,0xbf,0x89,0xb9, 0xff,0xaf;/09 af 符号 unsigned char segment8 = 20,20,0,0,0
3、,0,0,0;/初始数码管 unsigned char flag1=0; void delay(unsigned int j) /延时 unsigned int i; for(i=0;i1;a-) segmenta=0; void zhuanhuan( unsigned long r) /将计算结果逐位取出 segment7=r%10; segment6=r/10%10; segment5=r/100%10; segment4=r/1000%10; segment3=r/10000%10; segment2=r/100000%10; 3 unsigned char getkey(void) /
4、获取键值 unsigned char m,n=16; P1OUT=0x00; if(!(P1IN if(!(P1IN for(m=0;mj; P2OUT=datasegmentj; 4 delay(500); delay(20000); return (n); void main(void) /主函数 unsigned char flag=0,i=9; WDTCTL = WDTPW + WDTHOLD; /关看门狗 P5DIR|=BIT7; P5OUT P4DIR=0xff; P2DIR=0xff; P1DIR=0x0f; /低四位输入,高四位输出 P1OUT=0xff; /输出为高电位 while(1) unsigned long p,q,r; unsigned long s=1; segment1=20; i=getkey(