|
问题描述:
Proteus 8.11 仿真报错
仿真图使用了 LCD1602液晶显示
我把原理图和所有的标号D5都截图了
打包文件中包含源码及仿真图
另:我也会将源码和网络标号截图放在问题描述中,大家也可直接看这,报错的网络标号为D5,已在图一中标红显示
单片机源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar temp_data, temp;
- sbit wela = P2^7; //位选端口
- sbit dula = P2^6; //段选端口
- sbit beep = P2^3; //蜂鸣器端口
- sbit lcdrs = P3^0; //LCD1602 寄存器选择
- sbit lcdrw = P3^1; //LCD1602 读写控制
- sbit lcden = P3^2; //LCD1202 使能端控制
- void delay(uchar num); //延时函数
- void lcd_WriteCmd(uchar cmd); //LCD 写一字节指令
- void lcd_WriteDat(uchar dat); //LCD 写一字节数据
- void lcd_Init(); //LCD初始化
- void main()
- {
- lcd_Init();
- while(1);
-
- }
- void delay(uchar num)
- {
- uint x, y;
- for(x = num; x > 0; x--)
- {
- for(y = 110; y > 0; y--);
- }
- }
- void lcd_WriteCmd(uchar cmd)
- {
- lcden = 0;
- lcdrs = 0; //寄存器选择指令
- lcdrw = 0; //选择读指令
- P0 = cmd; //将一字节指令给LCD
- delay(5);
- lcden = 1;
- delay(5);
- lcden = 0; //高脉冲读走指令
- }
- /***** 向LCD写入一字节数据 *****/
- void lcd_WriteDat(uchar dat)
- {
- lcden = 0;
- lcdrs = 1;
- lcdrw = 0;
- P0 = dat;
- delay(5);
- lcden = 1;
- delay(5);
- lcden = 0;
- }
- /**** 初始化液晶LCD1602 ****/
- void lcd_Init()
- {
- dula = 0;
- wela = 0;
- lcden = 0;
- lcd_WriteCmd(0x38); //设置显示16*2
- lcd_WriteCmd(0x0c); //开显示器及光标设置
- lcd_WriteCmd(0x06); //移动光标 文字不动
- delay(10);
- }
复制代码 类似的问题我在论坛里看过了,但根据坛友的方法,我解决不了;
这问题困扰我许久,就是不清楚错在哪。
恳请坛友出手指点迷津,感谢大家
|
|