当前位置:   article > 正文

基于51单片机的简易计算器设计(仿真)_51单片机做计算器程序

51单片机做计算器程序

         该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加、减、乘、除的简单四则运算,并在 LCD屏幕上相应的显示结果。选择内部存储资源丰富的 51 单片机,输入采用 4×4矩阵键盘,显示采用LCD1602屏幕模块进行显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。

  1. bit lcden=P2^7;//使能信号
  2. uchar code table[]= " ";
  3. long int data_a,data_b; //第一个数和第二个数
  4. long int data_c; //计算结果
  5. uchar dispaly[10]; //显示缓冲
  6. sbit MUSIC_REST =P2^2;//语音芯片复位脚
  7. sbit MUSIC_DATA =P2^1;//语音芯片脉冲识别
  8. sbit bus =P2^0;//语音芯片工作状态识别信号
  9. uchar bbh,xm1,xm2,xm0;
  10. void delay_us(unsigned int us)//延时函数
  11. {
  12. while(us--)
  13. {
  14. _nop_();
  15. _nop_();
  16. _nop_();
  17. _nop_();
  18. }
  19. }
  20. void Music(unsigned char music_count)
  21. {
  22. MUSIC_REST=1;
  23. delay_us(200);
  24. MUSIC_REST=0;
  25. delay_us(200);
  26. while(music_count>0)
  27. {
  28. MUSIC_DATA=1;
  29. delay_us(100);
  30. MUSIC_DATA=0;
  31. delay_us(100);
  32. music_count--;
  33. }
  34. }
  35. //************************************************************************/
  36. // 描述: 延时t us函数
  37. //************************************************************************/
  38. void LCD_Delay_us(unsigned int t)
  39. {
  40. while(t--); //t=0,退出
  41. }
  42. //************************************************************************/
  43. // 描述: 延时t ms函数
  44. //************************************************************************/
  45. void LCD_Delay_ms(unsigned int t)
  46. {
  47. unsigned int i,j;
  48. for(i=0;i<t;i++) //执行t次循环
  49. for(j=0;j<113;j++) //执行113次循环
  50. ;
  51. }
  52. //************************************************************************/
  53. // 描述: 1602液晶写指令
  54. //************************************************************************/
  55. void write_com(uchar com) //1602液晶写指令
  56. {
  57. rs=0; //写指令
  58. lcden=0; //使能1602
  59. P0=com; //写入指令com
  60. LCD_Delay_ms(1); //延时1ms
  61. lcden=1; //使能1602
  62. LCD_Delay_ms(2); //延时2ms
  63. lcden=0; //使能1602
  64. }
  65. //************************************************************************/
  66. // 描述:1602液晶写数据
  67. //************************************************************************/
  68. void write_date(uchar date) //1602液晶写数据
  69. {
  70. rs=1; //写数据
  71. lcden=0; //使能1602
  72. P0=date; //写入数据date
  73. LCD_Delay_ms(1); //延时1ms
  74. lcden=1; //使能1602
  75. LCD_Delay_ms(2); //延时2ms
  76. lcden=0; //使能1602
  77. }
  78. //************************************************************************/
  79. // 描述:指定x,y写入字符函数
  80. //************************************************************************/
  81. void W_lcd(unsigned char x,unsigned char y,unsigned char Data)
  82. {
  83. if (y == 0){write_com(0x80 + x);} //第一行
  84. else{write_com(0xc0 + x);} //第二行
  85. write_date( Data); //写入数据
  86. }
  87. //指定x,y写入字符串函数
  88. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  89. {
  90. if (y == 0){write_com(0x80 + x);} //第一行
  91. else{write_com(0xC0 + x);} //第二行
  92. while (*s) //
  93. {write_date( *s); s++;} //写入数据
  94. }
  95. //************************************************************************/
  96. // 描述:初始化液晶,及画面初始化
  97. //************************************************************************/
  98. void init_lcd(void) //初始化液晶,及画面初始化
  99. {

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/752161
推荐阅读
相关标签
  

闽ICP备14008679号